Изучая опыт SOM, можно видеть, как глупо порой выглядит интеграция тех языков, которые IBM поддерживала официально. Реализуем класс на C++, затем подключаем в SmallTalk или REXX, и после использования вручную (!!!) делаем somFree. Взять динамический язык, чтобы в нём вручную освобождать память — это вообще как? В голове не укладывается.
Когда вот так объявляют, что создают многоязыковую платформу, и делают поддержку C++, но забывают про наиболее близкие к нему Delphi и Ada, зато маются с какими-то ну очень далёкими языками программирования, еле как совмещающимися, выглядит это странно.
Для IBM SOM это простительно, потому что пока он появлялся, с другими языками было негусто. RAII появляется только в Ada 95, компилятор которой тоже где-то в это же время. Примерно та же история с Delphi 3.
Но сейчас все указанные языки программирования заматерели: и RAII там есть, и умные указатели реализуемы. Соответственно, если начинать это сейчас, то C++, Ada, Delphi — все они должны быть учтены в первую очередь. Иначе это глупо. А всякие .NET, где вместо нормальных человеческих деструкторов IDisposable и using — вторым эшелоном.
Ну а раз так, то в обстановке, когда всякие разработчики нет-нет, да и «забудут» то про Delphi, то про Аду, Платформа — это соломинка, за которую делфистам и адаистам нужно ухватиться и держаться. Платформа предполагает целый комплекс мер по мотивации разработчиков использовать именно её, а не что-то другое. Тут и импортозамещение, и экспорт в сценарные языки программирования, более лёгкий, чем в SWIG, и многое другое, и попутно такие компоненты становятся доступны в Delphi и Ada с удобным программным интерфейсом.
Чтобы сделать RAII для типов-значений, включая возможность повесить обработчик на копирование, в Delphi приходится развести писанину. Также в Delphi приходится развести писанину, дублируя классы интерфейсами, чтобы сделать счётчик ссылок. В языке Ада писанину приходится разводить для умных указателей. Но на Платформе этим будет заниматься генератор. Он не устанет. Как результат, потенциал этих языков программирования на Платформе будет раскрыт полнее, чем без неё.
Можно ожидать, что некоторые особенности Delphi и Ada попадут в модель. Например, в языке Ada есть неопределённые массивы. В языке Delphi есть некий аналог — открытые массивы, но их можно принять только как аргумент, и неопределены они могут быть только в одной размерности. Такие общие для двух языков особенности могли бы войти в объектную модель. Кроме того, и Delphi, и Ada поддерживают целые числа с поддиапазонами. Это тоже могло бы войти в модель.
В среде адаистов можно было видеть мечты о системе пакетов, но воплотить их довольно трудно. Все сложности кроссплатформенной разработки встают во весь рост. А когда что-то в MSYS2 pacman, что-то в Fedora, что-то в Debian, что-то в FreeBSD (формальные контейнеры SPARK 2012, например), всё фрагментировано, неудобно.
На Платформе, для сравнения, действует принцип «Скомпилируй дважды, запусти везде». Может быть, будет своё хранилище типа npm или Get-It, но даже если нет, то можно будет просто скачивать DLL из Интернета, и не надо будет с ними так мучиться. Программный интерфейс у них будет не адский, не делфёвый, а выраженный средствами Платформы, но как мы уже выяснили, для адаистов и делфистов он должен быть относительно удобен.
ВКонтакте
Поскольку реставрация SOM затевалась именно в рамках этого проекта, и после анализа стало понятно, что просто взять старый SOM, а потом заменить открытым клоном не получится, значит, и SOM потерял значимость как инструментарий, и остался только как источник инженерных решений, а группа ВКонтакте, посвящённая программированию для SOM, теперь переориентирована под проект Платформы: https://vk.com/somobjects
Лично мне формат форума кажется более удобным и правильным, здесь посты не тонут как в соцсетях, но сколько пишу на тему, отвечают где угодно, но только не на форуме автора проекта. Так что пробую разные площадки.
Последний шанс для Delphi и Ada, Общая платформа исполнения приложений |