«Once in the city of JavaScript an old samurai was playing shōgi thinking that he is playing poker. The outcome of the game was undefined.»
Итог работы разума немного предсказуем.
Да, у них там все по хардкору. Я и сам не все понял, честно говоря.
Если я правильно понял, у них там примерно следующее: компонентная архитектура без изоляции компонентов ради снижения runtime costs и эффективной командной разработки. Вся кодобаза на плюсах, никаких скриптов.
Entity из компонентов клеятся как раз шаблонами, особое внимание уделено интересным случаям, когда, например, в одной из веток условия может быть вызван метод компонента, которого может и не быть. Очень грубый пример:
template class IRenderObject { void SetColor( Color ); };
template class IPhysiscObject { void OnCollide ( void ) { if (Is(RenderObject) && Is(Ball)) Access(RenderObject)->SetColor(RED); };
class CInvisibleBall: public IPhysiscObject, public IGameObject {};
Или что-то вроде того. Формально, компилятор должен сказать «да вы там офигели вконец?», но фактически он этого не делает, потому что dead code elimination или как-то так.
Выглядит это все очень брутально, но впечатления оставляет очень заманчивые.
Если вам хочется почитать код на э-ге — смотрите в erlyvideo/flussonic, rabbitmq, riak, couchdb, ejabberd(не уверен, про него разное говорят). Это все готовые продукты, которые работают и, что немаловажно, приносят своим создателям деньги.
Вообще, изначально было постулировано, что только STM спасет мир. BEAM был контрпримером. Про язык речи вообще не шло.
Кстати, хоть VM и накладывает свой отпечаток, не все так страшно. В эрланге можно иметь shared mutable state, хоть это и будет выглядеть весьма отлично от других языков. Кстати, где это будет дороже по производительности — тоже под вопросом. В конце концов, никто не запрещает разработать другой язык под BEAM, где будут изменяемые переменные и array
Полагаю, STM несколько сложнее в реализации. Черт его знает, на самом деле.
Алсо, не смог найти актуальной информации по теме. Этот форк вообще существует?
Надо заметить, что в нем есть одна фича, которую стоит взять на заметку разработчикам Sublime Text(читай: быстро, решительно позаимствовать =). Inlines, на основе которых можно изобразить очень занятные вещи.
Итог работы разума немного предсказуем.
Если я правильно понял, у них там примерно следующее: компонентная архитектура без изоляции компонентов ради снижения runtime costs и эффективной командной разработки. Вся кодобаза на плюсах, никаких скриптов.
Entity из компонентов клеятся как раз шаблонами, особое внимание уделено интересным случаям, когда, например, в одной из веток условия может быть вызван метод компонента, которого может и не быть. Очень грубый пример:
template class IRenderObject { void SetColor( Color ); };
template class IPhysiscObject { void OnCollide ( void ) { if (Is(RenderObject) && Is(Ball)) Access(RenderObject)->SetColor(RED); };
class CInvisibleBall: public IPhysiscObject, public IGameObject {};
Или что-то вроде того. Формально, компилятор должен сказать «да вы там офигели вконец?», но фактически он этого не делает, потому что dead code elimination или как-то так.
Выглядит это все очень брутально, но впечатления оставляет очень заманчивые.
С сайта(http://rubini.us/2013/10/04/rubinius-2-0-released/): «The generational garbage collector».
Generational.
Обобщенный.
Прекрасно, продолжайте в том же духе.
Да ладно, будто поиграть не во что.
>> все входящие значения разные
Не сможет.
Ну так. Люди под х86 компиляторы пишут, и ничего. А тут все же VM.
Кстати, хоть VM и накладывает свой отпечаток, не все так страшно. В эрланге можно иметь shared mutable state, хоть это и будет выглядеть весьма отлично от других языков. Кстати, где это будет дороже по производительности — тоже под вопросом. В конце концов, никто не запрещает разработать другой язык под BEAM, где будут изменяемые переменные и array
Алсо, не смог найти актуальной информации по теме. Этот форк вообще существует?