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)