世界に衝撃を与える2万行のコード?

SmallTalkの作者であるAlan Kayは、実験的なSTEPSシステムに取り組んでいます。これは、オペレーティングシステムとアプリケーションプログラムを置き換えることができる環境ですが、この環境のコードの量は20,000(20,000!)行のコードを超えてはなりません。 おそらく多くの人がこれを聞いたことがあります 。 これは、すべてのプログラマーの夢を実現する試みの1つです。すべてを新しく、美しく書くことです。 しかし、それは可能ですか?

画像



再び640K



有名な640Kを2万行のコードに分割すると、1行あたり32バイトになります-これは真実と非常に似ています。 アランケイはこの特定のランドマークを念頭に置いているようで、単に「640Kで十分です」と大声で言うのは恥ずかしいです。



ビル・ゲイツは、これについても30年前に推測していました。 それから彼は彼のお金を台無しにしました、そして、最初に彼は正しい子供でした:彼のBASICはたった4Kを占有しました。 時間が経つにつれて、彼はムーアの法則をソフトウェアのサイズと収入のサイズに適合させることを推測しましたが、彼は簡潔さには至りませんでした。



彼の若い頃、ビルの両親は彼を精神科医に連れて行き、プログラミングによる彼らの子孫への執着を見ました。 しかし、時間の経過とともに、ビルはボスになったためプログラミングを停止しました。 「私は夏が大好きでした。 しかし、彼が育ったとき、彼はお金がなければ夏は一年中できることに気づきました。 今、私はお金が大好きです。」



肥大化したコードはレドモンドでのみ書かれていると考えるのは簡単でしょう。 ライナスでさえ、彼の創作を見ながら嘆きます:「核は腫れ、巨大です」。 新しいリリースごとに、Linuxカーネルのパフォーマンスは約2%低下します。 そして、これは避けられない、 と強力なフィンは言います。



ソフトウェアの量を減らすことはできますか? たとえば、テキストエディタを使用します。 クレームされた機能を実装するために、著者は、たとえば特定の検索アルゴリズムを使用します。 しかし、コンピューターにインストールされているブラウザーのコードにも検索があり、場合によっては同じアルゴリズムを使用します。 また、オフィススイート、ゲーム、OSにも含まれており、これらすべての上で動作します。 この検索を一度実装してから、それだけを使用するのは論理的です。 綿密な分析により、大量の反復的なことが明らかになります。



有能な宝石の分解は驚くほど効果があります。主なことは、繰り返しの断片を見て、それらを別々の抽象化で強調してから単純化することです。 Alan Kayはこれを行います。TCP/ IPプロトコルを実装するコードは160行かかります。 彼は一人ではありません。 Hovik Melikyan は、 80,000行のC ++コードと55,000行のVBコードのプログラムがシェルスクリプトで10行に置き換えられた例を示しています。



しかし、すべてを2万行のコードで置き換えることは可能ですか? 可能ですが、多くの標準を放棄した場合のみです。 たとえば、STEP作成者の観点から見ると、Webページはハイパーリンクを使用してドキュメントに置き換える必要があります。 つまり 「間違った蜂と間違った蜂蜜」(http、html、cssなど)は正しいものに置き換えられます。 そして、ほとんどすべてのことです。



どんな魔法のコードがありますか?



そして、このコードはどうなりますか? まあ、彼が「 電信線の干渉 」ではなかったなら。 Robert Sebestaはそのようなコードについて次のように書いています。「Daniel McCrackenは、APLで書かれた4行のプログラムを読んで分析するのに4時間かかったことをかつて指摘しました。」



このシステムには、高レベル言語のOMetaとNileがあり、その構文はそれぞれCとPythonに似ています。 それらのプログラムは、最終的に低レベル言語「なし」のプログラムに翻訳されます。 OMeta:計算機の構文の例を次に示します。

画像

外観-魔法のようなもの、読みやすく、理解しやすいものはありません。



これが理論的にも不可能なのはなぜですか。



アランケイの世界支配のアイデアを支援するには、禁欲主義に慣れる必要があります。 たとえば、テキストエディターを考えてみましょう。 21世紀ですが、スペルチェックは必要ありません。 なんで? はい、彼女はこれらの2万人に収まらないからです。 自然言語は複雑です。 ある奇跡によって、言語のテキストを分析するのに突然100行のコードで十分である場合、実際には言語の数が数千単位で測定されることを考慮する必要があります。 しかし、言語の数が州の数と同等であっても、これらの100行にさらに200行を掛ける必要があります。 それはそれらの同じ2万であることが判明します...



ドライバーはどうですか? 1つのタイプのデバイスに同じ100行で十分な場合、デバイスのタイプは言語と状態の数よりもはるかに多くなります。 デバイスメーカーがKayを支援し、ドライバーをデバイス自体に保存することを決定した場合、「肥大化したソフトウェア」はその保存場所を変更するだけです。



コードの20%がユーザーのニーズの80%をカバーすると想定しても、満たされていないニーズの20%はそれぞれ異なることがわかります。 Photoshopが必要なもの、AutoCADが必要なもの、Deep Fritzが必要なものがあります。 そして、多くの点で。



STEPSが「離陸しない」理由。



1)世界中で数兆ドルがソフトウェア開発に投資されていますが、そのほとんどはSTEPSが競合する可能性のあるすべての企業にあるわけではありません。 最も一般的な言語のコンパイラさえないので、これまでに得られたものを転送する可能性のヒントすらありません。



2)このような短いコードは必要ありません。 メモリを節約するために? メモリは1ペニーかかり、その容量は最も単純なデバイスでも非常に640Kを超えます。 たぶんプログラムはもっと速く動くのでしょうか? いいえ、このシステムのすべてのプログラムは、まず低レベル言語のNothingのプログラムに翻訳され、その後のみ実行されます。 ケイ自身によると、彼のコードは従来のコードよりも約30%遅いです。



これらが最も明白な理由です。 したがって、Alan Kayと彼のチームの開発は、最新のOS、ブラウザ、オフィスアプリケーションに取って代わることはできません。



STEPSが突然人気になった場合はどうなりますか?



1)それから、マイクロソフト、アップル、グーグル、アドビなどの最大の納税者は、ケイのアプローチが間違っている理由を主婦と政府に納得させます。 そして一般的に、彼らは多くの特許に違反しています。 STEPSの下には使い慣れたアプリケーションはありません。 コンピューター上のデータは保護されておらず、セキュリティは確保されていません。



2)偉大で恐ろしいLinusでさえ、世界に衝撃を与える2万行のコードに反対します! 彼は何をすべきか? ソファをドラッグ&ドロップしますか?

ひそかに同情的でさえ、そのような見通しに抵抗する理由があります。



3)ウイルス作成者は、STEPシステムが非常に使いやすいことがわかります。 そして、アンチウイルス企業が追いつきます。 グーグルは、データをコンピューターに保存することはもはや一般的ではないことを一般的に説明します。データをクラウドに保存すると、「良い会社」がその2万行のコードを書き込みます。



これはすべてとは程遠い...



その後、STEPSはどうなりますか?



彼女は詩人の青い夢のままです。 ルーチン作業に疲れたプログラマの睡眠。 この世界には永遠の価値があることを思い出させてください:コードの簡潔さ、明快さ、美しさ。 思考の力の宣伝。 ロールモデル。 そして、もちろん、実験のテスト場です。



All Articles