Что такое Блэкбокс (BlackBox Component Builder)
Блэкбокс (BlackBox Component
Builder) — это бесплатная
и открытая система
программирования для Компонентного Паскаля,
являющаяся вариантом Системы Оберон.
Одним из главных соавторов Блэкбокса является
Клеменс Шиперски, ведущий мировой
специалист по компонентно-ориентированному программированию.
Его известная книга 1998 г. фактически основана на описании архитектурных
решений, принятых в Блэкбоксе. С 1999 г. он является сотрудником исследовательского подразделения
Microsoft.
Блэбокс — это система программирования, в общем аналогичная Турбо Паскалю, Дельфи и т.п., но обладающая
следующей удивительной комбинацией свойств. Она:
-
очень простая (описание
языка — Компонентного Паскаля — всего
около 30
страниц),
-
очень быстрая (быстро компилирует
даже на i386),
-
очень компактная (20
MB на диске в базовой конфигурации),
-
но при всем этом очень мощная (в том
числе за счет лучшей в промышленности поддержки технологий
компонентно-ориентированного программирования),
-
от лучших в мире специалистов по
таким вещам (школа легендарного Н.Вирта),
-
бесплатная для некоммерческого
использования (о получении см. здесь; с
конца 2004 г. система доступна с открытыми исходными
кодами).
По длительному опыту лет работы с ней (с 1994 г.) и преподавания
(с 2001 г.)
на уровне университета и лицея:
работать в Блэкбоксе — чистое удовольствие по сравнению с любыми аналогичными
системами.
Оказывается в разы быстрее разработать
программу в Блэкбоксе и затем перенести на фортран и т.п., чем
напрямую агонизировать в фортране, С или C++.
Более того, даже трудно себе представить, как сделать на
фортране или C++ все то экспериментирование со
структурами данных и проч., которое как правило необходимо в научно-технических
расчетах синтетического характера (только один
пример), и которое
в Блэкбоксе не представляет никаких трудностей.
Объяснить это словами трудно — нужно конкретно попробовать.
Фактически, в Блэкбоксе (как и вообще в Оберонах) фаза построения
модели-прототипа выполняется непосредственно на Компонентном Паскале/Обероне и
не нуждается в особых инструментах.
В отличие от более ранних экспериментальных
систем Оберон-2, Блэкбокс является инструментом
промышленного уровня, т.е.
спроектирован как профессиональный инструмент для реального мира (в частности,
система элементарных типов языка является суперсетом для типов языка Java).
Теперь подробнее. BlackBox отличается совершенно уникальным сочетанием сл. свойств:
- замечательная простота языка (описание
языка умещается на 30 страницах, а формальный
синтаксис — на одной (!) странице; ср. сотни
страниц любого описания языков C++, Java и т.п.);

- в высшей степени читабельный паскалеподобный
синтаксис (кто не поймет фрагмент "FOR i:=0 TO n
DO s := s + a[i] END"?);

- четкость семантики языка, исключающая коварные ловушки, имеющиеся, например, в Java
(см.
H.Thimbleby);

- как результат всего перечисленного:
замечательная легкость освоения языка;

- эффективность компилятора (более чем на
порядок быстрее, чем компиляторы для С++, так что без проблем работать на 486, и даже на 386;
это имеет место за счет четкого и чистого
формального определения синтаксиса; нампоним, что в
школе Вирта языки проектируют одновременно с проектированием компилятора,
так что все потенциальные "узкие места" обнаруживаются еще на этапе
проектирования; этот подход разительно контрастирует с тем, например, как
проектируется C++);

- эффективность кода не уступает обычным компилируемым
процедурным языкам (см. сравнение с С++), не говоря уже о Java,
отсюда:

- безоговорочная пригодность для численных
задач;

- безоговорочная пригодность для системных
задач — даже драйверы можно писать, лишь в
минимальной степени обращаясь к ассемблеру
(ведь язык с самого начала проектировался для автономной операционной
системы);

- автоматическое управление памятью (сбор мусора), до Оберона
использовавшееся лишь в интерпретирующих средах;

- программистская производительность на порядки
превосходит C++;

- надежность создаваемых программ качественно
превосходит C и C++, т.к. самые ненаходимые ошибки
(висячие указатели и утечки памяти, равно как и ошибки типа
переполнение буфера) невозможны здесь в принципе;

- эффективная поддержка тщательно
отобранного, выдержавшего испытание временем ядра
технологий объектно-ориентированного программирования;

- уникально полная поддержка передовых технологий
компонентно-ориентированного программирования;

- стандартный интерфейс пользователя (в
отличие от исследовательских версий Оберона, интерфейс Блэкбокса
автоматически "подстраивается" под операционную систему —
MS Windows или MacOS);

- легкость графического создания диалоговых систем сравнима
и даже превосходит Visual Basic и Delphi);

- мощная поддержка графического вывода (генерирует
OLE/COM-графику, которая автоматически переносима
посредством Cut&Paste, например, в научные статьи,
пишомые в современных редакторах типа MS Word);

- мощная компонентная библиотека (component
framework) с поддержкой составных документов, допускающих практически
произвольные взаимодействия с пользователем;

- мощный расширяемый редактор, макроязыком для которого является сам
Компонентный Паскаль (который, впрочем, является макроязыком
всего Блэкбокса);

- интегрированность со средой MS Windows (предоставляет полный
доступ к API MS Windows и Office);

- полный контролируемый доступ к уровню "железа" для системных приложений.
По общим возможностям Блэкбокс можно сравнить,
например, с Delphi — только BlackBox оказывается намного
быстрее, проще в использовании и качественно
более надежней и мощнее как средство программирования. Впрочем, автоматическое
управление памятью в сочетании со строгим контролем типов придает Блэкбоксу
новое качество.
BlackBox предоставляет уникальные
возможности для:
- преподавателя, желающего с минимальными усилиями подвести
своих учащихся к языкам программирования, составляющим сформировавшуюся "стандартную
парадигму программирования" (Оберон, Java,
C#);

- студента, желающего с минимальными потерями
времени освоить ядро знаний по технологиям программирования, составляющее
уровень искусства на данный момент;

- профессионального исследователя-непрограммиста (физика,
математика, лингвиста ...), нуждающегося в том,
чтобы применить
в своих задачах всю мощь современного
программирования, и при этом остаться физиком,
математиком, лингвистом ...;
<речь идет об индивидуальном исследователе;
разумеется, если вы работаете в международной
коллаборации, в которой 5 лет назад и на 15 лет
вперед в качестве стандарта принят C++, то вы, как
говорится, out of luck... Но даже и в такой ситуации
может оказаться в разы быстрее и легче
разработать ваш алгоритм в BlackBox — особенно если
замешаны сложные структуры данных — и потом
перенести его на C++; см. пример>.
Блэкбокс поднимает работу по разработке сложных
численных и символьных алгоритмов, требующих
экспериментирования со структурами данных и т.п.,
на качественно новый уровень.
Встроенные средства для работы с графикой
позволяют рутинно (почти как FORMAT в фортране)
создавать интерактивную графику, немыслимую в других
системах.