Mirror of the Rel4tion website/wiki source, view at <http://rel4tion.org>

[[ 🗃 ^yEzqv rel4tion-wiki ]] :: [📥 Inbox] [📤 Outbox] [🐤 Followers] [🤝 Collaborators] [🛠 Commits]

Clone

HTTPS: git clone https://vervis.peers.community/repos/yEzqv

SSH: git clone USERNAME@vervis.peers.community:yEzqv

Branches

Tags

master :: projects / razom /

info-lang.mdwn

[[!meta title=“Information Languages”]]

[[!toc]]

Intro

An information language is an artificial language for use in computers, which allows humans to read and write information descriptions, and machines can manipulate too. It is a tool which allows communication between people, between machines and between people and machines. Different languages may be better for some of these roles, and less fit for others.

There are four kinds of languages:

  1. Low-level languages (LL)
  2. High-level languages (HL)
  3. Very high-level languages (VHL)
  4. Domain-specific languages (DSL)

The languages Razom offers are:

  1. [[/projects/Kort]] (low level)
  2. [[/projects/Idan]] (high level)

Low-Level Languages

These languages represent information in a format close to the way computers store it. The syntax is usually less complicated, and is easier for computers to read and write. But it is also more difficult to read and write for humans, because the representation has less similarity to the abstract ideas and concepts which guide people’s thinking when dealing with structured information.

Such languages, while being suitable for manual editing and for viewing by humans, are mainly intended for computers to work with. The relatively simple syntax also usually helps minimize the “creativity” component of the text, i.e. there are less different ways (maybe even just one) to express the same information. This may sometimes be bad for humans, but it makes computer handling of the text easier because there are less cases and features to take care of. It is possible because computers don’t need the flexibility and handle simple languages better.

In programming, low-level languages sometimes give access to internals and small details abstracted away by higher-level languages. In Smaoin, low-level languages don’t do that: Even high-level languages give access to the full power of Smaoin. Maybe the reason is that the the data representation stack of Smaoin, and maybe user data representation in general, is much simpler than the complex way computers work, from the metal level to scripting languages.

Razom’s low-level language is [[/projects/Kort]]. It is based on writing whole tuples.

High-Level Languages

These languages give the human user access to the full power, features and capabilities of Smaoin, while providing convenience features and friendly syntax made easy for humans to work with.

Ideally, giving the full access doesn’t compromise friendliness and ease of use. In reality, sometimes it may do that.

High-level languages provide shortcuts and readable names for all the technical and inconvenient parts of the syntax. They allow reuse of common parts of the text (rather than requiring repetitive typing) and try to avoid unecessary notations. They may also allow some preprocessing, so common parts can be written once and computer-generated parts can be pasted in automatically.

Razom’s high level language is [[/projects/Idan]].

Very High-Level Languages

These languages focus on ease of use and readability. They exist because some high-level languages may not be as friendly as they’d like, due to the requirement to fully support the data model, Smaoin. The solution very high-level languages use is to remove some abilities or make them harder to use, which means the set of abilities they support in a friendly way becomes smaller and it allows them to have nicer syntax.

Such languages usually drop technical notations and secondary-importance components, or at least offer them through some sort of syntax extension or preprocessing directives. It leads to concise code where the language tries to understand what you mean and adapt to straight-forward human thinking processes, without making you dive into small details.

Usually information which can be deduced or guessed will be deduced, and maybe optional language constructs will be provided for those who prefer to specify the data themselves.

This kind of languages will usually be good for beginners and can serve as an introduction to the data model.

Razom currently has no languages of this type. As long as Idan doesn’t introduce any significant inconveniences, development of very high-level languages will have low priority.

Domain-Specific Languages

These languages are made for specific areas of knowledge, and are based on vocabularies used to describe information on those areas. Each language is usually focused on one specific area, and provides syntax elements related to the details and components of the vocabulary it is based on.

Domain-specific languages are out of the scope of Razom, but some domain-specific languages are planned to be developed under the Rel4tion project. Anyone can create new domain-specific languages independently.

The most important DSL will probably be the query language. It doesn’t exist yet, but the underlying query model, [[/projects/Naya]], is in progress.

[See repo JSON]