人生最後の言語

おおげさに
プログラマとしては後数年でメインの座から離れるかもしれない
理由は、一生働かなくても暮らしていける貯金を手に入れているからだ
もちろん質素な暮らし限定だが、ご飯食べて住むところがあり、ゲームして遊べれば十分だ
ただし、ゲームを一日中出来るほど集中力があるわけじゃないので、暇つぶしに少しプログラムしたい
もっと言えば、最近仕事をしている人、仮にクィーンと呼ぶ
クィーンからの依頼をこなすため、Web開発に使える言語をなにか一つ本気で身につけようと思った

言語の比較

言語は色々な側面から選ぶのだが、まずは速度という面からジャンル分けしてみる

ネイティブコンパイル言語

ネイティブ実行ファイルが生成される、最も早い言語である
この言語を使うなら非同期前提だろう

C++言語

C言語はlibEvent等を使うが、個人的辛いのでCでは書きたくない
Boost.Asio等を使い非同期を行う
Webフレームワークも無くはないが、あまりWeb開発で使う人が居ないので情報が少ない
ライブラリは非常に多くそろってはいるが、SDKやWeb開発に便利なものが少ないので
かなり自作する必要があるだろう
問題は、他の人と共同開発や、開発速度を上げるのが時間がかかる

Rust

Post C++をうたう言語
今の所、まだライブラリが少ないかな・・という印象をうける
速度は申し分ない
フレームワークとして Actixが良さそう

Go

ネイティブのわりには遅い気もする(JavaやKotlinより遅いような・・)
が、恐らくコンパイラの最適化でもっと速くなるだろう
シンプルな言語で、サーバレスには良さそうだが
あまり作り込みがしにくいので、あまり良い印象もってない

VMコンパイル言語

VM上で動くコンパイル言語だ
基本的にはネイティブより遅いが、そうでない場合もある

Java

特にビジネスアプリでは昔から大人気
フレームワークも非常にたくさんあり、Spring、Play、Servlet・・・
少し前までは Android開発言語でもあった
なんだかんだでド安定言語

Kotlin

Better Javaといったかんじか
今のAndroid言語
JavaVM上で動く言語
フレームワークは、http4kなど

C

Better Java
Microsoftの言語なので、ビジネスでの利用も多くマニュアルも濃い
.net Coreの存在や、UNITY、Xamarinの存在により、最もフルスタック言語といってもいい
ゲーム案件を多く抱え、UNITY開発をよく行っている私にはベストかもしれない
MVCフレームワークはFullstackフレームワークのくせに速い

Erlang,Elixer

Erlang VMはあまり速い印象がないが、堅牢性では非常に優れている
Erlangは言語に癖が多いが、ElixerはそれをRubyライクにまとめたかんじ
Elixir Phoenixが有名か

Haskell Clojure

メインで使うには・・・
良い言語なのだけどね

スクリプト言語(非同期)

スクリプト言語は遅いが、非同期であれば我慢できそう

node.js

非同期を流行らせた言語
JavaScriptがベースになっているので、Webサービスを作るには相性はいい
非同期フレームワークのなかでも、かなりライブラリが多くコミュニティも発達している

Python

使ったこと無いが Tornado等、非同期フレームワークは存在する

スクリプト言語(同期)

個人的には、速度的には避けたいが、高速で開発できるならあり

PHP

ゲーム業界では人口が多いハズ

Python

世界的に最も人口が多い
人工知能にも使われる

Ruby

日本では開発者が多くコミュニティも活発

決断

C

UNITY案件を多く請けているし、.net Coreのおかげでサーバ開発も可能
さらにツールも作れる
ほぼフルスタックのC#をまず初めに勉強しようと思いました

node

非同期サーバとして有名でノウハウもあふれている
また、GypでC++とも連携しやすい
Electronでアプリも開発出来る
そしてWebのフロントはJavaScriptが必要
これまたフルスタックである

Java

Webサーバとして歴史もあり速い
Hadoopにも必要
業務アプリはほとんどJava

Python

軽量言語としてPython3系を使いたい