- はじめに
- 結論
- プログラミング言語は1つを極めたほうがいいの?
- ある程度人気のある言語をなら、とりあえず触っておくと効果的
- 各プログラミング言語のコアな部分だけ拾っておく
- プログラミング言語の最新情報を追う
- TypeScript は勉強しておくべき言語なのか?
- さいごに
はじめに
「生成 AI がプログラミング言語の差を吸収してくれるから、言語は1つを極めたほうがいい」という投稿を見かけた
そのポストにはこう書いてあった *1
- プログラミング言語はなんでもいいから1つをちゃんと勉強したほうがいい
- 生成 AI が言語の差を吸収してくれるから、1つを極める価値はより高まる
- TypeScript がおすすめ
これは正しいのか?について考えていく
結論
結論から言うと「このポストが何を言いたいのかよくわからない」だ。
リプライを追っていくと、どうやらこう言いたいらしい。
「生成 AI がコードは書いてくれるのだから、人間はプログラミング言語に依存しない設計やアルゴリズムなどを勉強するべきで、それを勉強するためにはなんでもいいから1つ言語を触ってみると良い」
では、これに関しては正しいのかどうか?
私の考えでは、現時点ではある程度正しい。
ただし、長期的にはこの辺りも生成 AI が解決するだろうし、昨今の生成AIの成長を見ていると、1年経てば事情が変わっている可能性は大いにある。
なので究極の結論は「わからない」。
プログラミング言語は1つを極めたほうがいいの?
初心者は2つ以上の言語を触ったほうがいいと私は考える。2つ以上の言語を触ることで、「様々なプログラミング言語で共通の考え方」が見えてくるからである。
触る言語は広く使われている言語が良い。TypeScript, Java, Go, PHP, Python あたりである。
ある程度人気のある言語をなら、とりあえず触っておくと効果的
なでしこ などの超マイナー言語を触る必要はないが、例えば Rust など、ちょっと話題になった言語は触っておくと良い。
僕は一時期思っていたことがある。「Rust ってすごく早いって聞くから Go は Rust に置き換えられたりするのかな...?」と。「なら、Goをこれから極める意味はあんまりないのか?」と。
実際に触ってみると全然そんなことはないとわかるはずである。
各プログラミング言語のコアな部分だけ拾っておく
各言語の特徴的な部分だけ拾っておくのは非常に効果的である。
Python であれば機械学習系のライブラリだったり、Goであれば Goroutine だったり、実行速度だったり。
どういうものを開発したいのであればどの言語で開発するべきなのか、最適な選択肢が選べるようになる。
プログラミング言語の最新情報を追う
最終的には、何かの言語に絞って極めていくのがいいと私も思う。というより、仕事をしていれば自然とそうなっていく。
プログラミング言語も日々アップデートされていくが、あらゆる言語のアップデートを全て拾っていくわけにはいかない。
「Go は昔はこう書いていたけど、このバージョンからジェネリクスが入ったから今後はこう書く必要がある」「Java のフレームワークといったら昔は Spring だったけど、今は XXX だよね」と、日々変わっていく。こういった最新の情報を把握してアプリケーションに反映できる人は重宝される。
1つや2つのの言語であれば最新の情報を常にウォッチするのも難しくないので、少ない言語を極めて重宝がられる人間になるほうがいいと私は考える。
最新の情報、特に人気のトレンドを把握するのは生成AIが比較的苦手とする分野である。昔から存在する技術については学習ソースが豊富なので得意である。
ちなみに、1つの言語を極めるスタンスにも2つある。
1つ目は、「私は Java を極めたいので Java しかやりません」のように完に特定の言語に特化する人。このパターンの人は Java の仕事がなくなったら失職するし、Java しかやらない代わりに超プロフェッショナルになる必要がある。
2つ目は、与えられた言語をとにかく極める人。僕はどちらかと言えばこっちで、数年前まで PHP を7年使っていたので PHP をかなり極めていたが、今は Java を3年ほど使っているので Java を極めている途中である。こっちスタンスの方が一般人向けな気がする。
TypeScript は勉強しておくべき言語なのか?
Web のフロントエンドを実装しようと思ったら TypeScript 一択で、避けて通れない言語なので、実用性から言うと TypeScript を勉強するのはかなりアリ。
一方で、フロントエンド TypeScript については特殊な言語であることは認識しなければならない。
さいごに
ここまで書いたことは全て「現時点では」のこと。生成AIの進化は早いので、1年後どうなっているかわからない。
長期的には、生成AIは全てを解決すると思っておいたほうがいい。
「AIに生成されたコードが多くなるとメンテナンスが大変だけどどうするの?」
「そのうち生成AIがメンテナンスするようになるから問題ない」
「生成AIが書いたコードってちゃんと動くの?セキュリティは?」
「将来的には完璧なコードを書くようになるだろうし、不安なら動作確認も脆弱性診断も負荷試験もAIにやらせればいい」
そうなる世界が来るかもしれない。
*1:正直、このポストはあんまりバズってほしくないので、URLを貼ることは避けておく