見出し画像

プログラミングに対するLLMの影響から考える、テクノロジーによる人間の役割変化

はじめに

LLMの台頭により「ついにプログラミングまでもがAIにより代替されてしまう」という、ほぼ確定した未来に対するある種の悲観的な反応もみられるようになりました。昨今のLLMに限った話ではなく、産業革命や情報革命など、技術の画期的な進歩がみられる度に人間は似たような反応をしてきました。

しかし、プログラミングの歴史やその進化のベクトルを振り返ると、自然言語によるプログラミングに到達するのはもともと時間の問題だったように思えます。本稿では、主にプログラミング言語の進化を振り返りつつ、人間がこれらの技術変化の中でどのように適応し、新しい機会を見つけていくかについて考えてみたいと思います。

プログラミング言語の変遷

アセンブリ言語とその限界

コンピューティングの初期には、プログラマーたちは、特定のプロセッサーアーキテクチャに合わせたアセンブリ言語(Intel x86など)を使用していました。こういった言語は、ハードウェアへの直接的な指示に最適化されたコードすなわち、ハードウェアが実行する機械語に近い低レベルのコードでした。

しかし、このアプローチは、異なるアーキテクチャのために複数の言語でコードを学び、書くことが必要だったため非効率でした。例えば、Intel 8086アセンブリに熟練した開発者は、ARMベースのシステムのコードを書くために、ARMアセンブリの新しい命令セットや構文を学ぶ必要がありました。

また、アセンブリコードは読み取りや理解が難しく、保守、デバッグ、修正が困難なタスクとなっていたとの指摘もあります。アセンブリコードでのエラーは、システムのクラッシュやメモリの破損といった深刻な結果を招くこともあり、開発の遅れをさらに引き起こすことがあったそうです。

高水準言語の出現

1950年代後半になると、上記のようなアセンブリ言語の課題を克服してコンピュータをより効率的に活用できるようにするべく、特定のプロセッサーアーキテクチャに依存しない高水準言語が生まれ、コンパイラの使用により、これらの高水準言語が機械語により簡単に変換されるようになりました。コンパイラは、人間が読みやすい形式で記述したコードを、それをプロセッサーアーキテクチャに特化した低水準のアセンブリ言語や機械語に変換するものです。この抽象化により、コードの移植性が向上するだけでなく、開発者の生産性も向上しました。

人間が読みやすい形式の高水準言語が登場・普及したことによって、様々な背景を持つ人々がプログラミングを学ぶ機会を得られるようになりました。それにより、新しいアイデアやソリューションが生まれ、技術革新が加速されることにつながりました。

このように、プログラミングの世界は、コンパイラを介在させることなどによって人間として理解が容易な高水準言語を活用できるようにして、生産性を高め、民主化を推進してきたという歴史があるのです。

自然言語によるプログラミング

この流れからすると、プログラミングは、人間がそのまま理解できる自然言語を”最”高水準言語とするのが究極の理想系であると言えます。このとき、LLMは、自然言語という”最”高水準言語のコンパイラとして位置付けることができそうです。

テクノロジーの台頭による人間の役割の変化

LLMなどの進歩に対して、プログラミングに限らず広い範囲で人間の仕事がいよいよ失われるのではないかという懸念をよく耳にするようになりましたが、筆者としてはそこまで心配していません。プログラミングの例に限らず、歴史的にみても、新しい技術は人間に代わって低次元・具体レベルの仕事をこなし、それに適応した人間は、より抽象的で高次元の仕事へと移行してきました。

たとえば、農業分野では、鋤、種まき機、トラクターなどの農業機械の開発によって、人々が畑で働く方法が変わりました。手作業に頼るだけでなく、人間は機械を設計・運用・維持するようになり、土地のマネージメントという抽象度の高い仕事に役割がシフトしていきました。

同様に、産業革命も人間の仕事において重要な変化をもたらしました。蒸気機関、紡績ジェニーや組み立てラインなどの新技術により、生産と効率が向上しました。その結果、人間は主に職人や職人から、複雑な機械や生産プロセスを操作、維持、監督するという抽象度の高い役割に移行しました。

計算機が登場した際にも、人間はそろばんを操作する物理的な作業から、コンピュータに対して計算処理を指示する一段抽象的な役割を担うようになりました。そしてようやく、LLMをコンパイラとすることで、自然言語という抽象度の高い”最”高水準言語を用いたプログラミングが実現しつつあります(なお、次のステージでは、言語すら介在させず、思考をそのままアウトプットに反映する形になるでしょう。テクノロジーとしては、Brain Computer Interfaceなどが活用されるはずです。)。

これらの歴史的な例からもわかるように、技術革新は、人間がより高次元・抽象度の高い役割を見つけるための推進力となっています。今後も(LLMに限らず)技術が発展するにつれ、人間はコンセプトメイキング・企画・問いの設定といった、さらに抽象的で高次元な仕事へと役割を移行させていくことでしょう。

まとめ

アセンブリ言語からLLMへのプログラミング言語の変遷は、テクノロジーの進化により人間の役割は抽象度の高い方に昇華していくという現象を非常によく表しています。そしてこれはプログラミングに限ったことではありません。

人間はテクノロジーの進歩を引き続き受け入れる中で、仕事の潜在的な喪失を恐れるのではなく、新しい状況に適応し、新しい機会を模索することに焦点を当てるべきです。

この記事が気に入ったらサポートをしてみませんか?