今回は、大学生が最初に学ぶべきプログラミング言語ということで紹介させて頂きます。
記事の対象者
特に医学部の生徒向け、というわけではなく、大学に入って持て余している時間を有益なことに使いたいと思っている大学生(特に大学1年生は、どの大学でも同じようなもんだろう)向けの記事です。
以前の記事に、「医学部1年生は時間あったらPCやろーよ」みたいなものを書かせて頂きました。
PCをやるにあたって、最終的に行き着くのはプログラミングだと思います。
現在、Retroidはプログラミングにはまっており、その経験から、このような記事を書こっかなーと思ったわけです。
何を持って最初に学ぶべきとするか?
まず大切なのはとっつきやすさです。
文法がきれいで明確、簡単な言語で、将来性のある言語を、この記事の学ぶべきプログラミング言語とします。
結論、Pythonやれば良いんじゃない?
結論、Pythonをやっとけば間違いないと思います。
以前の記事に乗せた写真からも察していた方、多いと思うんですけど(笑)
似たような言語で、Rubyという言語もあり、これもなかなか魅力的だったのですが、僕はPythonにしました。
理由を以下に述べていきます。
きれいな文法
Pythonの文法は非常に簡潔、簡単であり、すこし英語の知識があればこれ、多分こんなこと言ってるんじゃない?ってことが推測できちゃいます。
例えばこんなプログラムがあるとします。
1 2 3 4 |
list1 = [1, 2, 3, 4, 5] for i in list1: print(i) |
初めてプログラムを見た人でも、多分リスト1の中に1−5までの数字が入っていて、その中身を1つ1つ取り出してprint、つまり吐き出すのかな?って予測できると思います。
現在、Retroidは若干C言語もかじっているのですが、それに比べて圧倒的にわかりやすく読みやすい!
科学計算、統計学との相性が良い
理系の学生は、少なからず科学計算、統計学に触れると思います。
例えば医学部の学生だったら、各疾患に対する各治療がどの程度功を奏するのか、ということを理解する必要がありますし、臨床疫学では、そのデータを統計解析し、EBM(evidence-based medicine)に役立てるために理解する必要があります。
そして、大学院などで研究するにしても、出てきたデータをきちっと統計解析しなくてはならないのです。
こういう状況でもPythonは非常に有能です。
科学計算では例えばNumPyというライブラリ(ライブラリっていうのは、プログラミングするのに便利なパーツを一塊にしたものってイメージです。)が有名です。
統計学ではJupyter Notebookっていうのが有名ですね。
このように、Pythonを極めることができれば、将来役に立つことが明白です。
ちなみに、この点においてRという言語もなかなか有名です。
SPSS等の学生には購入できないソフトと違い、無料で利用することができ、かつその精度は論文でも使われるほどです。
で、今後医者になる際に、医学統計というものは切っても切り離せないわけで、統計の比重を考えると、統計に強いRに少々ゆらぎました。
ただ、
- 統計以外の処理はPythonの方が得意なこと
- 既にPythonをかじった後、Rの事を知ったこと
- Pythonの統計ソフトも着々と成長を遂げているから、いずれ追いつくんじゃない?と漠然と推測したこと
から、Pythonにしました!
すばらしいコミュニティを持っている
世の中には素晴らしい人がいるもので、おれ、こんなプログラム書いたから良かったら使っておくれ(^^)って人が山のようにいます(笑)
ほんと太っ腹だと思います。
普通だったら独占しておきたいくらいのものもあるんですけど、ほんと気がいいですよね(^_^;)
優しい世界と言うかなんというか…
Pythonは世界的にシェアが多い、かつ書いやすいので、たくさんの気のいい人が、プログラム(ライブラリ)を自由に使えるようにしてくれています。
我々が大学に入るまでに1度は触れてきていると思われるOfficeファイル(Word、Excel、PowerPoint)を操作するライブラリも公開されています。
これは、何を意味するかというと、自分で1からプログラムを書かなくても、そういった人々の作成したライブラリのパーツをそのまま自分のプログラムに組み込めるってことです。
ライセンスなどの制約も物によってはありますが、基本的に緩いものが多く、個人利用では全く問題ないことがほとんどです。
プログラミング言語の中には、既に使われなくなってきた言語というものも存在します。
具体例をあげると叩かれそうだし、なんか宗教論争じみてくるので止めますけど(笑)
使われなくなってしまった言語というのは、このようなコミュニティが乏しい、あるいはコミュニティが活発じゃないんですよね。
すこしPythonについて調べたことある人ならわかると思いますが、今非常にアツい分野である人工知能を作成する言語として、Pythonはかなり注目されています。
今後人工知能が廃れることは無いと思うので、Pythonのシェアは上がりはするけど下がることはまずないでしょう。
つまり、今後も有益なコミュニティが維持される可能性が極めて高く、成長し続けること請け合いなわけです。
結論、Pythonは、
- 初学者でも学びやすいきれいな文法を持ち
- 科学計算、統計学計算に強く
- すばらしいコミュニティを持つ
プログラミング言語であり、初心者から親しめる言語にもかかわらず、将来性まで確保されているという素晴らしさから、大学生が最初に学ぶべきプログラミング言語ということでオススメできるわけです。
あえてあげるデメリット
Pythonは、膨大な計算をする際は、C言語やJavaとくらべて遅いと言われています(ただ、僕達が日常生活で使うにはまっっったくと言っていいほど問題でないレベル)。
その理由を簡単に説明します。
言語には、コンパイラ型の言語とインタプリタ型の言語が存在します。
大前提の知識として、我々の書いたプログラムというのは、そのまま機械が認識してくれるわけではありません。
我々が見知らぬ国の人とのコミュニケーションに通訳を使うように、プログラミング言語を機械語に翻訳する必要があります。
翻訳の方法は大きく2つあり、一つはコンパイルという作業で一気に機械語(0と1の羅列)になおしてしまう方法、もう一つはソースコードをロードして、インタプリタによっていちいち翻訳、実行する方法です。
一般的に前者の方が後者に比べて速いです。
C言語やJavaは前者、Pythonは後者に当たります。
科学計算とかで、数百万行のデータを読み込んで計算するとなると、遅さが目立ちます。
ただ、Pythonは、処理の一部分をC言語に置き換えたりする裏技(Cythonって言うらしいです)があり、これを使ったりして、ボトルネックになっているプロセスを高速化できます。
どうしても耐えられなかったら、問題となるプロセスだけ別のプログラムで書いて、シェルスクリプトなどでくっつけることもできます。
たとえ科学計算をするにしても、こんな大量な計算、する人の方が少ないと思いますし、たとえ理系だとしても、問題にならない人がほとんどと見ていいと思います。
ちなみに、前の大学のとある理系の研究室の人(2人)と話した時に、1人(某大学工学部の院生)は、以前はFORTRANという言語で科学計算を行っていたんですけど、僕の次の代からPythonに変わるらしいんですよねと話していました。
もう一人(某大学理学部の学部生)は、僕の研究室では、環境関係のデータを計算する必要があるんですけど、Pythonでやってます。かなりデータ量多いですけど問題なくいけますって言ってました。
ようするに、Pythonの遅さが目立って、どうしようもない状況ってのは、普通に使ってればほぼ出くわさないと考えられます。
というわけで、もし学校が暇だったり、将来に不安だったり、現在、処理しなければいけない膨大なタスク(医学部の勉強とか)を抱えている人は、Pythonやってみるといいんじゃないでしょうか?
今回はこの辺で失礼します。