プログラミング言語

プログラミング言語は、様々な目的や用途に合わせて作られ、現在数百種類あると言われている。初期のプログラミング言語として、FORTRAN、COBOL や ALGOL などが挙げられる。FORTRAN は科学技術計算向けに開発されたプログラミング言語ある。計算物理学・計算化学などの大規模計算を行う分野で使われていた。FORTRAN は計算速度が速く、そのうえ並列化処理が得意であるため、今日でもよく使われている。COBOL は事務処理向けに開発されたプログラミング言語であり、表計算ソフトがなかった時代にデータ集計・処理などに使われていた。また、ALGOL は、アメリカで開発された FORTRAN に対抗するために、ヨーロッパで開発されたプログラミング言語であると言われている。ALGOL には、構文スコープなどの概念が取り入れられた。このような言語設計の概念が、のちに多くのプログラミング言語に影響を与えるようになった。

プログラミング言語は、実行までの処理に着目すると、コンパイラ型言語とインタープリタ型(スクリプト型)言語に大きく分けることができる。コンパイラ型言語は、プログラムのコードを書いてから動くようになるまでには、「コンパイル」と呼ばれる作業を行う必要がある。コンパイラ型言語は、実行前に機械語に翻訳されるため、実行速度が速く、様々な機能を実現することができる。これらのメリットがある反面、コードの書き方が難しく、制約も多い。コンパイラ型言語には、C/C++、Java、FORTRAN などがある。これに対して、インタープリタ型言語はコンパイルを必要としないプログラミング言語である。インタープリタ型言語は、コンパイル型言語とは対照的に、コードの書き方が非常に簡単で、初心者でも学びやすい。その反面、実行速度が遅かったり、実装できない機能があったりする。代表的なプログラミング言語には、Python、Perl、Ruby や R などがある。

バイオインフォマティクスの分野では、研究分野や研究目的に応じて、コンパイラ型言語とインタープリタ型言語を使い分けている。例えば、タンパク質科学などの領域では、分子動力学の計算などを効率よく計算するために、コンパイラ型言語の FORTRAN や C などがよく使われている。また、ゲノム配列解析や統計解析などに関しては、実質的に文字列処理あるいは数値処理であるため、さっと書いてすぐに実行できる Python や R などのインタープリタ型言語がよく利用されている。

コンパイラ型言語

コンパイラ型言語は、実行速度が速い反面、コードの書き方に制約も多い。バイオインフォマティクスでよく見かけるコンパイラ型言語には、FORTRAN、C/C++、JAVA などがある。また、データベース開発などの分野において、システムの構築やユーザーインタフェースの作成などで、Java などが使われることもある。

インタープリタ型(スクリプト型)言語

インタープリタ型(スクリプト型)言語は、文字列処理処理や数値処理が主とするゲノム配列解析や統計解析の分野でよく使われている。ゲノム配列解析は Python や Perl などが使われ、データ処理は Python や R などが使われている。また、データベース開発などの分野において、システムの構築やユーザーインタフェースの作成などで、Python、PHP 、JavaScript なども使われている。

Python は、入門しやすく、汎用性の高いインタープリタ型言語である。バイオインフォマティクスの分野において、Python は、塩基配列やアミノ酸配列を扱う配列解析、タンパク質の立体構造予測などでよく使われている。また、近年、機械学習においても Python がよく使われるようになった。

R は統計解析とグラフの描画などを得意とするインタープリタ型言語である。よく使われている統計検定やモデリング手法をはじめとして、最新論文で発表しているような統計手法なども R で実装されている場合が多い。また、R は統計だけでなく、データの視覚化なども実装され、実用性の高い言語である。

プログラミング言語入門

初めてプログラミング言語を学ぶとき、バイオインフォマティクス分野で使うことを目的としているならば、Python か R がおすすめである。両方とも、データ解析を目的とした数値計算や視覚化などの機能を備えている。データを解析するためにプログラミング言語を学ぶ人にとって、Python と R は無駄のない仕様となっている。

プログラミング言語を学ぶ上で、まず一つの言語についてしっかり学ぶことである。一つの言語を理解できるようになれば、その他の言語を学ぶのが簡単になる。例えば、Python を使って自由にデータを解析できるようになってから、初めて R を勉強したとしても数日で上達できるようになる。プログラミング言語を学ぶ上で、とにかく一つの言語をしっかり理解することが大切である。

プログラミング言語を学ぶ初心者は、ゴールを決めると、いきなりプログラムを書こうとする。いきなりプログラムを書き始めると、今書いているプログラムがスタート地点とゴール地点のどこに当るのか、そして複雑な分岐処理のどの部分に当るのかを見失い、かえって時間や労力を無駄にしてしまう。そのため、ゴールを決めてから、スタート地点からゴール地点までの道のり、つまりプログラムの処理図(フローチャート)を紙に描き出して、その処理図を見ながらプログラムを書くと無駄が少なく、ミスも少なくなる。

また、初心者によく見られるもう一つの傾向として、エラーを恐れていることである。初心者は、エラーを出すことが間違いを犯したことと同じものと捉えがちで、できるだけエラーを出さないようにしている。しかし、いつまでもエラーを恐れていると、プログラミングスキルは上達しない。プログラミング初心者と中級者の違いは、プログラムをどれだけ書いてきたのかの差ではなく、どれだけのエラーを経験してきたのかの差である。つまり、いかに早くプログラミング初心者を卒業できるかは、その人のエラーの経験値にかかっている。