web-dev-qa-db-ja.com

ポリグロットプログラマになる

いくつかのプログラミング言語を知っています。最も市場性の高いものは、Java、Javascript、および重要でないストアドプロシージャです。また、Python、Actionscript、いくつかの恐竜言語も知っています。私はScala/liftでおもちゃのプロジェクトを始めています。私は、それぞれの言語の特徴と彼らが奨励するパラダイムを楽しんでいます。

私は、ポリグロットプログラマの概念に興味があり、プログラマになります。真のポリグロットプログラマになるためのステップは何ですか? (つまり、私はさまざまな言語を知っているだけでなく、それらをよく知っており、それらの優れたデザインパターンを知っています。)これは、市場性を高めることができるものですか?

7
Joe

私はいくつかの言語で非常に高度なプログラマーです。それが私の多言語プログラマになるかどうかはわかりませんが、少なくとも私は道を進んでいます。

この修飾子を取得するために私が重要だと考えるものと、それらを取得するためのいくつかのヒントを次に示します。

まず、いくつかのプログラミングパラダイムを習得する必要があります。

  • 手続き型
  • オブジェクト指向
  • 機能的
  • イベントドリブン
  • メタプログラミング

この点に到達するには、2つのことをお勧めします。

  • パラダイムを促進するプログラミング言語を試してください。
  • パラダイムを促進しない言語でパラダイムを試してください(特定のパラダイムが何であるか、それが解決する問題、およびそれらを使用したときにコンピューターが実際に何をしているのかを示します)。良い例はOOP in C(vtablesを手動で作成する、これは実際の人がやる方法です))または強く型付けされた言語の非型言語(Dの例としてstd.variantを参照) 。

次に、良い習慣とそれらが良い習慣である理由を知る必要があります(ルールのWHYを知っておく必要があるため、いつルールを破るかを知っておく必要があります)。

  • DRY
  • 関心事の分離
  • ネーミング(実際にはこれは最も重要なものの1つです。コードは名前をスローすることをコードに通知するためです。たとえば、変数の短くて正確な名前が見つからない場合、変数は適切な場所またはその場所にありません。目的は明確ではありません)。
  • 他にもたくさんありますが、実際にはここでリストを作成することはできませんが、最も重要なもののいくつかはすでに提供していると思います。

その点で進むために、私は本を提案します。実用的なプログラマーも良い、きれいなコードです。完全なコードも優れていますが、情報が大きく非常に密度が高いため、読むのは非常に困難です(ただし、それもその強みです!)。

また、これらの概念を適用する際にひどく失敗する必要があり、ジャングルのように見えるコードになってしまいます。移動が難しく、適応が難しく、不親切な住民がいます。この最後のポイントは、ツールを使用して高品質のコードを取得する方法を教えるため、重要です。品質はわかっているが、それを作成するためのツールを習得できない、またはその逆の場合はどうなりますか?

与えられたポイントを習得すれば、自分をポリグロットプログラマーIMOと見なすことができます。ちなみに、これがあなたが最高のプログラマーになるために必要なすべてではありません。コンピュータサイエンス、現在のテクノロジに関する知識、自分の管理(場合によっては:D)、要件の理解など、他にも多くのことが必要です。

最後のヒントとして、積極的な開発の下で最近の言語に参加することをお勧めします。これにより、言語がどのように作成され、その理由がわかります。これは、実際の言語の制限、より良い代替案を取得するために直面​​する困難を教えてくれます(それが簡単だったら、私は最初からやっていただろう!)。私はDです。これもマルチパラダイム言語なので、良い候補です。あなたのものを選んでください!

幸運を。これには作業が必要ですが、それだけの価値があります。

21
deadalnix

私が言える最も重要なことは、プログラミング言語の観点から考えるのではなく、プログラミングの概念について考えることです。 OOPはまだOOPです。すべての言語には、その処理方法に独自の癖がありますが、OOPの概念は、どの言語で書いても同じです。

6
GSto

多様なプログラミング言語の知識を実際に活用したい場合は、 言語指向プログラミング モデルの採用を検討してください。このようにして、日常的に新しい languages を発明および実装し、できるだけ多くの言語概念を知ることは、そこで非常に有益です。

3
SK-logic

最も用途の広いポリグロットプログラマでさえ、強い言語と弱い言語があります。ポリグロットであるIMOのポイントは、特定の言語の多くについて深い知識を持っていることではなく、言語とパラダイムを簡単に切り替えることができ、新しい言語をすばやく取得できることです。 12の根本的に異なる言語の達人であることは現実的な目標ではないと思いますが、4から6の言語(付属のコアライブラリ、それぞれのコミュニティの習慣や文化を含む)に堪能であることに加えて、さらに6〜10言語は確かに実行可能です。

市場性に関する限り、プログラマーをプロジェクトに割り当てることができることは、専門知識の範囲外では十分に機能しない専門家の集まりよりも重要です。ほとんどの企業は単一のテクノロジスタック(.NET、Java、LAMPPなど)に焦点を当てていますが、プロジェクトごとに異なるプラットフォームを使用する企業も確かにあります。

2
tdammers

私は自分をポリグロットプログラマとは見なしていませんが、私が知っているいくつかの言語は、コーディングのスタイルが非常に異なっています。開始するには、次のことをお勧めします。

  1. 多くの言語でwellプログラミング方法を知っている.
  2. 異なる言語の基礎の利点と欠点に注意してください。一部の言語は、本質的にオブジェクト指向、一部の文字列指向、一部のデータ指向です。特定のスタイルをいつ使用すべきかを適切に評価できるようにします。
  3. 多くの異なるコーディングスタイルに精通してください。多くの言語には独自の特異性があるため、これらに精通してください。それはその言語の開発者にとってあなたのコードをはるかに読みやすくします。
1
eykanal