質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

89.07%

プログラミング言語をPCが認識する仕組みについて

受付中

回答 11

投稿

  • 評価
  • クリップ 0
  • VIEW 1,488

natural1994

score 16

「プログラミング言語=PCへの命令」というのは理解しています。

しかし、なぜ人間に近い言葉で書いたものをPCが機械語にコンパイルできるのでしょうか?疑問で仕方ありません。色々なプログラミング言語がありますが、それぞれ文法や表現方法も異なるのに機械語に変換されます。

そもそもプログラミング言語をどういう風にして作るのでしょうか。
また、作った後にそれらをどのようにしてPCに認識させるのでしょうか?

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 11

+4

まず、プログラミング言語自体の発想とは、難解な機械語を人間にも理解できる言語で記載できるようにしたものということになります。
我々の時代であれば世の中で利用されているプログラミング言語が非常にたくさんありますが、少し前(今40〜70歳)の時代であれば機械語に近い形でプログラミングしていた人たちもいるはずです。

機械語に近付けば近付くほど低級な言語、遠ざかれば遠ざかるほど高級な言語という言い方をします。
高低に良い悪いの違いはありません。機械を下に、人間を上にした場合に、より機械に近い部分で記載された命令を低級と位置づけています。
現在流行しているプログラミング言語は殆どが高級言語ですね。
しかし低級な言語を扱える人というのは非常に特殊な技術の持ち主であり、扱える言語が低級か高級かということに技術の高低はありませんので注意してください。

繰り返しになりますがプログラミング言語とは難解な機械語を人間に理解できるように記載できるようにしたものであり、機械はプログラミング言語自体を読むことはできません。
プログラミング言語が最初に作られた歴史というのは私も不勉強でよく分かりませんが、最初に流行したプログラミング言語はCOBOLというプログラミング言語です。
これはほぼ英文法に近い形で人間が機械に命令したい内容を記載することができ、コンパイルという機械語に翻訳する作業を行うことで機械への命令文に翻訳することができます。
これによって一般人でもコンピュータを扱うことができるようになり、役所や企業などはこぞってコンピュータを購入し事務処理をコンピュータに任せるようになっていきました。
なぜそれまでコンピュータが広まらなかったかというと機械語かそれに近い低級な言語を扱える技術者しかコンピュータを扱うことができなかったからです。
このCOBOLというプログラミング言語が流行したことで、その後のプログラミング言語も同様にある程度の英文法に則った形で記載でき、機械語に翻訳するような形が広まりました。

最初の質問はなぜプログラミング言語をコンパイルすることができるのかということでしたね。
プログラミング言語がなければ、機械語あるいは機械語に近い低級な言語を扱える技術者しかコンピュータを扱えないことになります。
そこで世の中にもっとコンピュータを広めるために、世の中をもっとよくするために、機械語や低級言語を扱える技術者は、英文法に近い記載内容を機械語に変換できるような技術を開発します。
それが現在一般にプログラミング言語と呼ばれている高級言語であり、最初に流行したプログラミング言語がCOBOLです。

低級言語技術者が、高級言語で書かれた内容を機械語に変換するよう作った処理をコンパイラと呼びます。

コンパイラは高級言語と機械語の翻訳機であり通訳です。
相手の話す言葉が分からなければ通訳はできません。
最初にコンパイラを作った人は、機械の言葉が分かったのでしょうね。
なぜプログラミング言語をコンパイルできるのかということになると、コンパイラを作った人は機械語が分かったからということになると思います。

より違った言い方をすれば、機械語の分かる人が、機械語の分からない人にも機械を扱えるよう、わざわざ用意したものがプログラミング言語でありコンパイラである、ということになると思います。

このような説明で、疑問は解消されますでしょうか。

※C言語のコンパイラはC言語で書かれているということもあり、この説明が完全に合っているかは保障できません。ただ私としては上記のような感じで理解しておりほぼ納得しています。
他の方の回答にもありますようにWikipediaなども併用しコンピュータの歴史から遡るなどするとより理解が深まると思います。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2019/07/20 10:34

    > 少し前(今40〜70歳)の時代であれば機械語に近い形
    DIP-SWで入力した時代もあると聞きます。(見た事はある)
    今でもアセンブラ(≒機械語)は、使われていますね。
    COBOLは、事務処理系で多く、使われ、技術計算は、Fortranと聞きます。あと、Lispが古いです。
    機械語の問題は、難しいと言うより、同じ事をするのに、10倍、いや 100倍以上のコードが必要な事でしょう。やっている事は単純。でも実用的な事をさせるには、大量のコードが必要という事です。

    キャンセル

