山本ゆうごブログ

山本ゆうごの仕事メモ

目的別プログラミング言語

プログラマー初心者が疑問に思う「どのプログラミング言語をやればいいの?」という質問。プログラミング言語の文法などはそんなに違いがないのでどうやって選んだらいいかが分かりづらい。言語仕様意外で決める要素があってそれに引っ張られるころが多いということがあまり知られてない。

動作環境で決まる

  • Excelを自動化したければ、Excel上で動くVBA
  • ブラウザ上で動かしたれば、JavaScript
  • メーンフレーム上で動かしたければ、COBOL
  • LambdaやFirebaseのようなサーバーレスアーキテクチャなら、JavaScript(Node.js)
  • Unityで開発したければC#
  • Windows上の.netフレームワーク上で動かしたければ、C#
  • iOS上で開発したければ、Objective-CかSwift
  • Apacheモジュールとして動いてほしければ、PHP
  • 大規模なマシンの性能をフルに使いたかったらJava

動作する環境で決まるということが多い。

利用できるライブラリ・フレームワークの差で決まる

  • scikit-learn という統計・機械学習ライブラリを使いたかったら、Python
  • numpy などの行列計算を簡易にしたければ、Python
  • RailsなどのWeb+DB系のライブラリを使いたければ、Ruby
  • 標準モジュールだけでWeb開発をしたければPHP
  • スマホ向けの3Dエンジンのライブラリをつかいたければ、Unity(C#)

利用できるライブラリ、フレームワーク(雛形みたいなもの)というのは、言語仕様そのものではなく、そのプログラミング言語をより便利にするために、プログラマー達が「育てた」とも言える。プログラミング言語そのものは、用途を絞ることはあまりないが、ライブラリやフレームワークは特定の用途にフォーカスした形で育成される。PythonもRubyも同じことはできるだろうが、機械学習用のライブラリの充実と、Webサイト向けのライブラリの差は歴然としている。

当然のことながら、RailsというRubyで作られたフレームワークも所詮はひな形なので、別のプログラミング言語でもできる。PHPはもともと言語仕様からWeb開発向きではあったが、Railsほどの雛形にはなってないので、PHPにもフレームワークで開発すれば「Apacheプロセスの中で動くから軽くて開発生産性も高い」という美味しいとこ取りをするケースもある。

swiftでも頑張れば、スマホ向けのアプリは作れるが、大半のスマホゲームメーカーはUnityを使って開発をしている。ゲーム向けのライブラリが充実しているからである。反対に生活ツールではUnityはあまり使われない。