Есть следующий "язык программирования", даю его описание:
Структура памяти
Вся область памяти, используемая языком разделена на две части:
на область данных и область программного кода. Область данных имеет интервал 0 - 3000, область программного кода 3001 - и в зависимости от обьема программы.
Ячейки памяти 0 - 3 имеют специальное назначение:
0 - в этой ячейке хранится номер текущей, выполняющейся команды. После выполнения команды значение этой ячейки увеличивается на еденицу
1, 2 - в этих ячейках хранятся номера команд, на которые передается управление при выполнении операции условного перехода.
3 - в эту ячейку заносятся результаты математических операций. Последняя ячейка области данных (ячейка 3000) называется стоп-ячейкой. При любом обращении к ней работа программы завершается.
Типы переменных
Существует два типа переменных: текстовый символ и число. Текстовый символ занимает один байт, число - четыре байта. Адрес занимает два байта но при хранении его в ячейке он интерпретируется как число. Переменные обратимы, при выполнении математических операций символы обрабатываются как числа из интервала 0 - 255.
Обращение к данным
Их три:
1. Напримую указать текстовый символ или число.
2. @адрес - обращение к данным по указанному адресу
3. #адрес - двойная ссылка. Обращение к данным по адресу, который указан в ячейке с адресом "адрес".
Команды
В языке всего шесть команд. Здесь и далее "данные" и "число" предусматривают возможность обращения к данным по любому из указанных 3-х типов обращения, о которых было сказано выше.
< адрес - Печать данных из ячейки памяти, заданной адресом
> адрес, данные - запись данных в память, заданную адресом. В качестве данных может выступать тексовая строка. В этом случае она автоматически разбивается на символы, которые заносятся в память начиная с указанного адреса и далее по возрастанию. Строка всегда заканчивается пустым символом (0x00), при записи одиночного символа этого не происходит. Вместо пробелов в строках используется символ "_".
+ число1, число2 - сложение двух чисел. Результат помещается в ячейку @3
* число1, число2 - умножение двух чисел. Результат помещается в ячейку @3
! число1, число2 - сравнение двух чисел.
Если число1 > число2 - управление передается на адрес, хранящийся в ячейке @1
Если число1 < число2 - управление передается на адрес, хранящийся в ячейке @2
При равенстве чисел выполняется следующая команда программы.
~ адрес1, адрес2 - копирование данных из ячейки "адрес1" в ячейку "адрес2".
' - комментарий. Он командой не является и не обрабатывается.
==================
А теперь первая задача:
Написать на этом чудо-языке классическую программу печати на экран "Hello world", желающие могут сразу попробовать вторую задачу: вывести на экран последовательность чисел Фибоначчи (суть этой последовательности - каждое следующее число равно сумме 2-х предыдущих)
P.S. "Интерпретатор" находится в стадии разработки, как напишу - выложу куда-нибудь
P.S.S. Принимаются идеи относительно того, как назвать этот язык
P.S.S. Самое удивительное, что чисто теоретически язык должен быть способен решить на компьютере любую задачу, если конечно не ограничивать память цифрой 3000!
Структура памяти
Вся область памяти, используемая языком разделена на две части:
на область данных и область программного кода. Область данных имеет интервал 0 - 3000, область программного кода 3001 - и в зависимости от обьема программы.
Ячейки памяти 0 - 3 имеют специальное назначение:
0 - в этой ячейке хранится номер текущей, выполняющейся команды. После выполнения команды значение этой ячейки увеличивается на еденицу
1, 2 - в этих ячейках хранятся номера команд, на которые передается управление при выполнении операции условного перехода.
3 - в эту ячейку заносятся результаты математических операций. Последняя ячейка области данных (ячейка 3000) называется стоп-ячейкой. При любом обращении к ней работа программы завершается.
Типы переменных
Существует два типа переменных: текстовый символ и число. Текстовый символ занимает один байт, число - четыре байта. Адрес занимает два байта но при хранении его в ячейке он интерпретируется как число. Переменные обратимы, при выполнении математических операций символы обрабатываются как числа из интервала 0 - 255.
Обращение к данным
Их три:
1. Напримую указать текстовый символ или число.
2. @адрес - обращение к данным по указанному адресу
3. #адрес - двойная ссылка. Обращение к данным по адресу, который указан в ячейке с адресом "адрес".
Команды
В языке всего шесть команд. Здесь и далее "данные" и "число" предусматривают возможность обращения к данным по любому из указанных 3-х типов обращения, о которых было сказано выше.
< адрес - Печать данных из ячейки памяти, заданной адресом
> адрес, данные - запись данных в память, заданную адресом. В качестве данных может выступать тексовая строка. В этом случае она автоматически разбивается на символы, которые заносятся в память начиная с указанного адреса и далее по возрастанию. Строка всегда заканчивается пустым символом (0x00), при записи одиночного символа этого не происходит. Вместо пробелов в строках используется символ "_".
+ число1, число2 - сложение двух чисел. Результат помещается в ячейку @3
* число1, число2 - умножение двух чисел. Результат помещается в ячейку @3
! число1, число2 - сравнение двух чисел.
Если число1 > число2 - управление передается на адрес, хранящийся в ячейке @1
Если число1 < число2 - управление передается на адрес, хранящийся в ячейке @2
При равенстве чисел выполняется следующая команда программы.
~ адрес1, адрес2 - копирование данных из ячейки "адрес1" в ячейку "адрес2".
' - комментарий. Он командой не является и не обрабатывается.
==================
А теперь первая задача:
Написать на этом чудо-языке классическую программу печати на экран "Hello world", желающие могут сразу попробовать вторую задачу: вывести на экран последовательность чисел Фибоначчи (суть этой последовательности - каждое следующее число равно сумме 2-х предыдущих)
P.S. "Интерпретатор" находится в стадии разработки, как напишу - выложу куда-нибудь

P.S.S. Принимаются идеи относительно того, как назвать этот язык

P.S.S. Самое удивительное, что чисто теоретически язык должен быть способен решить на компьютере любую задачу, если конечно не ограничивать память цифрой 3000!
Комментарий