+3

何をどこまで知りたいのかわからないのと、ご自身でどこまで調べたのか?という疑問があるんで、どういう回答すれば良いのかわかりませんが…。

Wikipediaでコンパイラの説明でも読むなり、その手の解説をしている本を探してみるなりしてみては。

一から全部説明すると、それこそ本が書けます。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

+2

PCがプログラミング言語なんか認識しません。
そこらへんから考え方を改めましょう。

PC上で走るそれ用のプログラムが、プログラミング言語なる文字列の羅列を解釈して、さもそれで動いてるように見えるように動かしてます

#インタプリタの説明

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

+1

しかし、なぜ人間に近い言葉で書いたものをPCが機械語にコンパイルできるのでしょうか?

PCが、翻訳するのではありません。翻訳用のソフトウェアが翻訳します。通常、「compiler」と呼ばれます。
コンパイラは、どんなプログラミング言語でも翻訳できるわけではありません。人間は、マルチリンガル(multilingual)な人がいますが、ソフトウェアは大抵1種類のみの言語を翻訳できます。対象ではない言語で書かれたコードを渡しても、理解できないと返ってくるだけです。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

+1

電源を入れると BIOS というソフトがまず起動します。これは電源を落としても消えない不揮発メモリに機械語で書かれていて、電源を入れた時からメモリ上にあります。

次に BIOS はディスクやネットワークといったハードウェアを使って OS をメモリ上に読み込み、それに制御を移します。OS は機械語で書かれていて、大抵の場合ディスクの特定位置にあります。

OS はディスクの構造(ファイルシステム)を解析し、そこから機械語で書かれた実行ファイルをメモリ上に読み込み、それに制御を移します。

大雑把に言って、これがプログラム実行の簡単な流れです。

プログラムは機械語で、メモリ上で実行されるということです。CPU はメモリ上の機械語を読み取り、それに従ってメモリの読み書きをしたり、各種レジスタやハードウェアに指令を出したりすることができます。CPU は様々な回路を精密かつ複雑に組み合わせたもので、要するにソフトウエアではなくハードウェアによるプログラミングがなされています。

コンパイルは人間の書いたプログラムを機械語に直す手順です。プログラミング言語は厳密に文法が定められているので、機械語に翻訳することができます。

コンパイラの前にインタプリタの話をします。これは指令書を読み取り、その通りに動くソフトです。例えば指令書に a = 10 と書かれていたら、メモリの特定の箇所を確保し、それに a という名前をつけ、そこに 10 という値を書き込むよう動きます。

インタプリタは指令書を読みながら動くので、指令書の解析という手順が必要で、それに時間を取られます。 

そこであらかじめ指令書を読んで解析し、その通りに動く機械語を組み立てて保存しておくと、効率的に実行できます。この手順をコンパイルと呼び、それをするソフトをコンパイラと呼びます。

コンパイラはすべての言語をコンパイルできるわけではありません。自分の知っている言語を指令書とし、それに従って人間の代わりに機械語のプログラミングをするだけです。

コンパイラによって作られた機械語のプログラムは、実行ファイルとして保存され、実行すると OS によってメモリにロードされ、そこに制御が移されます。

参考: ブート ストラップ - パソコンの起動 by BIOS

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2019/07/21 00:16

    https://ja.m.wikipedia.org/wiki/Basic_Input/Output_System
    Basic Input/Output System(ベーシック インプット/アウトプット システム、頭字語:BIOS(バイオス))とは、ファームウェアの一つで、コンピュータに搭載されたプログラムのうち、ハードウェアとの最も低レベルの入出力を行うためのプログラムである。

    https://ja.m.wikipedia.org/wiki/Unified_Extensible_Firmware_Interface
    Unified Extensible Firmware Interface(ユニファイド・エクステンシブル・ファームウェア・インタフェース、UEFI)はオペレーティングシステム(OS)とプラットフォームファームウェアとの間のソフトウェアインタフェースを定義する仕様である。

    「BIOS」と呼ばれても、別のものですね。方や「ファームウェアの一種」、他方は「ファームウェアとのインターフェイスの仕様」。
    「OSを呼び出す」という役割については同じですが、というか、この役割を担っているものをBIOSと呼んでいるのかも。まぁ、起動の方法とか、全く別物なんですけどね。

    キャンセル

  • 2019/07/21 00:21

    BIOS という名前であり、あなた方の想像する BIOS と私の回答に書かれている BIOS は違います。

    キャンセル

  • 2019/07/21 00:22

    ごらんの通り、OS をロードする BIOS(総称)について書いています。

    キャンセル

