小学生でも分かる!Pythonプログラミング - binary / Compiler / Interpreter
← preview
next →
binary
──コンピューターは「0」と「1」の組み合わせしか理解できない。
こんな話を聞いた事がありませんか?
〔 binary (バイナリー) 〕
「0」と「1」の組み合わせの事を
「 2進数 」または「 binary(バイナリー) 」といいます。
私たちが使っている
「0,1,2,3,4,5,6,7,8,9,10,11,12...」のような数は「10進数」。
1つの桁が「0」〜「9」の
10個の数字で表現されているから「10進数」。
同じようにバイナリーは、1つの桁が「0」「1」の
2個の数字で表現されているから「2進数」なわけですね。
CPU
〔 CPU (中央処理装置) 〕
CPUは大量に流れてくる電気信号を処理して命令を実行します。
「0」とは「電気信号が流れていない状態」
「1」とは「電気信号が流れている状態」です。
スイッチのON/OFFのようなものですね。
CPUが「0」「1」という数字を
概念として理解しているわけではありません。
ただの電気信号です。
余談ですが...
最近「半導体が不足していてPCや車などの機械の値段が上がっている」
なんていう話があります。
「半導体」は、金属のように電気を通す「 導体 」と
ゴムのように電気を通さない「 絶縁体 」の中間の性質を持つ物質です。
電気信号を通す/通さない に一役買っている物質ということ。
つまり CPU にとって重要なモノなのです。不足は困りますねえ。
bin( ) / 0b...
Pythonには、打ち込んだ数値を
バイナリー(2進数)に変換するコマンドがあります。
それが「 bin( ) 」です。
「 bin 」は「 binary 」の略で、発音は「ビン」。
覚えやすいですね。
>> bin関数 / 0b...
この bin( ) の使い方は簡単。
( ) 内に任意の数字を入れるだけです。
実際にやってみましょう。
「 bin(1234) 」だけではコンソール出力はできません。
ちゃんと print関数 を使ってやりましょう。
「 0b 」以降が2進数です。
「1234」は2進数で「10011010010」と表せるわけですね。
実はこれ、逆もできます。
「 print( 0b2進数 ) 」 の形で記述すると、2進数を10進数に変換できます。
できました。
「 0b 」って何なの?
"テキスト"も2進数にできないの?
と思うかもしれませんが、
もう少し別の知識が必要になるので今回の記事では説明しません。
Human ⇄ Compiler / Interpreter ⇄ CPU
「テストの平均点と標準偏差を算出して。」
「この四角形を赤で塗りつぶして。」
「タイマーがゼロになったらラッパの音で知らせて。」
こんな命令がCPUに理解できるわけありません。
しかし実際の生活ではこれらの命令は
機械によっていとも容易く実行されています。
なぜ言葉が分からないCPUがこんな命令を実行できるのか?
それは人とCPUの間に「 通訳者 」がいるからに他なりません。
〔 Compiler / Interpreter (コンパイラー / インタープリター) 〕
>> Compiler = 編集者
>> Interpreter = 通訳者 , 解説者
人の命令をCPU語(バイナリ)に変換して
命令を実行させるには2つのやり方があります。
❶ 人の書いた命令 を 全て 翻訳してからまとめてCPUに実行させる
❷ 人の書いた命令 を 1行ずつ 翻訳してCPUに実行させる
❶の方式のプログラミング言語を「 コンパイラ型言語 」
❷の方式のプログラミング言語を「 インタプリタ型言語 」と言います。
※「インタプリタ(型)言語」を「スクリプト言語 」と呼ぶ事も。
▼ コンパイラ方式 / インタプリタ方式 のイメージ
〔 Compiler ( コンパイラ) 〕
● 主なコンパイル型言語
・C/C++ ( シー言語 / シープラスプラス , シープラプラ , シープラ )
・C# ( シーシャープ )
・Go ( ゴー )
・Java ( ジャヴァ )
<< メリット >>
・プログラムの実行速度が高速
・大規模な開発、制御システム、OS開発に向いている
<< デメリット >>
・コンパイルに手間と時間がかかる
・プログラムの修正(デバッグ)がしにくい
・難しい。
〔 Interpreter ( インタプリタ ) 〕
● 主なインタプリタ型言語
・Ruby ( ルビー )
・Python ( パイソン )
・JavaScript ( ジャヴァ スクリプト )
・PHP ( ピー エイチ ピー )
<< メリット >>
・プログラムをすぐに実行できる
・プログラムのエラーに気付きやすい(デバッグしやすい)
・Webやアプリケーションなどの開発に向いている
<< デメリット >>
・コンパイラ型言語と比べて実行速度が遅い
今勉強しているPythonは、インタプリタ言語です。
エラー箇所がわかりやすく、記述方法もかなりシンプルです。
勉強やコーディング/デバッグにかける時間が少なくて済むので、
その分どんなプログラムにするかを考える時間が増えます。
Pythonなどのインタプリタ言語は
「人に優しいプログラミング言語」と言えます。
「人に優しい」という事は、裏を返せばCPUには
それなりの負荷がかかっているという事。
CPUの処理性能がどんどん上がっている今だからこそ
一般人のPCでもインタプリタ言語を扱えるようになったのです。
技術の進歩に感謝。
次の記事へ。