最近、プログラム業界では本当によく聞かれるようになった言葉が
「Python」
だと思います。
プログラミングはよくわからないけど、Pythonという言葉はよく聞くね
漠然としたイメージだけどなんか難しそうな反面、スキルアップにはすごく良いんじゃないかなって思うけどね
あとは学校の授業でPythonを習う高校生もいるって聞きました
Pythonってなんじゃって思ってる方もいらっしゃるし、どうやらPythonを知っていると今後のキャリアに有利なんじゃないかという方もいらっしゃると思います。
僕自身、IT業界に身を置いて20年ほど経ちました。
C言語から始まり、Java言語、C++、時にHTML、CSS、Perlなど、さまざまな言語を経験してきましたが、そもそもPythonとは何か、そしてなぜこんなにパイソンパイソン言われるのか、その辺りをお話したいと思います。
- プログラム言語のPythonについて
- Pythonとはどのようなプログラミング言語か
- Pythonの概要とその特徴について
- Pythonを使う上でのメリット、デメリットは何か
Pythonとは何か
Pythonってよく聞くんだけど、いまいち何なのかよく分からんよね
そもそもPythonって名前が変わってるよね、どっからこの名前が来たんだろうね
Pythonの名前の由来は、Pythonを作った人がコメディ番組の「空飛ぶモンティパイソン」が好きでそこから取ったというのが通説です。
というか元々Pythonというのはニシキヘビという意味があります。
なので、Pythonのロゴにはニシキヘビが書かれています。
Pythonとはプログラミング言語のことです。
Pythonの特徴やメリット
でもプログラミング言語なんて今までたくさんあったし、じゃあ今までの言語とどう違うの?
なぜ今Pythonが注目されているか、多くの人にPythonが選ばれているか
そこには大きく2つの理由があります。
文法が簡単
プログラム言語というのは文字通り言語なんです。
なので、言語を習得するのに文法が必要になります。
ちなみに世界中の共通言語として英語が採用されていますよね、これ何でかわかりますか。
なぜかというと文法が簡単だからです。
なので、覚えるのが簡単、だからみんな話しやすい言語を共通語として採用する。
これプログラミング言語でも同じことが言えます。
例えば、画面上に「Hello!」って表示するだけのプログラムを書くとします。
これJavaで書くとこうなります。
class Hello {
public static void main(String[] args) {
System.out.println("Hello!");
}
}
Javaでは必ずクラスの定義とメインメソッドの定義がいります。
その上で1行表示するという長いメソッドを書いてようやく「Hello!」という文字列が画面上に表示されるようになります。
で、これをPythonで書くとどうなるか。
print("Hello!")
はい、どうですか
これだけでもシンプルさが雲泥の差ということが分かりますよね。
ちなみにPythonに関しては万事が万事こんな感じです、とにかくPythonは処理がシンプルに書けます。
たった画面上に1行表示するだけでもこんなに差が出ます。
もしこれが普通のアプリケーションやシステムだとどうなるでしょうか。
ですので、少しの記述の違いがプログラム全体量に大きく左右されます。
とにかく、Pythonはプログラミング言語として記述が少なくてシンプルで覚えやすい。
なので、プログラムを勉強したいなと思っている初心者には理解しやすいという利点があります。
AI(人工知能)や機械学習に強い
もう一つはPythonがAI(人工知能)や機械学習に強いという点があります。
例えばAIのシステムを作りたいと思った場合、1からプログラムを書くわけではなくてライブラリというある種の便利機能を使ってレゴのように部品を組み合わせて処理を書きます。
その場合に、そのライブラリというレゴの部品がPythonには豊富にあって、特にAIや機械学習といった流行りの分野のライブラリに強いという特徴があります。
実際にAI分野や機械学習のシステムを作る場合は、Pythonを知らないと何も出来ません。
そのくらいAI分野や機械学習の分野で、Pythonという言語は強みがあります。
なのでPythonの特徴をおさらいすると以下のようになります。
- プログラミング言語自体覚えやすい
- 覚えたプログラミング言語を活かせる機会が山のようにある
これだけでも、Pythonを勉強するのに十分な理由がありますね。
Pythonが使われているサービス
では具体的に、Pythonがどういったサービスで使われているかを見てみましょう。
YouTube
YouTubeを知らない方はいないと思いますが、YouTubeのプログラミング言語としてPythonが使用されています。
YouTubeでのPythonは主にバックエンド(Webサーバー側で動作するプログラム)で活用されており、例えばユーザが動画をアップロードした際の動画処理やデータの読み込みなどに使用されています。
YouTubeは1日に現代から石器時代くらいの時間の動画がアップロードされていると言われています。
その莫大な動画処理をこのPythonがこなしているので、大容量の処理にも強いということが分かると思います。
Googleアプリ
YouTubeもGoogleのシステムですが、それ以外にもGoogleでは例えばGmailやGoogle Mapsのバックエンドの処理でPythonが利用されています。
インスタグラム
インスタグラムも説明不要だと思いますが、圧倒的なユーザー数を誇る写真共有のSNSサイトであるインスタもPythonが使われています。
具体的には、インスタはPythonのDjangoというフレームワークを使って構築されています。
インスタグラムを利用している膨大なユーザー数の写真や動画処理に対応できている点からも、Pythonフレームワークの処理性能の高さがうかがえます。
Dropbox
DropboxもPythonを使っている有名なシステムです。
Dropboxはオンラインストレージサービスで、インターネットが繋がっていればどこからでも自分のファイルにアクセス可能なシステムです。
また有名な話ですが、Dropboxの全システムの93万行のコード全てがPythonで書かれています。
あれだけのシステムがたった93万行のコードで動いているというのがすごいと思いますし、Pythonの汎用性と動作の高速性が実証されています。
高校の授業でPythonを習う
そして今年の2022年から高校の授業で「情報I」という科目が必須化されます。
そして2025年からは大学入学共通テストの科目に「情報」が追加されます。
つまり2022年以降、高校生は全員授業でプログラミングを習うことになりますし、2025年からは国立大学の入学試験の科目としてプログラミングが必要となります。
そして文部科学省のサイトには「情報I」に関する教員研修用教材が公開されています。
このホームページにある第3章「コンピュータとプログラミング」を見てみると、プログラムの具体例が記載されていますが、プログラミング言語は全てPythonで書かれています。
そのためか、高校の「情報I」用にPythonの教科書が出版されていて、既にこの教科書で授業をしている高校もあります。
と言うことは、高校の数学で「三角関数」や「微分積分」を習う感じで「Python」を習う時代が来たってことですね。
というか、個人的にこのPythonの教科書めっちゃ欲しいです
Pythonを使ってみてのデメリット
上記がPythonを使う上でのメリットですが、当然デメリットもあります。
以下は筆者がPythonを使ってみて感じるデメリットを挙げてみたいと思います。
処理が遅い
Pythonを使って筆者が一番感じるデメリットはこれです。
とにかく処理が遅い。
というのも、PythonはC言語やJavaと違ってコンパイルがありません。
いわゆる「インタプリタ型言語」です。
プログラムの実行時に、ソース・プログラムを逐次解釈し、実行可能形式に変換しながら処理を進める形式の言語処理系。「Interpret」は「(プログラムを機械語に)翻訳する」という意味。
「Insider’s Computer Dictionary」より「インタープリタ型言語」
インタプリタ言語は、構文解釈とプログラム実行を同時に行うので、コンパイルする言語に比べて実行速度が落ちるという欠点があります。
今後、Pythonのバージョンが上がれば改善されていくのでしょうが、インタプリタ型であればある程度の速度遅延は仕方がないと言えます。
インデントが分かりにくい
プログラム言語には、それぞれ処理の範囲を示す記号があります。
例えば、Java言語やC言語だと処理のかたまりをカッコ「{ }」で括ります。
Javaでfor文を書くと以下のような記述になります。(ちなみにC言語でもほぼ同じ記述です)
for(int i = 0; i < 10; i++){
System.out.println("for文です:"+i);
}
ですので、繰り返しを実行する場合は「{ }」で囲まれた範囲を実行しますので、プログラムを書く上で非常に分かりやすい。
ですが、Pythonは処理の範囲をカッコではなくインデントで処理の範囲を指定します。
for i in range(10):
print("for文です:"+str(i))
ですので、どこまでが処理の範囲かが分かりにくいです。
まあ、Javaだろうが結局インデントするんだし、結局は慣れの問題じゃないのかな
確かに慣れの問題もあると思いますが、JavaやC言語で育ってきたプログラマーからすると、このインデントでの範囲指定の違和感は、慣れるのに時間がかかったりします。
まとめ
以上が、プログラミング言語のPythonについての特徴とメリット・デメリットです。
次回からは、実際にPythonを勉強するための環境の作成方法についてや、Pythonの文法や具体的なプログラミングの書き方などをお伝えしていきたいと思います。