NononoKai
@NononoKai

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

HTMLについてきちんと理解したい

Q&A

Closed

コンピューターはHTMLをどのようにして理解して、表示しているの?

例)
HTML初心者です

c#や、Javaはコンパイラでコンパイルすることで、プログラムを実行します。

一方、HTMLはそのような操作をせずともwebブラウザ上で動作するのが不思議です。

これは、webブラウザ、もしくはOSがHTMLのコンパイラーみたいなもの?を持っているということなのでしょうか?

つい先日情報の授業で、コンピューターは0と1だけの機械語という言語で動いていると習ったので、バリバリ英語や日本語が入っているHTMLをコンパイルのような操作なしで表示できることに、わけがわからなくなりました

詳しい方教えてください!

0

2Answer

ここのような文章でやり取りする Q&A サイトでそういうことを聞くのは場違いだと思いますよ。先生がいるなら先生に聞くのがお勧めです。

もしくは「ブラウザ html 解析 仕組み」などをキーワードにググってまず自分で調べてみましょう。以下のような図入りで微に入り細に入り説明した記事がヒットするはずです。

ブラウザレンダリングの仕組み
https://zenn.dev/ak/articles/c28fa3a9ba7edb

いまさら聞けない「Webブラウザ」超入門
https://atmarkit.itmedia.co.jp/ait/articles/0804/14/news107.html

それらの記事に書いてあるようなことをここで書くのは無理がありますし、たぶん誰もやってはくれません。

自分で調べた上で、例えば○○の記事のここが分からないということがあれば、分からない点に絞って質問してください。

2Like

Comments

  1. 基本的にはSurferさんのおっしゃる通りですが、数点補足させてもらいますね。

    これは、webブラウザ、もしくはOSがHTMLのコンパイラーみたいなもの?を持っているということなのでしょうか?

    良い着眼点です。
    詳しくは「インタプリタ」で調べてみて下さい。

    コンピューターは0と1だけの機械語という言語で動いていると習ったので、バリバリ英語や日本語が入っているHTMLをコンパイルのような操作なしで表示できることに、わけがわからなくなりました

    「一体いつから――英語や日本語が機械語でないと錯覚していた?」

    今あなたが読まれているこの文章でさえ、コンピュータの中では01の集まりです。
    その01の集まりを解釈して、画面の上で「日本語っぽく」「英語っぽく」見せているにすぎません。

    コンピュータの世界って、面白いでしょう?

  2. @NononoKai

    Questioner

    @SurferOnWww
    @iiokazuya
    回答ありがとうございます。
    「自分で調べてから疑問点を聞け」
    本当におっしゃる通りで耳が痛いです…。

    載せていただいたリンクを見て、分からないところは調べて、理解を深めて行きます。
    ありがとうございました

  3. 納得したのであれば、本問をクローズしましょう。

確かにC#やJavaのソースコードは最終的には機械語に翻訳されて実行されますが、C#やJavaのソースコードも機械語ではありません。C#やJavaのソースコードを機械語に翻訳するプログラムがあり、その出力を実行しています。HTMLの場合も同様でHTMLを機械語に翻訳するプログラムがあり、その出力を実行しています。
ただし、C#やJavaとHTMLではソースコードを読むタイミングや機械語に翻訳する手順がぜんぜん違っています。C#やJavaでは実行前にソースコードを読んで少しだけ翻訳した結果を実行しています。機械語はコンピュータ毎に異なるので、完全に翻訳してしまう場合は、どのコンピュータで実行するか決めておく必要があります。少しだけ翻訳して共通機械語のようなものにすることで、最初の段階ではどのコンピュータで実行するかを気にしなくてもよくなります。コンピュータ毎に共通機械語から自身の機械語にさらに翻訳するといった仕組みになっています。一方、HTMLの場合はブラウザがサーバからHTMLを受け取ってその場で共通機械語に翻訳、自身の機械語に翻訳という構造になっています。
C#やJavaのような動かし方をする言語をコンパイル型言語、HTMLのような動かし方をする言語をインタープリタ型言語と呼びますが、どちらのやり方にも一長一短あり、今時の言語は両方の良いとこどりをしていたりするので、はっきりとした境目はありません。
ポイントとしては、どのようなソースコードも翻訳を経て実行されていること、ソースコードを翻訳するのもプログラムであること。実際にはソースコードから機械語へは多段階の翻訳が行われていることは共通しています。事前に初段の翻訳を実行しておくものはコンパイラっぽく見え、ソースコードを直接翻訳するものはインタープリタっぽく見えますが、実際はそれほど差異はありません。

0Like

Your answer might help someone💌