meideru blog

家電メーカーで働いているmeideruのブログです。主に技術系・ガジェット系の話を書いています。

なぜ今、Pythonが人気なのかを簡単に説明する

      2019/08/16

プログラミング

近年、Python(パイソン)が絶大な人気を集めています。

IT系の仕事をしていると、「Python」というワードを聞かない日はありません。

2018年現在、プログラミング言語別でみると、人気ランキングでは堂々の1位です。

今日は、なぜPythonが人気なのかを説明します。

Pythonが絶大な人気

人気ランキング1位

IEEE Spectrumが発表した人気プログラミング言語のランキング「The 2018 Top Programming Languages」によると、Pythonの人気は堂々の1位です。

IEEE Spectrumによるプログラミング言語の人気ランキング

Pythonの下にC++やC言語といった、今では高級言語と呼べなくなってしまったプログラミング言語が続いています。

また、Pythonとライバル的な立ち位置にいるR言語、Rubyはそれぞれ7位、13位と大きく差を開けています。

Pythonプログラマは年収が高い

スタンバイが発表した「プログラミング言語別年収ランキング2018」によると、Pythonプログラマの年収は中央値575.1万円で3位です。

プログラミング言語別の年収ランキング2018

1位、2位はGo言語、Scalaという新興勢力が占めています。

2016年の同調査では、Pythonが1位でした。

いずれにせよ3位でも高い位置ですし、しばらくの間、これ以上順位が下がることも考えにくいです。

Pythonが人気である理由

簡単でわかりやすい言語だから

Pythonという言語はとにかく簡単です。
そしてわかりやすいです。

“百聞は一見に如かず”という諺もあることですし、例を見てみましょう。

 

以下にPythonとC言語を比較したサンプルコードを示します。

(例1)テキストファイルを1行ずつ読み取り表示する

# Pythonの場合
with open("sample.txt", "r") as f:
    for line in f:
        print(line)
// C言語の場合
#include <stdio.h>
#define BUFF_SIZE 256

int main(void)
{
    FILE *fp;
    char line[BUFF_SIZE];
    
    fp = fopen("sample.txt", "rb");
    if (fp == NULL) {
        return -1; 
    }
    
    while (fgets(line, sizeof(line), fp) != NULL) {
        printf("%s\n", line);
    }
    
    fclose(fp);
    return 0;
}

 

 

(例2)ファイルをコピーする

# Pythonの場合
import shutil

srcFileName = "src.dat"
dstFileName = "dst.dat"

shutil.copyfile(srcFileName, dstFileName)
// C言語の場合
long int getFileSize(const char *fileName)
{
    FILE* fp;
    fpos_t pos;

    fp = fopen(fileName, "rb");
    
    if (fp == NULL) {
        return -1;
    }

    if (fseek(fp, 0, SEEK_END) == 0) {
        if (fgetpos(fp, &pos) == 0) {
            fclose(fp);
            return (long int)pos;
        }
    }

    fclose(fp);
    return -1;
}

int main(void)
{
    const char *srcFileName = "src.dat";
    const char *dstFileName = "dst.dat";
    FILE *fp;
    char *buff;
    long int fileSize;

    fileSize = getFileSize(srcFileName);
    if (fileSize == -1) {
        return -1;
    }
    
    fp = fopen("src.dat", "rb");
    if (fp == NULL) {
        return -1;
    }
    
    buff = (char *)malloc(fileSize);
    if (buff == NULL) {
        fclose(fp);
        return -1;
    }
    
    fread(buff, fileSize, 1, fp);
    fclose(fp);

    fp = fopen(dstFileName, "wb");
    if (fp == NULL) {
        free(fp);
        return -1;
    }
    
    fwrite(buff, fileSize, 1, fp);

    fclose(fp);
    free(buff);
    return 0;
}

 


見ていただければ一目瞭然だと思います。
コードの行数が明らかに違います。
Pythonの方が遥かに簡単に書けます。

C言語の様にハードウェアに近い言語は、メモリを意識しなければプログラムを書くことができません。とても面倒です。

一方、Pythonのような高級言語は、メモリ管理が自動的に行われるので楽にプログラムを書くことができます。

豊富なライブラリが簡単に扱えるから

Pythonはライブラリがとても豊富です。
他のプログラミング言語と比較しても圧倒的です。

ちなみに、ライブラリとは便利なプログラムの部品の集まりのことです。
これらを活用すれば、効率良くプログラムを書くことができるというわけです。

例をあげると、NumPy、pandas、matplotlib、SciPy、TensorFlowなどがあります。
興味のある人は調べてみてください。

そしてPythonでは、ライブラリを簡単に扱うことができます。

pipという魔法のコマンドを使えば、使いたいライブラリを一発でインストールすることができます。

機械学習(AI)の分野で圧倒的な地位を築いたから

Pythonが人気を集めている1番の理由は、機械学習(AI)の分野で圧倒的な地位を築くことができたからです。
この説明に尽きます。

 

近年、機械学習を扱えるエンジニアは引く手あまたです。

人工知能(AI)

Pythonには、機械学習のフレームワークがたくさんあります。

例をあげると、scikit-learn、TensorFlow、Caffe、Chainer、Theano、NNableなどです。

 

機械学習のフレームワークの多くが、”Python用”として開発されている理由は2つあります。

1つ目は、Pythonという言語が簡単だからです。

機械学習を扱うエンジニアは必ずしも優秀なプログラマとは限りません。
少なくとも、コンピュータ工学に精通した人が多いというわけではありません。

それ故、C言語などハードウェアに近い言語でフレームワークを作ったところで、使いこなせるかどうかはわかりません。

なので、簡単な言語であるPython用で開発されています。

 

2つ目は、Pythonのライブラリが豊富だからです。

ライブラリが豊富であるため、機械学習用のフレームワークを開発しやすいのです。

例えば、近年、ブームを起こしているディープラーニングという機械学習の手法のアルゴリズムは、行列計算がメインです。

Pythonには行列計算が得意なNumPyというライブラリがあります。
ディープラーニングのフレームワークは、このライブラリを活用して開発されています。

C言語などでフレームワークを開発するとなると、このような行列計算のライブラリも自作しなければなりません。
とても面倒ですσ(^_^;)

まとめ

話をまとめます。

Pythonは簡単であり、ライブラリが豊富である。

だから機械学習用のフレームワークの多くが、”Python用”として開発されている。

機械学習エンジニアがPythonを使う。

Pythonが人気になる。

 

以上です!

 - 技術系