Так как текстовые языки надежно закрепились в умах нынешних программистов, я решил продумать идеальный текстовый язык для тех кто не захочет переходить на графику.
И так, для начала нужно выбрать хороший язык для основы, смысл делать велосипед? Раньше хорошим выбором был бы С, на нем как раз базируются многие успешные языки, но так как уже появился и получил популярность С++, у которого возможностей больше, нужно взять его! Можно конечно взять и С, для прототипа...
И так, какие проблемы имеются у С++? Ограниченность, Qt даже пришлось делать свой MOC, поэтому нужна расширяемость! А у кого лучшая расширяемость? Многие борщехлебы скажут что у Lisp'a, но это не так, он ограничен своими списками, а вот Forth нет, он ограничен разве что платформой на которой был запущен.
А какие проблемы есть у Forth? Это очень низкоуровневый язык, еще например в нем нет структур, их можно реализовать самому, но каждый реализует свои структуры которые не совместимы с другими! А даже если совместимы, нельзя улучшить ВСЕ структуры в Forth сразу, добавить им выравнивание к примеру, нужно улучшать каждую библиотеку по отдельности... Ужас.
Как же решить проблему Forth? А она сама решится, так как у нас будет база в виде C++ или C! Надо только дать удобный интерфейс ко всему этому, что бы можно было просто взять и пройти по полям структуры, добавить свои конструкции, юзать свои лексеры-парсеры... Тот же Forth, тольео вместо слов будут функции! Так же нужно обязательно взять идею с «одновременно компилятор и интерпретатор», многие удивятся, а зачем интерпретатор? Все просто, он нужен для расширяемости, что бы во время компиляции использовался код MegaTXTprog, а не какого нибудь препроцессора, как в Rust'овых макросах. Потом уже интерпретатор и всю ненужную среду можно будет выкинуть, главное что бы интерпретируемый код все настроил и расширил во время компиляции... Причем выкидывание нужно сделать опциональным, а вдруг понадобится eval? Его даже не нужно будет как то сложно реализовывать, Forth нам его подарит...
Жду такой язык уже джва года.
Домашнее задание:
- Реализовать вычисление SEXP выражений на Forth для лучшего понимания сути языка.
- Поиграться с Factor, попробовать собрать минимальную программу без среды.
- Узнать что есть у конкурентов https://docs.racket-lang.org/guide/languages.html