вдогон |
[Dec. 4th, 2017|12:00 pm] |
если быть совсем уж точным, то UFCS, конечно, можно сделать и без static typing (но это будет хак в VM, потому что обычно в языках с динамической типизацией поля объекта разрешается создавать налету). а вот виртуальная машина для statically typed code — значительно проще и быстрее. потому, очевидно, что все проверки типов можно сделать во время компиляции, и генерировать простой тупой код, который больше не пытается валидировать данные (кроме деления на ноль, увы). так что при прочих равных statically typed по скорости завсегда выиграет.
а на чём удобней говноскриптить — вопрос скорее метафизический. потому что для мелкого кода относительно пофигу, а для большого статика удобней (если есть нормальные шаблоны). |
|
|
Comments: |
From: | (Anonymous) |
Date: | December 6th, 2017 - 11:35 am |
---|
| | | (Link) |
|
вопрос странный, но тем не менее 1) зачем вообще этот скриптовый движок и что он умеет лучше ди? почему не писать сразу на ди? 2) зачем каждый раз писать примерно один и тот же скриптовый движок, который умеет примерно в некторое подмножество ди? вот я понимаю был бы лисп, с дээсэле на дээсэле, или пролог какой-нибудь, а тут читаю и не врубаюсь
From: | (Anonymous) |
Date: | December 6th, 2017 - 11:36 am |
---|
| | | (Link) |
|
* с дээсэлем
![[User Picture]](http://lj.rossia.org/userpic/197531/22349) | From: | ketmar |
Date: | December 6th, 2017 - 11:46 am |
---|
| | | (Link) |
|
1. затем же, примерно, зачем обычно в игры скриптовые движки и монтируют: чтобы менять логику без перекомпиляции бинаря. и даже без перезапуска игры.
2. лисп у меня тоже есть, поищи тут где‐то пониже. но мне лениво переключать мозг между лиспом и дишечкой, поэтому я часто делаю свои скриптовые языки подмножеством дишечки. поскольку я параллельно обычно пилю и движок, и скрипты — так тупо удобней.
расширеный ответ на «1»: потому что мне захотелось напилить компилятор без AST. у меня есть на него некие смутные будущие планы. но пилить его в пустоту, с надеждой на материализацию будущих планов — неудобно. как минимум, он не обкатается в «обстановке, приближеной к боевой». а поскольку из более‐менее завершённых проектов, куда его можно впихнуть, под рукой оказался кнайтмар — то и впихую в кнайтмар.
tl;dr: есть Планы На Двигатель Такого Типа. пока в слова не очень оформляемые (скорее всего, я потом разберу двигатель на части, и соберу из них чуть‐чуть другой). но для двигателя нужен testbed, поэтому взял что под рукой было. тестить его на игровых скриптах интересней, чем писать просто некие абстрактные тесты компилятора. | |