XML、JSON、YAMLなどのテクノロジーは何に分類されますか?
私はすでに見ました
しかし、どちらも正確に見えませんでした...それらのいずれも、クエリを作成するためのものではありません。また、JSONは言語ではないため、DSLは適用されません。
これらのテクノロジーは、構成ファイルやWebサービスとWebクライアントの間でデータを受け渡すときによく使用されます。それらを説明する一般的なカテゴリまたは用語はありますか?
多くの場合、宣言型プログラミングは、必須ではないあらゆるスタイルのプログラミングとして定義されます。命令型プログラミングと単に対比する以外に、用語に定義を与えようとする他の多くの一般的な定義が存在します。
例えば:
- 計算方法ではなく、実行する必要がある計算を説明するプログラム
- 副作用のない(より具体的には、参照透過的な)プログラミング言語
- 数学的論理に明確に対応する言語。[4]
出典:ウィキペディア
宣言型言語は、プログラムが達成すべきことを表現することを意図しています。
Webベースのデザイン(HTML/CSSなど)はどちらも良い例です。それらは、ウェブページがどのように構造化され視覚的に表現されるべきかについてのブラウザへの指示を記述しますが、出力を生成する独自の能力は持っていません。 W3C/WHATWGの指定に従って出力が意図した結果を生成する限り、ブラウザ/クライアントがコードを消費する方法は大きく異なる可能性があります。
SQLのようなシリアライゼーション/デシリアライゼーションとDSL(ドメイン固有言語)は、もう1つの良い例です。それらは、実行されている言語/プラットフォームに関係なく、機能の厳密な標準に従うように設計および意図されています。
優れた宣言型言語の鍵となるのは、主観的な変動の余地がほとんどない、シンプルで有限な用語でデータ/プロセスを適切に記述することです。
宣言型コードを使用/生成するシステムの適切な実装の鍵は、それを使用する他のすべてのシステムとの一貫性です。
Markdownは、初期の仕様/設計が不十分なために役立つ宣言型言語の好例です。 Markdownはその有用性から、自然界で有機的に進化しました。残念ながら、明確に定義された仕様がないため、実装に関してはさまざまなバリエーションがあります。多くの著名な開発者がMarkdownの標準化を個人的な使命として採用していますが、公式の標準は、適者生存の遅い/痛みを伴うプロセスを通してのみ受け入れられます。それでも、常にある程度は変動が存在します。
技術的には、言語を分類するための正式なシステムが Chomsky Hierarchy と呼ばれています。それは、それらがどのように解析されるかに基づいて、異なるタイプのプログラミング文法を数学用語で説明します。
XML、JSON、YAMLは一般に、それらの使用方法に応じて、文脈自由言語または文脈依存言語に分類されます。
使い方を考えると、Declarativeはあなたが探しているものを説明するのにより良い用語だと思います。
XML = "eXstensible Markup Language "
YAML = "YAML Ai n't Markup Language "(元々は "Yet Another Markup Language"でしたが)。
実際、人々はそれらを言語ではなくデータ形式(JSONである)に似ていると思っていますが、それは、人々が「言語」==「チューリング完了」を想定しているためです。
それらにWord言語が含まれているにもかかわらず、私はそれらをプログラミング言語ではなく、データ形式と見なします。一部のDSLの形式として、おそらくYMLの場合と同様に、XMLが使用されていることを知っています。
言語はプログラミング言語であるためにチューリング完全である必要はありません、しかしそれはアクティブである必要があります-標準の定義を超えることなく、これらの「言語」はデータに作用する意味を含みません。
XSLTはXMLを使用する言語ですが、XSLTは単なるXMLではありません-DTDを超えて意味を付加し、データに対して実行されるアクションを含む意味を付加します。言及されていないが、XSLTのようなHTMLはプログラミング言語です。 XSLTはHTMLが完全ではないのに完全なチューリングです。 HTMLは宣言型言語です-一部のコンテンツを強調するか、一部のコンテンツが見出しであるか太字になっていることを示しています。
XMLの要点は、アクションを含まないことです。これはデータです。そのデータが意味すること、それがtodoリストであろうとフィボナッチ数列を計算するためのプログラムであろうと、重要ではありません-XMLはデータであり、関連するDTDはそのフォーマットを記述しており、データの意味は消費者によって決定されますXMLがこれを行うのは、HTMLがデータと意味を混合したためです。
要するに、それをずさんな用語として受け入れて、先に進んでください。