プログラミング言語
「速度」「利便性」「コーディング」「将来性」の四つの観点から評価してみました
C/C++
速度 | 利便性 | コーディング | 将来性 | |
---|---|---|---|---|
C/C++ | 最速 | 最強 | 癖あり | 滅ぶことはない |
最高にして最強、ありとあらゆることが超高速でできるというメリットがあります。速度が欲しいなら学びたい言語の一つでもあります。
自分が利用しているプログラムの一つに 43 億通り全部を総当りでチェックするというものがあるのですが、C++(というよりもコンパイル言語というのが大きいが)なので現実的な時間内で終わります(大体 10 分くらい)。Python では同じくらいの所要時間で 1000 万件くらいしか調べられないので 400 倍くらい早いということになります。
コーディングはかなりのローレベルなので「え、そんなところまでチェックするの」というようなことが結構あります。個人的にはNULL
チェックがよくわからなかったりしますね。EOF
, NULL
, \0
あたりも初学者は苦労します。
ポインタが利用できるのでやりたいことは何でもできますが、正当性の担保がされないのでよくぬるぽで落ちます。Segmentation fault
は死ぬほど見かけることになります。
将来性ですが、将来的にも C で書かれたプログラムがなくなることはないでしょう。ある意味完成された言語であると言えます。
Swift
速度 | 利便性 | コーディング | 将来性 | |
---|---|---|---|---|
Swift | 高速 | 最強 | 便利 | アプデで仕様変わりすぎ |
Apple が開発した Objective-C に代わる新たなプログラミング言語です。Objective-C との違いが酷すぎるので Objective-C をスルーして Swift から勉強し始めたのは正解だった気がします。
コンパイル言語なので速度は基本的に早く、XCode でコーディングすれば静的解析を行ってくれるので C に比べれば潜在的なバグが潜む可能性は非常に少ないです。
ライブラリも豊富な t めコーディングも楽で、やろうとおもったことはだいたいなんでもできますがアップデートでメソッド名が大きく変わったり、すぐに非推奨になったりするので Swift を学ぶための文献を買うことは全く推奨されません、買ってもすぐにゴミになります。
英語ですが、Apple 公式のドキュメントが充実しているので必ずそちらを見ること。
PHP
速度 | 利便性 | コーディング | 将来性 | |
---|---|---|---|---|
PHP | 遅い | 普通 | 便利 | フレームワークを使おう |
次に Web サーバでよく使われる PHP ですが、WordPress などの動的なウェブサイトは将来的に減っていきそうな気がするので PHP をガッツリ勉強したという経験はあまり活かされないかもしれません。
殆どのサービスやウェブサイトは静的サイトか、Laravel などのフレームワークを利用して組み立てられているのでとりあえず Laravel を勉強するのが良いと思います。いろいろ転職サイトなどで案件が載っていますが、生 PHP のコードを書かせるような案件は見たことがありません。
ライブラリも豊富で便利といえば便利なのですが、ウェブ界隈は流動性が激しいので現代のモダンな流れに取り残されているのでは感があります。PHP は公式のドキュメントが豊富なので、やはりこれも書籍は買わなくて良いです。
Javascript
速度 | 利便性 | コーディング | 将来性 | |
---|---|---|---|---|
Javascript | 遅い | 便利 | かなり便利 | フレームワークを使おう |
Javascript はブラウザでサポートされているということもあり、これが利用できなくなるというような状況は少なくとも現状は全く想定できません。学んでも無駄になることはないでしょう。
ただ、書籍やググって最初にでてくるようなカウンターを増やすボタンみたいなチュートリアルは意味がない気がします。以前は JQuery などが台頭した時代もありましたが、今では完全にレガシー(主観です)なので勉強する意味はないと思います。
Nuxt.js. Next.js, Vue.js, React など豊富なフレームワークがあるのでまずはそちらを勉強しましょう。多少 HTML の理解があれば難なく飲み込めるはずです。
HTML と CSS と Javascript で自分で 1 からウェブサイトをつくるのは経験を得るという以外の価値はないので、最短で学習したいのであればやらなくていいです。ただ、知識や忍耐力はつくのでちょっとやってみてもいいかもですが。
Python
速度 | 利便性 | コーディング | 将来性 | |
---|---|---|---|---|
Python | 遅い | 便利 | 最強 | DL が流行っている限り安心 |
Python は書きたいことが何でも書けます。ぼくもなにか思いついたプログラムを書くときにどの言語で書くかと言われたら 100%、Python を選択します。
数理計算からネットワーク通信、グラフの作成まで何でもできます。問題になるのは速度だけですが、アホみたいに重いコードを書かなければどうとでもなります。Pypy と呼ばれる Python の高速処理系を使うことで高速化できます。
どのくらい早くなるかは【競プロ】Python と PyPy の速度比較を見ていただければわかりやすいと思います。
Google のディープラーニングは TensorFlow を利用していることは有名ですが、これは Python で動作するので DL が流行っている限りは Python を勉強しておいて食いっぱぐれることはないでしょう。
Python も他の言語に洩れず、生コードをそのまま書くよりも Anaconda, Django, Flask, Jupytar Notebook, TensofFlow, Keras などのフレームワークやユーティリティツールに触れておいた方が良いです。
興味のある言語たち
Rust
C/C++ライクな言語でメモリ安全性があるため将来有望な言語の一つ。
Go
なんかよくわからんけど、Google が開発しててちょくちょく見かけるので面白そうというイメージ。
学びたくない言語
Java
一回、課題提出のためにコード書いたけど二度と書きたくない言語ナンバーワン。勝手に 10 億のデバイスで走っとけという感じ。
Ruby
なんで触ったか忘れたけど、ちょっと書いたことがある。
不便には思わなかったけど、使われているところを見かけないのとうちの I 教授が馬鹿にしていたのであんまり学びたくない。