-
Не получилось сразу обновить. Сейчас только обновил.
-
так много полезностей (судя по таблице), мне кажется сложно все это будет реализовать...
зы. имхо конечно
-
Сложно потому только что я лично не писал до сих пор полных компиляторов с полных ЯВУ, в основном ассемблерами баловался (правда, один раз в молодости месяца за 3 получился рабочий компилятор с подмножества С в П-код, но это можно объяснить только невероятной наглостью: я же не знал что это так сложно). А так, в принципе, ничего сверх-сложного. Вполне сравнимо с Паскалем и наверняка проще С++. Пока пишу синтаксический анализатор. Даже 4 нотации не так сложны, как можно было бы подумать. Сейчас впереди вижу одну больую сложность: надо как-то реализовывать вычисление константных функций на этапе компиляции, т.е. фактически как бы компилировать код, вызывать его на выполнение, и результат использовать всё ещё в компиляторе. Получается, что эта часть компилятора - сама платформо-зависимая (код ведь должен быть выполнимым на той же платформе где запущен сам компилятор). Для полной платформо-независимости можно сделать свой П-код, специально для этого этапа, и эмулятор П-машины. Это если что.
-
И хотя я уже к Дельфям не прикасаюсь чаще раза в пол года, стараюсь иногда заглядывать сюда по старой памяти. Владимир, я просто восхищен вашим трудолюбием и количеством наработок! Моё уважение. Желаю успехов в ваших начинаниях! )
-
Выброси константные функции и всего то делов. В простом языке это не надо. Надо будет заведу переменную и вычислю.
-
Нет, не выброшу. Это можно сказать треть всех инноваций. Кстати, я язык переименовал. Хоть я и стремился сделать как можно проще (и надеюсь, что это вышло почти), надёжность дороже. Константные функции дают очень много, в том числе для надёжности. Ведь вычисление происходит (в случае константного аргумента) - во время компиляции, а не во время выполнения Недостаток времени выполнения в том, что до вычисления, при котором всё ломается, во время тестирования, может и не дойти. А если константа - вычислится всегда.
-
Обновил. Добавилась параметризация модуля. Одной числовой константой всего, но лчно мне хватит.
-
Владимир!! Успехов! Очень долго читал, и пока только общие впечатления - настоящая поэма! Правда основание слишком широкое - мультиплатформенность при всех заявленых опциях... Огромное количество библиотек для разных процессоров, отладка на виртуальной машине(ах)... Библиотеки под разные ОС... По сравнению с этим KOL - это совсем небольшой проект. Вместе с тем, очень надеюсь, что появится первая реализация, которую можно будет поторогать руками. Завтра продолжу читать, а то у нас тут уже семь утра...
-
Здравствуйте, Владимир. Как успехи на поприще разработки нового языка программирования ?
-
У современного поколения программистов отсутствие необходимости объявлять переменные способно вызвать страх уровня фобии. То есть как я понял оператора with тоже не будет? Не скажется ли такой подход на читаемости кода для случая если используются сложные вложенные структуры?
-
with способен только запутать, но никак не упростить. Кто видел, тот знает.
-
все хорошо в меру, но его отсутствие сделает синтаксис для такой замечательной возможности ООП как инкапсуляция громоздким... Может быть ввести некоторые ограничения и особую фому записи? Например сделать невозможность вложенности этого оператора, а внутри его тела использовать специальную форму доступа с полям допустим что-то в духе:
LongLongTitle = object
field1,
field2,
и т.д.
и обращение
with LongLongTitle do
begin
.field1 = .field2
.field2 = myvariable
end;
т.е. не создавать оператором "область видимости" для переменных а дать возможность программисту делать сокращенную запись.
-
Сокращать запись - себе дороже. Программу пишут один раз, а исправляют и подправляют, да и читают просто - десятки и сотни раз. Ну и зачем себе сложности устраивать? Посмотрите, как код пишется в C# - все пишется полностью и без никаких with. При этом при наборе текста чаще всего достаточно вообще одну буквц набрать, и наиболее подходящее имя высвечивается туту же, остаётся только enter нажать. Куда уже короче?
Смысл не в самой короткой записи, а в самом надёжном коде (и при том достаточно эффективном - хотя бы за счёт константых функций, т.е. выполнении на этапе компиляции значительной части проверок), я так понимаю. Вот этот фокус со вставкой строк на языках SQL и прочая - ни в каком C# даже близко не лежало. Может, там что другое предлагается, но я пока не нашёл, хотя немножко программировать на нём попробовал.
-
Я ещё посмотрел (спустя полгода), и в отличие от предыдущих набросков, изменений практически нет. Единственное, что надо бы выкинуть слово PUBLIC (всё публичное по умолчанию), и оставить HIDDEN, и писать его всё-таки перед каждым объявлением чего-либо скрытого. И вернуться к варианту, когда легальный доступ к скрытому идёт через составное имя HIDDEN. Типа MyObject.HIDDEN.Field1. Немножко меняется IMPORT, всё остальное пока так же. Еще есть смысл для конкатенации строк использовать оператор ',', а не ||. Или как вариант, или всегда. А так - в общем мне самому понравилось. Специально надолго отложить, чтобы самому этот сумбур попытаться воспринять как с листа.
А делать можно именно как компилятор в код на паскале, Си, С# - без особой разницы. Для большей скорости отладки можно делать паскаль-код, и подсовывать его Delphi-компилятору, а для конечной сборки делать выход, к примеру, на Си. Компилятор, который сразу делает маш-код - не самоцель. В общем, это явзык высокого уровня следующего порядка высокости, после Си или Паскаля, можно даже считать его case-средством.
|