機械語への変換:オブジェクトコード解説
ITを学びたい
『目的プログラム』って、よく聞くんですけど、一体何のことなんですか?
IT専門家
良い質問ですね。目的プログラムとは、人が書いたプログラムをコンピューターが理解できる言葉に変換したものです。私たちが日本語で話しているのを、英語に翻訳するようなものだと考えてみてください。
ITを学びたい
なるほど。人が書いたプログラムをコンピューターがわかる言葉に翻訳するんですね。では、その翻訳されたものが目的プログラムということですか?
IT専門家
そうです。まさにその通りです。そして、人が書いたプログラムの元となるものを『もととなるプログラム』と呼び、コンピューターが理解できる言葉に変換されたものが『目的プログラム』です。この『目的プログラム』のことを『オブジェクトコード』ともいいます。
object codeとは。
コンピューターの言葉で書かれた指示のことを「機械語」と言いますが、「オブジェクトコード」とは、人間が書いたプログラムを機械語に翻訳したものです。元のプログラムは「ソースコード」と呼ばれ、人間にとって分かりやすい言葉で書かれていますが、コンピューターは直接理解できません。そのため、「コンパイラ」や「アセンブラ」といった翻訳ツールを使って、ソースコードをオブジェクトコードに変換する必要があります。オブジェクトコードは、コンピューターが直接実行できる形になっているため、「目的プログラム」や「ネイティブコード」などとも呼ばれます。
プログラムの翻訳
私たちが日々触れている携帯電話や卓上型計算機といった機器は、様々な応用処理を使って動いています。これらの応用処理は、命令を組み合わせた手順書のようなもの、つまり計画表のようなもので成り立っています。この計画表を作るために使われるのが、計画作成言語と呼ばれる特別な言葉です。しかし、計算機はこれらの計画作成言語を直接理解することはできません。計算機が理解できるのは、機械言語と呼ばれる言葉です。機械言語は、0と1の組み合わせだけで表現され、いわば計算機にとっての母国語のようなものです。
そのため、計画作成言語で書かれた計画表は、計算機が理解できる機械言語に翻訳する必要があります。この翻訳作業を担うのが、翻訳機のような役割を果たす特別な処理です。この翻訳機によって、計画作成言語で書かれた計画表は、機械語で書かれた実行計画書に変換されます。この実行計画書に相当するのが、目的符号と呼ばれるものです。目的符号は、計算機がそのまま実行できる形式になっています。
私たちが応用処理を意識せずに使えるのは、この目的符号のおかげです。例えば、絵を描く応用処理の場合を考えてみましょう。私たちは画面に線を描きたい時、画面上で指を動かすだけで線が表示されます。この時、裏側では、指の動きを感知する命令、線の太さや色を決定する命令、そして実際に画面に線を描く命令など、様々な命令が実行されています。これらの命令はすべて、目的符号として計算機に伝えられています。
このように、目的符号は、私たちが応用処理を快適に利用するための重要な役割を担っているのです。複雑な翻訳作業を自動で行うことで、私たちは計算機の仕組みを深く理解していなくても、様々な応用処理を簡単に使うことができます。まるで、外国語を知らなくても、自動翻訳機を使えば外国の人と会話ができるようなものです。目的符号は、まさに計算機と私たちの間を取り持つ、見えない翻訳機と言えるでしょう。
翻訳の仕組み
計算機に指示を出す言葉は、人間が使う言葉とは違います。そのため、人間が書いた指示を、計算機が理解できる言葉に変換する必要があります。この変換作業を担うのが、変換器や組み立て器と呼ばれる特別な道具です。
変換器は、文章全体を一度に計算機の言葉に変換します。まるで、長い手紙を一度に別の言葉に翻訳するような作業です。これに対し、組み立て器は、もっと細かい部品ごとに、計算機の言葉に変換します。一つ一つの単語や短い文章を翻訳するようなイメージです。
これらの道具は、人間が書いた指示を一つ一つ丁寧に読み解き、対応する計算機の言葉に変換していきます。例えば、「画面に文字を表示する」という指示があれば、それを計算機が理解できる言葉に変換します。この作業は、まるで熟練した翻訳家が、原文のニュアンスを正確に理解しながら、別の言葉で表現する作業に似ています。
変換作業はとても複雑で、高度な技術が使われています。たくさんの規則や例外を考慮しながら、正確に言葉を変換していく必要があります。まるで、複雑な法律文書を翻訳するような緻密さが必要です。しかし、私たちが普段計算機を使う時は、このような複雑な変換作業が行われていることを意識することはほとんどありません。まるで、外国語の映画を字幕で見ている時に、翻訳作業を意識しないのと同じです。
このように、変換器や組み立て器は、人間と計算機の間の言葉の壁を取り払い、私たちが計算機を簡単に使えるようにするための重要な役割を担っています。 これらの道具のおかげで、私たちは複雑な計算機の言葉を覚えることなく、様々な指示を計算機に与えることができるのです。
道具 | 変換方式 | 例え |
---|---|---|
変換器 | 文章全体を一度に変換 | 長い手紙を一度に翻訳 |
組み立て器 | 細かい部品ごとに翻訳 | 単語や短い文章を翻訳 |
オブジェクトコードとソースコード
計算機は、0と1の並びから成る機械語しか理解できません。そのため、私たち人間が計算機に命令を伝えるためには、この機械語を使って指示を出す必要があります。しかし、機械語は人間にとって非常に分かりにくいため、人間が理解しやすい言葉でプログラムを書けるように、様々な工夫がされてきました。これがプログラミング言語の始まりです。プログラミング言語を使って書かれたプログラムのことを、設計図に例えるなら原図のようなもので、ソースコードと呼びます。
ソースコードは人間には理解しやすいものの、計算機は直接理解することができません。そこで、ソースコードを計算機が理解できる機械語に変換する必要があります。この変換作業を行うのが、コンパイラやアセンブラと呼ばれる翻訳ソフトです。そして、翻訳ソフトによってソースコードが変換されたものが、オブジェクトコードです。オブジェクトコードは、完成品に例えることができます。
オブジェクトコードは、計算機が直接実行できる命令の集まりです。つまり、私たちが普段使っている様々なソフトウェアやアプリケーションは、このオブジェクトコードが実行されることで動作しています。ソースコードを変更した場合、変更点を反映させるためには、再度翻訳ソフトを使ってオブジェクトコードを作り直す必要があります。ちょうど、設計図を修正したら、その変更に基づいて製品を作り直すのと同じです。
このように、ソースコードとオブジェクトコードは、プログラムを作る上で欠かせない、表裏一体の関係にあります。ソースコードは人間がプログラムを作り、修正するためのもの、オブジェクトコードは計算機がプログラムを実行するためのもの、とそれぞれの役割を担っているのです。
項目 | 説明 |
---|---|
機械語 | 計算機が直接理解できる0と1の並びから成る言語 |
プログラミング言語 | 人間が理解しやすい言葉でプログラムを書くための言語 |
ソースコード | プログラミング言語で書かれたプログラム。設計図の原図に相当 |
コンパイラ/アセンブラ | ソースコードを機械語(オブジェクトコード)に変換する翻訳ソフト |
オブジェクトコード | コンパイラ/アセンブラによってソースコードから変換された、計算機が実行できる命令の集まり。完成品に相当 |
様々な呼び名
計算機で用いる言葉の中には、同じ意味を持つものがいくつか存在します。その例として、計算機が直接理解できる命令の列である「機械語の命令列」には、様々な呼び名があります。「目的プログラム」、「対象プログラム」、「機械語プログラム」、「実行可能プログラム」などと呼ばれることもあり、これらの言葉はどれも同じものを指しています。まるで別々のものを指すように聞こえますが、実際には同等の意味を持ちます。
これらの呼び名の違いは、主に歴史的な背景や、話の展開、あるいは特定の状況によって使い分けられています。例えば、「目的プログラム」という呼び名は、翻訳作業の最終的な成果物、つまり「目的」を強調した呼び方です。一方、「対象プログラム」という呼び名は、計算機という「対象」に読み込ませるプログラムであることを示しています。また、「機械語プログラム」という呼び名は、プログラムが「機械語」で記述されていることを明確に示しています。さらに、「実行可能プログラム」という呼び名は、プログラムが計算機上で「実行」できる状態にあることを強調しています。
これらの呼び名はどれも、人間が書いた命令を計算機が理解できる形に変換したものを指しています。この変換作業は「翻訳」と呼ばれ、特別な道具を用いて行われます。人間が書いた命令は、計算機にとってはただの文字の羅列に過ぎません。計算機がこれらの命令を理解し、実行するためには、命令を機械語に変換する必要があります。この機械語への変換作業こそが、「目的プログラム」や「対象プログラム」、「機械語プログラム」、「実行可能プログラム」といった様々な呼び名で呼ばれるものを作成する重要な作業なのです。
このように、同じ概念に複数の呼び名が存在することは、計算機の分野ではよくあることです。これらの様々な呼び名を理解することは、計算機についての理解を深める上で重要です。それぞれの呼び名の背景や意味合いを知ることで、より正確に計算機の仕組みを理解し、専門的な文献を読む際にも混乱を避けることができます。
呼び名 | 意味合い |
---|---|
目的プログラム | 翻訳作業の最終的な成果物であることを強調 |
対象プログラム | 計算機という対象に読み込ませるプログラムであることを示す |
機械語プログラム | プログラムが機械語で記述されていることを明確に示す |
実行可能プログラム | プログラムが計算機上で実行できる状態にあることを強調 |
まとめ
私たちが日々利用する携帯電話のアプリやパソコンのソフト、それらはどのように動いているのでしょうか?実は、これらのアプリやソフトを動かすための重要な役割を担っているのが「目的プログラム」です。目的プログラムとは、人間が書いたプログラムをコンピューターが理解できる言葉に変換したものです。
人間がプログラムを書く際には、プログラミング言語と呼ばれる、人間にとって分かりやすい言葉を用います。しかし、コンピューターはこれらの言葉を直接理解することはできません。そのため、プログラミング言語で書かれたプログラムを、コンピューターが理解できる言葉である機械語に変換する必要があります。この変換作業を行うのが、翻訳機のような役割を持つ「翻訳ソフト」や「組み立てソフト」と呼ばれるものです。翻訳ソフトは高級言語と呼ばれる複雑なプログラミング言語を、組み立てソフトはアセンブリ言語と呼ばれるより機械語に近い言語を、それぞれ機械語に変換します。
こうして機械語に変換されたものが、目的プログラムです。目的プログラムは、コンピューターが直接実行できる命令の集まりであり、アプリやソフトを動かすための土台となります。普段は意識することはありませんが、目的プログラムはコンピューターシステムを理解する上で欠かせない要素です。
目的プログラムは、元のプログラムである「もとプログラム」と密接に関係しています。もとプログラムを変更すると、目的プログラムもそれに合わせて変更する必要があります。また、目的プログラムは「中間プログラム」と呼ばれることもあり、場合によってはさらに別の形に変換されることもあります。これらの用語や、翻訳ソフト、組み立てソフトの役割を理解することで、コンピューターがどのようにプログラムを実行しているのかをより深く理解することができます。
さらに、目的プログラムには様々な呼び名があります。例えば、「オブジェクトプログラム」や「機械語プログラム」などです。これらの呼び名は、文脈や状況によって使い分けられます。様々な呼び名があることを知っておくことで、技術文書を読んだり、専門家との会話においても混乱を避けることができるでしょう。