世界の終わりに最適なプログラミング言語

世界の終わりに最適なプログラミング言語

電力網がダウンしたら、Forth と呼ばれる古いプログラミング言語と、Collapse OS と呼ばれる新しいオペレーティング システムだけが唯一の救いになるかもしれません。

画像にはカップ、コンピューター、電子機器、PC、コンピューターハードウェア、コンピューターキーボード、ハードウェア、衣類、手袋、ペンが含まれている可能性があります。

イラスト:サミュエル・トムソン

一度終末について考え始めると、なかなか止められなくなってしまいました。ニューヨークのユニオンスクエアに掲げられた終末時計に遭遇し、不安な気持ちになったことがきっかけで、WikiHowでサバイバルのヒントを探し始めました。そしてすぐに、ヴァージル・デュプラスというカナダ人プログラマーが書いた終末論的な著書にたどり着きました。彼は文明の崩壊が差し迫っており、それが二波で訪れると信じています。

まず、世界的なサプライチェーンが崩壊するでしょう。現代のテクノロジーは、急激な気候変動に非常に脆弱な、繊細な工場群と国際輸送ルートに依存しています。iPhoneは韓国製のメモリチップ、台湾製の半導体、そしてブラジルと中国の組立ラインを使用しています。これらのつながりが断たれると、社会全体の崩壊が促進されるとデュプラス氏は言います。

第二段階は、最後のコンピューターがクラッシュしたときに起こります。現代のハードウェアは複雑なため、修理や再利用はほぼ不可能です。新しいデバイスを製造する手段がなければ、デュプラス氏は、爆発音は小さく、むしろ静寂が訪れると予測しています。ルーターは故障し、サーバーは息を引き取り、電話は故障し、何も機能しなくなります。

ただし、Collapse OS は例外です。軽量で、回収されたハードウェアで動作するように設計された、デュプラスの世界終末のためのオペレーティング システムです。

デュプラスは妻と二人の子供とともに、カナダのケベック州の田舎町、人口500人の町に住んでいる。その町では人々は自分で薪を切り、自分で食べ物を育て、時には自分で家を建てることもある。彼にGoogleカレンダーの招待状を送るのは奇妙な感じがした。彼のエッセイの山から、彼が大手IT企業を嫌っていることは知っていたからだ。私たちが話したとき、彼の声は妙に単調だった。接続が悪かったのか、音声がくぐもっていたのか?いいえ。持続可能性を重視する多くの近隣住民とは異なり、デュプラスは気候変動との戦いは無益だと考えている。私たちはすでに負けているのだ。「一度深淵をのぞき込んだら、それを見ないようにすることはできない」と彼は言う。デュプラスは自分の運命をただ受け入れ、それが信仰の条文になっている。カトリック教徒がいるように、崩壊主義者もいると彼は言う。

しかし、彼は絶望的ではない。絶望的な人間なら、反特異点に向けてあれほどまでに偏執的に準備するはずがない。デュプラスは2019年、人類が8ビットマイクロコントローラーをプログラムする能力を維持しようと、Collapse OSの開発に着手した。これらの小型コンピューターは、ラジオやソーラーパネルなどを制御し、気象観測からデジタルストレージまで、あらゆる用途に利用できる。デュプラスは、残された最小限のリソースでそれらを再プログラムできることが、崩壊後に不可欠になると考えた。しかしまず、彼はその仕事のために、終末にも耐えうるプログラミング言語を独学で習得する必要があった。

画像には電子機器ハードウェアデバイスと煙管が含まれている可能性があります

イラスト:サミュエル・トムソン

1950年代後半、コンピュータ科学者のチャック・H・ムーアはスミソニアン天体物理観測所で観測データに基づいて天体や衛星の将来の位置を予測していました。当時はまだパンチカードの時代で、マシンのメモリは不足しており、ムーアはメモリ使用量を最小限に抑えることで処理効率を最適化する方法を必要としていました。彼は、単純なコマンドを一つずつ直接実行し、再コンパイルを必要とせずに実行するプログラムを開発しました。その後10年間で、このプログラムは彼がForthと名付けたプログラミング言語へと発展しました。

