システムの複雑さの増大は容赦なく、圧迫され、最終的には不自由です。古い世代のプログラマとしての私にとっても、非常に残念です。
私は40年以上プログラミングを続けており、50〜100の異なる言語または方言でコードを記述し、5〜10の専門家になりました。私が非常に多くを主張できる理由は、ほとんどが同じ言語であり、微調整を加えているからです。この調整により複雑さが増し、すべての言語がわずかに異なります。
コレクション、変換、並べ替えと検索、エンコード/デコード、フォーマット/解析、バッファと文字列、算術、メモリ、I / Oなど、同じアルゴリズムを何度も実装しました。すべての実装は少しずつ異なるため、新しい実装はすべて複雑になります。
Webフレームワークやモバイルアプリの空飛ぶ空中ブランコの芸術家たちが生み出した魔法、そしてこんなに短い時間でこんなに美しいものをどのように作り出すことができるのか、私は疑問に思います。それから、彼らがどれだけ知らないか、彼らがデータや通信、テスト、スレッド、または何をする前に何を学ぶ必要があるかを理解します。
私は、第4世代言語の時代に自分の技術を学びました。そこでは、ライティングソフトウェアの繰り返し部分をますます多く取り込むために、より高いレベルの言語を連続して生成すると信じていました。それで、それは正確にどうなったのですか?
MicrosoftとIBMは、WindowsとOS / 2向けのアプリを書くためにCに戻ることでその考えを打ち破りましたが、dBase / Foxpro、さらにはDelphiも衰退しました。その後、Webは、HTML、CSS、およびJavaScript / DOMのアセンブリ言語の究極のトリオで再びそれを行いました。そこからすべて下り坂です。常により多くの言語、より多くのライブラリ、より多くのフレームワークとより複雑な。
私たちは別のやり方でそれをしなければならないことを知っています。CoffeeScriptとDart、LessとSass、HTMLを記述しなくても済むテンプレートについて知っています。とにかく知っています。私たちには漏れやすい抽象化に満ちたフレームワークがあり、不可解な呪文を学ぶ少数の選ばれた人々によって何ができるのかを見ていますが、私たちと私たちのプログラムは過去の決定に閉じ込められています。変更したり最初からやり直したりするには複雑すぎます。
その結果、簡単であるべきことは容易ではなく、複雑であることから可能であるべきことはほとんど不可能です。確立されたコードベースに新しい機能を実装するために変更を加えるコストを見積もることができ、私は大丈夫だと確信できます。見積もることはできますが、正当化することも説明することもできません。複雑すぎます。
最後の質問への回答として、若いプログラマーにできる限りレイヤーケーキの上位に着手し、必要性と欲求が推進力を提供する場合にのみ下位レイヤーに飛び込むことを強くお勧めします。私の好みは、ループがなく、分岐や明示的な状態がほとんどまたはまったくない言語です。LispとHaskellが思い浮かびます。実際には、私は常にC#/ Java、Ruby、Javascript、Python、およびSQLで終わります。それがコミュニティがある場所だからです。
最後の言葉:複雑さは究極の敵です!それを打つと人生はシンプルになります。