「Pythonはやめとけ!」という話は聞いたことありますか?そんなことを言われると
- これからPython勉強しようと思っているのに、そんなこと言われたら勉強していいかわからないよ。
- PythonにするかRにするか悩んでたけど、Rの方がいいのかな?
と、気になりますよね。今回は時々耳にする、この「Pythonはやめとけ」の真相について解説していきます。
今回はデータサイエンスのためにPythonを学習しようとされている方や、Pythonを勉強しようかRを勉強しようか悩まれている方、Pythonなどの言語をこれから習得すべきかまだ悩んでいる方を対象に「Pythonやめとけ」が事実なのかを説明していきます。
- Pythonの良い点、悪い点がわかります
- 「Pythonはやめとけ」とはどういうことなのかがわかります
- データサイエンス目的でPythonを勉強すべきかしないべきかがわかります
Pythonの良い点、悪い点
「Pythonはやめとけ」と言われることもあるようですが、「Pythonは扱いやすくてよい言語だ」ともいわれます。では良い点、悪い点はどこにあるのでしょうか。一度確認してみましょう。
- 読みやすい
- コンパイルが不要
- ライブラリが充実
- 実行速度の遅さ
- 記述の制約
メリット:読みやすい
Pythonはコードが短くシンプルな言語で、初心者でも比較的容易に読めます。インデントや改行などでコードの構造を表現するため、他の言語よりも読みやすい特徴があります。
また、次の項目コンパイルともかかわってきますが、命令を直接入力しても実行可能なため、最初に決まった文字を入力してカッコでくくって・・・という決まった手順を踏まなくても直感的にプログラムを作成したり、読んだりすることが可能です。
少し具体的に見てみましょう。以下はC#で「Hello, World!」と表示するためのプログラムです。
internal class Program
{
private static void Main(string[] args)
{
Console.WriteLine("Hello, World!");
}
}
これをPythonで書くと
print("Hello, World!")
と非常にすっきりします。もちろんこのような大きな差が必ず出るわけではありませんが、命令文だけを書けばよいPythonは読みやすくわかりやすいことがわかります。
メリット:コンパイルが不要
Pythonはインタプリタ言語なので、コンパイルする必要がありません。コンパイルとは「プログラムを実行する前に、コードを計算機が理解できる形に変換する作業」のことです。
コンパイルが不要なため、コーディング直後にプログラムを実行できるます。
特にデータサイエンスなどの分野においては「少し計算してみる」とか、「一部分だけ動かしてみる」ことが可能なので、エラー箇所がわかりやすいうえに「問題なく動くプログラムを作成して、少しずつ変えて作りたいプログラムをつくる」という初学者でも比較的扱いやすい言語です。
以下のキャプチャを見てください。これはPythonで天気の情報を読み込んで処理をしているところです。
[1]で読み込んだ後、「読み込んだデータはどんな形かな?」と[2]で「data.head(3)」と入力し、「Shift+Enter」を押すだけですぐに下に結果が返ってきます。
その後、「統計量がみたいな」と思い、[3]で「data.describe()」と入力し「Shift+Enter」を押すだけですぐに下に結果が返ってきます。
このように、毎回コンパイルをする必要がないので、実行後にすぐに結果を確認しつつ次のプログラムを打てることは、特にデータサイエンスや機械学習においては非常にメリットが出てきます。
メリット:ライブラリが充実
Pythonは多くの分野で利用されている言語なので、様々なライブラリが提供されています。ライブラリとは「プログラムの汎用的な機能やテンプレートをまとめたもの」です。ライブラリを利用することで、一からプログラミングする必要がなくなり、開発の効率化や簡略化ができます。
特にデータサイエンスの分野では、データサイエンスに特化したライブラリが多くあり、数値計算や行列計算など、データサイエンスで使用したい機能が簡単に追加できるのは大きな魅力です。
また、PyTorch、TensorFlow、KerasなどAI向けライブラリでは簡単にAIを実装できるようになっており、プログラムの作成時間を大幅に短縮し、本来行いたい分析に力を注ぐことが可能です。
デメリット:実行速度の遅さ
Pythonは前述の通りインタプリタ言語と呼ばれる種類の言語です。一方、コンパイラ言語と呼ばれる種類の言語は、プログラムを実行する前に、コードをすべて計算機に変換しておく言語のことです。インタプリタ言語は、実行するたびにコードを変換する必要があるため、コンパイラ言語に比べて実行速度が遅いという特徴があります。
この速度の差の例として、ある条件下の実験ではC言語はPythonの45倍早いようです。
[参考元URL:How Slow is Python Compared to C]
とは言え、以下の記事で紹介されている命令を、速度計測のためにすべて並べて実行すると「0.10289263725280762」秒という数値が帰ってきます。データサイエンスを行う上で、この処理の遅さは気になることはありません。あくまでも一部のアプリケーションを作成した場合に、遅く感じることがある、という程度です。
デメリット:記述の制約
Pythonはプログラムの中で使う変数や値の種類(型)を実行するときに決めているため、型のエラーが発生する可能性が高くなります。
例えば以下のような場合。
A = "Hello, World!"
B = 1
C = A + B
print(C)
PythonではAやB、Cなどの変数の中に、「Hello, World!」という文字や「1」という数字を、特に宣言しなくても代入することができます。したがって、文字や数値を代入した段階ではエラーは発生しませんが、「C = A + B」のような計算を行った際に初めてエラーが発生します。
今回は3行目で文字と数値を足した段階で、初めて「文字は文字としか結合できません」というエラーが出てきました。
A = "Hello, "
B = "World!"
C = A + B
print(C)
文字であるか数値であるか明示する必要がないため、このようにそのまま数値を文字に置き換えても問題なく計算できます。
また、読みやすさのメリットであるインデント(字下げ)ですが、正しく行わないとプログラムの構造が崩れてエラーになります。そのため、Pythonは自由度が低いと言われています。
こちらも例を示しておきましょう。
A = [1, 3, 5, 7, 9]
B = [2, 4, 6, 8, 10]
for i in A:
for j in B:
print(i * j)
こちらはAとBに入っている数をそれぞれかけ合わせて表示するプログラムです。この状態で実行すると「インデントがおかしい」とエラーが出ます。
A = [1, 3, 5, 7, 9]
B = [2, 4, 6, 8, 10]
for i in A:
for j in B:
print(i * j)
正解はこの状態です。今回は、あえてエラーが出るようにしましたが、エラーが出ずに意図しない動作をする場合もありますので注意が必要です。
結論として、Pythonはどうなのか?
ここまで見てきたように、Pythonには良い点、悪い点があります。では、結論としてPythonはどうなのでしょうか。
データサイエンス用途として
上のデメリットを見ると
- 実行速度の遅さ
- 記述の制約
が上げられそうです。これは、データサイエンスで使用することを前提として考えた場合、メリットを考えると全く問題にならない内容になります。それ以上にライブラリの充実や、コンパイル不要なのはデータサイエンスを行うにあたって非常に便利な言語となっています。
Rの方がよいの?
以上のように、「Pythonやめとけ」とはデータサイエンスにおいて、「PythonよりRを選択すべきだということを指しているわけではない」とわかったと思います。Pythonにはメリット、デメリットがありますが、その中でRよりPythonを選択すべき点としては、
- 汎用性が高い:Pythonはデータ分析だけでなく、Web開発や自動化など、幅広い用途で利用できる汎用的な言語です。Rはデータ分析に特化した言語で、他の分野での利用はあまり見られません。Pythonはデータ分析以外のスキルも身につけることができます。
- ライブラリが豊富:Pythonはデータサイエンスや機械学習の分野で人気が高く、多くのライブラリが提供されています。Rもデータ分析や機械学習のライブラリはありますが、Pythonほど充実していません。
- 学習しやすい:Pythonは文法がシンプルで読みやすい言語で、初心者にも学びやすいとされています。Rは統計学の知識が必要な場合が多く、初心者には難しいと感じるかもしれません。
という点が挙げられます。
「Pythonやめとけ?」
ここまで見てきてわかった通り、「Pythonやめとけ」となるのはPythonのプログラマーに対しては「ほかの言語をやったほうがいいんじゃないか?」という意味で一部あてはまる可能性がありそうですが、データサイエンス目的でPythonを学習する場合にはあてはまりません。
また、データサイエンスが広まったことで今までプログラマーでない方が新しく言語を学ぶことも多いと思いますが、ある程度キャリアのある方がプログラマーと肩を並べるレベルまでPythonをマスターしようとするのは考慮が必要な場合もあります。
しかし、データサイエンス向けにPythonを学ぶのでしたらどの年齢でも、どのレベルでも始めやすく、ある程度理解しやすい、またプログラムを長々と書かなくても小さい単位でインタプリタ方式で実行できるPythonはおすすめの言語です。
これからPythonの学習を始めるには?
そんなPythonですが、これから学習していこうと思っている方は以下の記事を参考にしてください。Pythonの学習に関するロードマップが記されています。
また、こちらのシリーズではPythonについて基礎から学ぶことができるように順を追って解説されています。学習の参考にしてください。
『Tech Teacher』3つの魅力
魅力1. オーダーメイドのカリキュラム
『Tech Teacher』では、決められたカリキュラムがなくオーダーメイドでカリキュラムを組んでいます。「質問だけしたい」「相談相手が欲しい」等のご要望も実現できます。
魅力2. 担当教師によるマンツーマン指導
Tech Teacherでは、完全マンツーマン指導で目標達成までサポートします。
東京大学を始めとする難関大学の理系学生・院生・博士の教師がが1対1で、丁寧に指導しています。
そのため、理解できない箇所は何度も分かるまで説明を受けることができます。
魅力3. 3,960円/30分で必要な分だけ受講
Tech Teacherでは、授業を受けた分だけ後払いの「従量課金制」を採用しているので、必要な分だけ授業を受講することができます。また、初期費用は入会金22,000円のみです。一般的なプログラミングスクールとは異なり、多額な初期費用がかからないため、気軽に学習を始めることができます。
まとめ
・魅力1. 担当教師によるマンツーマン指導
・魅力2. オーダーメイドのカリキュラム
・魅力3. 3,960円/30分で必要な分だけ受講
質問のみのお問い合わせも受け付けております。
まとめ
今回は「Pythonやめとけ」という声について、データサイエンスの観点から見てきました。結論でもあるように、データサイエンスで使う上でPythonは最良の選択です。安心して学習を進めてください。