Forth はハードウェアと直接通信します。コンピュータのメモリは、ユーザーがオンザフライで定義する「ワード」と呼ばれるコマンドを介して制御します。これらのワードの下にある基本的なコマンド セットはネイティブ マシン コードで定義されているため、変換する必要があるのはごく一部です。つまり、アセンブラが小さくなり、RAM も少なくて済みます。結果として、Forth は Dupras 氏が「電力密度」と呼ぶ驚異的な量を提供し、Collapse OS の完璧な基盤となっています。これが重要なのは、電気が (おそらく) 永遠に消えることはないためです。代わりに、私たちの水道電気の楽な世界は、貴重で苦労して手に入れた地元の発電機に置き換えられます。処理能力を効率的に使用することが極めて重要になります。Collapse.org の投稿 (彼の広大なマニフェスト/ブログ/ブレイン ダンプ/マニュアル) で、Dupras 氏は、Forth の発見が「アルコール依存症者が言うところの明晰な瞬間」を呼び起こしたと述べています。

デュプラス氏はCollapse OSの完成に2年を要した。USBメモリから起動することで、技術に精通したユーザーはマイクロコントローラーをプログラムできるようになり、温室の自動化、電話回線の制御、さらには電力の調整も可能になる。しかし、崩壊後の社会を再建するにはそれだけでは不十分だとデュプラス氏は分かっていた。そこで2022年、同氏はDusk OSの開発に着手した。これは、現代のデバイスで動作するCollapse OSのバージョンだ。デュプラス氏はForthを使用して独自のコンパイラを構築し、Dusk OSをC言語(現代のソフトウェアの基盤)で書かれたコードと互換性を持たせた。こうすることで、既存のロジックをゼロから書き直すことなく、Dusk OSはテキストを取得・編集し、デバイスのバックアップによく使用されるファイル形式にアクセスできるようになる。スマートウォッチや古いタブレットでも動作するようにエミュレートでき、ユーザーの好みに合わせてハッキングやブートストラップができるように設計されている。

最初は、なぜこんなことが重要なのか理解できませんでした。食料をめぐって争っている時に、コンピューターへのアクセスが優先されるなんてありえないでしょう?『The Last of Us』の中で、ペドロ・パスカルがゾンビから逃げる途中でメールを打つシーンは一度もありません。しかし、デュプラスは的確な指摘をしています。狩猟採集生活に戻った後、一体何が起こるのでしょうか?

社会を再建したいのであれば、その方法を知る必要があります。文明が崩壊すれば、私たちの集合的な専門知識の多くは――私の大切なWikiHowのように――ハードドライブに閉じ込められたり、クラウドで失われたりします。デュプラスは、Dusk OSによって、人類の努力の記録であるスヴァールバル世界種子貯蔵庫のような、失われた知識のアーカイブに、崩壊後の人類がアクセスできるようになることを期待しています。ただし、落とし穴は?崩壊前に、古い携帯電話、メモリースティック、またはノートパソコンにDusk OSをダウンロードしておくのが最善です。そうでなければ、インターネットが使えないため、既にインストールしている人からコピーするしかありません。ここで、デュプラスがForthの熟練度を力と同等に扱う理由がもう一つあります。Dusk OSのコピーと操作知識の両方を持つ人はごくわずかです。この選ばれた人々が社会再建の鍵を握り、事実上、崩壊後の哲学者王となるでしょう。今こそ、私がForthに乗り込み、征服する時です。

Forthでのコーディングは、映画『マッドマックス』の無法地帯のようなディストピアを思い出させました。コンテキストの制約下で、独自のルールを作成できます。IF文は必要に応じて再定義できます。Wordのマシンコード命令を書き換えることもできます。実行時にWordを変更することさえ可能です。ForthではWord自体がキーワードとなるため、単一の目的に最適化された言語を作成でき、通常は数十行に及ぶコマンドを1行にまとめることができます。「Forthでは、独自の言語を作成しているのです」と、最初のForth教科書『Starting Forth』の著者であるレオ・ブロディ氏は語りました。

