1. Файл с полными картинками и переводом в приложении
http://cliffle.com/esoterica/4dl.html - краткое изложение-перевод на русский:
Большинство компьютерных языков программирования одно-мерные. Т.е вы стартуете из Точки А(начало программы) и попросту идете вниз страницы с кодом, совершая операции по очереди. Естественно, вы можете пропустить немногочисленные операции иногда в промежутке времени, но вы еще совершаете операции в одно-мерном понятии.
В 1993 году Chris Pressey(недавно псих оператор Esolang(сокращение от изотерического языка программирования – Прим. переводчика) перечня) удостоил миру Befunge, впервые в мире(по моим знаниям) двумерный язык программирования. В Befunge, ваш код раскладывается по странице, и его выполнение может перещаться во всех направлениях сквозь страницу. Это прообраз программирования к истинному визуализированию процессов.
Но два измерения совсем не было для меня достаточно. Таким образом, я создал 4DL, впервые в мире (и я могу сказать это с некоторой уверенностью) четырех-мерный язык программирования. Для чего, вы спросите? Хорошо, я знаю как много беспокойств имеет большинство людей думая визуально в трехмерном пространстве (или даже в двумерном пространстве). 4DL язык превращает программирование в не только визуальную задачу, но и учение в визуализации более высокого порядка мерности пространства – который каждый делает их в свободное время, правильно?
Введение в четырехмерное представление.
В то время как мы пишем код в четырех измерениях, может казаться это чуточку запутанным, в действительности это не так. Я проведу тебя сквозь это. Во-первых, мы имеем одну-мерную сетку размером 3:
Достаточно просто. Как вы можете видеть, эта одномерная сетка имеет только одну ось, которую мы назовем Х. Вы можете быть в Х=0, Х=1, Х=2.
Теперь рассмотрим дву-мерную сетку, размером 3х3:
Снова, довольно таки просто. Мы просто добавили Y, таким образом координаты нам знакомы (X, Y), которые мы изучали в школе. Теперь, как мы расширим это до трех-мерного, Z? Мы работаем на дву-мерной поверхности здесь – ваш монитор. Таким образом, я буду делить на части трех-мерный куб сверху. Вот разделенный на части куб, размером 3х3х3:
Каждая из этих частей отображает положение на оси Z – 0, 1, и 2, от верхушки до основания. Каждая из которых имеет свои собственные X и Y координаты, таким образом (1, 2) на вернем разрезе и (1, 2) на промежуточном срезе – это в нашем случае (1, 2, 0) и (1, 2, 1) – различны.(Эти две локации обозначены звездочками на рис выше). Примечательно то, что они смежные. Они только в одном шаге друг от друга, несмотря на что они в шаге по оси Z, и они выглядят далеко на вашем двухмерном мониторе. Таким образом перемещение на один шаг по оси Z, показывает перемещение на разрезе ниже, но остается на той же координате (X, Y).
Я надеюсь, я объяснил это достаточно хорошо, потому что мы будем нуждаться в этом сейчас. Потому, что я собираюсь взять куб и представить его в четырех-мерном пространстве. Эта новая ось называется T, и вы можете думать об этом как «время», если хотите(хотя в 4DL мы можем свободно перемещаться вдоль него). Таким образом разрезы вдоль T, можно рассматривать 3D-кубу, показанному выше, но в разные моменты времени. Вот результирующее изображение, с мерностью 3х3х3х3(x, y, z, и T):
Я по-прежнему отметил (1, 2) в разрезах, но теперь я отметил (1,2) в срезах вдоль оси T, исключая ось Z ( координаты (1,2,0,0), (1,2,0,1), и (1,2,0,2), соответственно). Таким образом перемещаясь вперед с шагом в T, показано перемещение вправо на один срез, но сохраняя те же координаты (X,Y) внутри среза. Таким образом, все звезды, приведенные выше, являются смежными.
На этом завершается наш ускоренный курс мышления в четырех измерениях. Если все еще немного туманно, то это может быть. Люди никогда не были разработаны, чтобы рассуждать в трех измерениях, и так как мы живем только в трех измерениях, пытаясь справиться с четырьмя или более измерениями, которые реально крутят наши мозги вокруг. Именно по этому я разработал 4DL. Если вы разрабатываете даже самое тривиальное применение в 4DL, Вы получаете мгновенно безопасность работы, если не программист, который следует за вами, был когда-то физик-теоретик.
Язык 4DL.
4DL - это очень простой язык, основанный вокруг стека байтов. Все операторы одиночные ASCII символы, появляющиеся в четырехмерной сетке произвольного размера.( Размер по каждому измерению должен быть по крайней мере один.)
В большинстве языков, указатель команд всегда движется в одинаковом направлении. В 4DL, инструкцией указателя-потока исполнения – можно управлять по любой оси. Выполнение начинается с команд (0,0,0,0) , двигаясь в положительном направлении вдоль оси Х (то есть вправо в срезе). Это направление называется ниже как X +. Полный набор направлений включает в себя X+, X-, Y+, Y-, Z+, Z-, T+, и T- - то есть перемещение "вперед" или "назад" по любой оси.
4DL имеет очень небольшой набор команд. Если какой-либо символ, не в этом списке встречается во время исполнения, ничего не происходит. Это позволяет выполнять «пройти через» соответствующие данные на своем пути к следующей инструкции.
Вот как выглядит система команд, предложенная автором:
X Повернуть указатель на команду в направлении X+
x Повернуть указатель на команду в направлении X-
Y Повернуть указатель на команду в направлении Y+
y Повернуть указатель на команду в направлении Y-
Z Повернуть указатель на команду в направлении Z+
z Повернуть указатель на команду в направлении Z-
T Повернуть указатель на команду в направлении T+
t Повернуть указатель на команду в направлении T-
P Положить на стек символ из соседней клетки со стороны X+
p Положить на стек символ из соседней клетки со стороны X-
B Положить на стек символ из соседней клетки со стороны Y+
b Положить на стек символ из соседней клетки со стороны Y-
D Положить на стек символ из соседней клетки со стороны Z+
d Положить на стек символ из соседней клетки со стороны Z-
Q Положить на стек символ из соседней клетки со стороны T+
q Положить на стек символ из соседней клетки со стороны T-
+ Взять сумму двух чисел на вершине стека, положить результат на стек
— Взять разность двух чисел на вершине стека, положить результат на стек
, Ввести символ с клавиатуры и положить его на стек
. Снять символ с вершины стека и вывести на экран
# Перепрыгнуть через следующую клетку программы
? Снять число с вершины стека, и если оно ненулевое, то перепрыгнуть через следующую клетку программы
0 Положить на стек число 0
2 Положить на стек копию числа на его вершине
% Закончить выполнение программы
Конечно, это моя обязанность, как Language Master, чтобы привести примеры. Эта 4х4х4х2 программа, которая отображает квинтэссенцию "Hello, world! "
4DL_sbor_informatsii.docx = как и говорил файл прилагается