:h1.Первая страница
:p.
В этой книге даётся описания языка TSPL ("The System Programming
Language" или "The Simplest Programming Language" - кому как больше
нравится), позволяющего создавать программное обеспечение с высокими 
требованиями к качеству и скорости работы. В программах на этом языке 
действуют строгие правила для работы с данными (особенно с указателями), 
а также правила приведения типов (которые связаны между собой в виде 
дерева). Есть также правила, задающие внешний вид условий и циклов, 
порядок действий внутри функций, и даже отступы и пробелы.

:p.
В качестве примера удобно было бы рассмотреть программу, 
которая печатает приглашение или вызывает внешнюю функцию, 
после чего печатает полученные от неё данные и завершается:

:p.
:font facename=Courier.
:include mode='code' file='0001-Intro\Include\PrimeNumbers-1.rc'.
:font facename=default.

:p.
Здесь функция "Say()" печатает на экран строки и числа, добавляя
к ним переходы на новую строку, функция "PrimeNumbers()" находит 
простые числа, а функция "IntegerFrom()" переводит строку в число. 
При этом она заполняет внешнюю переменную по указателю (поскольку 
это не вычислительная функция), но это действие может быть записано 
как возврат значения.

:p.
Поиск простых чисел выглядит так:

:p.
:font facename=Courier.
:include mode='code' file='0001-Intro\Include\PrimeNumbers-2.rc'.
:font facename=default.

:p.
Здесь внутри функции "PrimeNumbers()" описана другая функция
(эта возможность есть в недавних расширениях языка C, хотя её 
нет в стандарте), и она перебирает все числа от 2 до заданного
числа и вычисляет остаток от его деления на каждое из них. Все
чётные числа сразу же отбрасываются, а нечётные - проверяются в 
цикле (и на каждом шаге число проверок возрастает).

:p.
Флажок "*" в заголовке функции "IsPrime()" означает, что она 
может быть поставлена в оператор условия:

:p.
:font facename=Courier.
:include mode='code' file='0001-Intro\Include\PrimeNumbers-3.rc'.
:font facename=default.

:p.
А оператор условия в примере выше выглядит таким образом:

:p.
:font facename=Courier.
:include mode='code' file='0001-Intro\Include\PrimeNumbers-4.rc'.
:font facename=default.

:p.
Причём эта функция возвращает переменную "Is_prime", которая
задаётся в её заголовке: она объявлена с одинарной кавычкой -
это значит, что её можно менять. Значение из этой переменной 
("единица или ноль") попадает в оператор условия (а диковинная
на первый взгляд запись имён и параметров функций позволяет 
уменьшить число строк в программе).

:p.
В том же пространстве имён есть функция с флажком в виде стрелки,
выполняющая проверку входящих параметров: указатель на безымянную 
функцию в параметре "ReportPrime" не должен быть пустым (значение
"нулевой указатель" задаётся точкой - как и отсутствие значения 
в операторе возврата).