+1

プログラミング言語がいくら人間の使う自然言語に近いと言っても、プログラミング言語は人工的に作られたものです。構文が完全に決まっていて、形式的に定義されているのが普通です。

単なる文字列を機械語に変換することはできませんが、この構文でこう書いてあるならこの機械語に変換する、ということを決めておけば、構文解析までやったあとに機械語に変換することは可能になります。if文ならcmpとjzでという感じでしょうか。構文解析はプログラミング程度ならそう難しい技術ではない(というか構文解析がちゃんと成功するように定義している)ので、できるのかできないのかでいえばできますし、どんなコンパイラ・インタプリタもやっています。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

0

なぜ人間に近い言葉で書いたものをPCが機械語にコンパイルできるのでしょうか?

既に指摘のあるように、翻訳するプログラムがあります。
まあ、中で小人さんが頑張ってるという冗談もありますが、最初は、人が機械語に(手作業で)翻訳した事もあるようです。
翻訳するためのプログラムを(最初は人が)機械語に翻訳し、そのプログラムを使って、更に良い翻訳プログラムを作成する、という歴史ですね。

今だと最初は、別のコンピュータ(PC)を使って、新しいコンピュータ用の翻訳プログラムを作成するので、人が直接、翻訳する事はまず無いでしょうが。

[追記]

そもそもプログラミング言語をどういう風にして作るのでしょうか。
また、作った後にそれらをどのようにしてPCに認識させるのでしょうか?

この質問の意図が分かりません。
"新しいプログラミング言語がどのように作られるか?" ならば、今までのプログラミング言語に不満があるから。とは言うものの、全く新規に作られる事は無く、既存の言語(Cとか)を参考にして作られます。 昔のCOBOLは、事務処理用言語として開発(米国なので、英語に近い記述)。FORTRAN は、数値演算が容易にできるようにと。(Wikipedia記述では、広く使われた最初の高級言語とか)
等々.... (と、Wikipediaを見るとそれぞれの言語の歴史とかあり、結構興味深い)
次に、言語の仕様が明確になったら、それを機械語に翻訳するためのツールの作成を行います。上に書いた様に、初期の頃は、手作業もありましたが、今は、既存の言語を使って機械語への翻訳ツール(コンパイラ)を作成する手順となります。
ただ、機械語への翻訳と言っても、環境によってその保存されるデータ形式(機械語のデータファイル形式)は異なり、Windows用、Linux用とか、システム起動用もまた別の形式となります。(機械語そのものは、CPUに依存)
PCは、それぞれの手順に従って作成されたプログラムファイル(大抵は機械語のデータファイル)をメモリに読込み、実行する事になる。(と言い切りたかったが、Windowsの.NETは、MSILと呼ばれるバイトコード。CPUは直接、実行しない -- 違うと言う指摘もあり、興味ある方は調べてください。MSILとかで検索すれば、情報はあります)

と、色々と複雑になってます。

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2019/07/21 20:54

    機械語は主に CPU に依存します。Windows や Linux を列挙するのは違和感があります。

    キャンセル

  • 2019/07/21 20:57

    > Windows や Linux を列挙するのは違和感があります。
    失礼しました。 出力される(機械語)のデータ形式が OS等にも依存するという事です。

    キャンセル

  • 2019/07/21 21:05

    それは翻訳というレイヤーではなく、書籍で言うなら翻訳後のページ割のレイヤーだと思います。

    > 機械語への翻訳と言っても、環境によってその形式は異なり、

    「翻訳の形式」というと、翻訳の仕方自体が違うように見えますが、実際にはリンクされるライブラリの違いと、ファイル形式の違いだと思います。

    キャンセル

0

こんにちは。

本質的な疑問を短くまとめますね。他の方もおっしゃっているように短い回答は困難ですが、トライしてみます。

しかし、なぜ人間に近い言葉で書いたものをPCが機械語にコンパイルできるのでしょうか?疑問で仕方ありません。

