なぜ初心者プログラマー(私のような)は、取り組むべき次のプロジェクトについて尋ねるのではなく、常に次の言語について尋ねるのですか?
Eric Raymondが「 How To Be Become A Hacker 」エッセイの「 Learn How To Program "」のセクションで、言語を学習する順序について話しました(対プロジェクトに取り組むべき順序)。
初心者は「ハンマーの使い方は知っていますが、次にのこぎりや水準器の使い方を覚えるべきですか?」
私が取り組むことに関心のあるほとんどすべての有意義なプロジェクト(たとえば、Webアプリ、一連のポーカー分析ツール)は、私が十分に学ばなければならない多数の言語(Python、C、HTML、CSS、Javascript、SQL)およびフレームワーク/ライブラリ(wxPython、tkinter、 Django)を実装します。
おかげで、
マイク
ほとんどの人が言語を学ぶことを始めるとき、彼らはその言語で書かれたプロジェクトに取り組むために、現在または将来のどちらかでそれをしたいと思っていると思います。そのためには、その言語を学ぶ必要があり、時間がかかります。プログラミング言語はツールに似ていますが、ハンマーの使い方を60秒ほどで習得できますが、言語の使い方を習得するには少し時間がかかります。したがって、多くの人々は、その言語で書かれたプロジェクトに取り組む前に、その言語を学ぶことに集中しています。
別のメモでは、ほとんどの人が次に学ぶ言語を尋ねると、彼らは本当に次に学ぶプロジェクトを考えていますが、彼らは学習に焦点を当てています最初に言語。
最後に、特定のプロジェクトや目標を念頭に置いていない場合でも、学習言語はfunになります。
多くの専任開発者の動機は、より雇用しやすくなることです。
通常、より雇用しやすくなることは、HRスクリーナーのハードルを通過することを意味します(後で実際の面接のハードルを通過します)。
通常のHRスクリーナーには、通常、履歴書と照合できる言語のチェックリストがありますが、スキルやプロジェクトを評価する方法はありません。
実際の面接での成功は通常、言語の経験と深い理解よりも、運と言語の最小限のスキルに依存します。
したがって、上級職に応募しない限り、多くの言語で平凡であることは、いくつかの言語の専門家よりもエンプロイアビリティにとって優れています。
大工に似たプログラミングの選択肢は、「次にどのアプリケーションを構築する必要があるか」というものです。または「次にどのシステムを構築する必要がありますか?」これはかなり有効であり、ほぼ普遍的に適用できるプロジェクトとは別のものです。何かを結びつけるために新しいソフトウェアを作成する必要がある場合と同じくらい簡単に、食事を変えたり、20ポンドを失うプロジェクトをすることができます。
しかし、質問に答えるなら、言語はその人のツールボックスの中で履歴書に役立つツールを表すという考えだと思います。一部の人々は、請求書を支払うためにプログラマーになることを選択する場合があり、そうであれば、言語である可能性が高い次のツールを追加するかどうかを尋ねるかもしれませんが、他のいくつかのエリアに名前を付けます。大工が彼が持っていた道具を開示しなければならなかった場合、彼は私が主張するのと同じような見方をしているかもしれません。ただし、ほとんどの大工が非常に迅速に要求された場合に取得またはアクセスできると想定されている一般的なツールセットがあります。人々が使う鋸やハンマーの種類がいくつあるか見たことはありますか?
多分それは、少なくとも一部のプログラマにとっては、ハッカーのメンタリティに関する部分かもしれません。ハッカーは Jargon file として定義されています
「プログラム可能なシステムの詳細とその機能を拡張する方法を楽しんでいる人は、必要最小限のことだけを学びたいほとんどのユーザーとは対照的です。」
したがって、ハッカーの魂にとって、それは最終製品自体よりも、プロセス、概念、ツール、そしてはい、何かを作成するための言語を学び、「いじくり回す」ことについてです。プロセス自体の詳細。
それは、次の新しいことや挑戦への絶え間ない努力です。完成したプロジェクトは緩やかで、魅力がすぐに失われます。時々(ほとんどの場合?)プロジェクトが完了する前に、最大の創造的または技術的な課題が克服されます。新しい精神的な挑戦に飢えている心が前進するとき、多くのプロジェクトは放棄されます。
特にハッカーは、新しい視点、概念、抽象化、考え方、メンタルハッキングのようなものに興味を持っています。
「プログラミングについての考え方に影響を与えない言語は、知る価値がありません。」 -アラン・ペルリス
今日、C、C++、C#、Java、JavaScript、Python、Perl、Ruby、Visual Basicなど、さまざまなくだらない言語が存在します。プログラマーは、これらの言語の多くを学習および混合することにより、これらの言語の固有の厄介さを補います一緒。
現代のコンピューティングに蔓延する狂気から解放された、LISPコミュニティとして知られている小さなコミュニティがあります。
LISPはプログラム可能なプログラミング言語であるため、他の言語やXMLなどの他のデータ形式に迷うことなく、アイデアをすべて表現できます。 LISPは、 LISPマシン で見たハードウェアレベルまで、どこにでも適用できます。
新しいプログラミング言語を学ぶことは莫大な投資であり、誰も悪い投資をすることを好まないからです。
新しいプログラミング言語を学ぶことは、ループ構造の記述方法、クラスの宣言方法、別のモジュールのインポート方法を覚えることではありません...
その言語でイディオマティックコードを記述する方法を知っている必要があり、このプロセスは実際にはかなりの時間と献身を要します。
時間は限られたリソースであり、努力は限られたリソースですが、注意散漫、毎日のストレス、請求書、日曜日のスポーツゲームは常に存在し、共に生きていかなければなりません。
プログラマーは賢明な投資を望んでいます。