1.Pythonに触れてみよう
Python はこれまでの言語に比べて「書きやすい」,「読みやすい」,「ブレの小さい」 言語です. 世界中で大きな広がりを見せている 言語の一つで,大きなユーザーとしては,NASAやGoogle 社,サービスとしては, 筆者も普段お世話になっている FacebookやDropboxが挙げられます.多くの機能が世界中のプログラマーによって日々開発されており,その便利さは増すばかりです.Pythonを覚えることでこれまでよりも見える世界がより一層広がることでしょう.ここでは,これまでの言語とPythonの違いについて紹介します.
1-1.コンパイル言語との違い
このテキストを見ている学生の中にはすでに授業でプログラミング言語に触れたことのある方がいるかもしれません.しかし,その多くはC言語やFortranといったコンパイル言語である可能性が高いと思います.その理由は,授業を行う教員がコンパイル言語の世代であり,その言語で仕事を片付けられてしまうから等の理由が挙げられます.しかし,これらの言語はこれからプログラミングスキルを習得しようとする学生にはあまりにも難解で無駄なことが多すぎるのです.例として,お決まりの”Hello World!”を比較します.
C言語
- #include <studio.h>
- void main()
- {
- pirntf("Hello World!");
- return 0;}
- /*結構長い*/
Python
- print("Hello World!")
どちらも"Hello World!"を画面上に出力してくれるプログラムコードですが,どちらがPythonか直ぐに解るかと思います.正解は左がC言語で右側がPythonで書かれたコードになります.C言語では,プログラムの冒頭に#include <studio.h>というライブラリを使用する宣言やvoid main()で実行プログラム全体を囲む必要があるなど「当たり前」なことを必ず書く必要があります.一方,Pythonでは「当たり前」が省略され,コードが非常にスッキリしています.ユーザーとしては書きやすい上にコードとして洗練されているため,誰が書いても似たようなコードになり,他の人が見ても何をしているかが解るという利点があります.このようにシンプルで書きやすく、見やすい(可読性が高い)コードを「Pythonicなコード」といいます.
次に,1回目,2回目...n回目と繰り返し表示を行うプログラムを比較します.今回のnは10とします.
C言語:n回繰り返し
- #include <studio.h>
- int main(void)
- {
- int i;
- for (i=0;i <10;i++) {
- }
- return 0;
- ]
Python:n回繰り返し
- for i in range(0,10):
- print(i, ”回目”)
-
先程も説明したように#include <studio.h>やvoid main( )は必要ありません.また,繰り返しを宣言するfor文の後に字下げ(インデント)が必要な点は変わりません.しかし,C言語では繰り返しの内容を{ }で囲む必要がある一方,Pythonでは字下げだけで繰り返し内容を表現できています.これを「ネスト」と呼び,英語では「巣」を意味します.インデントがある場所はfor文の巣として繰り返されます.そして,Pythonには無駄がありません.#include <studio.h>やvoid main( )が無いだけではなく,for文の中身も{ }でなくインデントだけで表現されているので非常にスッキリしています.
更に細かく見てみます.C言語の場合,int iという文で変数iの型が整数であることを明示しています.一方でPythonはiの型が整数なのか小数なのかについて明示的な宣言はありません.ここも,C言語とPythonの大きな違いです.C言語のfor (i=0;i <10;i++)もPythonのrange(0,10)も(1,2,3,…9)という整数の繰り返しを意味しています.そうすると,for i in range(0,10)というコードがあるときにiが整数だということわざわざ宣言せずにわかるわけです.Pythonではそうした無駄もありません.仮に小数点を表すfloat型が繰り返しの変数に当てられた場合にはエラーメッセージが返されます.このように変数の型を自動で決めてくれる仕組みを「動的型付け」と言います.一方で,C言語のように予め変数の型を指定する仕組みを「静的型付け」といいます.それぞれ一長一短ありますが,導入部ではあまり詳しく説明せず,後の章に譲ることとします
コラム1. 奥が深い括弧の使い方
集合を表現する時に使用する括弧は{ }なのはよく知られているかと思います.では,{1,2,3}と(1,2,3)の違いは分かるでしょうか?前者は{3,2,1}や{2,3,1}も同等の{1,2,3}として扱いますが,後者は(1,2,3)と(3,2,1)は別物として扱います.つまり,数字の順序を明確にする必要がある場合は
で表現される順序,単なる数字の集合として扱う場合は
で表現する使い分けがあります.
他にも,数式表現として以下のような括弧の使い方があります.
他にも,数式表現として以下のような括弧の使い方があります.
これは対(タプル)というものです.
これは区間と呼ばれるもので,
のように使います.
数式表現の詳細は
ISO80000-2
を見ると良いでしょう.括弧のみならず非常に勉強になります.