web-dev-qa-db-ja.com

毎年新しいプログラミング言語を学ぶ場合、そのリストはどうあるべきでしょうか?

"The Pragmatic Programmer" の第1章では、最初の学習目標は次のとおりです。

毎年少なくとも1つの新しい言語を学びます。言語が異なると、同じ問題がさまざまな方法で解決されます。いくつかの異なるアプローチを学ぶことにより、思考を広げ、ゲッターがわだちにぶつからないようにすることができます。 [...]

キャリアを通じてこれを達成するために、言語のリストはかなり長くなる可能性があります(特に、管理に「進みたくない」場合)。明らかに、プログラマー(または任意の形式)の教育により、商業的に有用な言語のコア(求人からの通常のリスト:C、C++、Ruby、Python、JavaScript、C#、Java、VBなど)から始めることができます。 。)。さらに、正式または非公式の学習プログラムは、機能的アプローチをカバーしている可能性があります(Haskell、LISP、またはML派生言語など)

しかし、そのリストの妥当なサブセットが学習されたら、次は何ですかそしてなぜ

19
Richard

面白くして、プログラミング言語を使用したことがないニッチを埋める独自のプログラミング言語用のインタプリタまたはコンパイラを毎年作成してください。毎年、前の年に書いた言語を使用して次のコンパイラー/インタープリターを作成します。

19
alternative

「限界関連性」を最大化する必要があります。つまり、常にまだ得意でない新しい領域に挑戦します。プログラミング言語と概念の両方を変更します。オブジェクト指向言語がわからない場合は、JavaとHibernateなどの高抽象化フレームワークを試してください。次に、システム管理機能をPythonまたはPerl。次に、CまたはC++で低レベルのスキルを習得し、高性能のマルチスレッドサーバーコードを記述します。関数型プログラミングがわからない場合は、Haskellを次のようなグラフ理論の問題で試してください ペグソリティアの解決 など。エルディテや object-capability security などの特殊目的のものに到達するまで、学習したすべてのものがすぐに市場価値を持つようにすることは非常に現実的です。 Prolog または [〜#〜] vhdl [〜#〜]

ちなみにいい運動!これにより、プラットフォーム固有の手法に頼るのではなく、言語にとらわれない言葉で問題を考えることができます。たとえば、C++とPythonの間の仮想メソッドディスパッチの類似点と相違点を習得したら、他の言語でもほぼ即座に「理解」できます。

13
DomQ

プログラミングについての考え方に影響を与えない言語は、知る価値がありません。 -アラン・ペルリス

他のいくつかの回答が触れられているように、毎年1つの新しい言語を学習している場合、その理由は何ですか。プログラマーとしての能力を拡張することです。どうやって?すでに知っている言語のパラダイムとは異なるパラダイムを持つ言語を学習することによって、そしてあなたがすでに知っているパラダイムをストックすることは、次に学ぶ言語を決定します。

これらのパラダイムは何ですか?高度な本 コンピュータプログラミングの概念、テクニック、およびモデル は、優れた グラフィカルマップの概要 を提供します。

したがって、C言語に似た命令型言語しか知らない場合は、Scheme/LISPを学ぶことは非常に役立ちます。命令型および関数型言語をすでに知っている場合は、Prologの学習が役立ちます。

複数の言語とパラダイムを教えようとする最近の本は Seven Languages in Seven Weeks です。もちろん、1週間の学習後は各言語に堪能ではありませんが、それは親しみやすく、実践者指向のマルチパラダイムの視点を提供しているようです。

別のパラダイムを試してみると、それはまさに禅の瞬間です。命令型プログラミングから関数型プログラミングに移行することで、コンピューティングの世界をまったく新しい観点から見ることができました。幸せな学習!

9
limist

C-本質的に「すべての基礎となる」システムプログラミング言語

LISP(Scheme)-優れたハッカーがクールと定義していると考える奇妙だが強力なur言語

Smalltalk-これがOO

Actorを理解するためのErlang(または他のActor言語)

Haskell-モナドを理解する

Javascript-あらゆる場所でブラウザのスクリプトを作成するために不可欠なため

Python/Ruby/Perl(実際にはどちらでもかまいません))の1つ-だから、人気のあるモダンな高水準のスクリプト言語がわかります優れたライブラリサポートは

SQL-リレーショナルデータベースと通信できる

プロローグ-あなたはまだあなたの心を吹く必要があるので

9
interstar
  • Go(同時実行性とそれほど伝統的ではない概念を十分にサポートする新しいシステムレベルのプログラミング言語)
  • Lua(スクリプト言語はシンプルで表現力があり、非常に柔軟でバランスの取れたパラダイムが必須、関数型、メタプログラミングであり、OOPが可能です)
  • D (C/C++ done right)
  • Groovy(Java世界での表現力とメタプログラミング)
  • エッフェル(Design By ContractとOOPへの別のアプローチ)
  • プロローグ(論理プログラミング言語)
4
Maniero

1)プロローグ:これは、これまで使用してきたすべての命令型言語とはまったく異なり、問題についての考え方を変えます。

2)LISP:それがなければ、Viを使用することもできます

3)Erlang:繰り返しになりますが、まったく異なります。

4)Turing Tarpit(例:Brainfuck)からの何か、おそらくそのためのコンパイラーまたはインタープリターを作成します。これを行う理由は考えられませんが、良い考えのように感じます。

2
Paul Butcher

あなたがリストしたものの他に、

Haskell、F#、Clojure、OCaml、Lua、Go、D、Erlang、ObjectiveC。

1
grokus

新しい言語を学ぶのは良いことだと私は同意します(そして長いキャリアを通じて不可欠でさえあります)、私は1年に1年が最初の5-10年を過ぎすぎていると思います。私がむしろ見たいのは、彼らがすでに知っている言語について新しいことを学ぶこのレベルの経験を持つ人です。ある時点で、深い知識と幅広い知識が必要になります。したがって、12の言語でIf構文を作成できます。私はむしろ、本当に深く掘り下げて、少なくとも1つのことに精通している人を見たいと思っています。そして、次の数年は何か別の専門家になります。 30年以上のキャリアの中で、多くのことの基礎だけでなく、誰かに深い知識を持たせたいと思っています。

1
HLGEM