БлэкБокс -- это реальный конструктор. В реестр не лезет, управляем, документация вполне под рукой. А если чего-то нет -- можно допилить, через привлечение сторонних DLL (которые не лезут в WinAPI и COM), или на худой конец -- WinAPI и COM. Язык простой. Учится реально за неделю. Количество ключевых слов я бы ещё сократил. Я бы ещё CASE убрал как ограниченное целочисленное решение, и вместо ELSIF оставил питоновское ELIF, вместо THEN оставил бы DO. А проверку типа через WITH тоже убрал, и сделал бы просто условием [IF/ELIF] a IS tInt32 DO. BEGIN можно было бы подсократить до BEG. Это взгляд дилетанта. А всё остальное в самом языке меня вполне устраивает. Явная система приведения типов -- это то, чего так не хватает в питоне. Значения параметров по умолчанию, по моему, зло. В рамках контрактного программирования, можно для конкретного модуля предусмотреть опцию пред и пост условий. Но это, только как уточнение языка, которое вовсе не обязательно.
Сама среда, устроена просто. Честно, после питона, с его системой пакетов (которые могут быть вложенными) подход БлэкБокс был непривычен. Но, если я правильно понял, одно приложение -- одна общая папка для всех необходимых пакетов. И сваливать все пакеты в базовую сборку -- дурная мысль. Это позволяет держать ядро стабильным для всех приложений.
Питон -- это просто свалка пакетов. Управление можно осуществлять: 1) руками 2) pip install [чего-нибудь там] 3) easyinstall ... 4) ... через python install... (install.py -- в самом пакете)
Разделение на ветку 2.х и 3.х привнесло свои плоды фрагментирования платформы.
И если хоть один пакет встал с использованием отличного способа от стандартного... Готовимся к странным эффектам. Пакет может понакидать свои файлы разные пакеты и в ряде случаев, ещё и требует руками внести правки (например, как пакет cython при использовании MinGW требует правки руками пакета distutils). С трудом представляю себе такую ситуацию в БлэкБокс)))
Документация в том же питоне просматривается через браузер. Для этого надо запуcтить pydoc.pyw, как сервер документации. Мне не очень нравится, как он сделан, и не нравится, что приходится привлекать внешние программы. Документация в БлэкБоксе вполне может быть отформатирована, хранится в платформо-независимом виде, и браузер не нужен (ситуация с отсутствием браузера, или недостаточной памятью -- вполне возможна). Плюс ко всему, браузер документации питона лезет в исходники, т.е. документация -- неотъемлемая часть исходников. Не считаю, что это хорошо. При ограничении на свободное место (какая-нибудь промышленная флеш-карта размером в 8-16 МБ) вырезать документацию из модулей в питоне -- то ещё удовольствие).
Скорость исполнения Компонентного Паскаля (по моим тестам, по сторонним) раза в 4 проигрывает Си. Это плата за постоянный контроль и проверки. Есть опции отключения проверок при компиляции, но не один нормальный человек не должен этого делать. Полёты в космос -- это глупость несусветная. И все попытки причесать Си в этом отношении -- это попытки как раз исправить генетический недостаток. Тогда не можно говорить о превосходстве скорости исполнения в 4 раза. А уж модульность, которая позволяет из каркаса на ходу выгружать модули ,компилировать и подгружать новые -- хотел бы я посмотреть на Си, где такое сделано.
Сборщик мусора в жёстком реалтайме штука сложная. Обычно под реалтаймом понимается гарантированное прерывание и гарантированная обработка события с точностью не хуже 1 мсек. И здесь кроется подвох. Для человека реалтайм -- 100 мсек. Для механики -- 10-50 мсек (инерцию никто не отменял). Для управления через электронные блоки управления ходовыми частями, частотными преобразователями, софт стартерами -- 5-20 мсек (скорость разряда выходных конденсаторов + инерцию механики никто не отменял). Скорость 1 мсек нужна только в скоростной защите оборудования, которые стоит кучу денег. Ради интереса, посмотрите на досуге какова скорость срабатывания электромагнитных пускателей, контакторов и устройств дифзащиты (тех самых ,что стоят между розеткой и бойлером у вас дома). Я вас уверяю, вы будете неприятно удивлены. Какие 1 мс?))))
Почти тысяча параметров отрабатывается у меня со средним временем 56 мсек. В релейно-защитной аппаратуре в обработке, по сути, всего 6 параметров -- три напряжения и три тока. Т.е. 6 АЦП должны работать со скоростью всего 1 кГц. Реальная циклограмма снимается на частоте 800 Гц. Т.е. РЗА отрабатывает даже хуже чем 1 мсек. Любой встроенный осциллограф в виде PCI-платы с предельной частотой до 200 кГц справится лучше. 6 параметров Компонетный Паскаль отработает влёт. Попробуйте это сделать на питоне?))))
Компоненты в БлэкБоксе платформо-независимы. Попробуйте без танцев с бубном подхватить DLL под Убунтой?)) Или *.so под Виндовсом?)) Даже пакеты питона могут не взлететь, если не сделать "chmod 755". Компонентам этого не требуется. Они не лезут в /usr/bin, usr/local/bin, /opt/bin ... и ещё чёрт знает куда. Я до сих пор помню, как я пытался запихнуть в /usr/local/python/site-package свой пакет виджетов))) На поверку оказалось, что Линукс вовсе не прост, и вовсе не дружелюбен))) И в разных версиях расположение разных частей может существенно отличаться.
Вот поэтому я выбираю БлэкБокс. Простота, предсказуемость/логичность, стабильность. Всё это выгодно отличает ББ от всего остального.
|