Forthの低レベルな性質は、その処理能力の鍵となる一方で、プログラミングを異質なものに感じさせました。Forthは接尾辞という数学表記法を用いており、2 + 1を2 1+と表現しますが、直感的ではなく、読みやすさも欠けていました。また、ほとんどの言語ではメモリを分割して移動できますが、Forthはスタックベースです。つまり、データは時系列に格納され、後入先出方式で管理されます。私はバグに何度も遭遇し、普遍的だと思っていたプログラミングの慣習を放棄せざるを得なくなりました。マシンの言語を話すのに苦労している自分に気づきました。

デュプラス氏に助けを求めるメールを送ったところ、彼はForthを使うことをマニュアル車の運転に例えてくれました。ForthはC言語よりも粒度が細かく、C言語が呼び出し規約、変数の格納、リターンスタックの管理などを定義するのに対し、Forthはすべてをプログラマーに委ねています。C言語と同じようにメモリと直接やり取りしますが、精度と効率性においてはC言語をはるかに上回っています。「Forthを単なる言語だと勘違いしている人がいます」とデュプラス氏は言います。「コンピューターとやり取りする方法なのです。」

Forthがもっと普及していない理由は、私たちのほとんどがオートマチック車を運転する理由と同じです。1990年代のパーソナルコンピュータブームは、テクノロジーを手のひらに収まるものにし、コードを書きやすくすることへの執着を巻き起こしました。言語はプログラマー自身を守るために抽象化されましたが、その過程で私たちは迷子になってしまいました。利便性のために物事が肥大化し、デュプラスの言葉を借りれば、「隅々から不可解な膿が滲み出る」ようになったのです。

「効率性に対する私たちの理解はあまりにも歪んでいます」とデュプラスは言う。ForthはPythonの芝刈り機にとって大鎌のようなものだ。「草の葉一枚あたりのジュール数を計算すれば、大鎌で刈っている人の方が効率的だとわかるでしょう」と彼は言う。「速度を考えると、芝刈り機の方が効率的に見えるでしょう」。Forthは、正確さとメモリ効率を要求し、崩壊後のようにリソースを慎重に配分することを強いる。デュプラス自身も当然ながら大鎌で自分の芝生を刈っている。「ある時点までは、芝刈り機と同じくらいの速度で走れるんです」と彼は言う。

自分の進むべき道を見つけ始めた。Pythonのように、バイトデータをエーテルに送り、システムがその行き先を推測してくれるのを待つのではなく、メモリの割り当てと解放を自分で行うことに慣れていった。何が保存されているのか、どこに保存されているのか、そしてどれだけのメモリが必要なのか、ただそれだけのことしか考えられなくなった。コードの一行一行が、突如として重みを持つようになった。私はイモータン・ジョー、ラップトップは私のシタデル、メモリは私の水だった。

やがて、まるで長い文を解くかのように、自分のコードを何度も何度も改良し、見直すようになった。機械が私のニーズを予測してくれることを期待するのではなく、機械のように考え、半分以上満たそうと努めた。そして、二度考えなければならなかったおかげで、他のプログラミング言語で簡潔さを意識させてくれる、不必要に複雑な頭字語、YAGNI(You're gonna need it)、KISS(Keep it simple, stupid)、DRY(Don't repeat yourself)などは、すっかり時代遅れになってしまった。

何日もForthをいじくり回した後、Pythonに戻るのは贅沢な気分でした。メモリ不足を気にする必要も、自分のことを丁寧に説明する必要もありませんでした。まるで旧友と再会したような気分でした。その瞬間、プログラミングを「ユーザーフレンドリー」にするためにどれだけのリソースが投入されているかが、痛切に実感されました。

画像には砂時計が含まれている可能性があります

イラスト:サミュエル・トムソン

