コンピュータサイエンスの歴史とAI時代のプログラマとしての在り方について

## これまでのコンピュータサイエンス
コンピュータの歴史は、人類の知識と技術が絶えず発展してきた歴史でもあります。
ChatGPTの登場の衝撃は、その当時にでてきた発明と大差ないのかもしれません。

1. 初期の通信技術
19世紀後半から20世紀初頭にかけて、電話線を使った通信が始まりました。当時は、オペレーターが手動で繋ぎ変えることで、通話が可能となりました。この時代の通信技術は、今日のコンピュータ言語の原型となる重要な役割を果たしました。

1. パンチカードの時代
20世紀初頭、パンチカードが登場しました。これは、紙に穴を開けることでデータを記録・処理する方法でした。当時のコンピュータは巨大で、一般的ではありませんでしたが、このパンチカードは、今日のプログラム言語の基礎を築いたと言えるでしょう。

1. アセンブラ言語の登場
1950年代、アセンブラ言語が登場しました。これは、人間が理解しやすい形でコンピュータに命令を与えることができる言語で、マシン語と呼ばれるコンピュータの基本的な命令セットを利用していました。アセンブラ言語は、プログラマーにとって大きな進歩をもたらしました。
1. 高級言語の登場
1950年代から1960年代にかけて、高級プログラミング言語が開発されました。FORTRAN、COBOL、LISP、ALGOLなどの言語が登場し、プログラマーはより効率的に、より簡潔にコードを書くことができるようになりました。これらの言語は、その後のコンピュータ言語の発展に大きな影響を与えました。

1. オブジェクト指向言語とインターネット時代
1980年代から1990年代にかけて、オブジェクト指向言語が登場しました。C++、Java、Pythonなどの言語は、プログラムの再利用性や保守性を高めることができました。また、インターネットの普及に伴い、ウェブ開発用の言語や技術が続々と登場しました。HTML、CSS、JavaScript、PHPなどの言語は、ウェブ上での情報共有やインタラクティブなコンテンツの制作を可能にしました。インターネットは、コンピュータ言語の発展と共に、情報技術の革命をもたらしました。

1. モバイルアプリケーションの時代
2000年代初頭以降、スマートフォンが急速に普及し、モバイルアプリケーションの需要が高まりました。Objective-CやSwift（iOS用）、JavaやKotlin（Android用）などの言語が開発され、モバイルアプリケーションの市場は拡大しました。これらの言語は、コンピュータ言語の進化の新たな一歩となりました。
誰でも手元で世界中の情報にアクセスできるようになりました。

1. 自然言語処理とAIの台頭
2010年代以降、人工知能（AI）が急速に発展し、自然言語処理（NLP）技術が注目を集めるようになりました。GoogleのBERT、OpenAIのGPTシリーズなどのNLPモデルは、人間が使用する自然言語を理解し、ある程度生成することができるようになりました。
これにより、自然言語を使ったコンピュータとの対話が現実のものとなりました。
また、Pythonを中心とした機械学習ライブラリやフレームワーク（TensorFlow、PyTorchなど）が登場し、AI開発の敷居が下がってきた時期にもなります。

1. 今後の展望
これからのコンピュータ言語の発展は、さらなる効率化や抽象化が求められるでしょう。量子コンピュータやニューラルネットワークの進化に伴い、新たな言語や技術が登場する可能性があります。
また、AIの進化により、自動プログラミングやAIによるコード生成が現実味を帯びてきており、プログラマーの役割も変化するのだろうと感じます。


## 結局、AIとどのように付き合えばよいか。
コンピュータサイエンスの歴史を振り返り、AIとの向き合い方について考えてみます。
コンピュータサイエンスの歴史を冒頭で振り返りました。ここ数週間で、ChatGPT-4が発表されて、これまでコードで書いていたものが自然言語で表現できるようになりつつあります。
Twitterなどを見ると、「すごいものが出てきた」「仕事が奪われる」などのコメントを良く見かけます。

例えるなら今は、e-Sports系のオンラインゲームで、シーズンの変わり目で次の環境メタを探るような時期に近いものを感じずにはいられません。

私なりにChatGPTを始めとするAIシステムとの向き合い方について残したいと思います。

### プログラマとしてのあり方
プログラマとして仕事が奪われるかについてはNoだと考えます。
人間が実現したいことの手段としてコンピュータ、コンピュータに依頼する手法としてプログラム言語が使われてきました。
自然言語では依頼できなかったので、より表現しやすいように様々な言語が生まれて発展してきたのです。

プログラマは、プログラムという言語を通して、コンピュータに仕事を依頼してきました。
コンピュータへの依頼方法が、パンチカードからアセンブラ、高級言語と変遷したように、自然言語で依頼できるようになってきただけであり、コンピュータに仕事を依頼するという大役が残っています。

誰かの実現したいことをコンピュータを使って実現する。この部分は不変です。
なので私は、ChatGPTに仕事を奪われるというよりは、仕事のやり方が変化する。

### プログラムで作るものこそが本質
プログラムが目的ではなくその先にある、誰かの実現したいものがあるはずです。

プログラム言語の歴史は、より書きやすくなるように言語が作られ、よりメンテし易いようにオブジェクト指向といった技術や、XPプログラミング、TDDといった開発手法が生まれてきました。
どれも人が扱いやすい形で発展を繰り返してきたものと私は考えます。

Twitterなどで仕事が奪われると言うてる人たちは、プログラムを書くこと自体が目的になっている人たちだけかと思います。
もしくは、騒いで儲けがある人たちだけです。騙されてはいけません。

### AIとの付き合い方について
とは言え、AIとの付き合い方について考えることは重要です。
AIが出した結果は現時点では60点～80点ぐらいという感触です。
叩き台を出してもらい「こういう風に修正して、こういう風にやってみたら」とアドバイスが必要です。
これは、AIが出したものを理解して、我々の経験で導いて上げる作業というものはこれからも残ると思います。
何をやりたいのか、実現するための提案はもらえるかも知れないが、AIがもの作るのではなく人間が作るのです。

### AIと付き合うのが上手な人とは
ドラえもんの作中では、のび太は勉強もできずにダメなやつと描かれていますが、
大人になったらのび太くんは実は非常に優秀な人財と感じます。
物怖じせず、色んな人に仕事を依頼し、ドラえもんの出す奇天烈な道具を即座に理解し、自分の欲求に直結するような形で活用することができる。
テストで点数は取れないですが、のび太君のような人は非常に貴重です。
足りない部分をおぎないよう、ドラえもんの道具（AI）を活用できる人が今後は持て囃されるような時代に差し掛かっているのかもしれません。

のび太のように柔軟な発想とAIを活用するスキルを身につけることが、これからのプログラマにとって重要になってくると考えます。

### まとめ
コンピュータサイエンスの歴史を振り返り、AIとの向き合い方について考えました。ChatGPTなどのAI技術が登場しても、プログラマとしての仕事がコンピュータへの仕事を依頼するプロとした場合、すぐに仕事が無くなるということはないと思います。
むしろ、仕事の形が変わり、AIと上手く付き合っていくことが求められる時代になっていくでしょう。
これまで私達が直接コードを書いてきたが、実際に手を動かす人が変わるだけで結局やることは変わらないと思います。

AIと付き合うためには、手法の適用方法を適切に学び、AIが出した結果の真贋を見極める力を磨くしかありません。

私達がやることはこれからも本質は変わらず、顧客も含め曖昧な作りたいものを、より具体的に詳らかになるように解像度を上げる作業をコツコツ繰り返すだけです。