人が使う「文字」に「文字コード」を割り当て、「文字」をコンピュータへ入力する手段(昔は紙テープやパンチカード、現代はキーボード)を用意しています。キーボードの A を押すと A に割り当てられた「文字コード」がコンピュータに入力されます。(厳密にはちょっと異なりましが、細かい部分は端折ります)
そして、例えば、LDAAを 「アキュムレータA(CPUが内蔵するレジスタの1つ)へロードする命令」へ変換すると約束します。そのような約束を履行するプログラムは「アセンブラ」と呼ばれます。
そのようなアセンブラへLDAA $1234と入力すると 1234番地からアキュムレータAへデータをロードする機械語命令へ変換されます。

そのようなアセンブラはCPUメーカが開発し提供するケースが多く、CPU毎に命令体系も文法も異なります。
昔のプログラマはそれらの命令を組み合わせて有用なプログラムを記述し、アセンブラを使って機械語へ変換・デバッグし、バグが十分に無くなったと感じたら、機械語命令の形式でリリースしていました。

こんなレベルで開発していると時間がいくら有っても足りません。なので、もう少し人間がプログラムを書きやすく記述するための言語がプログラミング言語です。(黎明期はFORTRANやCOBOL等が有名です。)
それらのプログラミング言語で記述されたソース・ファイルを読み込んで、機械語プログラムへ変換するソフトのことをコンパイラと呼びます。
もちろんFORTRANコンパイラやCOBOLコンパイラも多数ありますし、CコンパイラやC++コンパイラ等も有名ですね。

Cコンパイラもアセンブラと同様CPUメーカが開発し提供する場合も多いですが、Visual C++は多くのPCのCPUメーカであるインテルではなくマイクロソフトが提供していますが、このようにCPUメーカでないベンダーが有償や無償で提供するケースも多いです。
また、gccのようにオープン・ソース・プロジェクトで開発されるメジャーなコンパイラも存在します。

これらのコンパイラは、int x;というコードがあれば、(多くのPCでは)4バイトの記憶領域を確保し、それにxという名前をつけ、多くのソース・コードがxという名前でアクセスできるようにします。for(int i=0; i < 10; ++i){...}というこコードがあれば、同様に4バイトの記憶領域を確保し、0に初期化後、+1しながら、10になるまで、...の部分を繰り返し実行するような機械語へ変換します。
コンパイラは同様な変換機能を多数持っています。

色々なプログラミング言語がありますが、それぞれ文法や表現方法も異なるのに機械語に変換されます。

そのプログラミング言語を解釈できる適切なコンパイラを使って機械語へ変換します。
多くのコンパイラ管理ツール(例えばgcc)は拡張子で適切なコンパイラを選択します。拡張子を付け間違うと間違ったコンパイラが選択され、コンパイル・エラーになります。
例えば、C++で記述したプログラムに .c という拡張子を付けて多数のエラーに見舞われたことのある人はそこそこ多いと思います。

そもそもプログラミング言語をどういう風にして作るのでしょうか。

頑張って作ります。基本はソース・コードを機械語へ変換するだけですから、頑張れば作れます。

とはいえ、複雑な変換処理を頑張るだけで作るのはあまりに大変です。
少しでも楽に開発するため、いろいろな工夫がなされます。ブートストラップ問題を見てみると多少雰囲気が伝わるかも知れません。

また、作った後にそれらをどのようにしてPCに認識させるのでしょうか?

OS毎に約束事があります。その約束事に則ったバイナリ・ファイルをリンカが出力します。
そのため、例えば、Mac用のバイナリをWindowsで起動することはできません。

