Я имел опыт работы с языком Fift (это язык для TON блокчейна), который мало чем отличается от Forth. Так вот это было моим худшим опытом работы с новым языком программирования.
Во-первых, data flow через стек это просто ужасно. Мне много приходилось разбираться в чужом коде, если в обычных языках все данные кладутся в переменные - все наглядно, все можно отследить. То тут они лежат где-то в стеке, и каждая команда может изменить этот стек, поэтому приходится постоянно держать в уме что где лежит.
Во-вторых, (возможно актуально только для Fift) сложно отличить встроенные функции, функции из стандартной библиотеки и команды виртуальной машины. Непонятно, что сколько функция берет со стека, сколько кладет, приходится постоянно смотреть на ее реализацию. А их там сотни.
И неспроста. Внутри тела конструктора класса MapLattice произошло сокрытие нестатического поля с тем же именем, что и у параметра. И в этом фрагменте забыли явно указать this слева от оператора присваивания.
В который раз убеждаюсь: LLVM code style один из самых убогих и ненормальных. Как можно додуматься писать имена классов и всех переменных в одном стиле!
Я имел опыт работы с языком Fift (это язык для TON блокчейна), который мало чем отличается от Forth. Так вот это было моим худшим опытом работы с новым языком программирования.
Во-первых, data flow через стек это просто ужасно. Мне много приходилось разбираться в чужом коде, если в обычных языках все данные кладутся в переменные - все наглядно, все можно отследить. То тут они лежат где-то в стеке, и каждая команда может изменить этот стек, поэтому приходится постоянно держать в уме что где лежит.
Во-вторых, (возможно актуально только для Fift) сложно отличить встроенные функции, функции из стандартной библиотеки и команды виртуальной машины. Непонятно, что сколько функция берет со стека, сколько кладет, приходится постоянно смотреть на ее реализацию. А их там сотни.
В общем никому не советую :)
В который раз убеждаюсь: LLVM code style один из самых убогих и ненормальных. Как можно додуматься писать имена классов и всех переменных в одном стиле!