COLUMN
コラム
2021年11月16日
#バイナリーコード – 知ったかテックワード!君もIT博士
カテゴリー:知ったかテックワード
タグ:システム開発, プログラミング
バイナリーコード(Binary Code)は、2進数で表したプログラムの実行形式のこと。
現代の主なデジタルコンピュータは、0(ゼロ)と1(イチ)を組み合わせた2進数を基本にして動いている。2進数の0と1が、スイッチのオフとオンに対応しているんだ。そのため、コンピュータのプログラムは最終的に2進数に変換されて実行される。
バイナリーコードは、この2進数に変換したプログラムコードのこと。これをコンピュータが読み込んで、プログラムとして実行する。オブジェクトコードと呼ぶ場合もある。
プログラミングで利用するコードには、次のような種類がある。
- ソースコード:プログラミング言語を用いて人間が記述するコード
- 中間コード:ソースコードを変換して、仮想マシンで実行するためのコード
- バイナリーコード:実行できるようソースコードを2進数に変換したコード
プログラミング言語には、プログラムを実行する方法によって次のような方式がある。
- コンパイラ方式
- インタープリター方式
- 中間コード方式
コンパイラ方式は、人間が記述したプログラムのコード(ソースコード)を、コンパイラという変換プログラムで、バイナリーコードに変換して実行する。コンパイルに時間がかかるが、実行時はバイナリーコードを実行するため、高速に処理できるという特徴がある。C/C++は、コンパイラ方式のプログラミング言語になる。
インタープリター方式では、ソースコードを別のプログラムが逐次解釈しながら実行する。この解釈・実行プログラムをインタープリターと呼ぶんだ。解釈しながら実行するので、コンパイルが不要ですぐにプログラムを実行できる。途中で止めたり実行状況を確認することも簡単にできる。しかし、解釈する手間の分だけ処理速度が遅くなると言われている。BASICは、代表的なインタープリター方式のプログラミング言語だ。PythonやRuby・PHPの初期のバージョンは、インタープリター方式を採用していた。
中間コード方式は、ソースコードをバイナリコードではなく、仮想マシンのコードに変換する。そして、言語処理用の仮想マシンが中間コードを解釈しながら実行する。つまり、コンパイラ方式とインタープリター方式を組み合わせた方式なんだ。
中間コードは仮想マシンで容易に解釈・実行できるので、インタープリター方式より高速にプログラムを実行できる。また、仮想マシンを移植するだけで、新しいコンピュータ環境にも対応しやすい。これは、コンパイラを移植するよりも簡単にできると言われている。
中間コードに変換するタイミングは、いくつかの方式がある。プログラミング言語のJavaは事前に中間コードに変換して、それをJava仮想マシンで実行する。Ruby・Python・JavaScriptなどは、初回の実行時に中間コードに変換して、それを仮想マシンで実行している。
関連ページ
おまけのコント
カエル:バイナリーは「2つの」とか「2値の」といった意味だって。
ウサギ:それで、バイナリーコードが2進数のコードなんだね。
カエル:だから、ゼロとイチの2つで、何でも処理できるし通信もできる。
ウサギ:実は、ウサギもメッセージが送信できる。
カエル:そうなの?
ウサギ:白ウサギと黒ウサギが、ゼロとイチに対応している。
カエル:へーっ!
ウサギ:それを順に並べて、メッセージを表す。
カエル:いったいどんな通信をしているの?
ウサギ:まず挨拶から。「お元気ですか」「私は元気です」
カエル:それから?
ウサギ:「今日は手ごろな暖かさですね」
カエル:丁寧で上品なやり取り。
ウサギ:そして、「さようなら」
カエル:ボキャボラリが貧困すぎ。
ウサギ:それでは、次回もお楽しみに。
- カテゴリー
- タグ
- システム運用 (16)
- TypeScript (1)
- WebAssembly (2)
- ウォーターフォール開発 (2)
- 業務システム (28)
- CSS (2)
- GraphQL (1)
- プログラミング (31)
- スタートアップ (11)
- Nexaweb (1)
- BaaS (10)
- データベース (5)
- SPA (2)
- 基本用語 (26)
- Case study (5)
- Keyword (10)
- FaaS (1)
- システム開発 (69)
- スクラム (1)
- フロントエンド (38)
- AI (26)
- アジャイル開発 (18)
- Supabase (1)
- イノベーション (5)
- Database (2)
- 月額制 (1)
- PaaS (3)
- ACF (1)
- BookReview (3)
- サービス開発 (5)
- React (3)
- Firebase (1)
- クラウドサービス (12)
- low-code (2)
- バックエンド (8)
- ナレッジマネジメント (1)
- ChatGPT (1)
- Vue.js (2)
- Tailwind CSS (1)
- DBaas (2)
- プロジェクト管理 (13)
- セミナー (2)
- Web (21)
- 失敗事例 (2)
- Hexabase_health (1)
- 生成AI (7)
- 受託開発 (1)
- Kubernetes (3)
- WebComponents (1)
- 通知 (1)
- API (6)
- Next.js (1)
- フレームワーク (3)
- ローコード開発 (4)
- ノーコード開発 (1)
- JavaScript (2)
- Hexabase (12)
- LLM (3)
- 画像生成 (1)
- DX (34)