Introduction
Getting Started
App Config File
Entity Schemas
NoLang Script
NoLang Endpoints
Microservices
Storage
Documents / Introduction
contents

What is NoLang?

NoLang is a descriptive language. It is like a markup language (i.e. HTML or CSS that just define things) and is not a procedural language (i.e. C, Java or Pascal). NoLang programs or applications contain definitions rather than procedures and methods. However, it tries to actually "do" anything in the sense of what a programming language does. It contains programming logics and conditional statements but in another manner. It can evaluate expressions and do any math. It handles some events or carry out tasks. NoLang allows you to declare variables, write functions, and manipulate data. Maybe we can say that :
NoLang is a new type of programming language

Just describe all things

NoLang is a kind of Declarative languages. Declarative languages express the logic of a computation without describing its control flow in detail. Declarative programming stands in contrast to imperative programming via imperative programming languages, where control flow is specified by serial orders (imperatives).
By NoLang, a programmer or developer don't need to create and manipulate each section of program with different kinds of languages and syntax's, All things i.e. definition of entities, methods and implementation of them, even the data of entities, all have one syntax Instead, (s)he need to just describe all sections with one syntax, the JSON.

Entity-Oriented-Programing (EOP) language

NoLang is not an object-oriented programming language. It is an entity-oriented programming language. The smallest sections or tokens of a NoLang program are Entities. So programmers or developers at first have to think about what entities are needed in the program, Then define them.
It is a useful approach to have a EOP instead OOP.
By EOP approach many tasks of programmer will be done automatically and transparently by the language itself.
The smallest valuable object in the syntax of NoLang is an Entity. Entities are described by the format JSON Schema.

Structure of a NoLang app

    list
  • In every NoLang app there are some entities.
  • It must be defined the entities' schemas in config file or in separate files.
  • If this app stores data of entities the storage configuration must be defined in any schema or config file.
  • It is necessary to define one or more endpoints that this app listens to.
  • If this app needs to connect to other NoLang apps it can be defined in microservice configuration.

How to describe entities?

In NoLang, Entities are defined with JSON Schema. NoLang added some other keywords to standard JSON Schema to creating a new annotation as a program not just a data format or validation annotation.

The schema of an entity in its simplest format can be like this:
{
	"$id": "entity-schema-id",
	"properties": {
		"FieldName1": {
			"type": "string"
		},
		"FieldName2": {
			"type": "number"
		}
	}
}

How to retrieve or manipulate data of entities?

When we want to ask from a NoLang program to do something, we must use NoLang Scripts. A NoLang Script is a JSON object of a pre defined entity with those fields which described in the entity's schema, besides some additional properties specially $$schema and $$header.
To connect and send a Script to NoLang program, we must use NoLang Endpoints which is described next.
{
	"$$schema": "entity-schema-id",
	"$$header": {
		"action": "C"
	},
	"FieldName1": "Hello",
	"FieldName2": 25
}