プログラミングの変遷 はじまりからAIまで (下)

ハイパーリンクの時代

現在まで続く「インターネットの時代」とも言えるかもしれませんが、プログラマである私にとっては「ハイパーテキスト」「ハイパーリンク」の時代と言えるように思います。

1990年代初頭くらいからでしょうか。インターネットという言葉がプログラマ向けの雑誌に載るようになり、自作パソコンで動かすことができるUnix OSであるLinuxが個人でも入手して自宅でUnixを使える時代が訪れました。当時よく使っていたインターネットアプリケーションはFTP、Telnet、UUCP (News) などでした。

最初に認識したのは恐らく雑誌記事ではなかったかと思います。NCSA Mosaic というプログラムが話題になっていました。(下画像はWikipediaから)

NCSA Mosaic Browser Screenshot

Linuxにインストールして使ってみましたが(当時は夜間のデータ通信定額プランを使う必要があって常に深夜でした)最初はピンと来ませんでした。当時は米国には既に実験的なサイトがいくつも立ち上がっていて、それらを訪問していくうちに「これはすごいものなのではないか」と思うようになってきました。既にCGIは実装されていたと思います。「すごい」はあくまでプログラマとしての感覚でした。

インターネットの知識や利用は多少あったとはいえ、その当時の私のプログラムの概念は、大きい、小さいの違いはあれコンピュータ1台またはせいぜい2台の上で動作するというイメージでした。

ところがブラウザとその通信基盤であるHTTPプロトコルは、プログラムが動作する空間から地理的な制約を取り除いてしまっていました。

「ハイパーリンクの時代」は、プログラムを動作させる空間の概念を一気に変えてしまった時代だったと思っています。

構造化エディタの時代

既に2000年代に入っていたと思います。プログラム言語としてJavaという古くて新しい言語が盛んに使われるようになりました。当時の私の理解は「オブジェクト指向」プログラミングを「比較的伝統的でシンプルなシンタックス」で行うことができる「膨大な標準クラス群」を提供している言語というものでした。「考える」より「知っている」が大事になってきたなぁと思った記憶があります。

ただ膨大なクラスライブラリや自分が書いたクラスを使ってプログラムを作る作業は結構きついものでした。クラスのメソッドなどの仕様をヘルプファイルなどで一々調べながらコードを作る作業は効率の悪いものでした。

そんなとき現れたのがプログラム作成作業を強力にサポートする機能を持ったEclipseでした。

Eclipse 4.3.Kepler screenshot

Eclipseで一番に驚いた機能は強力なコード補完(code completion)でした。このコード補完機能は標準クラス群に限らず自分で書いたクラスにまで及ぶものでした。また、今書いたコードにプログラム全体の中での矛盾(通常はコンパイルやリンクなどの工程で発見される)があればそれも即座に教えてくれる、プログラムを書く作業のツールであると同時にプログラム開発のレールから外れないようにガイドしてくれるツールという感覚でした。

今までテキストエディタ、ビジュアルエディタなどを使っていた時のプログラミング作業は「目の前にあるソースコードはツールを使って作成しているのだが、全体の関係や構造は全て自分の頭の中にロードしておかねばおかしなことをやってしまうぞ」というようなものでした。

Eclipseを使うことによって「全体の関係や構造はとりあえずEclipseが知っていてくれるので目の前のことに集中しよう」という気持ち、簡単な言葉で言えば「楽になった」でした。

AIの時代

そして今(2025年現在)はプログラム開発ツールの主役はAIになりました。

長い期間プログラミングを生業として、その変遷を経験して来ましたが。生成AI、大規模言語モデル(LLM)が開発ツールの主力になったことは、今までの変遷の延長線上に必然的に訪れたものと考えることもできるし、本質的な変化であると考えることもできます。

AI以前の私たちの仕事は上の図で言えば☁️(雲)の部分でした。雲の部分は曖昧で確定的ではないのですが、それは私たちの頭の中でしか扱えない(と考えられていた)ものでした。

曖昧で確定的でない概念や希望のようなものを、曖昧な思考を経ながら徐々に確定的でコンピュータで扱い易いものに変換していき、最終的に誰かがコンピュータを通して道具として使うことができるもの(アプリケーションとか)を作り上げることが仕事だったと言えると思います。

AIによってそれがどのように変わるのか

私は生成AI、LLMは、☁️(雲)の部分を扱うことができるように進化したコンピュータシステムだと考えています。雲の部分が人間でしか扱えないと考えられていた理由は、それが概念や思想、感情を含んだ人語によって表現され、人語によって思考されるからだと思います。それをコンピュータが扱えるようにするために様々な書式やプログラム言語、方法論が発明されてきましたが、LLMはそれを人語のまま扱えるようにしてしまいました。人語が扱えるのであれば人間が発明したより簡略化された書式やプログラム言語などを扱うことは容易なわけです。

曖昧な部分から確定的な何かを生成していく作業を人間よりも早く、正確に行うことができる場面が多いというのが今現在。その場面が全てではないというのも実感です。

この先どのような変化が起きていくのかはわかりません。この変化が今までのプログラミングの変遷の延長線上と捉えれば、より楽にしてくれるツールが登場したも言えます。人語を扱える、より高次な仕事に自分を向けていくツールと捉えることもできる。あるいは自分たちの仕事奪うツールが出現したのかもしれない。

2025年の初めにコンピュータ関係の出版で有名なO’Reillyの創業者が The End of Programming as We Know It (私たちが知っているプログラミングの終焉) という文書を発表しました。

私のこの文書も、私なりに今までの変遷とAIの時代をまとめなおし、今自分たちがいる位置を確認しようと思って書き始めたものです。

一旦ここで終了。次に道に迷いそうになったらまた書こうかなと思います。

この記事を書いた人

目次