PDA

Просмотр полной версии : Язык программирования СТЕПЛЕР



Kakos_nonos
13.03.2012, 15:28
Здравствуйте!
Хочу вам рассказать об одном интересном языке программирования - СТЕПЛЕР'е.

Итак, СТЕПЛЕР - Эзотерический стек-ориентированный компилируемо-интерпретируемый язык программирования. Но "эзотерический" не значит, что на нём ничего нельзя написать, на сайте можно найти множество примеров сложных программ, в том числе графических игр. Но также язык нельзя назвать практическим, поскольку у него достаточно интересная парадигма, и программирование на нём требует некоторых навыков.

Теперь давайте поговорим о самом языке - Автор этого языка - я (Да-да, я автор степлера). Придумал я его чуть более года назад и при создании ставились цели сделать минимальный язык с максимальными возможностями. Можно сказать, что идея удалась: Язык минимален (его полное описание занимает 2-3 страницы), а возможности его достаточно высоки. На нём можно написать практически любую программу. Вот, например, видео одной из них:

http://www.youtube.com/watch?v=FSsXNyWkKcc&feature=player_embedded

Основы программирования на языке я вам рассказывать не буду - для этого есть специальная литература. Я просто покажу вам пример программы: Это программа поиска простых чисел в диапазоне, вводящимся с клавиатуры:

Program
[Prime number Founder 2.0]
[From]
$(6)(2$^1-)
[To]
$(7)(2$)
{next}
$(6)(6$^1+)
$(5)(6$@)
$(4)(1)
{nl}
$(4)(4$^1+)
#(6$^4$%)<l>
#(4$^5$-|)<nl>
$(2)(6$)
{l}
#(6$^7$-|)<next>

Язык поддерживает процедуры, локальные переменные, работу с прерываниями, прямую пересылку памяти и многое другое.

На данный момент существует два интерпретатора языка, и один компилятор.
Но совсем недавно я начал разработку компилятора степлера, генерирующего код для процессора Intel 8080. Тоесть, можно будет на нём писать программы для спектрума, Рк, Ориона и других ретро-компьютеров. Это будет достаточно хорошо, так как степлер - маленький язык, и соответственно он должен быть реализован для маленьких компьютеров.

Давайте здесь пообсуждаем (Или пофлеймим) по поводу этого языка. Может у кого-то найдётся предложение, критика или ещё что-то. Давайте здесь обсуждать. А вот ссылки:

http://stapler.3dn.ru - офицальный сайт
http://iforum.su/stepler-76 - раздел на форуме, посвящённый степлеру.
http://kabardcomp.narod.ru/st2.pdf - большая (175 стр) книга о степлере. Описаны все самые маленькие детали.
http://stapler.3dn.ru/publ/jazyk_programmirovanija_stepler/1-1-0-1 - статья о степлере.

vinxru
13.03.2012, 16:04
На Перл похоже :)

Andrew771
13.03.2012, 16:07
Блин, я думал это прикол. А это на самом деле :)

vinxru
13.03.2012, 16:10
10 INPUT S, E
20 FOR X=S TO E
30 FOR Y=2 TO X-1
40 IF X MOD Y = 0 THEN GOTO 80
60 NEXT
70 PRINT X
80 NEXT

jerri
13.03.2012, 16:27
MetaL Кладова напоминает :)

ZEK
13.03.2012, 16:41
Книга написана занимательно

Kakos_nonos
13.03.2012, 16:56
Есть некоторые моменты, которые на степлере удобнее программировать чем на других языках. Например, вот программка:

$(2)(1$^1$^2$")

Что она делает? Она просит ввести с клавиатуры два числа, потом знак действия (+,-,*,/), а потом она выполняет это действие над этими числами. Например, вводим:
45 21 +
на экране - 66 (сумма)

Также, есть такой момент как модификация чисел (Этому посвящён целы раздел книге)
Что он позволяет делать:

$(2)(3$^4-|^85*^5$^7-|^4$*+)

Аналог на бейсике:

IF M(3)=4 THEN PRINT 85
IF M(5)=7 THEN PRINT M(4)

Вот такие вот вещи.:)

