初めての言語は何が良いのか
よく見かける話題であり、回答はたいてい自分のやりたい分野に適したものを選べば良い、になります。そして、必要になったらそのときに別の言語に乗り換えれば良い、になります。これはいかにも正しそうなのですが、念の為、本当にそれで良いのかどうかを検討してみます。
まず、ちょっと触って見るだけなら別に何でもよくて、そういうことを聞いているのではなく、この質問の本当に意味するところは、初めて本格的に、真剣に学ぶにはどの言語が良いのかということでしょう。なので、そのように読み替える必要があります。
ときたま、言語なんてなんでもいい、基本さえ出来ていればどの言語を使っても同じだと豪語する輩に出くわすことがあります。確かに、プログラミング言語にはある程度共通したところがあり、その共通部分だけを使ってプログラミングをすることも可能ではあります。しかし、それだけで十分であるという認識は完全に間違いです。それぞれの言語には目指すところがあり、それを実現するために多くの概念が取り入れられています。どれも一緒だという認識のもとで書かれるプログラムは、極めて表面的にしか言語を活用していないことを意味します。それらはたいていひどいものです。言語の選択による違いは確実にあります。プログラミングと言語はイコールではありません。プログラミングには設計や分析を含めた様々な活動が含まれています。しかし、言語はプログラミングにおけるもっとも基本的かつ重要な道具であると言えます。言語の選択はプログラミング全般に渡って大きな影響を及ぼします。
最初の言語は何が良いのかという質問に戻ると、なにかやりたいことがあるならやはりその分野に適した言語を選ぶのはもっともです。ただし、言語には流行り廃りや誇大広告があり、何もかも鵜呑みにするのは良くないです。また、必要になったら別の言語に乗り換えればいいとまで楽観的にはなれないところがあります。なぜなら、最初に学んだ言語は、後になってもその言語の考え方から抜け出ることが難しくなり、何らかの影響を及ぼし続けることがあるからです。
個人的な経歴を上げると、C++が最初に学んだ言語でした。プログラミングを始めた理由はゲームを作りたかったからで、当時のゲームプログラミングはC++一色だったからC++を選択しました。Microsoft Visual C++のアカデミック版を購入して、付属していた本でいろいろ試したりしていましたが、さっぱり分かりませんでした。しばらくして、Charles_Petzold著の「プログラミングWindows 第5版」という本をたまたま書店で見かけて購入しました。それはC言語で書かれていたのですが、非常に分かりやすく、そこから一気に学習が進んだ気になれた経験があります。その後、C言語についてはそれほど本気でなかったこともあり、あまり悩まされることはありませんでした。しかし、C++をちゃんと使いたいという思いがあり、なんとかC++に乗り換えようとしてとても苦悩していたのはよく覚えています。今では優れたテキストが多くあり、もしかしたら取り組みやすくなっている可能性はあります。当時のC++の言語もテキストも今ほど洗練されていなかったのもあり、とても最初の言語としてふさわしいと呼べるものではなかったと言っていいと思います。そして、C++にあまりに長く付き合ってきたために、何かしら別のことをするときにもC++ならこうなるとか、どうしても最初に真剣に使ってきた言語をベースに考えてしまうことは多々あります。いまさらではあるけど、もし、些細で重要な詳細にまみれたC++にこだわらず、C言語やLispといった言語でもっとプログラミングの設計や概念やアルゴリズムの練習に時間を費やしてきたのなら、違った今があったのではないかと思うところがあります。
何が言いたいかと言うと、単にゲームを作りたいからといって、今だとUnityとC#がもてはやされているというだけで、C#を選択するのが最適を意味することにはならないということです。先に述べたとおり、最初の言語はずっとその後の活動に影響を及ぼす可能性は高いです。Unityはシンプルな開発環境ではないし、C#もシンプルな言語ではありません。そのことは先に知っておくべきことかと思います。
能書きはこれくらいにして、具体的に何がいいのかを検討してみることにします。
C
おすすめ度: ⭐⭐⭐⭐☆
Cは低レベルな言語です。低レベルというのは粗末なという意味ではなく、ハードウェアに近いことを意味しています。そのため、アセンブリ言語と呼ばれる更に低レベルな言語との対応関係が理解しやすいという、プログラミングの練習においては有利になる側面もあります。よく聞かれるのは、Cを学ぶことでコンピューターの動作を理解できるという類の文句です。これは誇張されています。コンピューターはそんなに単純ではありません。確かに、アセンブリのコードをみることでCPUのステップを目にすることが出来ますが、それだけでは何もわかったことにもならないし、実際やってみたらわかった気にもなれないことでしょう。ただし、Cを知らずしてコンピューターを理解する1)のは難しいというのはあっていると思います。コンピューターそのものを学びたいからCを選ぶというのはそれほど的外れではないように思います。そのためのCをベースにした大量の情報やソースコードに自由にアクセスできる状況が後押しをしています。
もっと実用的な側面を見ると、Cは他の言語との橋渡しをする仲介役としての役割もあります。例えば、英語のような役割です。本気でプログラミングをするなら実用的な面からも学んでおくことは必要です。いずれ学ばないといけないなら、最初から学べばいいじゃないか、というのもありです。
また、システムプログラミング言語としては、事実上CとC++しか選択肢がなかった状況もあり、Cを学ぶことが無駄になることは決してありませんでした。システムプログラミングとは、大雑把に言うと、OSなど厳しい条件で極めて安定して動作しなければならないソフトウェアに対するプログラミングを指します。
初めてプログラミングをするもっとも多くの人が関心があるであろう、アプリケーションのプログラミングについては微妙な感じがします。ハードウェアを制御するアプリケーションなどを除くと、通常はそこまで低レベルである必要がないからです。もちろん出来ないわけではなく、実際、伝統的なUnixプログラムの多くがCで書かれています。Win32 APIと呼ばれるWindowsアプリケーションのもっとも基礎となる機能もCによって提供されています。それどころか、数え切れないほど多くのアプリケーションがCで書かれ、またAPIと呼ばれるライブラリのインターフェイスがCによって提供されています。だからといって、現代でCでアプリケーションを書くのが良い選択であることは意味しません。
難しさという点から見てみると、Cの言語そのものは決して難しくありません。ただし、流行している言語に比べるといくらかコンピューターへの適性が必要とされる部分はあります。その原因は、開発ツールなどが統一されていないなど表面的な問題もありますが、最終的には低レベルであることに集約されます。低レベルであるために、そうではない言語だったらユーザーから隠してしまうようなことがもろに表に出てきます。これは必ずしも悪いわけではなく、CPUやメモリへのアクセスがコードとして目に見えることになり、意図的にそうしたい場合があります。システムプログラミングやハードウェアの制御を行う場合に必要なことです。
総合的に判断すると、コンピューターが大好きな人にはきっとしっくりくる言語です。Linuxユーザーは好き嫌いに関係なくいずれは学んでおかないといけないので、最初に選択しても良いのではないかと思います。初めてプログラミングに触れる領域がシステムプログラミングであるということは考えにくいので、もしそうなら考え直すべきで、あまり気にしなくて良いと思います。Cは重要視される傾向にある言語だと思います。実際にそうだと思うところも多々あります。もし本気でプログラミングをやっていこうと思っているなら、Cを全く知らないままでいることは難しいです。それが最初の言語かそうでないかの違いだけです。
BASIC
おすすめ度:
VBA | ⭐⭐☆☆☆ |
VB.NET | ⭐⭐⭐⭐☆ |
Small Basic | ⭐⭐⭐⭐⭐ |
その他のBASIC子孫 | ⭐⭐⭐☆☆ |
BASICはもともと教育用として作られた言語でした。まだインターネットが普及していなかった時代、日本でNECのPC-98というパソコンが広く使われていた時代には、最初に学ぶ言語として定番でした。オリジナルのBASICよりも、そこから派生した多くの子孫が生み出されて使われてきていました。自分の場合も、最初に触れた(だけで学んだわけではない)言語はPC-98に搭載されたBASIC言語でした。
BASICの子孫のほとんどは現在ではすっかり存在感をなくしてしまった感じはあるのですが、ある特定の領域で揺るぎない地位を確立しているものもあります。特に、Microsoft Excel用のプログラミング言語であるVBA2)はビジネスシーンで必要に迫られて覚えなければいけない状況が多々あるようです。書店に置かれている多数のExcelやVBAの本の存在感はなかなかのものです。
VBAに続いて現在でも広く使われているBASICの子孫は、同じMicrosoftによるVB.NETでしょう。これはVBAと違って特定領域ではなく、汎用的な目的のためのプログラミング言語です。もともとはVisual Basic (VB)という名前で、Windowsアプリケーションの開発言語として、広く普及していたものでした。2000年代初頭に.NETに対応させるために、大幅な変更を加えてVisual Basic .NETと名前を変えました。もはや別の言語と言っても良いくらい大きな変更でした。このとき、旧VBユーザーはVB.NETへの移行を余儀なくされました。旧ユーザーの誘導と新規ユーザーの誘致はまずまずうまくいって、決して少なくないユーザー数を獲得していたと思われます。しかし、現在ではMicrosoftはVB.NETにはあまり熱心ではありません。代わりにC#を推しています。VB.NETは今後は徐々に存在感を薄めていくことが予想されます。一方で、良いニュースもあります。VB.NETはMicrosftが提供する開発環境であるVisual Studioと強い結びつきがあり事実上Windows専用でした。近年、.NETがWindows以外でも使えるような方向に向いてきていて、MacやLinuxでも.NET開発をすることが可能となってきました。そもそも.NETとは何かと言うと、言語の開発と実行を支える基盤のようなものです。これがないと言語でプログラムを作成したり、プログラムを実行できなかったりします。その基盤がWindows以外にも対応したことにより、ちょっと大げさですが、VB.NETもWindows専用というくびきから解き放たれたと言うこともできます。
Microsoftは、VBAとVB.NET以外にもSmall Basicというものも提供しています。これはプログラミングの学習のために利用されることを目的としたものなので、VBAやVB.NETからは失われた、ビギナー向けであるという性質が保たれていることを期待しても良いでしょう。
BASIC言語の子孫は数多くあります。しかし、自由かつ無償で利用できて開発が継続さているものは意外に少ないです。いくつか見つけることができたものを挙げておくとFreeBASIC、SmallBASIC3)、Gambas、Yabasicなどがあります。
BASICのこのような現状を踏まえて、初めて本格的に学ぶ言語に向いているかを検討してみます。
まず、VBAを考えてみると、言語そのものについてはそれほど難しいものではありません。オーソドックスな手続き型の言語で、他のBASICの子孫とかけ離れたものではありません。しかし、Excelを操作するという目的のためにプログラミングをしないといけないため、実際のプログラミングはなかなか煩雑なものになってくる傾向にあります。VBAのための開発環境であるExcelのVBAエディタも、初めてプログラミングを学ぶにしては煩雑なものです。VBAを学ぶときの混乱の元となるのが、どうしたいかばかりに気を取られてしまうことです。その結果、VBAの言語について全く学ばずに、こう書けば動くとだけしか覚えようとしない方向に傾いてしまうことがあります。これはプログラミングを学んでいることにはなりません。最初の言語としては悪影響でさえあるでしょう。当人の姿勢が悪いとは言い切れません。VBAの存在理由を考えれば、何をしたいかが先に来るのは自然なことで、VBAを利用する人の多くがプログラミングを学びたいわけでではなく、仕事をこなしたいだけです。この状況は学習資料の傾向にも表れていて、本屋に並んでいる本のほとんどがVBAの言語の基礎をおろそかにして、その場しのぎの断片的な情報を載せただけのものになっています。もし、就労先で必要に迫られてやらないといけないとなったら、そうせざるを得ないところがあります。この場合、向いているかどうかを考える余地もないように思えます。ですが、十分に時間が与えられたなら、そうあるべきなのですが、やはりちゃんとVBA言語の基礎からちゃんと学ぶほうが良い結果に繋がります。問題なのはプログラミングを学ぶための良い資料が見つかりにくいことと、Excelにまつわる煩雑さが表に出るため集中力を乱されやすいことです。もし、必要に迫られているわけでなければ、VBAから始めるよりもVB.NETの方が良いです。Small Basicはもっと簡単で良いです。
VB.NETは、.NETへのフルアクセスが可能であり、本格的なプログラミングに耐えうるものです。その反面、シンプルな言語であると言えません。見た目は確かにBASICの雰囲気が漂っています。BASIC言語の特徴は、できるだけ記号を使わずに、英語でプログラムの構造を表現しようとするものです。VB.NETは数多くの機能を備えているため、その分だけ英語のキーワードが存在することとなりました。英語がネイティブの人にとっては、直感的でフレンドリーな感じになるのでしょうが、そうでなければ本来の恩恵を受けることが出来ないのが辛いところです。加えて、VB.NETの言語を学ぶためのガイドとなる資料で良質なものが少ないのも辛いところです。そうであってもVBAよりVB.NETの方が良いと思える理由は、VBAのようにデタラメにプログラミングしてもなんとかなってしまうようなものではないからです。わりかしちゃんと言語の基礎を身に付けていないと、思うように動作するプログラムをつくるのは難しいです。否応なしに言語を学ぶことが強制されるので、プログラミングを学ぶという貴重な体験をスキップしてしまうような、間違った方向に進んでしまう事態を防ぐことが出来ます。
Small Basicは、プログラミングの学習を目的として提供されています。あくまで学習が目的であるので、本格的に学ぶという趣旨とは少し外れるところもあります。しかし、VB.NETは覚えることがたくさんありすぎて負担が大きいように感じられるなら、その前にワンクッション挟むのは非常に有効です。MicrosoftもVB.NETの学習が大変であることを認識してるからこそ、BASICを基礎にした学習用の言語を作ったのでしょう。Small Basicの言語のルールはVB.NETと全く同じではないですが、似ているところがたくさんあります。学習用の環境で十分満足した後、本格的にVB.NETに取り掛かるときの負担は激減するし、VBAの場合もいきなり始めるよりはずっと正しい道を歩むことができるようになるはずです。もしVBAかVB.NETを最初の言語として考えているのであれば、その前段階の言語としてかなりおすすめできます。
その他のBASIC子孫の言語は日本語の情報が極端に少ないので、英語に問題がない場合だけの候補となります。
Lisp
おすすめ度: ⭐⭐☆☆☆
Lispを最初の言語に選んで上手くやっていける人はかなり限られています。C、BASICときたので、念のためもう一つの歴史を持つプログラミングの系譜として紹介しておきます。LispはCと対極にある言語と言えます。ある角度から見ると、Cはコンピューターの詳細をあまり隠さずに、ハードウェアとソフトウェアの境界に近いところでプログラミングをするスタイルだと言えます。Lispはコンピューターを抽象化してプログラムからはその詳細を意識しないで良いようなスタイル、つまり、高レベルな言語です。Lispは数学的な性質を多く含んでいて、数学のバックグラウンドを持つ人に好まれる傾向があります。数学を専門とする人でプログラミングを初めて学ぶ人、あるいは物理学者やエンジニアなどで日常的に数学を使用する人、俗っぽい仕分け方をすると、大学院より先のクラスで数学を学んできた人などは、まず候補に上がるのではないかと思います。自分がそうでないので本質的なことは分かりませんが、ちょっと無責任になっておすすめしてみます。このように対象を限定するのは、あくまで初めて学ぶ言語として見たときです。別の言語で最低限のプログラミングの基礎を身に付けた後なら、どのような人でも学ぶことができるものであり、むしろ学ぶべきものです。特に、Lispを用いて書かれた非常に有名な本、Structure and Interpretation of Computer Programs (通称SICP)は、なるべく早い段階で読んでおきたいものです4)。
Lispには数多くの子孫が生み出されました。Lisp界隈では子孫と呼ばずに、方言 (dialects)と呼ばれるのが通例です。特に、Common LispとSchemeが広く使われています。これらは厳格で近寄りがたい雰囲気を醸し出していますが、ClojureやRacketなどはいくらかフレンドリーな雰囲気があります。
C++
おすすめ度: ⭐⭐⭐☆☆
C++は、非常に応用範囲の広い言語です。低レベルな領域から高レベルな領域まで対応することが出来ます。Cと同様に、もっとも基礎的なところではコンピューターの詳細を隠すことはありません。つまり、CPUやメモリへのアクセスを意識したプログラミングを行わなければならないです。Cと大きく異なるのは、高度な抽象化が可能であることです。決して低レベルなプログラミングを行わなわずに済むような基盤を組み立てるための十分な機能を備えています。注意したいのは、C++を使えばそれらが自動的に手に入るものではなくて、何も考えずにプログラミングをしたら、良くてCと同程度か、通常はそれよりずっと悪いものに成り下がってしまいます。あまりに広範囲の領域をサポートするために、覚えなければならないことがたくさんあります。言語には各種の落とし穴あり、学習コストの面でも実際の使用上においてもユーザーにかかる負担は大きいです。
C++はプログラミングスタイルについて寛容的で自由度が高いです。様々なスタイルのプログラミングが可能です。これは基本的には良いことなのですが、まだプログラミングを始めたばかりの時期には、どうやって書くのが良いのかを自分で見つけ出していかなければならず、苦労することになります。それにこれには決まった回答がありません。何年経験を積もうが、良いプログラミングスタイルはどうあるべきかは追求し続けなければなりません。しかし、最初の段階でそれをやらされるのは、何を書いても一向に満足するものにならず、大変に感じられる要因となります。
2011年以降、3年おきに言語仕様が更新され続けています。この方針は今後も続くので、C++ユーザーはそれを追いかけていかなければなりません。いろいろな意見がありそうですが、個人的には苦痛ではなくて、言語も良い方向に向かっているように感じています。学習しやすさという点でも、2011年より前の状態よりもずっと整備されていて良くなっていると思います。
C++はCを基礎として作られていて、Cのかなりの部分と互換性があります。つまり、Cで書かれたプログラムがそのままC++として使える可能性が高いことを意味します。そのため、CとC++の相互運用性は他の言語と比べて圧倒的に高く、C++の大きな強みの一つとなっています。
C++はCを基礎にしているのだから、C++の前に先にCを学んでおいたほうがいいのか、ということを疑問に持つかと思います。これは一概に言えないところだと思います。人柄にもよります。自分の場合は、最初C++に手を付けて、さっぱり分からなかったのでCをやることにしました。しかし、今思うと、これはただ使用していた資料がCを学んでいることを前提にしたものであったからに過ぎません。なので、もし今使用している資料がCを前提にしているものであれば、Cを一度学んでからにしたほうがいいでしょう。ただし、これからC++を始める人のための資料で良質なものは、ほぼすべてがCの経験を問わないものになっているように見受けられます。いずれにしても、C++を使っていくのならどのみちCの大部分は把握した上で実際に活用していかなければならないので、Cを学んでも無駄になることはまずありません。
C++を覚えるといろいろと良いことがあります。だからといって手放しでおすすめできるかと言うと、個人的な経験からはそうは言えないところがあります。C++を学び始めてから、ちょっとだけ書けるようになるまですごく時間がかかりました。最初にC++を学び始めてから10年くらいは何も書けずにいたと思います。ひたすら本を読んでサンプルプログラムを書いて、という日々を繰り返していました。傍ら、ごく短期間で学んだPerlを使ってWebサイトを作ったりしていました。多くの人はこんなに非効率なことはしないだろうから、10年というのは大げさすぎるように思えるでしょう。それに、今は昔よりも言語のあるべき姿が定まりつつあるのか、C++の方向性が定まってきていて、どのように学んでいけばいいかの学習パスも昔よりは不明瞭でなくなっているように感じられます。なので、そこまで苦労はしないかもしれません。それでも、一朝一夕で身につくような言語でないことは間違いないです。
JavaScript
おすすめ度: ⭐⭐⭐⭐⭐
JavaScriptは主にWebページを制御するために使われてきた言語でした。インターネットが普及してから2000年代初頭まではおまけ程度の扱いでしかありませんでしたが、その後、Webページがインタラクティブな性質を持つように大きく変化してきて、それに伴いJavaScriptの重要性が見直されてきました。今では、インターネットの花形であるWWWの中心に位置するプログラミング言語の位置にまで上り詰めました。Webプログラミングを専門とする人だけでなく、プログラミングを行う全ての人が学ぶべきである必須科目であると言っても良いでしょう。なぜなら、現代でプログラミングをするのならばWebを利用しないことはないであろうからです。Webには興味ないからといって無視するのは賢い選択とは言えません。よほど意識的に回避しない限り、どこかでWebのお世話になっているはずであり、それらの技術について知っておくことは価値があります。
JavaScriptは実質、Webブラウザが解釈して実行できる唯一のプログラミング言語です。最近人気を集めているTypeScriptは、トランスパイラと呼ばれ、TypeScript言語で書かれたプログラムから、JavaScriptのプログラムを生成します。WebでJavaScript以外の言語を使用したいと言った場合、こういった手法がとられます。最終的にはJavaScriptのプログラムになることから、やはりJavaScriptについて知っていないと難しい状況にあります。
JavaScriptはWebブラウザのための言語として登場しました。そのため、JavaScriptを学ぶにはWebブラウザの環境の中でプログラミングをしなければなりませんでした。これはやや特殊なプログラミングスタイルであり、伝統的なものとは違うので、これで本当にプログラミングの基礎が学べるのか疑問なところもありました。Webブラウザの環境でプログラミングを学ぶのが悪いわけではないのですが、VBAのときと同様に、何をしたいかばかりに気を取られて言語の基礎を学ぶことがおろそかになってしまう危険性があります。またJavaScriptだけを学ぶことは不可能であり、HTMLやCSSを同時に学んでいかなければなりません。その結果、本筋からそれてしまうことがあり、人によっては効果的でも楽しくもない体験になる可能性が大いにあります。現在では、Node.jsに代表されるWebブラウザを必要としないJavaScriptの実行環境も普及していて、これらを利用すれば伝統的なスタイルでプログラミングを学習することも出来ます。
JavaScriptの言語に目を向けると、多くの言語が採用しているのとは違ったやや癖のある性質があります。その性質は決して悪いものであるというわけではなく、JavaScriptを良い言語として特徴づける優れた性質のものでもあります。しかし、以前のJavaScriptではその性質についてしっかり理解していないといけなくて、最初の言語として気軽に始めるにはあまり適切ではないように思えるところがありました。現在では仕様が改定され、とりあえずはそれらの詳細について知らなくても書けるような、直感的に扱える言語になってきています。したがって、とても学びやすい言語になっています。
Webブラウザの環境で良ければ、プログラミングを学ぶための追加のソフトウェアをインストールする必要がなく、すぐに試してみることが出来るのも大きいです。Webブラウザの環境で試してみて、本格的に学びたいとなったらNode.jsをインストールすれば良いだけです。
これらを総合すると、JavaScriptは最初の言語にとてもおすすめです。Node.jsがあれば伝統的なやり方でプログラミングを学ぶことも出来るし、Webブラウザ環境で視覚的な効果を得ることの出来るので、少ない労力で比較的大きな達成感を得ることも出来ます。実用的な側面からも、Webプログラミングをメインに見据えているならもちろん、そうでなくても、多少はWebについて知っておくことは普通は必要です。学んだことが無駄になることは決してありません。
Python
おすすめ度: ⭐⭐⭐⭐☆
Pythonは、学びやすさと実用性のバランスの取れた言語です。初期の頃はPerlやRubyと並んで、ちょっとした仕事のために手軽に使える言語のような位置いました。Pythonを含めたこれらの言語はそれぞれの方面で人気を獲得していきました。Pythonは現在、AIプログラミングやデータサイエンスの環境が整備されていて、大々的なプロモーションが行われています。プログラミング教育やAI技術のプロモーションと並行して行われていることもあり、今までプログラミングとはおおよそ無縁のところにいた人たちを多くを巻き込んで、新たなユーザーを獲得することに成功しています。Pythonは学びやすい言語であることから、かつてJavaとオブジェクト指向の流布のために行われた大々的なプロモーションのときのようには混乱と破滅をもたらすものとはなっていないようで、必ずしも悪い傾向であるとは言えないです。しかし、こうした異様なまでにもてはやされている言語には何か裏があると勘ぐるのは自然なことです。初めて本格的に学ぶ言語にPythonを選択した場合は、現状、そういう状況にあることを認識しておくことは必要です。先に述べた認識は、私個人の主観的なものです。まず、自分自身で情報収集をして、流行にのるべきなのか別の言語を選択したほうが良いのかを判断する必要があります。流行中の言語は不必要に多くの情報がインターネット上を中心に飛び交います。これが良いことなのか悪いことなのかは人によります。情報が少なすぎたらそれもまた大変な問題です。しかし、どうしても学習中に集中力を乱されることは避けることが出来ません。
以上は、Pythonを選択してもよいかどうかの唯一の懸念材料です。Python自体は初めて学ぶのに決して悪くない言語です。流行を過剰に警戒して、Pythonを選択肢から外してしまうのは慎重すぎると言わざるを得ません。AIプログラミングやデータサイエンスを本当に学びたいと思っているのならば、まず候補にあがります。それ以外の領域であってもそつなく仕事こなせます。Pythonのクリーンな性質は、言語の詳細を学ぶために費やす時間を減らしてくれて、より高度なプログラミングの概念や技術を学ぶためにその時間をまわすことが出来ます。このことを考えると、原因と結果を逆にみることができます。つまり、Pythonが学びやすい言語であるからこそ流行しているということです。