2.1. プログラミング言語の種類#

2.1.1. FORTRAN・COBOL・ALGOL#

プログラミング言語は、さまざまな目的や用途に応じて開発されており、現在では数百種類以上存在すると言われています。初期の代表的なプログラミング言語としては、FORTRAN、COBOL、ALGOL などが挙げられます。

FORTRAN は科学技術計算を目的として開発された言語で、計算物理学や計算化学など、大規模な数値計算を必要とする分野で広く使われてきました。計算速度が速く、並列計算にも適していることから、現在でもスーパーコンピュータを用いた計算科学分野で現役で利用されています。

COBOL は事務処理向けに開発されたプログラミング言語です。表計算ソフトが普及する以前の時代には、給与計算や会計処理などのデータ集計に広く用いられていました。現在でも、金融機関をはじめとする基幹システムで COBOL が稼働している例があります。

ALGOL は、アメリカで開発された FORTRAN に対抗する形で、ヨーロッパを中心に開発された言語です。ALGOL では、ブロック構造や構文スコープといった、現代のプログラミング言語の基礎となる概念が導入されました。これらの設計思想は、その後の C、Pascal、Java、Python など、多くの言語に大きな影響を与えています。

2.1.2. コンパイラ型言語とインタープリタ型言語#

プログラミング言語は、プログラムが実行されるまでの仕組みに着目すると、コンパイラ型言語compiled language)と インタープリタ型言語interpreted language)に大きく分けることができます。インタープリタ型言語は、スクリプト型言語scripting language)と呼ばれることもあります。

コンパイラ型言語では、プログラムを実行する前に コンパイルcompile)と呼ばれる処理を行い、人間が書いたコードを機械語に翻訳します。この仕組みにより、実行速度が速く、計算量の多い処理や大規模なシステムの構築に適しています。一方で、文法や型の制約が比較的厳しく、コードを書く難易度は高くなる傾向があります。代表的な言語としては、C、C++、FORTRAN などが挙げられます。バイオインフォマティクス分野では、FORTRAN や C/C++ が数値計算やシミュレーションの基盤として利用されています。

一方、インタープリタ型言語は、コードを逐次解釈しながら実行します。コンパイル作業が不要なため、短いコードを書いてすぐに動作を確認でき、学習コストが低いという利点があります。代表的な言語には、Python、Perl、Ruby、R などがあります。バイオインフォマティクス分野では、Python や R がデータ解析や統計処理に広く利用されています。

両者の中間型として、中間言語intermediate language)も存在します。その代表例が Java です。Java はソースコードが一度バイトコードにコンパイルされ、その後 Java 仮想マシン(Java Virtual Machine; JVM)上で実行される仕組みを持っています。このため、純粋なコンパイラ型言語ともインタープリタ型言語とも異なり、両者の中間的な性質を持つ言語として扱われることが多いです。Java は大規模なソフトウェア開発やデータベース連携、ユーザーインタフェースの構築などに用いられ、解析ツールや業務システムの開発に使われる場合もあります。例えば、よく知られているゲノムブラウザである IGV(Integrative Genomics Viewer)は Java で開発されています。

2.1.3. ドメイン特化言語と汎用型言語#

プログラミング言語は、その用途の広さという観点から、ドメイン特化言語domain-specific language)と 汎用型言語general-purpose language)に分類することもできます。

ドメイン特化言語は、特定の分野や用途に特化して設計された言語です。例えば、統計解析に特化した R や、データベース操作に特化した SQL、ウェブページの作成に特化した PHP や JavaScript などが該当します。これらの言語は、対象分野に必要な機能があらかじめ豊富に用意されており、少ない記述量で高度な処理を実現できるという利点があります。その一方で、用途が限定されているため、汎用的なアプリケーション開発には向かない場合があります。

言語

主な用途

特徴

R

統計解析・データ可視化

データ分析に特化、少ないコードでグラフ作成可能

SQL

データベース操作

「データを探す」ための専用言語で直感的

MATLAB

数値計算・シミュレーション

数式に近い書き方で理工系向き

SAS

統計解析

医療・ビジネス分野で利用

Stan

ベイズ統計モデリング

階層ベイズ解析

JavaScript

ウェブ開発

ブラウザで動く、結果がすぐ見える

PHP

ウェブ開発

簡単にウェブサイトが作れる

Ruby

ウェブ開発

日本発、読みやすい文法

一方、汎用型言語は、特定の用途に限定されず、幅広い目的に利用できるよう設計されています。C、C++、Java、Python などが代表例です。汎用型言語は、システム開発、データ解析、ウェブアプリケーション開発など多様な場面で利用でき、応用範囲が広い点が特徴です。バイオインフォマティクス分野では、Python のような汎用型言語に、生物情報解析用の専門ライブラリを組み合わせて利用するケースが一般的です。

言語

主な用途

特徴

C

基礎学習・高速処理

コンピュータの仕組み理解に最適

C++

ゲーム・高速計算

C の拡張版

Java

業務システム

大規模開発向け

Go

サーバー・並列処理

シンプルで高速

Swift

iOS アプリ開発

Apple 公式

Kotlin

Android 開発

Java より簡潔

Python

自動化・データ解析・AI

文法がシンプルで最初の 1 言語に最適

このように、ドメイン特化言語と汎用型言語はそれぞれ異なる強みを持っており、研究目的や解析内容に応じて適切に使い分けることが重要です。

2.1.4. おすすめのプログラミング言語#

バイオインフォマティクスを目的として初めてプログラミングを学ぶ場合は、Python か R を選ぶのがおすすめです。どちらもデータ解析に必要な機能が充実しており、解析用途に適した設計になっています。

プログラミングを学ぶ際に重要なのは、まず 1 つの言語をしっかり身につけることです。1 つの言語を理解できるようになると、他の言語の習得も容易になります。例えば、Python を使って自由に解析できるようになってから R を学び始めても、短期間で理解が進むでしょう。とはいえ、その前に Python の開発環境構築で絶望しているかもしれません。

プログラミング言語を学ぶ際、初心者がよく陥りがちなのは、何も考えずにいきなりコードを書き始めることです。まずはゴールを明確にし、処理の流れを整理し、フローチャートなどを描いてから書くことで、無駄な遠回りや深夜の発狂を減らすことができます。また、エラーを恐れすぎないことも重要です。エラーは失敗ではなく、学習の一部です。初心者と中級者の違いは、書いたコードの量ではなく、何回心を折られたかにあります。いや、正確には、エラーを見ても何も感じなくなった時点で中級者です。