Выпуск E8::Script

Ура! Есть, что пощупать!

Около двух мѣсяцев не написал почти ни строчки кода (помимо исправленія страшных ошибок) — занимался настройкой сборки на Дженкинсе. Пока что настроил сборку только под винду, вот ссылки:
Win 32
Win 64

В наборѣ: редактор на основѣ Geany 1.25, движок E8 версіи 0.3, модули OLE, SQlite, XML, Yaml, Postgresql.

Сдѣлаю сборку под никсы, допилю описанія к модулям и будет уже толковое издѣліе.


Ура! Отнынѣ я снова на родной Убунтѣ! Год существованія под виндой закончен!

Состоялся запуск версіи 0.3. Движок на чистом Си, библіотеки на C/C++. Два дня полёт нормальный.
Готовлю схему ночной сборки.

Пилю под себя проект cbp2make.

Перенёс среду исполненія E8::Script на чистый «C». Отлаживаю, переношу стандартную библіотеку.

Занимательная статья на Хабрѣ: http://habrahabr.ru/post/130362/. Как-раз для тѣх, кто разрабатывает свои языки программированія. То есть, для меня :). Прочитал, усвоил кое-что — буду использовать в дальнейшей разработкѣ E8.
Попутно: перенёс транслятор на чистый C, переношу среду исполненія. Посматриваю в сторону теснаго взаимодѣствія с GLib.

Программированіе бѣз исключеній

Всё-таки исключенія — огромный шаг в развитіи языков программированія! Исключенія позволяют правильно выстраивать суть программы. Бѣз исключеній код превращается в многословный ассемблер. Вот кусок кода после переноса движка E8::Script с C++ на чистый C:

[code lang=»c»]
/* … */

if (( __err = tr_expect_keyword(d, kwDo) ))
return __err;

if (( __err = tr_parse_command_block(d) ))
return __err;

if (( __err = tr_expect_keyword(d, kwEndDo) ))
return __err;

/* … */
[/code]

Жуть! С другой стороны, представьте, что подобными дѣлами занимается и компилятор — тучи громоздкаго кода и паденіе производительности. Именно поэтому необходимо в процедурах C++ указывать throw() — чтобы дать компилятору установку не оборачивать вызов процедуры в ненужную оболочку.


Переписываю транслятор с C++ на чистый C и постоянно возникает ощущеніе, что я занимаюсь ручной компиляціей! Правы были умы, сказавшіе, что «C — ассемблер высокого уровня». Всё-таки исключенія — это великое изобретеніе в языках программированія.