Categories:

Embedded CL

по моему багрепорту в ECL внесли исправление. Скачал свежайшие исходники, собрал нативный компилятор для x86 и кросс-компилер ARM - работают! Собрал ещё и нативный для ARM, а то в репозитарии лежит версия 11.1 (со старыми - даже можно сказать древними, 2011!!! года выпуска - багами), а свежий релиз имеет номер 13.5.1. Таперича ECL стал чуточку ближе к чистой спецификации ANSI Common Lisp.

Запилил, покрутил. Сравнил с SBCL и GCL. Первый ругается на какой-то устаревший компонент ("в следующих релизах будет считаться ошибкой"), второй, тащемта, работает точно так же. Где-то наверняка есть отличия, но мне не хватает квалификации, чтобы их найти.

Заодно немного исследовал клёвый механизм под названием "пакеты". Довольно прикольная идея динамического распределения пространств имён - не знаю, возможно ли вообще такое в C++? Наверное, возможно (в плюсплюсе всё возможно), но ценой перманентного жоповзрыва. Не знаю, кто как, а лично я не люблю бегать по минному полю.

Мне вообще пришло такое сравнение на ум: Си (и плюсплюс) подобен паяльнику и коробке с детальками. Имея достаточно навыков и усидчивости, из деталек можно собрать хоть мигающий фонарик, хоть большой гудронный коллайдырь. Однако, трудозатраты будут весьма велики и конечный результат, скажем так, заработает совсем не сразу. Лисп (и подобные ему) больше похож на, прости господи, ардуино (в хорошем смысле), причём ещё с ПЛИС внутри. Комфортно, надёжно, без потёков подгоревшей канифоли, без шматков припоя и без остатков кислотного флюса под выводами. Собираешь, включешь - работает (тоже не сразу, конечно же, но всё же попроще). Я совсем не против паяльников, как вы знаете, но всему своё место. В самом широком смысле.

Я щас разбираюсь с исходниками одной довольно сложной программищи на C++, так я вам скажу, что писали её профессионалы - 2/3 всего кода направлено на борьбу с самим языком. Особенно впечатлила библиотека, реализующая шаблоны для хэширования разнородных объектов - тьма функций преобразования из одного типа в другой тип, частокол <скобочек> и ::двоеточий,.. в общем, то самое, что пугает новичков в лиспе - (неочевидное(обилие(скобок))) - в сложных для C++ случаях выглядит ещё страшнее. И, главное, на лиспе это хэширование делается "в две строки". Меньше работы, меньше забот, раньше результат.

Но как их там переубедить, они ж профессионалы...