web-dev-qa-db-ja.com

概念について知っておくべき最も重要なプログラミング言語は何ですか?

あなたの意見では、プログラマーが知っておくべき最も重要な言語は何ですか?私が話しているのは概念であり、言語がどれほど実用的かについてではありません。

言語と理由をリストします。たとえば、関数型プログラミング用のLISP、プロトタイプベースのOOP用のJavaScriptなどです。

24
Sasha Chedygov

知っておくべき

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および真のインタラクティブ開発者)

49
Igor Krivokon
  • アセンブリ言語低レベルの知識のために学ぶことができる限り多くのチップ。
  • [〜#〜] c [〜#〜]ほとんどすべての言語がCで実装されているため、低レベルの動作に関するより実践的な知識を学ぶことができます。
  • C++ Cの低レベルの良さに加えてオブジェクト指向プログラミングの場合。
  • Pascal強い型付けを扱う方法を学びます。
  • Java低レベルの懸念から身を守る方法を確認します。
  • Perl正規表現、弱い/動的型付け、およびその他の良いことを学ぶ。
  • Pythonストロング/ダイナミック/ダックタイピングを確認します。
  • Ruby Perl風の弱い/動的型付けの上でオブジェクト指向性がどのように機能するかを確認します。
  • Common LISPその機能的な啓蒙主義のために。
  • スキーム再帰を強調します。
  • Emacs LISP Emacsを拡張できるようにします。
  • Haskell純粋関数型プログラミングが正しく行われていることを確認します。
  • [〜#〜] apl [〜#〜]なので、コードを書く方法notを学びます。
  • [〜#〜] cobol [〜#〜]これで、レガシーコードを維持しながら狂ったお金を稼ぐことができます。
  • Erlang並行性について実際に学ぶため。 (私を訂正してくれたPete Kirkhamに感謝します。)
  • Scala JVMでの関数型プログラミング用。
  • Clojure JVM上のLISPのような関数型言語の場合。
  • Prolog論理プログラミングを理解する。
  • [〜#〜] d [〜#〜]これで、すべてのD狂信者が常にプロDである理由がわかります。
  • C#したがって、.NET(およびMono)用にプログラムできます。
  • F#なので、.NETで関数型プログラミングを行うことができます。
  • Forthスタックベースの言語の場合。
  • [〜#〜] php [〜#〜]言語を作成する方法notを確認できます。 (冗談です。学ぶPHP Web開発に非常に役立つからです。)
  • JavaScript基本的にクライアント側のWebスクリプト用の言語であるため。
  • bash優れた汎用スクリプト言語の場合。
  • Visual Basic上司が書いたコードを読むことができます。 =)
  • [〜#〜] intercal [〜#〜]「楽しい」の場合。
  • brainfuck友達を拷問できるように。
  • [〜#〜] lolcode [〜#〜]だから、彼らをブレインファックにさらした後でも、彼らをあなたの友達であるように説得することができます。

...等々。

29
Chris Lutz

他のほとんどの言語(-実装)とオペレーティングシステムがどのように実装されているかを理解するためのC

10
Peter Miehle

プログラミング概念の実用性と適用範囲を最もよく組み合わせる3つの言語は次のようになると思います。

  • C
  • Python
  • Javascript

これらの言語から、低レベルのシステムプログラミング、ポインターとメモリ管理、静的型付け、動的型付け、高レベルのスクリプト、イベント駆動型プログラミング、OOプログラミング、関数型プログラミング)を学ぶことができます。

明らかに、Haskellの場合ほど純粋な関数型プログラミングの入門書は得られませんが、Pythonおよび(特に)Javascriptで多くの概念を学ぶことができます。

6
James Tauber

それは言語ではなく、あなたが知っておくべきパラダイムです:

  • 手続き型(C、Pascalなど)
  • オブジェクト指向(Java、C++、Smalltalkなど)
  • 機能的(LISP、ML、Scalaなど)

これらのパラダイムの1つをある言語で理解していれば、同じパラダイムで別の言語を学ぶのは簡単です。そして、理解することが重要な言語によって特別にサポートされているフィールドがさらにあります。

  • 並列処理(ErlangまたはScala)
  • 宣言型テンプレート(C++やPrologなど)
  • 動的言語(JavaScriptなど)

最後に、内部で何が起こっているかを常に知っておく必要があるので、アセンブラーをよく見てください。

5
ftl

私は言うだろう:

  • プロセッサがどのように機能するかを理解するためのCまたはアセンブラ。
  • オブジェクト指向プログラミングを理解するためのSmalltalk(またはC#、Java、Python、Rubyなど)。
  • 高水準プログラミング、メタプログラミング(マクロ)などを理解するためのLISP(任意のLISP、Scheme、Common LISP、Clojure)。
  • 型推論やその他の機能概念を理解するためのHaskell。

分散システムに興味があるなら、Erlangの学習も検討します。これらは、表面的なものであっても、実際のアプリケーションを作成するために使用したことがない場合でも、学習のためにのみ学習することをお勧めする言語です。

3
pupeno

さまざまなことを知るのが最善です。これにより、プログラミング技術の全体的な視点が向上し、さらに、仕事に最適なツールを選択できるようになります。

私の現在のリストは次のようになります:-

  • C-マシンに近いプログラミング。
  • Python-プログラマーの涅槃。
  • Perl-s ** tが発生した場合。
  • Java-それはあなたを仕事にとどまらせるからです。
  • C#-それはあなたを仕事に留めておくからです。
  • LISP、スキーム、またはあなたの脳を轍から抜け出すために機能する何か。
  • SQL-大規模なデータセットを管理するため。
  • JCL、COBOL、VAX DCL、CShell VB-事態がいかに悪いかを思い出させるためだけに!
3
James Anderson

良い短いリスト

  1. マシンコンセプトのC
  2. 関数型プログラミングのためのHaskell
  3. オブジェクト指向プログラミングの場合はSmalltalk(またはRubyまたはSimula-67))
  4. 論理プログラミングのプロローグ
  5. バックトラックと驚異的な文字列処理のアイコン
  6. Unixスクリプト用のBourneシェル

含まれる可能性もあります

  1. マクロのスキーム
  2. 正規表現の場合はAwkまたはPerlまたは...
  3. 小さなブートストラップ接尾辞の素晴らしさのためのFORTH :-)
2
Norman Ramsey

Limbo -並行性とチャネルを備えたプログラミング言語。Cが進化するはずだったもの。 ( [〜#〜] d [〜#〜] 、別のCの後継者も参照)

他の誰も宣言型言語について言及していないようですので、ここにいくつかあります:

Prolog -論理プログラミング用の宣言型言語

Modelica -宣言型OOモデリングシステム用の言語。

[〜#〜] xslt [〜#〜] --XMLを変換するための宣言型言語。

並列処理の場合、 シェーダー言語 および関連する OpenCL -よりも広くなることはありません。通常、Erlangの4プロセッサーではなく、ハイエンドデスクトップで512プロセッサーを並列に使用します。並行して(ただし、多くのスケジュールされたプロセスがあります)。

1
Pete Kirkham

これは良い質問です。私も含めて、多くの人が、マクドナルドでハンバーガーを解き放つように、コードを解き放つだけの轍に引っかかっていることを知っています。コーディングは機械的になりすぎます。私たちは物事を成し遂げる方法を理解していますが、これらのことが舞台裏で行われる理由を忘れることがよくあります。

私の世界では、仕事で毎日C#を書いているにもかかわらず、私に最も教えてくれたのはC++/C/ObjectiveCでした。

ほとんどの場合、C++を学ぶことで、メモリ管理や、さまざまなオブジェクトがメモリにどのように格納されるかなど、実際のプログラミングの科学について学ぶことができました。私の目を本当に開いたのは、スタンドフォードで提供されているプログラミングパラダイムクラスで、iTunesとYouTubeから降りることができます。

1
OhioDude

概念としては、アセンブラーとJavaを選択します。

1つ目は、マシンがどのように機能するかを詳細に知る必要があるためです。

2つ目は、マシンの動作の詳細から身を守る方法を理解する必要があるためです:-)。つまり、手元に豊富なデータ構造のセットがある言語を意味します(つまり、実際にはJavaはPython、Boostを備えたC++などである可能性があります)。

1
paxdiablo

上手。私はCとjavascriptを学ぶと思います。それらは最も広く使用されている言語です。

Java /いくつかの.Net言語および/またはpython/Rubyを学びたいと思うかもしれません:それらはより便利です。

これには、これらすべての言語が適切に設計されているという利点があります。たとえば、PHPまたはC++は混乱しているので、学習しないでください。広く使用されているので、いつか学習したいと思うかもしれませんが、深刻な混乱を招く可能性があります。

1
alamar

C-低レベルのシステムプログラミングに加えて、メモリの処理方法、スタック、スタックフレーム、ヒープなどに関する一般的な概念を理解します。これらは高級言語を理解するのに役立ちます

C++-主に標準ライブラリ(一般的なアルゴリズムとコンテナの分離)、テンプレート、名前空間ですが、OOの概念もあります。テンプレートメタプログラミングは、ソフトウェアの作成に関してまったく異なる視点を提供します。これはコンパイル時です。実行と実行時の実行。テンプレートの継承(静的対動的多態性)。

Python-動的型システム、リスト内包表記-関数型プログラミング(?)、開発者向けのメモリ管理なし、インデント用のスペース

Objective-C-メッセージディスパッチ(nilにディスパッチ可能)、動的型システム(静的も)、遅延バインディング、OOコンセプト

0
stefanB

クレイジーに聞こえるかもしれませんが、私は最初にWindows用のVBScriptマクロの作成をプログラムすることを学びました。ここで入手できるテンプレートを使用しました http://vbscript-macro-template.blogspot.com/ それに追加しただけで、すべてを理解しようとしました。今、数年後、私は自分のデスクトップとデータベースアプリケーションを書いています。

0
r0ck3t3r

多くはすでに言及されていますが、私は間違いなく次の理由でC++(すでに完了)を追加します:

C++ for ポインタの使い方を学ぶそしてそれらについての主なアイデアを得る。

C++がまだ「より良い」言語であるかどうかについての議論がありますが(すべては本当に作りたいものに依存します)、ポインターが必要になった場合に備えて、ポインターを理解することは決して害にはなりません。

0
bastijn

あなたはすでに2つについて言及しました、ここにもう少しあります:

  • Java:JavaはOOP 'の良い例です。これは、oopを使用する必要があるためです。これは、ゼロからOOP言語。
  • 基本:廃止されましたが、手続き型言語の良い例であり、構文は非常に簡単です。
0
Leo Jweda

これまでのところ回答をスキャンしたところ、ActionScriptについての言及が見られなかったことに驚いています。

C/C++を学べば、Javaなら、そこにあるまともな言語のほとんどすべてに備えることができるはずです。コードの動作を確認したいのですが、Actionscriptを見つけました。 3(2または1ではない)とFlex(MXML)は、視覚的な概念をすばやくデモするのに最適です。

したがって、C&Javaは、大部分の言語の構文を学習するのに役立ちます。Actionscript3(Java構文)と非常によく似ています)&MXMLであなたを表現できます視覚的に非常に迅速にコーディングします。

0
kenneth

ドキュメントを読み書きするための擬似コード。 :p

C/C++またはその他の低水準言語を知っていると、マネージド/スクリプト言語がどのように機能するかの影響を理解するのに役立つと思います。ポインタなどは、変数参照をわかりやすく説明します。

0
Mike737

Webプログラミングの場合:PHP、ANSI-SQL、javascript。

HTMLとCSSはプログラミング言語ではないと主張する人もいるかもしれません。しかし、それらはWebアプリ開発に不可欠です。


デスクトップアプリ開発の場合、Qtフレームワークを使用したC++。 Qtは、C++に追加の「クロスプラットフォーム」フィズを提供します。

0
jrharshath

手続き型プログラミングの基本を開始および習得するためのPascalまたはBasic。

学校では、関数型プログラミングのためにHaskelを学びました。

そして、深くなるためにアセンブラまたはCを、OOPのためにJavaを試す必要があります。

Aにはこれについての議論はありません-それは私の好みと私が試したことだけです。

0
Martin Lazar

私はC/C++に座っていたので、世界中で使用されている他の多くの言語の基本が設定されています。

個人的に私はJava/JavaScript-> VB(幸いなことにショートコース)-> C#-> C++を学び、その上にPHPとPerlをピンチしました。その行の最良の部分はC#でした。その後、C++の舞台裏に移動します。

0
cyberzed

異なるプログラミング言語のセットを探します:

  • C++/C#/ Javaなど。
  • C /アセンブラー
  • Python、Ruby、Lua、Perlなど。
  • sh、awk、sed、正規表現
  • Prolog(または同様のもの)
  • Haskell/LISPなど.

どちらを選択するかは重要ではありませんが、各「カテゴリ」から1つを選択する必要があります。

0
Daren Thomas

アプリケーションのプロトタイプをより速く作成できるように、スクリプト言語を知っておく必要があります。

多分python/Ruby/Perl。あなたがJava彼のJava libsが好きな人なら、Groovyも代替手段です。

0
Geo

nderstandコンピューターとその基盤となるハードウェアを知りたい場合は、[〜#〜] c [〜#〜]が最も重要な言語であり、一般に-と言われています。 lingua franca コンピューターの。 Stackoverflowポッドキャストはこれを 最小1回 a でカバーする傾向があります。

これについては十分な答えがあるようですので、そのままにしておきます。

0
JesperE