[quote]
Книга написана занимательно
[/qoute]
Можете почитать мою первую книгу: http://kabardcomp.narod.ru
Она не такая полная, но доставляет ещё сильней :)

ZEK
13.03.2012, 17:03
Тут http://kabardcomp.narod.ru/st2.pdf на 18 странице


Это работает так: Вначале считается сумма 24 и 8, потом
это умножается на 8 и потом в стек поднимаются 2 и 3, и
это всѐ прибавляются к тому произведению

опечатка, красное должно быть 7

doorsfan
13.03.2012, 18:03
расскажите непосвященному, чем от форта отличается?

Kakos_nonos
13.03.2012, 18:15
doorsfan, Форт - полностью стек-ориентированный, а степлер не полностью. Главной командой в нём является команда присваивания. Остальные команды на ней базируются (ввод/вывод, арифметика.)
Например: в пятую ячейку поместить сумму седьмой ячейки и восьмой. Запишем так:

$(5)(7$^8$+)

Для ввода/вывода зарезервированы две первые ячейки.

ZEK, Спасибо за багрепорт, исправлю.

Также, надо отметить, что существующий компилятор степлера для DOS генерирует очень компактные и быстрые файлы. Программа поиска простых чисел компилируется в .сом файл размером 900 байт и находит простые числа от 2 до 32000 за долю секунды. Игра FlyG, которая на видео, имеет размер 9 кб. Это достаточно хорошее свойство, оно пригодиться при написании компилятора степлера в i8080.

ZEK
13.03.2012, 18:18
пригодиться при написании компилятора степлера в i8080
А компилятор степлера будет написан на степлере? :) хороший тест языка.

doorsfan
13.03.2012, 18:21
квадратную скобку имеет смысл экранировать как в сях /

Kakos_nonos
13.03.2012, 18:51
А компилятор степлера будет написан на степлере? :) хороший тест языка.
Нет, компилятор будет написан на паскале. На степлере написан компилятор Brainfuck и эмулятор chip-8.

kovdry
26.12.2012, 12:46
Прочитал тему и книгу с описанием. Так и не понял назначение языка СТЕПЛЕР.
Право на жизнь имеет только тот язык, который реализует некоторые особенности, отсутствующие в других существующих языках. Эти особенности должны с лихвой компенсировать трудности связанные с изучением этого языка и его особенностей.
Судя по описанию, автор хотел создать простой язык, оперирующий с простыми целыми числами. Для этого есть Бейсик. А если Вы изучите Ассемблер вместо Бейсика или СТЕПЛЕРа, то получите еще и бонус: узнаете как работает процессор (8080 или 8086).

Хорошей рекламой языка была бы навороченная практичная программа. А то что Ваша программка на СТЕПЛЕРе, умножающая 2 на 2, весит на столько то килобайт меньше чем аналогичная программка на С, так кому это интересно?


Kakos_nonos, у Вас есть опыт программирования на Радио-86РК?
Есть подозрение, что интерпритатор СТЕПЛЕРа для Радио-86РК будет весить 6 - 8 кБ, как Бейсик или Форт.

jemmini
26.12.2012, 15:41
молодец автор, похвально...

только все эти крючки/скобочки/апострофы трудночитаемы.. чего бы не сделать буквенное написание операторов? букв, чтобы на экран вывести ведь не жалко. хотя, может это лишь на первый взгляд... :)

Reobne
29.12.2014, 09:47
Читаю книжку (http://zx-pk.ru/showpost.php?p=766020&postcount=86).
Интересная, спасибо!
Есть небольшие непонятки, можно-ли оператор кавычки считать, в полном смысле, веализующим возможность самомодификации. И что будет если на вершине стека лежит -1, например.
Дочитал до:(красное убрать, зелёное добавить)
оскольку
степлер не может отобразить числа более 327687,
программа будет работать вот так: 1, 2, 3, 4, …, 32766,
32767, -32768, -32767, -32766, …, -3, -2, -1, 0, 1, 2, 3, и
так по кругу.

denpopov
29.12.2014, 09:56
На степлере написан компилятор Brainfuck и эмулятор chip-8.

Как насчет Malbolge?