インターネット上のデータの多くは、JSONと呼ばれるシンプルな形式を使って共有されています。JSONは2つの複合型(配列とキーバリューマップ)と少数のプリミティブ型(64ビット浮動小数点数、文字列、null、真偽値)で構成されています。JSONがそのシンプルさにもかかわらず広く普及したことは示唆的です。

{
 "name": "Nova Starlight",
 "age": 28,
 "powers": ["telekinesis", "flight","energy blasts"]
}

興味深いことに、JSONは人気のある言語Goでデフォルトで提供されるデータ構造と密接に一致します。Goには配列/スライスとマップが用意されており… 標準のプリミティブ型も含まれます。これはデフォルトでマップを提供しないCよりも少し多いですが、標準ライブラリが教科書に見られる多くのデータ構造をカバーするJava、C++、C#などの他の多くのプログラミング言語よりも大幅にシンプルです。

JSONおよびGoに欠けている明らかなデータ構造が少なくとも1つあります。それはセットです。オブジェクトは重複したキーを持たないはずなので、キーをtrueのような任意の値に割り当てることで文字列のセットを実装できます。

{"element1": true, "element2": true}

しかし、これはやや珍しいパターンだと思います。ほとんどの場合、オブジェクトのセットを表現したいときは、配列で十分です。重複を何らかの方法で処理するだけです。

JSONにより多くの概念や複雑さを追加しようとする試みは数多くありましたが、そのどれも大きな支持を得るには至っていません。これはJSONがデータ形式として十分に優れていることを反映していると思います。

YAMLなど、JSONデータを表現できる任意の形式をJSON-completeなデータ形式と呼びます。少なくともJSONと同等であれば、ほとんどの問題に対して十分に豊かです。

同様に、新しいプログラミング言語はJSON-completeを目指すべきだと提案します。キーバリューペアのマップ、配列、および基本的なプリミティブ型を提供すべきです。この観点から、CおよびPascalプログラミング言語はJSON-completeではありません。

Published by

Post navigation