これはなに?
プログラミング言語のひとつであるpythonの紹介記事です.
これからpythonの環境構築や各種ライブラリの使い方や数値計算の説明をしていくにあたって,言語自体の概要説明は必須と感じ作成しました.
また,pythonがいかに簡潔に書けるかということを示すために,個人的に書くことのできる C言語/Fortran90との比較について,簡単ですがコード付きで並べてみました.
説明不要で早速インストールされたい方はこちらの記事をご参照ください.
pythonとは
2022年1月1日現在,pythonは最も勢いのあるプログラミング言語と言っても過言ではありません.
TIOBE index により「各種検索エンジンのプログラミング言語に関するクエリの結果」から計算されたとするプログラミング言語の人気ランキングにおいて,2021/12では1位:python,2位:C言語,3位:Java となっています.
wikipediaのpythonの記事を引用すると,
Python(パイソン)はインタープリタ型の高水準汎用プログラミング言語である。グイド・ヴァン・ロッサムにより創り出され、1991年に最初にリリースされたPythonの設計哲学は、有意なホワイトスペース(オフサイドルール)の顕著な使用によってコードの可読性を重視している。その言語構成とオブジェクト指向のアプローチは、プログラマが小規模なプロジェクトから大規模なプロジェクトまで、明確で論理的なコードを書くのを支援することを目的としている。
Pythonは動的に型付けされていて、ガベージコレクションされている。構造化(特に手続き型)、オブジェクト指向、関数型プログラミングを含む複数のプログラミングパラダイムをサポートしている。Pythonは、その包括的な標準ライブラリのため、しばしば「バッテリーを含む」言語と表現される。
(中略)
Pythonには、読みやすく、それでいて効率もよいコードをなるべく簡単に書けるようにするという思想が浸透しており、Pythonコミュニティでも単純で簡潔なコードをよしとする傾向が強い。
Pythonの本体は、ユーザがいつも必要とする最小限の機能のみを提供する。基本機能以外の専門機能や拡張プログラムはインターネット上にライブラリとして提供されており、別途ダウンロードして保存し、必要なツールはこのツールキットからその都度呼び出して使用する。
またPythonでは、Perlの「やり方は一つじゃない」という哲学とは逆に、ある動作をさせる方法は、基本的に1通りしかないように作られている。そのためPythonのプログラムは、誰が書いてもだいたいどれも同じようなコードになり、作成者以外が見ても動作を把握しやすい。また、Pythonではプログラムの文書化(ソフトウェアドキュメンテーション)が重視されており、言語の基本機能の一部となっている。
機械学習やAI開発、自動化ツールの作成やスクレイピングも可能な言語である。
引用元:https://ja.wikipedia.org/wiki/Python
とのことで,近年,pythonが人気である理由として,
- 読み書きが簡単
- 書き方が統一されるので可読性が高い
- ライブラリ(特にサードパーティパッケージ)が豊富
- AI/機械学習/データサイエンスに関するライブラリが豊富
- webアプリ開発が容易
であることが挙げられます(wikipediaの記事が有能すぎてそこまで書くことがありません).
他のプログラミング言語との比較(主観的:python / C言語 / Fortran90)
pythonはどのくらい簡単に書けるかということを示すために,個人的に知見のある3つの言語:python / C言語 / Fortran90 それぞれで比較してみます.例えば,簡単に,
- hello world を出力
- 文字式に代入して足し算
- 1から9まで連続する一次元配列を生成し,総和を取る(答えは45)
という処理について,それぞれ書いてみます.
Python:
- スクリプト言語なのでコンパイルなしで,
py main.py
にて実行 - コメント行は先頭
#
- 型宣言不要
- コンソール出力で変数を用いたい場合の書き方は3通りあるが,f-stringと呼ばれる
f"コメント{変数}"
という風に簡単に書くことが可能 - リスト内包表記を用いて,for や if の処理が1行で書くことができる
# 1. hello world を出力
print("hello world.")
# 2. 文字式に代入して足し算
a, b = 1, 2.3
print(f"a + b = {a+b}")
# 3. 1から9まで連続する一次元配列を生成し,総和を取る(答えは45)
arr = [v for v in range(10)]
print(f"sumation 1~9 = {sum(arr)}")
C言語:
- コンパイル言語なのでコンパイルが必要で,色んなコマンド無視して一番シンプルなコンパイルだと
gcc main.c
にてコンパイルして作られるa.exe
を実行 - コメント行は先頭
//
- 工学部の1,2年目で必修のイメージ(懐かしいです)
- "おまじない" の記述が多い
- コンソール出力させるためだけでもライブラリ
stdio.h
のインクルードが必要 - 型宣言が必要
- 文末にセミコロンが必要
- 条件式など何かにつけて括弧
{
,}
をつけなければならない
#include <stdio.h>
int main(void)
{
// 1. hello world を出力
printf("hello world.\n");
// 2. 文字式に代入して足し算
int a = 1;
double b = 2.3;
printf("a + b = %f\n", (double)a + b);
// 3. 1から9まで連続する一次元配列を生成し,総和を取る(答えは45)
int arr[9];
int sum_arr = 0;
for (int i = 0; i < 10; i++)
{
arr[i] = i;
sum_arr += arr[i];
}
printf("sumation 1~9 = %d\n", sum_arr);
return 0;
}
Fortran 90/95:
- コンパイル言語なのでコンパイルが必要で,色んなコマンド無視して一番シンプルなコンパイルだと
gfortran main.f90
にてコンパイルして作られるa.exe
を実行 - コメント行は先頭
!
- スパコン系やソースコードが "秘伝のタレ" の研究室で使われているイメージ(使いました)
- FORTRAN 77 や Fortran 90/95 など世代によって言語仕様は改善されているが,上記秘伝のタレコードはちゃんぽん状態
- "暗黙の型宣言" なるものがあり型宣言が必須ではないが,プログラムの最初に
implicit none
と記載し暗黙の型宣言を封じているものがほとんどだと思う.この場合は型宣言が必要. - 標準出力の書き方が独特で慣れないと違和感がある
program main
implicit none
integer :: a=1, i=0, sum=0
real*8 :: b=2.3
integer, dimension(10) :: arr=0
! 1. hello world を出力
write (*,*) "hello world."
! 2. 文字式に代入して足し算
write(*, "('a + b = 'f5.3)") a+b
! 3. 1から9まで連続する一次元配列を生成し,総和を取る(答えは45)
do i=1,9
arr(i) = i
sum = sum + arr(i)
enddo
write(*, "('sumation 1~9 = 'I2)") sum
end program main
ということで,上記を見ていただくとpythonが圧倒的に記述が簡単です.
以上,主観が混じっていますが,プログラミング言語のpythonの紹介を終わります.
Python のおすすめの学習方法
プログラミングを最短で習得する,少なくても自分の意志で使えるようになる方法について,いくつかプログラミング言語を触ってきた筆者としては何の言語においても,以下2点が重要だと思います.
- 元々自分が他の言語で作っていた処理を違う言語で書き直す・・・・英語を勉強するときも,脳を生まれたばかりのまっさらな状態から勉強するわけではなく,日本語を通したり対比して,学習済みの言語野を用いて勉強するのと似ています
- 言語自体を網羅的に勉強するのではなく,やりたい事を先に考え,それを達成するために色々と調べながら実装する・・・・例えば,留学で語学力が上達するのは,その国の言葉を使ってコミュニケーションを取ることが強制されるためであり,使うことに対するモチベーションが一番大事です
独学で行うには,やはり2点目の「やりたい事ドリブン学習」が効果的で,例えば次の書籍は,Python を流行らせている AI/データ分析/機械学習/深層学習について実装することに主眼を置き説明されているので,実際に手を動かしながら学んでいける本だと思います(筆者も最初にこちらの書籍で遊びながら学びました).
コメント