デュプラス氏に出会う前は、効率性といえば速度のことばかり考えていました。しかし、その速度の真のコストは、地方のデータセンターや遠く離れた銅山に巧妙に隠されています。RAMを1ギガバイト増やすのに必要な電力や、クラウドコンピューティングの二酸化炭素排出量が航空業界を上回っているという事実など、ほとんど考えたことがありませんでした。

環境コストの増大にもかかわらず、メモリはかつてないほど安価で豊富に存在しています。今日では、マシンに近い位置にある言語は、必要に迫られてのみ使用されています。例えば、銀行が金融取引のレイテンシを最小限に抑えようとしている場合、宇宙船が限られた搭載リソースで動作している場合、あるいは更新に多大な労力を要する旧式のシステムなどです。

しかし、文明が崩壊すると、配列処理や自動メモリ管理といった静かな贅沢はほぼ消滅するでしょう。利便性が私たちをマシンから遠ざけるにつれ、コンピューターの実際の仕組みを忘れ、崩壊の際に技術を再構築する能力を失う危険性があります。「テキストエディタの書き方を覚えている人はいません」と、デュプラスと連絡を取り合っている独立系プログラマーのディバイン氏は言います。「それほど重要なことのやり方を忘れ始めると、物事が崩壊し始めると、それはひどく崩壊してしまうのです。」

ディバイン氏は、プログラミングにおける効率性を芝刈り機や鎌ではなく、野花が咲く草原のような「状態変化を最小限に抑える」ものと捉えています。彼らの見解では、AIは「人間中心」プログラミングの頂点であり、コンピューターがユーザーの意図を理解し、それを実行するものです。その瞬間、私の中で何かがカチッと音を立てました。プログラマーが高水準言語への依存度を高めるにつれて、低水準言語の平均的な習熟度は急落し、その結果、そもそもその抽象化を支えるコンピューティングリソースの需要が高まります。AIは私たちの仕事を奪うだけでなく、そのやり方を忘れさせてしまうでしょう。ただし、その前にAIを動かすエネルギーが枯渇してしまうことが前提です。

しかし、もしかしたら別の方法があるかもしれない。2016年から、ディヴァインとパートナーのレックは北太平洋の小さなボートでフルタイム生活を送っており、2枚のソーラーパネルから得られる1日190ワットの電力を最大限に活用するために、Forthなどの低水準言語を使用している。私は約100人のCollapseniksのメーリングリストで彼らを見つけた。彼らのライフスタイルは、デュプラスが私たち全員が間もなく経験することになるだろうと予想する、資源に制約のある生活をチラ見せしているようなものだった。8月に連絡を取った際、彼らは10月には携帯電話の電波が届くかもしれないと言っていた。

ようやく音声のみで繋がった時、ディヴァインはデュプラスの若々しく、より楽観的なバージョンのように思えた。デュプラスの崩壊というビジョンに深く共感しながらも、ディヴァインは低レベルプログラミングの力を信じている。それは社会を再建する力ではなく、崩壊を防ぐ可能性を秘めているからだ。ディヴァインは、「パーマコンピューティング」と呼ばれる、テクノロジーとのよりマインドフルな関係、つまりリソー​​スの制約を考慮した関係を築くトレンドが拡大していることに気づいている。

荒野から戻ってきた時――ハッシュテーブルや組み込みライブラリといった、以前は当たり前だと思っていた贅沢な世界――私はマシンの複雑さに対する新たな認識と、もしかしたらほんの少しの希望さえも持ち帰った。ForthはDuprasが最悪の事態に備える手段であると同時に、DevineやRekのような人々がより持続可能な方法でコードを書き、そして生きるのにも役立っている。もし私たち全員がそうすることができれば、世界の終わりは見た目ほど避けられないものではないのかもしれない。


この記事についてのご意見をお聞かせください。 [email protected]までお手紙をお送りください。

ティファニー・ン氏は香港を拠点とするカルチャー&テクノロジー系のフリーランスライターです。Vox、MIT Tech Review、Vice、Insider、Vogueなどの出版物に寄稿しています。…続きを読む

続きを読む