質問するログイン新規登録

回答編集履歴

1

情報追加

2017/12/11 07:56

投稿

.M.
.M.

スコア98

answer CHANGED
@@ -13,8 +13,33 @@
13
13
 
14
14
  その次にオススメするのはRubyです。Pythonと非常に似たオブジェクト指向言語でありながら、設計者で日本人のまつもとさんの哲学が反映されており、日本人の文化に近い言語思想になっているためで使い込むとPythonの言語思想がもどかしく思えてきます。関数言語とGeneric programmingの思想が自然な形で言語として取り込まれているので、次に関数型言語を勉強する時にRubyの概念が役立ちます。また他の言語ではあまり真似できないメタプログラミングの練習をするにはうってつけです。
15
15
 
16
+ もしPythonではなく、Javaに興味があるならば(Javaを学んでいるか今後学びたいと思うなら)、Scalaもオススメです。今はJavaほど普及はしていませんが、Javaの上位互換でかつRubyのようにオブジェクト指向言語と関数型言語をうまく融合しています。今後はScalaユーザーが増えてくるのは確かでしょう。
17
+
18
+ 参考: ScalaかJavaか
19
+ * https://teratail.com/questions/54988
20
+
16
21
  またTIOBEにもここにもリストとして挙げられていませんが、将来的には一つ関数型言語を勉強されると、他の言語使用時に波及効果が期待できます。有名どころはHaskellです。回答者の方にLISPが書かれていましたが、LISPも関数型言語と呼ばれるものの一つです。C言語などの手続き型言語やPythonなどのオブジェクト指向言語とそもそも言語理論が異なっており、一旦思考を切り替える必要があります。
17
22
 
23
+ 参考: Haskell、Scala、ML、Scheme:あなたが次に学ぶ関数型言語
24
+ * http://postd.cc/best-programming-languages/
25
+
26
+ ----
27
+ 学び始めはいくつかの選択肢がありますが、プログラミング言語学習においておおよそ大きな二つの視点があります。
28
+
29
+ [I] バックグランドとなる言語理論(タイプ、パラダイム)
30
+ [II] その言語のライブラリが注力している分野
31
+
32
+ [I]言語のタイプとしては大まかに以下の3つの視点で捉えておくと言語を分類しやすいと思われます。
33
+ 1. 手続き型言語
34
+ 2. オブジェクト指向言語
35
+ 3. 関数型言語
36
+
37
+ これらはプログラミングをするときの発想に大きく関わります。
38
+
39
+ [II]注力しているライブラリ
40
+ 例えばRは統計処理、グラフ描画のライブラリが豊富に揃っています。JavaであればWeb関連やスマホアプリ開発のライブラリが豊富です。こちらは実際に仕事として取り組む場合に言語選択の指標になります。
41
+
42
+ ----
18
43
  ここからは全くの個人的見解ですが、おそらくあと10年から20年以内の間に量子コンピュータが実用化される時代がくると思われます。現在使われているコンピュータはノイマン型コンピュータと呼ばれ逐次処理が得意なのでいわるゆ「手続き型言語」と相性が良いですが、量子コンピュータは超並列化が可能と言われていまして、おそらくこれまでのプログラミング言語の概念を一変させる時代になると予想されます。関数型言語は並列処理と相性が良いと言われており、その時に関数型言語を知っているとプログラマーとして生き残る道が少し?広がるかもしれません。
19
44
 
20
45
  ご参考になれば幸いです。