もし仮に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は最初に適した言語なのでしょうか?
長文になってしまい申し訳ありません。
できればひとりでも多くの技術者の意見が聞きたいです。なんでもかまいません。
もし良ければ回答お願いします。
A 回答 (6件)
- 最新から表示
- 回答順に表示
No.6
- 回答日時:
一般論としては、そのハッカー達の主張通りだと思います。
実務上学ぶべき言語、教養として学ぶべき言語の取り合わせを考え、
適切に検討された順序です。
(他の方が答えられている通り、Pythonの対案として、
日本語のドキュメントが整っているRubyを私はオススメしますが)
まずは、入門者にやさしいスクリプト言語(PythonやRuby)やJavaを学び、
本気でプログラミングを学ぼうと思った時点で、Cを学び、
教養としてプログラミング言語を学ぶ余裕ができたら、LISPやアセンブラに手を出す
というのが常道かと(Perlは実務で使わないなら要らないかな……)。
なお、Python/Ruby/Javaはオブジェクト指向やデザインパターンなどを
学習する上でも、非常に有益な言語です。
(そういった書籍が多い、コミュニティがしっかりしている)
あと、他の方がいうように、プログラミング言語はあくまで道具ですから
最終的には学習者(=tippusさん?)の目標設定次第です。
ハッカーになりたいというので無い場合、彼らの主張を盲信する必要はないかと。
実務への有用性を重視するなら、Javaだけを「何年かかけて」学んだ方が
極端な話、学習者には有益かも知れません。
No.5
- 回答日時:
プログラム言語は道具です。
やりたいことや目的にあわせて使用する言語はかわります。
Windowsアプリの開発であれば、Vb.NetやC#などはやはり親和性が高いと思います。
ただ、プログラムを勉強したいと言う目的なのであれば、
アセンブラ→C→あとはご自由にという形かな?
と個人的には思います。
アセンブラを勉強することによってプログラムがどうマシンに働きかけるかが
理解できるような気がします。(この辺は個人の感じ方なので・・・。)
No.4
- 回答日時:
プログラミング言語は道具です。
目的次第でどの道具を使うべきか変わってきます。
オープンソースソフトウェアの開発をやるなら、
確かにpythonやJavaやC/C++がよく使われるでしょう。
就活のために習得済み言語をアピールしたいなら、
pythonよりもC#やVisualBasicができると言う方が
有利な場合が多いでしょう。
(もちろん会社の業務内容によります。)
漠然とコンピュータ技術を勉強したいということであれば、
言語登場の歴史順に学ぶのもよいと思います。
(それまで面倒だったことが、新しい言語でどのように
便利になるのか実感できると思います。)
No.3
- 回答日時:
質問者の方が命題の中にあえて「何年かかけて」と書いているので、それを踏まえた回答をすると、まず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言語→アセンブラ→その他に一票です。
No.2
- 回答日時:
私の意見は、まずアセンブリ言語に手を出すことが一番だと思います。
コンピュータがいかにして動作しているか、どのような仕組みで成り立っているのかを
知る上でアセンブリ言語の知識は必要です。
最近のCPUについては難しい面も多々あるようですので、
まずはZ80や6809といった古典的なCPUから学習するといいはずです。
他の言語については、何を作りたいかという欲求に近いものを選ぶとよいでしょう。
闇雲に手を出したところで得るものは少ないと思います。
○○したいので、▲▲という言語を学ぶというようにすればいいでしょう。
No.1
- 回答日時:
おおよそ妥当だと思います。
日本人なら Python を Ruby に置き換えてもいいかもしれませんが。
また、C# は移植性がない、といって切り捨てるには惜しい。
個人的には Java と差し替えてもいいと思ってる。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 数学 C言語と将来性 7 2022/10/13 16:49
- その他(プログラミング・Web制作) プログラムの勉強のおすすめは 7 2022/12/09 20:09
- その他(自然科学) 科学技術計算の仕事について 2 2023/02/04 18:09
- その他(プログラミング・Web制作) 次に、楽天のアジャイル就活に参加して、1日で内定を獲得できる。私は大企業に就職できる? 2 2022/04/17 13:38
- Java プログラミングのプの字も知りませんが、プログラミングを勉強したいです。とりあえず、学ぶものを決めない 3 2022/11/04 13:10
- IT・エンジニアリング バックエンドエンジニアに転職 2 2022/04/07 00:51
- その他(社会・学校・職場) 平均的日本人の頭は悪くはないはずですし、学校で習う内容が幼稚というわけでもないのに、世間には幼稚な大 7 2023/04/05 20:51
- Java EclipseとVisual StudioをPC1台にインストールしただけではPCは重くならない? 3 2022/12/08 15:35
- その他(プログラミング・Web制作) プログラミングについて(Python) 添付した画像はC言語で簡単に作ったソースで、1つの配列に5つ 3 2022/09/10 19:15
- その他(プログラミング・Web制作) プログラミング 処理速度 1 2022/11/25 11:05
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
楽しくて最高のプログラミング...
-
C言語、C+、C++、C#の違い
-
プログラミング言語の制作方法...
-
C++における継続行
-
Pythonって何を意識した言語な...
-
C言語とhtmlの違いを どな...
-
なぜコンピューターをよく知っ...
-
VBSでDim、Private、Publicの違い
-
rpa化する言語としてら何があり...
-
TO_CHARで小数点以下がある場合...
-
C++ ってなんて読む?
-
Int('1234') で、strをかんたん...
-
質問失礼します。 プログラム言...
-
任天堂で使うプログラミング言...
-
最新のプログラム言語を学ぶに...
-
Solve()とは、なんですか?
-
COBOLでのNOT = の AND条件
-
CとC++は別物なんですか?
-
プログラムに書かれる"%"記号の...
-
ABAPのラジオボタンについて
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
C言語、C+、C++、C#の違い
-
楽しくて最高のプログラミング...
-
Pythonって何を意識した言語な...
-
C言語とhtmlの違いを どな...
-
プログラムに書かれる"%"記号の...
-
COBOLでのNOT = の AND条件
-
C++ ってなんて読む?
-
質問失礼します。 プログラム言...
-
プログラミング言語の制作方法...
-
UNITY Float型の接尾辞fって
-
C言語って古いですか?
-
Int('1234') で、strをかんたん...
-
COBOLで文字タイプを数字...
-
TO_CHARで小数点以下がある場合...
-
最新のプログラム言語を学ぶに...
-
C++における継続行
-
vbaとc言語の関連性について
-
VBScriptで引数を省略したい場合
-
VBSでDim、Private、Publicの違い
-
HTMLとC++で、どんなホームペー...
おすすめ情報