HN 日本語サマリー

← 一覧へ戻る
プログラミング

楽しさが足りないから:言語が失敗する理由

Because It's Not Fun Enough: why languages fail (bytecode.news)

77 pointsby jottinger85 コメント

要約

プログラミング言語の興亡は、技術的なメリットだけでなく、人間的な要因、すなわち「職業」「芸術」「仕事」という3つの側面への貢献度によって決まります。言語がこれらのいずれかを不必要に困難にすると、代替手段が現れたときに淘汰される運命にあります。C++やRustのような「難しい」言語が成功するのは、その困難さが「選択された精密さ」に由来し、リターンがあるためであり、Adaのような「摩擦」を伴う困難さとは異なります。

全文翻訳

historylanguagepsychologysoftware engineering Andrew Oramは、プログラミング言語がなぜ台頭し、衰退するのかについて、Linux Professional Instituteのために2部構成のシリーズを書きました(パート1とパート2)。 大まかに言うと、C、C++、JavaScriptは(今のところ)不滅であり、Javaは可能性があると述べています。 COBOL、FORTRAN、BASIC、Perlは respectableな人生を送り、引退するために田舎の農場に送られました。 Pascal、Objective-C、PL/I、Ada、Tclはfalse startsであり、Rubyはバブルのどこかにいます。 この業界の書籍を長年編集してきた人物による良いツアーであり、その終盤近くで、OramはSimon Peyton Jonesの言葉を引用しています。 彼は、言語の採用は「その技術的なメリットとは非常に弱くしか関連していない」と観察しており、実際の決定を行うのは社会的・経済的な要因であると述べています。 その引用が記事そのものであり、コンテンツのかなり奥深くに埋もれているのは少し驚きです。 おそらく、人間の本性に対するエンジニアリングは、その引用を主要なテーゼとして前面に出すことを難しくさせているのでしょう。なぜなら、私たちはそれをそれほど率直に読みたくないからです。 しかし、それは真実です。 言語の採用は技術だけではありません。それは技術と人間の両方です。 その引用の前に来る両方のパートのすべては、その感情の証拠であり、組み立てられていますが、証拠として整理されたことはありません。 シリーズは言語を結果によって分類しています:不滅、尊敬される、そして失敗した。 興味深いのは、死因による分類です。 そして、原因はPeyton Jonesが圧縮し、Oramが取り囲む単純な観察から出てきます。 プログラミングは人々によって行われ、人々にとってそれは同時に3つのものです。 それは職業であり、芸術であり、そして仕事です。 言語はこれら3つすべてを実践する誰かに役立ち、そして3つのうちのいずれかを不必要に困難にする言語やツールは、それが置き換えられる瞬間を過ぎて生き残ることはありません。 職業とは、世界が支払ってくれる呼び出しです:誰かが給料があってもなくても行うこと。 芸術とは、誰かが愛と(うまくいけば)スキルから行うものであり、仕事とは日々の業務、誰かが食べて、テレビを見て、屋根の下で寝るために行うものです。 ミュージシャンは、このトリプルアイデンティティを毎営業日生きています:カバーセットは仕事、オリジナルは芸術、そして職業は毎日楽器を手に取るものです。 プログラマーもそれを生きています。私たちはそれをそれほど頻繁に声に出して言わないだけです。 そのように死体を分類すると、それらはきれいに分離されます。 一部の言語は仕事として失敗しました:標準Pascalは使いやすい文字列型なしで出荷され、Tclはプログラムをある程度の重さを超えて運ぶことができなかったため、日々の作業は必要以上に困難でした。 一部は芸術として失敗しました:AdaとPL/Iは、プログラマーによってではなく、プログラマーのために選ばれた、命令の言語であり、誰も命令を愛したことはありません。 一部は職業として失敗しました:Perlの仕事市場はPythonに移動し、戻ってきませんでした。 そしてHaskellは、成功をあらゆるコストで避けることを公言し、その目標を達成しました。 異なる病気、一つの病理。 あらゆるケースで、誰かが3つの軸のうちの1つを不必要に困難にし、言語が依存していた人々は、それがより簡単で、より楽しく、またはより作業しやすかった場所に行きました。 人生を困難にする言語は、それが置き換えられる瞬間を過ぎて生き残ることはありません。 その声明は、Oramのリストにあるすべての異常を説明しています。 JavaScriptは、それを書いている多くの人々にとって芸術として失敗しますが、ブラウザの主要な汎用言語であり続けているため、それでも生き残っています。 Objective-Cは、芸術と仕事の両方として扱いにくく、これまでで最も収益性の高い開発者エコシステムへの唯一の扉であったため、15年間繁栄しました。 Swiftが存在した瞬間、それは蒸発し、今ではその子孫に保存された影として生き残っています。 COBOLは、それを置き換えるのがあまりにも難しく、高価であるため生き残っています。 これは一部の企業が気づき、対処しようとしていることです。 もし成功すれば、COBOLはおそらく消えるでしょう:100%の時間機能し、プログラミングが約1%楽しい言語です。 Adaは、認証体制がそれをほぼ交換不可能にした場所で今日でも生き残っています。 その難しさは、立ち退き通知です。 代替が現れた日に発行され、それより早くはありません。 これにより、C++が難しく、不滅であり、これらすべてに明らかに矛盾しているように見えます。 Rustも、設計上難しく、台頭しています。 問題は、難しさには2種類あり、シリーズはそれらを混同しているということです。 1種類の難しさはヴァイオリンのようなものです:正確で、要求が高く、正確で要求が高いからこそ選ばれます。 人々はスポーツのためにC++でコードゴルフをします。 人々は、借用チェッカーが最終的にクリックした日についてエッセイを書き、弦楽器奏者がビブラートが戦いでなくなった日について話す方法について書きます。 難しさ自体は致命的ではありません。十分なリターンがない難しさは致命的です。 C++とRustには、ヴァイオリンのようにそのリターンがあります。 もう1種類の難しさは摩擦です:Adaのコンプライアンス装置、標準Pascalの欠けている部分、COBOLの驚くほど正確で要求の高い構造構文は、実際にはプログラム構造をあまり作成しません。 誰もAdaの書類がクリックした日についてエッセイを書いたことはありません。 その難しさは、3つの軸すべてに影響します...何のために?何もありません。 AdaとC++は、調査ではどちらも「難しい言語」と読まれます。 しかし、Adaは標準言語としては死に、C++は今日生き残っています。なぜなら、「難しい」部分は異なる軸にあったからです。 そして、Javaはこのすべての中でどこにいるのでしょうか? 良い質問です! JavaはC++やRustほど難しくないので、それらの防御は必要ありません。 現在、ユーティリティと楽しさの両方から不滅であり、パッケージングと機能の最近の改善のおかげで、エコシステムに多くの情熱が回復しています。 しかし、それはプログラマーの完全に個人的な決定です。 Javaがすぐに死ぬとは言えないと思いますが、なぜまたはいつかは言いにくいです。 私は個人的に毎日Javaランドに住んでいます。 私は偏っています。 音楽に戻りましょう。そこでアナロジーはアナロジーではなくなります。 現代のサンプラーは、ヴァイオリンが作るすべての音を再現できます。 ヴァイオリンが作るすべてのニュアンスを再現できます。それはテクニック、ボウイング、アーティキュレーションの百科事典です。 そして、それを実際にすべて行うには、ヴァイオリンを演奏するよりも多くの作業が必要です! 能力は問題ではありませんでした。 ヴァイオリンが演奏されているような音を得る最良の方法は、実際にヴァイオリンを演奏することであることが判明しました。 これもまた、静かに、コードが存在する理由です:プログラムは行動のコンパクトな仕様であり、その仕事のために構築された表記法よりも、その行動を文章で説明するにはコストがかかります。 私はコンピュータにギターを演奏させることができ、私がギターで演奏するのと同じように演奏させることができます:私は自分がどのように演奏するかを知っており、自分の好みやアクセントを理解しています。 私はジェスチャーごとに、ノートごとに、私の演奏をギターで再現できます。 そして、それは楽しくありません。 全くありません。 結果は大丈夫です。行うことは失われ、行うことがポイントでした。 ランダム化を導入したり、自分のタイミングを使用したりしても、それに生命はありません。 これは、ここで言及したすべてと同じ3つの軸に沿って失敗します。 ノートだけを欲しい人にとっては、サンプラーが仕事を完全に、完全に勝ち取ります。 それは決して間違ったことや間違った瞬間に演奏することはありません。 演奏する人にとっては、それを運転するコストが演奏するコストよりも高く、芸術に全く触れないため、失敗します。 だからこそ、トラックにギターが欲しいときは、いつもギターに手を伸ばします。 それを選ぶことがポイントです。 プログラミング言語を分類する法則は、その後継者も分類します。 特別な弁護は必要ありません...または許可されません。 では、なぜプログラミング言語は台頭し、衰退するのでしょうか? Peyton Jonesはすでにそれを言っており、Oramはすでにそれを引用しています。 言語はベンチマークの戦いに負けるのではありません。 それらは人々を失います。 それらは、職業、芸術、そして仕事が軽くなる時に台頭し、他の何かが同じ重さを運ぶことができるようになった日に衰退します。 なぜなら、その瞬間、残された唯一の質問は…楽しいかどうか? Pascalに関する余談ですが、false startは...少し誤解を招きます。 Pascalの商業的な人生は教室で終わりませんでした。 それはBorlandに移り、そこでTurbo Pascal、そしてDelphiは10年以上にわたりPC開発を支配しました。 Turbo Pascalの作者はAnders Hejlsbergで、彼はDelphi、次にC#、そしてTypeScriptを構築しました。 一方、Wirth自身のラインは...