動的言語と静的言語の未来を考える

「JavaScriptデベロッパーはAIやWebAssemblyによって仕事を失うのか?」

という記事をみて、考えるきっかけを得たので書いてみた。

I love to be a JavaScript developer but I am afraid that JavaScript will be replaced by AI or WebAssembly and I will lose my job. Are my fears are correct and why? - Quora

静的言語は動的言語をなくすのか?

今の流れとしては型付けを重視する兆候なので、「今後は静的言語だ」と思うかもしれない。自分もその懸念もあり考えていた。

その背景には、静的言語が以前ほど実装の手間さがなく、動的言語の長所である「さっとかける」部分に差がなくなりつつあるからである。

では、動的言語は今後どうなるのか?

これについては、「別になくならないと思う」と結論づける。

そもそも、言語が統一されるかどうかであるが、これは日本語と英語が両方使われるのと同様、「統一した方が楽だけどそれぞれ良いところあるし強制はしない」という流れはプログラミング言語の選定でも言える。

自分の回答としては、gRPCなどで通信コストの低下が実現できている中、複数の言語を組み合わせるという選択肢が勝つんじゃないかなと思っている。

それこそ、「自分はこの言語を使いたい」という欲求を抑制することはできない。言語の統一は非現実的である。

そのため、着地する形としては「自由に言語つかえるけど、マイクロサービスとしてそれぞれのサービス間通信ができれば良い。重い箇所はユーザー体験に影響するのでそこだけ静的言語で書く」となると思う。

自分はrubyを主に使ってるけど、rubyは直感的にかける部分を意識してるため本当に慣れれば慣れるほど馴染むツールである。

その強みは他の言語でも真似られているが、言語学者的な目線で取り組む姿勢がrubyの根本的強みなので、書き心地の理解や体験のためにもrubyは今後も生き続けるだろうと考えている。

(matzが別の言語に本格注力しだしたらそちらに流れる可能性は高い)

  • 安定性
  • 実装速度、処理コスト
  • 書きやすさ、読みやすさ

このそれぞれの要素の組み合わせなので、まだまだプログラミング言語の競争は終わらないと思っている。

そもそもRubyはコンパイルできないのか?

今はむりだが、推論で適切に型が判断できれば、asm.jsやwebassemblyのようにコンパイルも可能になるんじゃなかろうか。

それができれば、「本番はコンパイルして、開発環境はスクリプトのまま実行する」という着地案ができると思う。

参考情報

  • webassemblyとは
WebAssemblyとは?〜実際にC言語をブラウザで動かす〜【2019年6月版】 - Qiita
WebAssemblyとは? ブラウザからアセンブリ(機械語)を実行できるようにする技術 高速化手段、あるいはJavaScriptの処理系にできないことをするといった目的で提案された 2015年6月、Mozilla、Goo...

コメント