今回はAndroidアプリを作っている際にpythonが遅いという記事を発見したので、なぜ遅いのか調べたことについて書いていきたいと思います。
開発環境
- MacOS
- VSCode
- python3.7(anaconda)
初心者のためのPython入門
コンパイラ言語とは?インタプリタ・スクリプトとの違いやJITについても解説
プログラミング言語の種類
まずプログラミング言語には、スクリプト言語とコンパイラ言語、インタプリタ言語、LL言語などの種類があり、スクリプト言語とLL言語に関しては、明確な定義は無い
というのが結論でした。
コンパイラ言語とインタプリタ言語は相反する言語として考えられております。
コンパイラ言語
の代表例としましては、C/C++やC#、GO
などが挙げられます。
スクリプト言語
の代表例としましては、PythonやRuby、PHP
などが挙げられますね。
それぞれの言語の特徴
スクリプト言語とLL言語
比較的簡単に記述することができ、初心者が手を出しやすい言語であると言われています。
コンパイラ言語
ソースコード全部を一旦全て機械語に翻訳(コンパイル)して、その時に新しいファイル(実行ファイル)
を作り出します。そしてその実行ファイルを開くと実行結果がわかる
という流れになります。
-
メリット
・処理速度が速い -
デメリット
・短いソースコードであっても、毎回実行ファイルを作る必要が出てくる
ため面倒
・書き方が複雑であったりする場合が多いので、初心者には手を出しづらい。
・全コードを翻訳してから実行するため、どこでエラーが起きたのかわかりにくい
インタプリタ言語
ソースコードを一行ずつ翻訳する(コンパイル)
ため、実行ファイルなどを作る必要がなく、実行できる。
-
メリット
・簡単に記述することが可能。
・一行ずつ翻訳するため、翻訳できない場所がエラーだとわかるため、エラーの発見が容易
。
・簡単に実行することができ
、尚且つテキストエディタ内で処理を完結させることができる。 -
デメリット
・一行ずつ翻訳するということで、全部を一気に翻訳するコンパイラ言語よりは処理速度が低下する
。
実行のわかりやすい流れ
-
コンパイラ言語
└プログラムを実行 => 全ソースコードを一気に機械語に翻訳(コンパイル) => 実行ファイルを作成 => 実行
-
インタプリタ言語
└プログラムを実行 => 一行ずつ翻訳 => 一行ずつ実行
*コンパイラ言語はGoogle翻訳などに一気に翻訳してもらう
、インタプリタ言語は自分で一行ずつ翻訳していく
というイメージがわかりやすいのではないかと思います。