HTMLはプログラミング言語ではありません。
私はこの文を何度も聞いたことがあります、それは退屈です。多くの場合、「ロジックがない」や「チューリングが完全ではない」などの言葉が続きます。したがって、明らかにプログラミング言語ではありません。物事が終わったように見え、議論が止まるはずです。
しかし、それは本当にこんな感じですか?
HTMLを切り下げて、これらの声明が完全に正しくないことを示すために自分の反論をするためによく聞く議論を探りたいです。
私の目標は、HTMLがプログラミング言語であるか、プログラミング言語ではないことを証明することではなく、プログラミング言語ではないと主張するために使用された3つの主要な議論が欠陥または間違っていることを示すことです。
ステートメント自体は良いように聞こえますが、それは間違っています。マークアップ言語はプログラミング言語になる可能性があります。すべてのマークアップ言語が(ほとんどそうではない)とは限りませんが、そうすることができます。プログラミング言語とマークアップ言語のVenn図を描くと、2つの独立した円ではなく、2つのわずかに交差する円になります。
変数を使用する、制御構造、ループなどを持つ、またはプログラミング言語であるマークアップ言語。それらは相互に排他的な概念ではありません。
TexとLaTexは、マークアップ言語とプログラミング言語の両方の例です。彼らと一緒に開発することは実用的ではないかもしれませんが、それは可能です。 Basic InterpreterやMars Rover Controller(2008年のICFPプログラミングコンペティションでju審賞を受賞した)など、オンラインでいくつかの例を見つけることができます。
一部のマークアップ言語はプログラミング言語と見なされる場合がありますが、HTMLがその1つであると言っているわけではありません。重要なのは、最初のステートメントが間違っていたことです。マークアップ言語はプログラミング言語になる可能性があります。したがって、HTMLはマークアップ言語であるため、プログラミング言語ではないと言うことは虚偽の声明に基づいており、この前提から引き出された結論は絶対に間違っています。
この声明では、定義があなたを驚かせるかもしれないので、「論理」の意味を明確にする必要があります。
チューリングの完全性(私たちは間違いなく間違いなく話します)のように、この議論をした人はその正確な意味を誤解しているようです。私は人々に「論理」の意味を教えてくれるように頼み、以下に興味深い答えを得ました。
論理は、推論や思考の合理的な方法です。
ロジックの辞書の定義を探している場合、これは問題ありません。しかし、一般的な用語としての論理だけでなく、プログラミングロジックについて話している。私もこのような答えを受け取りました:
プログラミング言語には、変数、条件、ループなどが含まれます。HTMLは、変数や条件を使用できないため、プログラミング言語ではありません。ロジックはありません。
これは良いです(そして、true/false/および/または/または/etcに行くよりも確かに優れています)が、それも間違っています。 HTMLには、属性の形式で変数があり、これらの変数/属性と制御構造を使用して、表示されるものを決定できます。
しかし、これらの変数をどのように制御しますか? JavaScriptが必要です!
もう一度エラー。一部のHTML要素には内部制御ロジックがあり、JavaScriptまたはCSSが機能する必要はありません。私はそれについて話していません<link>
またはそのようなもの - 彼らは何十年もの間標準の一部であった基本的な制御構造です。私は、ユーザー入力に応答し、変数の現在の状態と変数の値に基づいて条件付き操作を実行する要素を意味します。による<details>/<summary></summary></details>
タプルまたは<dialog></dialog>
要素は例です。ユーザーがクリックすると、開いた属性が存在すると閉じられます。そうでない場合、それらは開いています。 JavaScriptは必要ありません。したがって、単にHTMLがプログラミング言語ではないと言うだけで、ロジックが誤解を招くためです。 HTMLは、実際にユーザー入力に基づいて意思決定を行うことができることを知っています。 HTMLにはロジックがありますが、データを操作するように設計された他の言語のロジックとは本質的に異なります。 HTMLがプログラミングの形ではないことを証明するには、これよりも強力な議論が必要です。
わかりました、これはこの議論で私たちが最も見ている議論です。技術的には(最良の種類の正しい)、HTMLは完全に不完全ではないと言うのは正しいですが、これは単に最終ステートメントとして使用するよりも大きな議論を引き起こすはずです。
このトピックには多くのリソースがあるため、私は完全性をチューリングするという意味にはなりません。実際、ララ・シェンクは、CSSが完全にチューリングをしていると主張する彼女の記事の1つでこれをよくまとめています。
簡単に言えば、言語やマシンの場合、チューリングの完璧さは、チューリングマシンができることを実行できることを意味します。つまり、一般的な計算を実行します。結局のところ、プログラミングは数学の操作を行うために発明されました。もちろん、私たちは今それをもっとやっています!
ほとんどの最新のプログラミング言語はチューリングが完全に複雑であるため、人々はプログラミング言語の定義としてそれを使用しています。しかし、チューリングの完全性はそうではありません。これは、システム(またはそのルールセット)がチューリングマシンをシミュレートできるかどうかを特定するための標準です。プログラミング言語の分類に使用できます。それらを定義しません。プログラミング言語でのみ機能しません。たとえば、ゲームMinecraft(この標準を満たす)またはカードゲームマジック(この標準も満たしています)。どちらも完全に完全ですが、誰もがそれらをプログラミング言語として分類するとは思いません。
チューリングの完全性が人気になりました。一部の人々が、編集された言語と解釈された言語の違いが良い基準であると考えていたように。はい。開発者(主にバックエンド)がフロントエンドプログラミング(JavaScriptやPHPを含む)を過小評価している場合、「実際のプログラミング」ではない場合、心配する必要はありません。あなたは今でもそれを時々聞きますが、今では色あせ、曖昧で、ささやきます。
プログラミングの定義は、時間の経過とともに変化します。ピアスカードを整理する人が、アセンブリ言語でコードを入力することは実際のプログラミングではないと不平を言うだろうと思います。石に普遍的または書かれているものはありません。実際の定義はありません。
チューリングの完全性は公正な基準ですが、私は言わなければなりませんが、それは偏見があり、主観的であり、その形ではなく、選択する方法です。チューリングの完全なマシンを生成できる1つの言語が「プログラミング言語」と見なされ、有限の状態マシンを生成できる別の言語ではそうではありませんか?これは主観的です。これは、他の誰にとっても「実際の開発者」(この声明を出す人)と彼らほど良くない人を区別するのと同じ言い訳です。
さらに悪いことに、「HTMLが完全に不完全ではない」呪文を繰り返す多くの人々が、チューリングの完全性が何を意味するのかさえ知らないことさえ理解していないことは明らかです。それは賞や品質の印ではありません。それは名誉のバッジではありません。これは、プログラミング言語を分類する方法にすぎません。それらを定義する代わりにグループ化します。プログラミング言語は、解釈またはコンパイルされる可能性がある、命令的または宣言的、手続き型またはオブジェクト指向であると同時に、チューリングが完全であるかどうかにかかわらず。
HTMLがプログラミング言語ではないと主張する主な議論を下げられる場合、これは本当にHTMLがプログラミング言語であることを意味しますか?いいえ、それはそれを意味しません。したがって、この議論は、HTML標準開発またはプログラミング言語の「現在の定義」が変更されるまで続きます。
しかし、開発者として、多くの場合、深刻な議論を促すために使用されるのではなく、地下の動機を隠しながら論争をかき立てるために使用されるため、私たちはこの問題に警戒しなければなりません。リラックスしたインターネットの対応を得ることから、開発エコシステムへの人々の貢献のグループを危険にさらします。
または、アシュリー・コロジエジがHTMLへの彼女のodeで見事に要約したように:
彼らは、あなたは他の言語のような本当のプログラミング言語ではなく、あなたはただの言語であるだけであり、技術的にはそうだと思います。技術的には、JavaScriptとPHPはスクリプト言語です。当時、JavaScriptを理解することはクールではなく、「本当の」言語でもないことを今でも覚えています。時々、私たちはあなた(そして私たち自身が開発者として)を妨げる語彙を作成したように、これらの違いが無意味であると感じます。あなたは、マークアップ言語として、あなたの独自の価値と利点を持っています。あなたを最大限に活用する方法を知ることは、しばしば見落とされる本当の専門知識です。
「HTMLがプログラミング言語ではない/ではない」という議論に関する私たちの立場が何であれ、その重要性を否定することなく祝いましょう。HTMLはインターネットのバックボーンです。多くのドキュメントと広範な文法を備えた美しい言語ですが、午後に学ぶのはとても簡単で、習得するには何年もかかります。それがプログラミング言語であるかどうかにかかわらず、本当に重要なのは、HTMLを持っていることです。
以上がHTMLはプログラミング言語ではありませんか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。