見出し画像

小学生でも分かる!Pythonプログラミング - binary / Compiler / Interpreter

← preview

next →


binary

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 (中央処理装置) 〕

CPU
は大量に流れてくる電気信号を処理して命令を実行します。

0」とは「電気信号が流れていない状態」
1」とは「電気信号が流れている状態」です。

スイッチのON/OFFのようなものですね。

CPUが「0」「1」という数字を
概念として理解しているわけではありません。

ただの電気信号です。

余談ですが...
最近「半導体が不足していてPCや車などの機械の値段が上がっている」
なんていう話があります。

半導体」は、金属のように電気を通す「 導体 」と 
ゴムのように電気を通さない「 絶縁体 」の中間の性質を持つ物質です。

電気信号を通す/通さない 
に一役買っている物質ということ。
つまり CPU にとって重要なモノなのです。不足は困りますねえ。


bin( ) / 0b...

Pythonには、打ち込んだ数値
バイナリー(2進数)に変換するコマンドがあります。

それが「 bin( ) 」です。

「 bin 」は「 binary 」の略で、発音は「ビン」。
覚えやすいですね。


>> bin関数 / 0b...

この bin( ) の使い方は簡単。
( ) 内に任意の数字を入れるだけです。

実際にやってみましょう。

print( bin(1234) )

「 bin(1234) 」だけではコンソール出力はできません。
ちゃんと print関数 を使ってやりましょう。

「 0b 」以降が2進数です。
1234」は2進数で「10011010010」と表せるわけですね。

実はこれ、逆もできます。
「 print( 0b2進数 ) 」 の形で記述すると、2進数を10進数に変換できます。

print(0b10010100101001000101010010)

できました。

「 0b 」って何なの?
"テキスト"も2進数にできないの?

と思うかもしれませんが、
もう少し別の知識が必要になるので今回の記事では説明しません。


Human ⇄ Compiler / Interpreter ⇄ CPU

brain.

「テストの平均点と標準偏差を算出して。」
「この四角形を赤で塗りつぶして。」
「タイマーがゼロになったらラッパの音で知らせて。」

こんな命令がCPUに理解できるわけありません。

しかし実際の生活ではこれらの命令は
機械によっていとも容易く実行されています。


なぜ言葉が分からないCPUがこんな命令を実行できるのか?
それは人とCPUの間に「 通訳者 」がいるからに他なりません。

 Compiler / Interpreter (コンパイラー / インタープリター) 〕

>> Compiler = 編集者
>> Interpreter = 通訳者 , 解説者

人の命令をCPU語(バイナリ)に変換して
命令を実行させるには2つのやり方があります。

❶ 人の書いた命令 を 全て 翻訳してからまとめてCPUに実行させる
❷ 人の書いた命令 を 1行ずつ 翻訳してCPUに実行させる

❶の方式のプログラミング言語を「 コンパイラ型言語 
❷の方式のプログラミング言語を「 インタプリタ型言語 」と言います。
※「インタプリタ(型)言語」を「スクリプト言語 」と呼ぶ事も。

▼ コンパイラ方式 / インタプリタ方式 のイメージ

コンパイラ = 全て翻訳して実行 / インタプリタ = 1行ずつ翻訳して実行


〔 Compiler ( コンパイラ) 〕

● 主なコンパイル型言語 

・C/C++ 
( シー言語 / シープラスプラス , シープラプラ , シープラ )
・C# 
( シーシャープ )
・Go 
( ゴー )
・Java 
( ジャヴァ )

<< メリット >>
・プログラムの実行速度
高速
・大規模な開発
制御システムOS開発に向いている

<< デメリット >>
・コンパイルに手間と時間がかかる
・プログラムの修正(デバッグ)がしにくい
・難しい。


〔 Interpreter ( インタプリタ ) 〕

● 主なインタプリタ型言語

・Ruby 
( ルビー )
・Python 
( パイソン )
・JavaScript 
( ジャヴァ スクリプト )
・PHP 
( ピー エイチ ピー )

<< メリット >>
・プログラムをすぐに実行できる
・プログラムのエラーに気付きやすい(デバッグしやすい)
・Webやアプリケーションなどの開発に向いている

<< デメリット >>
・コンパイラ型言語と比べて実行速度が遅い

我々が使っている機械やソフトはこういうプログラミング言語で動いている。

今勉強しているPythonは、インタプリタ言語です。
エラー箇所がわかりやすく、記述方法もかなりシンプルです。

勉強やコーディング/デバッグにかける時間が少なくて済むので、
その分どんなプログラムにするかを考える時間が増えます。

Pythonなどのインタプリタ言語は
人に優しいプログラミング言語」と言えます。

「人に優しい」という事は、裏を返せばCPUには
それなりの負荷がかかっているという事。

CPUの処理性能がどんどん上がっている今だからこそ
一般人のPCでもインタプリタ言語を扱えるようになったのです。

技術の進歩に感謝。

次の記事へ。

いいなと思ったら応援しよう!