言語初心者が何を選ぶかということ
プログラミング言語を学びたい人が一番はじめにつまづくのは、おそらく「何の言語を選ぶか」ということじゃないかと思います。今、巷にはたくさんの言語があふれています。
私は子どものときにBASICを独学で学んだのでプログラミングにはアレルギーはないのですが、今仕事で使っているのはbashによるシェルか、VBAでのEXCELマクロくらいなものです。しかし、昨今クラウドもFaaS(Function as a Service)が大流行していることもあり、多少はプログラミングのことを理解した方がいいのかもしれないと思っていました。しかし、どの言語を勉強すればいいのか。FaaS側はたくさんの言語をサポートしていて、どの言語も入門用カリキュラムは充実していて。ただFaaSを試用するためにも1つは言語を持っておいた方が何かと便利です。
心理学の世界で「接近-接近型の葛藤」と言うようですが、魅力的な選択肢がたくさんあると選べない、という人間のこころの状態に近いです。こっちの言語を学ぶとこんなにいいことがある。でもあっちのほうはあんなにいいことがある。じゃあどっちをやろう・・と情報収集するも、情報があふれすぎていて。もし仕事で振ってくればそれ一本でいいのですが研究用となると迷います。
私は状況として「Pythonが一番人気」と聞いているのでとにかくPythonから入ろうとは決心しているのですが、学ぶ前に本記事でPythonの魅力を整理しておきます。
Pythonをなぜ学ぶか
日経xTECH
「Pythonはどうしてこんなにはやっているんですか」。プログラミングを最近学び始めた人と話をしていて、そんな質問を受けた。自分としてはPythonを学ぶ意義は自明だと思っていたが、プログラミングにあまり詳しくない人にはそうでないのかもしれない。
私は、2019年10月上旬に開催されたイベント「日経 xTECH EXPO 2019」で、「非プログラマーがPythonを学ぶ意義」と題して講演した。そこで今回のコラムでは、この講演のプレゼンテーションを基に、Pythonを学ぶべき理由を説明したい。
1つの理由って「AI」なんですね。シンプル。ほかにないのかな。
Hacker Noon
ImpressのInternet Watchの下記の記事で存在を知りました。Hacker Noon。
海外メディア「Hacker Noon」が、2020年に予想されるソフト開発の7つのトレンドについての記事を掲載している。
その中に「Python」が挙げられていたので元記事を確認。
One such language is python which is most used for AI and ML development. It showcases a steady growth among other major programming languages. Here is a Stack Overflow graph that depicts the same in detail.
上記に言語の成長率(Growth of major programming languages)というグラフがあってPythonの伸びが激しいな・・と。
やはりAIや機械学習の開発が理由として挙げられています。
ZDNet
Microsoft傘下のオープンソースのコード共有サイトGitHubで、高い人気を誇るプログラミング言語Pythonが、かつての人気言語であるJavaを抜き、最も人気の高いプログラミング言語ランキングで2位の座を獲得した。
1位はJava Scriptです。
この辺りで、「え、Pythonじゃないの」となってちょっと悩みだすと、また勉強のスタートが後ろになっていきます。悪い癖です。
Pythonやった後にJava Scriptやってもいいかなと思ったのは事実です。
日経 xTECH
利用しているプログラミング言語によって年収に違いがあるのか。これを探るため、日経 xTECHでは「プログラミング言語実態調査」のアンケートをWebサイト上で実施した。調査では、まず100万円未満から1500万円以上までを100万円刻みで分けて、ITエンジニアに年収を尋ねた。
プログラミング言語別の技術者年収ランキング。ここでもJava Scriptは1位。Pythonは6位と言う結果で、だんだんとJava Scriptがいいのかなと揺らぐ自分はいますが、ここは成長性を感じてPythonに一票。ただ、セカンド言語(こんな言葉ないか)はJava Scriptかなあと感心。
ZDnet
ちゃんと悪い面も見ておこうかと。
プログラミング言語「Python」は開発者の間で高い人気があるかもしれないが、Pythonアプリを平均的なコンピューターユーザーと共有するのは、今も容易ではない。
Pythonアプリを簡単にパッケージ化できないという問題は、同言語の未来に対する脅威である、とBeeWareの共同創設者のRussell Keith-Magee氏は2019年の「Python Language Summit」で指摘した。
そうなのか・・。例えばWindowsで「.EXE」などのように実行ファイル化できないということですね。頭に入れておきます。
最新の「Python Language Summit」では、モバイルや新しいウェブプラットフォームのサポートが改善されない限り、Pythonが「存在の危機」に直面すると警鐘を鳴らした。Pythonはまた、他の言語の場合と比べて非開発者向けアプリのパッケージ化をより困難にしている。
モバイル・WEBまわりが弱いということですね。インプットしました。
Java Scriptが得意とする分野だと思いますので、補完的に勉強したいと思います。
まとめ
ということで、全くまっさらから言語を選ぶ場合、AIや機械学習の分野を優先して勉強したいならPythonを一番初めにやること。WebやモバイルまわりならJava Scriptが良いことがわかりました。
ただ、エンタープライズ分野なら相変わらずJavaが強いですし、GoやTypeScriptなど新興勢力もいます。相変わらず目移りはするのですが、とにかく一度決めたら集中しないと学習効果は半減すると思われます。
なお、本でPythonを勉強するなら、下記の本が今なら最も良さそうだと思いました。
さあ、Python始めよう。