あなたの意見では、プログラマーが知っておくべき最も重要な言語は何ですか?私が話しているのは概念であり、言語がどれほど実用的かについてではありません。
言語と理由をリストします。たとえば、関数型プログラミング用のLISP、プロトタイプベースのOOP用のJavaScriptなどです。
知っておくべき:
1)C(システムプログラミング、マシンアーキテクチャの理解)
2)PerlまたはPythonまたはRuby(実用的な日常のタスク)
3)JavaまたはC#またはC++(OOP、最近の就職には非常に重要)
本当に重要:
1)HaskellまたはML(関数型プログラミング;考え方を変える)
2)LISPまたはScheme(マクロの力)
素敵な追加:
1)4番目(非常に低レベルの明示的なスタック操作+独自のインタープリターを作成する喜び)
2)アセンブリ言語(CPUがどのように機能するかを知っている)
3)Erlang(並列処理)
4)プロローグ(論理プログラミング)
5)Smalltalk(true OOPおよび真のインタラクティブ開発者)
...等々。
他のほとんどの言語(-実装)とオペレーティングシステムがどのように実装されているかを理解するためのC
プログラミング概念の実用性と適用範囲を最もよく組み合わせる3つの言語は次のようになると思います。
これらの言語から、低レベルのシステムプログラミング、ポインターとメモリ管理、静的型付け、動的型付け、高レベルのスクリプト、イベント駆動型プログラミング、OOプログラミング、関数型プログラミング)を学ぶことができます。
明らかに、Haskellの場合ほど純粋な関数型プログラミングの入門書は得られませんが、Pythonおよび(特に)Javascriptで多くの概念を学ぶことができます。
それは言語ではなく、あなたが知っておくべきパラダイムです:
これらのパラダイムの1つをある言語で理解していれば、同じパラダイムで別の言語を学ぶのは簡単です。そして、理解することが重要な言語によって特別にサポートされているフィールドがさらにあります。
最後に、内部で何が起こっているかを常に知っておく必要があるので、アセンブラーをよく見てください。
私は言うだろう:
分散システムに興味があるなら、Erlangの学習も検討します。これらは、表面的なものであっても、実際のアプリケーションを作成するために使用したことがない場合でも、学習のためにのみ学習することをお勧めする言語です。
さまざまなことを知るのが最善です。これにより、プログラミング技術の全体的な視点が向上し、さらに、仕事に最適なツールを選択できるようになります。
私の現在のリストは次のようになります:-
良い短いリスト:
含まれる可能性もあります
Limbo -並行性とチャネルを備えたプログラミング言語。Cが進化するはずだったもの。 ( [〜#〜] d [〜#〜] 、別のCの後継者も参照)
他の誰も宣言型言語について言及していないようですので、ここにいくつかあります:
Prolog -論理プログラミング用の宣言型言語
Modelica -宣言型OOモデリングシステム用の言語。
[〜#〜] xslt [〜#〜] --XMLを変換するための宣言型言語。
並列処理の場合、 シェーダー言語 および関連する OpenCL -よりも広くなることはありません。通常、Erlangの4プロセッサーではなく、ハイエンドデスクトップで512プロセッサーを並列に使用します。並行して(ただし、多くのスケジュールされたプロセスがあります)。
これは良い質問です。私も含めて、多くの人が、マクドナルドでハンバーガーを解き放つように、コードを解き放つだけの轍に引っかかっていることを知っています。コーディングは機械的になりすぎます。私たちは物事を成し遂げる方法を理解していますが、これらのことが舞台裏で行われる理由を忘れることがよくあります。
私の世界では、仕事で毎日C#を書いているにもかかわらず、私に最も教えてくれたのはC++/C/ObjectiveCでした。
ほとんどの場合、C++を学ぶことで、メモリ管理や、さまざまなオブジェクトがメモリにどのように格納されるかなど、実際のプログラミングの科学について学ぶことができました。私の目を本当に開いたのは、スタンドフォードで提供されているプログラミングパラダイムクラスで、iTunesとYouTubeから降りることができます。
概念としては、アセンブラーとJavaを選択します。
1つ目は、マシンがどのように機能するかを詳細に知る必要があるためです。
2つ目は、マシンの動作の詳細から身を守る方法を理解する必要があるためです:-)。つまり、手元に豊富なデータ構造のセットがある言語を意味します(つまり、実際にはJavaはPython、Boostを備えたC++などである可能性があります)。
上手。私はCとjavascriptを学ぶと思います。それらは最も広く使用されている言語です。
Java /いくつかの.Net言語および/またはpython/Rubyを学びたいと思うかもしれません:それらはより便利です。
これには、これらすべての言語が適切に設計されているという利点があります。たとえば、PHPまたはC++は混乱しているので、学習しないでください。広く使用されているので、いつか学習したいと思うかもしれませんが、深刻な混乱を招く可能性があります。
C-低レベルのシステムプログラミングに加えて、メモリの処理方法、スタック、スタックフレーム、ヒープなどに関する一般的な概念を理解します。これらは高級言語を理解するのに役立ちます
C++-主に標準ライブラリ(一般的なアルゴリズムとコンテナの分離)、テンプレート、名前空間ですが、OOの概念もあります。テンプレートメタプログラミングは、ソフトウェアの作成に関してまったく異なる視点を提供します。これはコンパイル時です。実行と実行時の実行。テンプレートの継承(静的対動的多態性)。
Python-動的型システム、リスト内包表記-関数型プログラミング(?)、開発者向けのメモリ管理なし、インデント用のスペース
Objective-C-メッセージディスパッチ(nilにディスパッチ可能)、動的型システム(静的も)、遅延バインディング、OOコンセプト
クレイジーに聞こえるかもしれませんが、私は最初にWindows用のVBScriptマクロの作成をプログラムすることを学びました。ここで入手できるテンプレートを使用しました http://vbscript-macro-template.blogspot.com/ それに追加しただけで、すべてを理解しようとしました。今、数年後、私は自分のデスクトップとデータベースアプリケーションを書いています。
多くはすでに言及されていますが、私は間違いなく次の理由でC++(すでに完了)を追加します:
C++ for ポインタの使い方を学ぶそしてそれらについての主なアイデアを得る。
C++がまだ「より良い」言語であるかどうかについての議論がありますが(すべては本当に作りたいものに依存します)、ポインターが必要になった場合に備えて、ポインターを理解することは決して害にはなりません。
あなたはすでに2つについて言及しました、ここにもう少しあります:
これまでのところ回答をスキャンしたところ、ActionScriptについての言及が見られなかったことに驚いています。
C/C++を学べば、Javaなら、そこにあるまともな言語のほとんどすべてに備えることができるはずです。コードの動作を確認したいのですが、Actionscriptを見つけました。 3(2または1ではない)とFlex(MXML)は、視覚的な概念をすばやくデモするのに最適です。
したがって、C&Javaは、大部分の言語の構文を学習するのに役立ちます。Actionscript3(Java構文)と非常によく似ています)&MXMLであなたを表現できます視覚的に非常に迅速にコーディングします。
ドキュメントを読み書きするための擬似コード。 :p
C/C++またはその他の低水準言語を知っていると、マネージド/スクリプト言語がどのように機能するかの影響を理解するのに役立つと思います。ポインタなどは、変数参照をわかりやすく説明します。
Webプログラミングの場合:PHP、ANSI-SQL、javascript。
HTMLとCSSはプログラミング言語ではないと主張する人もいるかもしれません。しかし、それらはWebアプリ開発に不可欠です。
デスクトップアプリ開発の場合、Qtフレームワークを使用したC++。 Qtは、C++に追加の「クロスプラットフォーム」フィズを提供します。
手続き型プログラミングの基本を開始および習得するためのPascalまたはBasic。
学校では、関数型プログラミングのためにHaskelを学びました。
そして、深くなるためにアセンブラまたはCを、OOPのためにJavaを試す必要があります。
Aにはこれについての議論はありません-それは私の好みと私が試したことだけです。
私はC/C++に座っていたので、世界中で使用されている他の多くの言語の基本が設定されています。
個人的に私はJava/JavaScript-> VB(幸いなことにショートコース)-> C#-> C++を学び、その上にPHPとPerlをピンチしました。その行の最良の部分はC#でした。その後、C++の舞台裏に移動します。
異なるプログラミング言語のセットを探します:
どちらを選択するかは重要ではありませんが、各「カテゴリ」から1つを選択する必要があります。
アプリケーションのプロトタイプをより速く作成できるように、スクリプト言語を知っておく必要があります。
多分python/Ruby/Perl。あなたがJava彼のJava libsが好きな人なら、Groovyも代替手段です。
nderstandコンピューターとその基盤となるハードウェアを知りたい場合は、[〜#〜] c [〜#〜]が最も重要な言語であり、一般に-と言われています。 lingua franca コンピューターの。 Stackoverflowポッドキャストはこれを 最小1回 a 週 でカバーする傾向があります。
これについては十分な答えがあるようですので、そのままにしておきます。