アメリエフの技術ブログ

Amelieff Staff Blog

色々なプログラミング言語

こんにちは。hr-kです。今回の記事ではプログラミング言語の向き不向きの話をしたいと思います。 私はこれまでに学生時代を含めるとC言語, Fortran, Python, Rなど、複数の言語を用いてソースを書いてきました。

私の主観ではありますが、初学者向けにC言語, Fortran, Python, Rの四つの言語の向き不向きをいくつかの項目で紹介していきます。

簡単なプログラムを組んでみたい

お手軽にプログラミングの練習をしたいときにはPythonが向いていると個人的には思います。 Pythonは比較的高級言語なので人間にとっては(比較的)簡単に書くことができます。 どのくらい違うかをC, Pythonそれぞれのソースで実際に見て見ます。 例えば有名なHello, Worldのソース(Hello, Worldと表示させるだけのプログラム)はC言語だと

/*ヘッダの導入(standard input output)*/
#include <stdio.h>

/*関数を定義*/
int main()
{
/*Hello, World!!と書き出し*/
printf("Hello, World!!\n");
return 0;
}

というソースを用意してコンパイル

$ gcc hello.c

コンパイル後にa.outという実行ファイルができるので実行

$ ./a.out
Hello, World!!
$

このようにしてC言語ではソースを用意しコンパイル、実行しなければなりません。

一方Python(3系)ではソースhello.py

print("Hello, World!!")

を用意して

$ python hello.py
Hello, World!!

とするだけでコンパイルすることなく、短いソースで実行可能です。 この簡単さは初めてプログラミングを学ぶ人にはありがたいですね。

配列や行列などを読み出してたくさん計算したい時

ソースの書き方にもよりますが、配列の確保や読み出し時間がネックになります。この読み出しが早いのがC言語とFortranです。 これらの言語はキャッシュを取ることができるので、他の二つの言語と比べて読み出しが早いです(キャッシュの取り方も言語によって違うので調べてい見ると面白いです)。 具体的には多重ループ構造などを含むソースを書くことに向いています。 PythonもnumpyなどのライブラリではC言語を用いて高速化を図っているので、使える場合は積極的に使っていきましょう。

データを統計的に扱いたいとき

Rが有効です。統計的処理のライブラリが充実しているので、図示まで含めてすごく活躍してくれます。 ただ、ループを含む場合にはPythonの方が有効だったりするので、自分が使うデータやその読み出し・判定に何が必要かによって いくつか使い分けられると良いです。 図示まで考える場合、RはRstudio, Pythonはjupyter notebook などを使うと使い勝手がいいです。

まとめ

初めてのプログラミング : Python

たくさん単純計算をするとき : C, Fortran

データの統計的処理・図示 : R, Python

といった形でそれぞれに向いた処理があります。