web-dev-qa-db-ja.com

HTMLはマークアップ言語、C ++はプログラミング言語だと言われましたが、何がその違いを生むのでしょうか?

HTMLはマークアップ言語であり、C++はプログラミング言語であると私のプログラミングの友達はいつも私に言っています。何が違うのかを尋ねると、合理的な答えは得られません。

C++をプログラミング言語に、HTMLを呼び出さないものは何でしょうか?

22
Lucas

プログラミング言語は、命令をマシンに渡すように設計された表記法です。その定義により、C++とHTMLはどちらもプログラミング言語であり、1801年に プログラムの織機 に使用されたJoseph Joseph Marie Jacquardの表記も同様です。

ただし、データの構造化や記述に使用される言語の急増に伴い、プログラミング言語の定義は、アルゴリズムを表現できる言語のみを含むようにシフトしました。これは現在、より一般的な定義であり、HTMLやXMLなどの言語は除外されています。

現在の定義の中心にあるのは Turing completeness の概念です。ほとんどのプログラミング言語は完全なチューリングであり、チューリングの完全性は、プログラミング言語を他のコンピューター言語から分離する1つの重要な特性としてしばしば引用されます。これは一般的な経験則としては十分ですが、完全に正確ではありません。

  1. 一部の非チューリング完全言語は、プログラミング言語と見なされます(例 Charity )。
  2. [〜#〜] xslt [〜#〜] のように、一般にプログラミング言語と見なされない一部の言語はチューリング完全です。
  3. 完全性だけをチューリング 言語の有用性についてはあまり言わない

コンテキストに応じて、任意の定義を選択できます。

編集:

さらに知れば、言語の実装は言語自体に特徴を与えません。たとえば、言語の仕様はチューリング完全言語を定義する場合があり、誰かが無計画にチューリング完全性を無視して実装する可能性があります。ただし、この実装が完全に調整されていなくても、言語自体が完全に調整されていないわけではありません(むしろ、実装が非準拠であることを意味します)。言語の詳細と言語の特定の実装の詳細は別のものとして認識されるため、解釈またはコンパイルされた言語を呼び出すことが不正確になるのはこのためです。

45
yannis

"私はそれを見るときそれを知っている"という語句は、話し手が観察可能な事実またはイベントを分類しようとする口語表現ですが、カテゴリーは主観的であるか、明確に定義されたパラメーターがありません。このフレーズは、米国最高裁判所のポッタースチュワートがわいせつなしきい値テストをJacobellis v。Ohio(1964)で説明するために使用したことで有名です。

- "私がそれを見るとき、私はそれを知っています"ウィキペディアの記事

わいせつと同じように、私たちはプログラミング言語を見ると誰もが知っていると思います。 C++はプログラミング言語であり、HTMLはプログラミング言語ではないと既に判断しているため、OPは明らかにそうです。

では、正式な定義を追求する目的は正確には何ですか? Yannisは、最も一般的な定義であるチューリング完全性に欠陥がある理由について、すでに大きな分析結果を示しています。それは、「私がそれを見るとき、私はそれを知っている」テストを無視する分類につながります。

あなたが思いつくことができるany定義はいくつかの言語につながると私はあなたに言いますnot「プログラミング」言語は分類されますそのように;または、私たち全員が感じるいくつかの言語are「プログラミング」言語はnotとして分類されます。

なぜではなくあなたの腸と一緒に行くのですか?私は単純なヒューリスティックを使用します。プログラミング言語は、私の意見では、私の見解によれば、プログラムを書くことを主な目的とする言語です。コンテンツをマークアップしないでください。 XMLを変換しません。汎用プログラムを書くため。正式な定義を見つけ出そうとするよりも、見たときにそれを知りたいだけであり、そのような定義を試みることから生まれる真の価値は見当たらない。

5
Carson63000

マークアップ言語は主に情報の表示方法を扱い、一般に変数、数学、比較、意思決定(if ... then)、ループ(for、while)などのプログラミングインフラストラクチャに欠けています。

HTML自体は静的です。つまり、ワープロのように、情報をそのまま表示することを目的としています。ある種のプログラミング言語(通常はJavaScript、PHPなどのスクリプト言語)を追加して初めて、HTML Webページに「変化する」コンテンツを含めることができます。スクリプト言語は、変数、数学、比較、意思決定、ループなどで「プログラミング」の可能性を提供します。

2
hekimgil

HTMLは宣言型言語です。それ自体では多くのことを行うのではなく、ドキュメントとその内容を(意味論的な意味を持つタグを使用して)記述するだけです。

一方、C++は何かを行います。関数とクラスを定義しますが、これらの関数がどのように連携するか、それらの入力と出力が有意義な方法でどのように結び付けられるか、およびアプリケーションが全体としてどのように実行されるかについても説明します。

0
Radu Potop