なお、最近は他のOSのバイナリを起動できるような仕組みが徐々に実用化されつつあります。Windows Subsystem for Linuxなど。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2019/07/20 22:24

    Windows Subsystem for Linux のリンクはちょっと古いです。今はMicrosoft Store からダウンロードします。

    キャンセル

  • 2019/07/20 22:45

    おお、そうでしたか!! フォローありがとうございます。

    キャンセル

  • 2019/07/21 00:17

    WSL は Store ではなく、OS の追加機能のはずです。Store からダウンロードするのは Ubuntu ではありませんか?

    いつ変わったんでしょう?

    キャンセル

  • 2019/07/21 20:45

    最近のUpdate済(昨年?)から、既に入ってますね。(標準は無効。手元でも確認) (https://www.atmarkit.co.jp/ait/articles/1903/18/news031.html)
    Chironianさんのリンクもそうなってます(ただし、beta)
    Storeは、その上で動くLinuxモジュール。

    キャンセル

0

なぜ人間に近い言葉で書いたものをPCが機械語にコンパイルできるのでしょうか?

ちょっと何が疑問なのか分からないのですが、まずコンパイラと呼ばれるプログラムがその変換作業をしているのはよろしいですね?
コンパイラはそのように作られているから、あるいはプログラミング言語はそのようなことが出来るように作られているから、というのは答えになりますか?
あるいは「チューリング完全」という性質があって、その性質を満たす言語(機械語も含む)は本質的に同じ表現能力を持つので互いに翻訳可能という説明はいかがでしょう。

色々なプログラミング言語がありますが、それぞれ文法や表現方法も異なるのに機械語に変換されます。

どの言語も、機械語も、チューリング完全という点では同じ表現力を持ちます/同じ表現力しか持ちません。
(マルチプロセス対応は多少話が違うが、本質ではない)

そもそもプログラミング言語をどういう風にして作るのでしょうか。

これはまあ「(既存の言語で)この処理を書くと長ったらしいな→短く書けるようにしよう」の繰り返しではないかと想像します。

また、作った後にそれらをどのようにしてPCに認識させるのでしょうか?

コンパイラ(あるいはインタプリタ)を作ります。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

-1

例えば動物に芸を教え込む場合、
人間の命令(合図)に対してどうすればよいかを覚えさせます。

動物は人間の命令(意図)がわかってやってるわけではなく
単にそうすると褒めてもらえたりオヤツがもらえるから
そうしているだけですね。

翻ってコンピューターの場合、なんらかの入力に対して
なんらかの出力をする、そういう風につくられています。
プログラマーの意図をくみとって動いているのでなく
淡々と入力を出力にしているだけなんスね。

もちろん、人間の意図を直接コンピューターに伝えるのは
難しいので、間をとりもつコンパイラーやインタープリター
なんてものが手伝っているというわけです。

プログラミング言語の作り方に関してはよく分からないので
まつもとゆきひろさんなどの著作を読んでみてはいかが?
もちろん興味があればコンパイラーの専門書を読むのが
いちばんいいと思います。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

-2

質問)なぜ人間に近い言葉で書いたものをPCが機械語にコンパイルできるのでしょうか? (回答)プログラミング言語が機械語にコンパイルできるようなアーキテクチャしているからPCは機械語にコンパイルできるようになっています。 (質問)プログラミング言語をどういう風にして作るのでしょうか。 (回答)プログラミング言語の具体的な作り方はまだ分かっていません 「コンパイラ」「プログラミング言語の作り方」などでググってみてはいかがでしょうか?(質問)作った後にそれらをどのようにしてPCに認識させるのでしょうか? (回答)プログラミング言語が機械語にコンパイルできるようなアーキテクチャすることで、PCに認識できるようになります。

低評価の回答のためサイトの内容に不適切な投稿と判断し削除

戻す方が良いという意見があるので、回答内容を戻す
(質問)なぜ人間に近い言葉で書いたものをPCが機械語にコンパイルできるのでしょうか?
(回答)プログラミング言語が機械語にコンパイルできるようなアーキテクチャしているからPCは機械語にコンパイルできるようになっています。
(質問)プログラミング言語をどういう風にして作るのでしょうか。
(回答)プログラミング言語の具体的な作り方はまだ分かっていません
「コンパイラ」「プログラミング言語の作り方」などでググってみてはいかがでしょうか?(質問)作った後にそれらをどのようにしてPCに認識させるのでしょうか?
(回答)プログラミング言語が機械語にコンパイルできるようなアーキテクチャすることで、PCに認識できるようになります。

低評価理由
情報価値0:1件

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2020/06/06 11:48

    いつの時点でついた低評価かわかりませんが、元々の低評価の理由がわからないというなら、それが不適切かどうかも判断できないということなので、余計なことはしないほうが良いと思います。元に戻してください。

    > 低評価の回答のためサイトの内容に不適切な投稿と判断し削除

    このような回答は不適切なので低評価の対象になります。

    キャンセル

  • 2020/06/06 12:04

    編集前の回答についてですが、情報量 0 です。「自分にはわからない」と言っているに等しいので、それをわざわざ回答したことへの低評価ですね。

    とりあえず現状よりはまだマシなので戻してください。

    その上で、もう一度「アーキテクチャ」の詳細について学び直し、具体的にどのような「アーキテクチャ」なのかを説明し、それが説得力のあるものであれば、低評価が外れたり高評価が付いたりすると思います。

    キャンセル

  • 2020/06/06 12:23

    情報量が0と判断されているのですね。指摘に従い戻しました。指摘ありがとうございます。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 89.07%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る