Это чтобы получить:
а) более-менее полноценную возможность писать скрипты для маленьких устройств, одновременно ещё и командную строку как бы нахаляву;
б) максимальную отвязку от "железной" части, одновременно с этим имея полный над ней контроль (т.е., например, не писать обработчик прерывания на приём байта по последовательному порту, а иметь в программе обработчик соответствующего СОБЫТИЯ);
в) ??????
г) скилл Крутизна +5.
Дабы экономить ресурсы (чтоб не терять драгоценные такты на интертрепацию), код сначала компилится в некий промежуточный байт-код, максимально компактный, и уже потом исполняется.
Конечно, определёная потеря в производительности есть, это неизбежно из-за оверхэда. На критических участках без нормального программирования не обойтись, но во многих иных случаях максимальная производительность не нужна, хватит и просто большой (а если какой-нибудь пользовательский интерфейс писать, так там вообще незаметно, чтоб что-то тормозило - человек всё равно медленнее).
Уже работают условные переходы, циклы, вызовы функций. Думаю вот, делать отдельно от "функций" ещё и "процедуры" (отличающиеся лишь отсутствием возвращаемого значения) или ну его нафиг.
P.S. попутно обнаружилось нечто странное: оказывается, 1 поделить на 2 будет не 0.5, а 0.500000001495465973, но если это умножить на 2, то снова получается 1. Нипанятна.