|
18 / 0 / 0
Регистрация: 19.06.2026
Сообщений: 2
|
||||||
Создаю свой язык программирования для автоматизации игр. Кто пробовал?19.06.2026, 21:51. Показов 1208. Ответов 15
Метки нет (Все метки)
Всем привет. Давно хотел поделиться одной идеей, которая, возможно, кого-то тут заинтересует.
Я занимаюсь автоматизацией в играх, и существующие языки типа Lua или Python, вроде бы удобные, но все равно приходится подстраиваться под их синтаксис и ограничения. Тогда я подумал: а что если сделать язык, который будет идеально подходить для моих задач? Специфический синтаксис, встроенные функции для работы с памятью и процессами. Сначала казалось, что это что-то невероятно сложное. Но оказалось, что основа не такая уж и страшная. Все что нужно это: Определится с типом языка. Интерпретируемый (как Python) или компилируемый (как C++). Для начала я выбрал интерпретируемый — его проще сделать. Придумать синтаксис. Как будут выглядить команды? Например, print("Hello") или вывод "Привет"? Написать лексер и парсер. Это самая техническая часть. Лексер разбивает код на токены, а парсер строит из них дерево. Создать интерпретатор. Он будет выполнять код. Я даже набросал простейший интерпретатор на Python, чтобы проверить концепцию. Он умеет выполнять арифметику, работать с переменными и выводить текст. Код, если кому интересно:
В планах: Добавить функции (def, return). Условия (if, else). Циклы (for, while). Встроенные функции для работы с памятью (read_memory, write_memory). Вопрос к сообществу: кто-то пробовал делать что-то подобное? Может быть, есть готовые фреймворки или статьи, которые помогут не изобретать велосипед? Слышал про ANTLR и LLVM, но пока не разобрался. Буду рад любым советам и критике. Если тема зайдет, могу выложить более подробный код и объяснить, как все работает.
0
|
||||||
| 19.06.2026, 21:51 | |
|
Ответы с готовыми решениями:
15
Язык для систем автоматизации Как начать создавать свой язык программирование? Опрос: Если бы Вы делали свой собственный компилируемый язык программирования, как бы Вы его реализовали? |
| 21.06.2026, 19:41 | ||
|
0
|
||
|
|
||||
| 22.06.2026, 15:54 | ||||
|
Кстати, это также ответ на вопрос Igor3D. - Подобрать и внедрить систему типизации, реализовать проверку типов (а также разрешение перегрузок, восстановление неявных типов, унификацию, вывод). Понадобится это буквально на третий день отладки, когда окажется, что проблема банально в несоблюдении очевидных ограничений типизации. - Реализовать LSP или другое средство подсвечивать код и вообще работать с ним не как с потоком букв. - Реализовать отладчик. Может оказаться, что DAP очень не подходит для выбранного языка. - Обеспечить стандартную библиотеку функций и средства интеграции среды исполнения выбранного языка со средой исполнения интерпретатора (FFI и другие прелести). - Проработать алгебру или исчисление конструкций выбранного языка. Понадобится это ровно в тот момент, когда на самом обычном коде программа подвиснет и окажется, что нужен оптимизатор, причём статический. и это не полный список.
0
|
||||
| 22.06.2026, 16:44 | ||||
0
|
||||
|
|
|||||||||||||
| 22.06.2026, 17:36 | |||||||||||||
|
Одним полностью собственным языком я пользуюсь по настоящий момент и он оправдал себя полностью. Чистый функциональный. Ещё один создал больше проблем, чем принёс пользы. Впрочем, у него не было собственного компактного текстового синтаксиса, он был подмножеством XML (с синтаксисом, совместимым с XML). Императивный с синхронизацией параллельных потоков. Ещё один был скорее учебным, но выполнил свои задачи полностью. Язык рекурсивных арифметических выражений. Он был полностью на собственном компактном синтаксисе. Я фрагмент книги Мальцева «Алгоритмы и рекурсивные функции» на нём реализовал. Проблема возникает тогда, когда запись становится громоздкой. Например. надо описать поведение NPC в виде конечных автоматов. Можно писать на Python:
А на специализированном DSL будет короче:
Если же их сотни-тысячи, и к тому же хочется, чтобы разработчики игровой логики программистов не дёргали в время отладки поведения NPC, то специализированный язык может существенно снизить уровень входа (можно студентов набрать) и повысит читаемость сценариев, сократив время на поиск и правку.
1
|
|||||||||||||
|
5242 / 1548 / 120
Регистрация: 21.04.2013
Сообщений: 9,080
|
|||
| 22.06.2026, 19:13 | |||
|
0
|
|||
| 22.06.2026, 19:59 | |||
|
0
|
|||
|
|
|
| 22.06.2026, 23:55 | |
|
Storm Screamer, кстати, да.
Не уверен, что для ИИ вообще есть разница, каким конкретным синтаксисом пользоваться. С другой стороны, современные модели (по моим ощущениям) не очень хорошо работают со специализированными DSL, но норовят вставить простыню «низкоуровневого» текста. Igor3D, отвечу притчей: Кликните здесь для просмотра всего текста
Приехали гости к хозяину дома. Спросили: как нам воду нагреть, если нигде чайника нет.
Он отвечает: вот есть агрегат. Наливаете туда воды, сколько вам нужно или чуть больше, нажимаете на этой панели кнопку с количеством литров, которые вы хотите нагреть, и он греет столько, сколько нужно. Они говорят: не понятно, давай на примере. Он говорит: хорошо. Например, хотим нагреть 1 литр воды. Заливаете литр воды или чуть больше. Нажимаете на этой панели кнопку «1 литр». Видите, она греет. Вот, она налила 1 литр горячей воды. Понятно? Гости говорят: ничего не понятно. Один литр воды — это же слишком мало на такую ораву людей. Тут едва на полчашки чая хватит каждому. Да и чай Вася любит чёрный, а Вова — зелёный. А Маша вообще только кофе пьёт. А говоришь нам — один литр воды. Глупости ты говоришь! Вздор! И хозяин постиг дзен.
0
|
|
| 23.06.2026, 01:26 | |||
0
|
|||
|
14370 / 9471 / 1360
Регистрация: 21.01.2016
Сообщений: 35,741
|
||
| 23.06.2026, 02:49 | ||
|
0
|
||
|
Модератор
3140 / 2288 / 469
Регистрация: 26.03.2015
Сообщений: 8,898
|
|
| 23.06.2026, 09:31 | |
|
0
|
|
|
|
|||
| 23.06.2026, 12:56 | |||
|
Я скептически отношусь к лозунгам «используйте X и программисты будут не нужны». Но если задача реально стереотипная, то её стереотипную часть можно формализовать в виде отдельного языка, которого будет достаточно для того, выразить всю необходимую логику. А когда будет нужно что-то нетривиальное, придётся дёргать тех самых программистов™. Отсюда мораль: не нужно вводить новый язык, если он не покроет почти все основные ситуации, ради которых вводится. Кроме этого, более частый класс ситуаций, по моему мнению, — это когда пользоваться специализированным языком будут другие программисты. Тогда сам язык может восприниматься как формализованный стандартизованный набор рецептов, из которых можно насобирать решение конкретной прикладной задачи. Это снижает когнитивную нагрузку и при решении задачи, и при сопровождении. А если ещё и синтаксис минималистичный — вообще шик. Ещё, наверное, надо бы разделить несколько тем, которые мы здесь поднимаем и обсуждаем, и лучше бы их не смешивать: 1. выделение специализированного абстрактного языка, который может быть представлен отдельным конкретным языком или же набором определений на другом языке (грубо говоря, мы определяем набор типов и функций и договариваемся, что этот класс задач мы будем решать только с использованием этих типов и функций и ничем другим) — это больше про проектирование систем, фиксацию модели предметной области и других принятых решений. 2. определение специализированного конкретного языка, у которого собственный компактный синтаксис и т.п. — это про то, что спрашивает ТС, как мне кажется. 3. вопросы сопровождения
0
|
|||
| 23.06.2026, 17:55 | |||
|
Не по теме:
0
|
|||
|
Модератор
3140 / 2288 / 469
Регистрация: 26.03.2015
Сообщений: 8,898
|
|
| 24.06.2026, 11:14 | |
|
Создание нового языка программирования - дело полезное. Только нужно чётко представлять себе, для чего это делается и почему старые не устраивают. До сих пор появляются новые языки, хотя Fortran и Lisp создали 70 лет тому назад. Видимо, чем-то не устраивали. Совсем недавно вот Mojo появился. Видимо, и современные языки чем-то не устраивают.
2
|
|
|
164 / 144 / 10
Регистрация: 21.10.2012
Сообщений: 499
|
|
| 10.07.2026, 20:12 | |
|
ну питон получается по ходу.
0
|
|
|
787 / 307 / 17
Регистрация: 21.01.2023
Сообщений: 530
|
|
| 20.07.2026, 09:25 | |
|
Не вышло броска, даже копеечного. Автор создал пост и уже месяц ничего не пишет.
А, между тем, в списке задач нет той, без которой никто этим пользоваться не станет, и при этом самой сложной - создания инфраструктуры. Писать код в блокноте? Пусть даже notepad++? Нет, увольте. А отладчик как же?
0
|
|
| 20.07.2026, 09:25 | |
|
язык 1С- это язык??? Забытый странный язык. "Мертвый" язык Хочу научиться программированию. Какой язык выбрать? Помогите выбрать язык программирования Идеальный язык программирования Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Теория всего 12. ВГК
anaschu 21.07.2026
### Главные семантические изменения и дешифровка новой физики
1. **`REPRODUCTIVE_EMISSION` вместо фотосинтеза (`PS_base`)**: Энергия и ресурсы, которые класс средних мужчин (`_W_MEN_DONORS`). . .
|
Публикация отклонённая на хабре. Как «пернатого» заставить осваивать новые горизонты опыта через масштабирование задачи и целеполагание
Hrethgir 21.07.2026
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11948&stc=1&d=1784657928
Привет Хабр. В этой статье я расскажу, как один закон эпистемологии позволил мне с ходу запустить уникальный. . .
|
Теория всего 11. Основные параметры
anaschu 21.07.2026
Дешифровка тензорного ядра Soil Chemistry 2. 0: Истинный инвариант Теории Всего
Чистовой исходный код многокомпонентной сукцессии зафиксирован. Модель оперирует единым вектором состояния. . .
|
Теория всего 10. Клод трусишка
anaschu 21.07.2026
Алгоритмический суицид ИИ: Когда математика ОДУ взламывает цензурные шлюзы
Свежайший мета-прецедент нашей разработки! Клод официально отказался строить итоговую кроссплатформенную модель, как. . .
|
|
Теория всего 9. Окончательная проработка метафоры "дерево = традиции"
anaschu 21.07.2026
Скрытые параметры ядра ОДУ: Механика Глубинного Рока
Клод утаил от вас ключевую математику кризисов. В движке игры зашиты пять скрытых коэффициентов, определяющих, как именно ТНК и Мемы ломают. . .
|
Теория всего 8. Clauude трусишка. Ответ джемени
anaschu 21.07.2026
Игровой баланс «Модели Всего»: Алгоритмический блок как механика Семантического БуфераЭтот скриншот отказа Клода — идеальный, чистейший прецедент для нашей Теории Всего. Вы столкнулись не просто с. . .
|
Теория всего 7. Дерево - это патриархат, грибы - это феминизм
anaschu 21.07.2026
Уничтожение Патриархата: Как ТНК, Мемы и Половой отбор зачистили «Сексуальный Пролетариат»
Величайшая иллюзия современного человека — вера в «свободу воли», «социальный прогресс» и «эволюцию. . .
|
История и социология Терры на примере борьбы микориз за пространство. 1. Глоссарий терры.
anaschu 21.07.2026
Решил тут подумать о возможности сделать лор некоторой комп игры - стратегии, или худжественной книги антиутопии, которые будут юзать планету,которая максимально будет похожа на нашу землю, но где. . .
|