「データ記述言語」の版間の差分

削除された内容 追加された内容
編集の要約なし
編集の要約なし
1行目:
'''データ言語'''(でたげんご)とは、[[コンピュータ]]において扱う[[データ]]を記述するための[[人工言語]]である。
 
[[プログラミング言語]]などと同じ[[コンピュータ言語]]の1種であり、[[Hypertext Markup Language|HTML]]に代表される[[マークアップ言語]]などがある。
 
 
== プログラミング言語との違い ==
 
データ記述言語には、純粋に[[データ]]の格納のみを目的とする言語と、[[プログラミング言語]]の特徴も備える言語がある。後者はやや特殊で、プログラミング言語と厳密に区別されるものではない。
 
プログラミング言語の大きな特徴は制御構造(逐次処理、分岐処理、反復処理)と制御を行うための変数をもつ点にあり、データ記述言語にはこのような要素は含まれない。データ記述言語を用いて値を記述する場合でも、それは定数であって変数ではない。
 
データ記述言語の1つである[[HTML]]の場合、初期にはドキュメントの構造のみを格納する[[マークアップ言語]]であったが、その後の仕様拡張で他の[[スクリプト言語]]も内包するようになった。ただし、HTML自体はスクリプト言語のコードもデータの1つとして扱い、それをどのように処理するかはブラウザなどの[[アプリケーション]]に委ねられる。この意味では、まだ純粋なデータ格納の言語である。一方、[[携帯電話]]などの情報機器向けに作成された[[HDML]]では、変数や制御文をもつなど言語自身がプログラミング言語の要素を備えている。
 
 
== データ記述言語登場の背景 ==
 
データ記述言語は、以下の点に主眼を置いて作られた。
 
*1) 複雑な[[データ構造]]をもつ[[データ]]を格納する。
*2) データの記述方法や個々のデータ要素へのアクセス方法の共通化をはかる。
*3) データをテキスト形式で格納する。
 
1)については、例えば、テキスト文字で表現可能で単純に並列に列挙されるデータであれば、あえてデータ記述言語を用いず、単純なテキストファイルを使用することで対応できる。このようなデータがいくつかのグループに分類され、各グループが並列に列挙されている場合でも、グループ毎に見出しを付ける工夫をすることで対応できる。このような形式は、[[アプリケーション]]や[[OS]]の設定ファイル(例えば、[[Windows]]の iniファイル)などで古くから多用されてきた。
 
しかし、[[データ構造]]が複雑になり、深い[[木構造 (データ構造)|ツリー構造]]をもっていたり、繰り返し現れる要素があったり、要素の現れる順番が意味をもっていたり、さらにこれらが複雑に組み合わさったりすると、単純な列挙の記述では間に合わなくなる。このような複雑なデータでは、従来は、アプリケーションが個別に特殊な表記方法やデータのフォーマットを工夫することにより対処してきたが、それによって2) の問題が生じた。
 
2)については、従来、データを格納する方法はシステムや[[アプリケーション]]によってばらばらで、さまざまな[[ファイルフォーマット|フォーマット]]が乱立していた。プログラム開発者はデータを読み書きするプログラムを個々のソフトに合わせてその都度作成せねばならず、また、データファイル自体も特殊な形式をもっているために汎用性が失われる問題が生じていた。インターネットの普及とともに、特にデータの交換が必須な分野でデータファイルのフォーマットや個々のデータへのアクセス方法を統一する必要性が生じた。
 
3)については、従来のデータファイルではバイナリー形式と呼ばれる方法も多用されていた。これは数値を文字によって記述するのではなく、そのまま値としてファイルに書き込む方法である。バイナリー形式は、同じデータならばテキスト形式に比べて少ないファイルサイズでデータを格納できる利点があり、[[コンピュータ]]の[[補助記録装置]]の資源が乏しい時代にはごく普通に用いらた。バイナリー形式のデータは現在でも多くのアプリケーションで用いられており、特にデータサイズが重要な意味をもつ[[データ圧縮|圧縮データ]]では必須となっている。しかし、バイナリー形式は、そのままでは可読性が低く、生のデータを人が読み書きするのが困難であるという欠点をもっている。このため、マークアップ言語ではテキスト形式を用いているのが一般的である。
 
 
==関連項目==