Вы написали свой собственный эзотерический (или нет) язык?Как это выглядело?
-
19-09-2019 - |
Вопрос
Я видел несколько вопросов относительно любимых эзотерических (или нет) языков программирования пользователей stackoverflow.Также есть вопросы по реализации языков.Однако мне было любопытно узнать, написал ли кто-нибудь из вас свой собственный язык программирования (будь то эзотерический или нет), а также мне хотелось узнать, как он выглядит.
Мне нравится читать и изучать новые и изобретательные языки, поэтому я подумал, что было бы неплохо посмотреть, что может предложить сообщество stackoverflow.:)
я написал один ради развлечения несколько лет назад.
Решение
Я написал набор из 7 «микро» языков для обучения.Каждый из них предназначен для иллюстрации ключевых идей одного из следующих полных языков программирования:
- нетипизированная версия C
- Схема
- С
- Система Ф
- МЛ
- Болтовня
- Пролог
Языки намеренно очень похожи друг на друга, так что учащиеся видят только существенные различия, а не необоснованные.Я хочу сделать еще два на основе Haskell и CLU.
Сэм Камин у него была оригинальная идея, и он очень помог с дизайном.
Другие советы
А опкоды моих питонических бактерий, конечно
Я время от времени работал над DIFL, который задумывался как декларативный язык текстовых приключений, но со временем стал менее декларативным.Его основными особенностями являются очень свободная система объектов и система действий, основанная на мультиметодах.(Ну, его основные особенности будут, если я когда-нибудь его закончу.)
Одним из первых языков, которые я попробовал написать, был ассемблер для MIDI-файлов.Вы должны определить темп и банк инструментов, а затем множество строк нот (название ноты, начальную долю текущего такта, продолжительность, дополнительный акцент), перемежающихся тактовыми линиями («meas ») и динамика (ппп,пп,п,мп,мф,ф,фф,фф).
Его было невозможно использовать без языка макросов для повторения последовательностей, переключения каналов и наложения новых треков.Для этого потребовалась моя первая хеш-таблица и хитрый вызов qsort для чередования каналов по временной последовательности (неявно переносимой каждым событием Note-On/Note-Off).
Когда я вернулся к нему год спустя, он стал жертвой гниения.После немалых усилий я заново обнаружил, что функция сортировки и вывода всего запускается явным кодом EOF.Расширенная макросом песня легко могла содержать 20 000 строк, и поэтому эта решающая строка EOF имела 1/20 000 шанса быть обнаруженной при попытке выяснить, что, черт возьми, происходит не так!
Я несколько рад, что все улики надежно спрятаны в неработающем процессоре под тележкой с микроволновой печью.Ужасы!!
Редактировать: При дальнейшем размышлении можно обнаружить некоторые интересные особенности формата MIDI.Он имеет целочисленный тип переменной длины (IIRC использует знаковый бит для обозначения последнего байта).Он байт-ориентирован и предназначен для работы по 9 параллельным проводам;и там есть какая-то сумасшедшая штука с синхронизацией времени, которую я никогда не понимал.Но все, что меня заботило, это то, чтобы медиаплеер Windows95 мог интерпретировать вывод (он мог даже использовать 8-битный банк тонов General MIDI, встроенный в звуковую карту;цимбалы были великолепно искажены).