回答受付中の質問
もし仮に5つの言語(Python, Java, C/C++, Perl, LISP、アセンブラ)を学ぶとした場合の学習順序
こんばんは。
もしこの5つを何年かかけて学ぶとした場合、この学習順序をどうおもいますか?
ちなみにこの5つの言語は、linuxなどのOSやオープンソースソフトウェアの開発に携わっている方たち(ハッカーの方たち)
が、OSや言語開発をするなら学ぶべき言語として主張していました。(クラッカーではなくハッカーです)
この方たちがいうには
pythonをはじめに学習し、次にjava
それからC/C++, Perl, LISP、アセンブラの順番が良いと言っていました。
特にpythonを一番に学び、javaを2番に学ぶべき理由としては↓
まず Python から始めることをおすすめします。設計がきれいだし、ドキュメントもしっかりしているし、初心者にもそこそことっつきやすくできています。でも入門言語として最適でも、おもちゃではありません。強力で柔軟で、大きなプロジェクトにもじゅうぶん対応しています
Java もプログラミングを学ぶにはよい言語です。 Python よりはむずかしいですが、できるコードは Python より高速です。二番目の言語としてはとてもすぐれていると思います。
本気でプログラミングをするなら、C を勉強するしかありません。これは Unix の中核となる言語です。C++ は C と密接な関係にあります。片方を知っていれば、もう片方を学ぶのはそんなにむずかしくありません。が、どっちも真っ先に勉強しようとするのには向いた代物ではありません。
それ以外に Perl と LISP があります。Perl は実際的な意味からも勉強しておく価値があります。アクティブ Web ページやシステム管理にとても広く使われているからです。自分では Perl を使わなくても、読めるようにはなっておきましょう。LISP は、それをモノにしたときのすばらしい悟り体験のために勉強しましょう。この体験は、その後の人生でよりよいプログラマーとなる手助けとなるはずです。たとえ、実際には LISP そのものをあまり使わなくても。
さらに、visualbasicやC#などはやめた方が良い。と主張しています。↓
ウィンドウズの下でハッキングを学ぶのを、拘束衣を着て踊りを学ぶのに例えたのは、あれは冗談じゃないんですよ。
Visual Basic や C# にはそれぞれ個別に問題があります。その大きなものは、移植性がないことです。マイクロソフトの独占言語だというだけで、もうすでに失格ですし、ほかの Basic と同じく言語としての設計もまずく、悪いプログラミングの習慣が身についてしまいます。
足りなかったのでこちらに。
みなさんはこの順序や考えについてどうおもいますか?
本当にpythonは最初に適した言語なのでしょうか?
長文になってしまい申し訳ありません。
できればひとりでも多くの技術者の意見が聞きたいです。なんでもかまいません。
もし良ければ回答お願いします。
投稿日時 - 2010-01-26 23:52:39
8人が「このQ&Aが役に立った」と投票しています
回答(6件中 1~5件目)
一般論としては、そのハッカー達の主張通りだと思います。
実務上学ぶべき言語、教養として学ぶべき言語の取り合わせを考え、
適切に検討された順序です。
(他の方が答えられている通り、Pythonの対案として、
日本語のドキュメントが整っているRubyを私はオススメしますが)
まずは、入門者にやさしいスクリプト言語(PythonやRuby)やJavaを学び、
本気でプログラミングを学ぼうと思った時点で、Cを学び、
教養としてプログラミング言語を学ぶ余裕ができたら、LISPやアセンブラに手を出す
というのが常道かと(Perlは実務で使わないなら要らないかな……)。
なお、Python/Ruby/Javaはオブジェクト指向やデザインパターンなどを
学習する上でも、非常に有益な言語です。
(そういった書籍が多い、コミュニティがしっかりしている)
あと、他の方がいうように、プログラミング言語はあくまで道具ですから
最終的には学習者(=tippusさん?)の目標設定次第です。
ハッカーになりたいというので無い場合、彼らの主張を盲信する必要はないかと。
実務への有用性を重視するなら、Javaだけを「何年かかけて」学んだ方が
極端な話、学習者には有益かも知れません。
投稿日時 - 2010-05-10 04:26:13
プログラミング言語は道具です。目的次第で
どの道具を使うべきか変わってきます。
オープンソースソフトウェアの開発をやるなら、
確かにpythonやJavaやC/C++がよく使われるでしょう。
就活のために習得済み言語をアピールしたいなら、
pythonよりもC#やVisualBasicができると言う方が
有利な場合が多いでしょう。
(もちろん会社の業務内容によります。)
漠然とコンピュータ技術を勉強したいということであれば、
言語登場の歴史順に学ぶのもよいと思います。
(それまで面倒だったことが、新しい言語でどのように
便利になるのか実感できると思います。)
投稿日時 - 2010-01-28 12:28:11
質問者の方が命題の中にあえて「何年かかけて」と書いているので、それを踏まえた回答をすると、まずC言語とアセンブラです。なぜかと言うと、この2つをほぼ掌握したら、それ以外の言語は1日で習得できるからです(言語はね。Javaにおけるコアパッケージにどんなのがあるかとかそういうリファレンスを舐めないといけないようなのは別で)。これは、アセンブラとC言語を学ぶというのはすなわちプログラムがコンピューター上でどうメモリにロードされてどう解釈されてどう動くのかを学ぶ事だからです。どんな言語をやっても動作するイメージが手に取るように分かるようになる事でしょう。
また、とっつきやすさでC言語が他の言語に劣っているとは全く思いません。なぜってC言語はコンピューターそのものなのですから。8086プロセッサで言えば、番地DE00のメモリの内容をAXレジスタにコピーし、番地DE02のメモリの内容をAXレジスタに足し合わせ・・・・と言った事をそのまま記述するのがC言語です。むしろこの辺りを「上手に隠蔽してくれる」JavaやVBの方が「プログラミングの本質を理解する」には厄介な障壁が高くなるだけだと思っています。
今までまぁそんなにソフトウェア業界に長くいるという訳ではないですが、Javaしかできない技術者は本当に物分りが悪いです。VBしかできない、C#しかできない人間はその2倍。Javaで言えばコアパッケージや拡張パッケージ、VBで言えば.Net Frameworkが何で、どう動作しているのか全く理解できないのです。Java VMや.Net Frameworkを頭の中でノイマン型コンピューターとして捉えることが出来ないという事ですね。なので、実行時エラーに全く対処できない。
確かに時間はかかります。私もC言語を始めてからC言語をそこそこ使えるようになったなと思ったのは実に5年後の事でした。なので何年かかけてくださいね。
という事でC言語→アセンブラ→その他に一票です。
投稿日時 - 2010-01-27 03:43:57
私の意見は、まずアセンブリ言語に手を出すことが一番だと思います。
コンピュータがいかにして動作しているか、どのような仕組みで成り立っているのかを
知る上でアセンブリ言語の知識は必要です。
最近のCPUについては難しい面も多々あるようですので、
まずはZ80や6809といった古典的なCPUから学習するといいはずです。
他の言語については、何を作りたいかという欲求に近いものを選ぶとよいでしょう。
闇雲に手を出したところで得るものは少ないと思います。
○○したいので、▲▲という言語を学ぶというようにすればいいでしょう。
投稿日時 - 2010-01-27 00:35:30
OKWaveのオススメ
おすすめリンク