Ada_Ru форум

Обсуждение языка Ада

CORBA и RPC сегодня

Оставить новое сообщение

Сообщения

Иван Левашев
CORBA и RPC сегодня
2016-11-19 06:39:44

Доброго времени суток!

 

Хочу поинтересоваться у причастных, как сейчас обстоят дела с

протоколами удалённого вызова процедур. С одной стороны, некогда CORBA лепили повсюду, и даже удалённый отладчик Borland Delphi работал по этому протоколу, а не по какому-нибудь DCOM (DCE). С другой стороны, в новых Хадупах теперь Thrift, Avro и что угодно, только не CORBA IIOP.

А если я хочу дать серверные объекты пощупать из браузера, я не могу это сделать. IIOP — на сырых сокетах, а чтоб из браузера подключиться, надо WebSockets, да ещё сразу в TLS лучше завернуть, чтобы неполноценные прокси (вроде тех, что я штампую на AWS) пропускали. А между браузерами чтоб подключение было, это уже надо через WebRTC делать. И я для CORBA таких решений даже близко не вижу. Плохой знак.

 

Продолжил разбираться с SOM. И уже склоняюсь к мысли, что делаю я это скорее для того, чтобы понять, как сделать что-то новое, чем для того, чтобы оживить прежнее. Одна из вещей, которые мне сильно не приятны — это то, что есть однобайтовые строки и что они называются string, а более широкие — это уже wstring.

 

Один мой брат по разуму 11 лет назад написал эмоциональную статью: http://live.julik.nl/2005/12/composition-normalization-and-morons

Мне в этой статье понравились финальные абзацы:

И только одни люди поступили единственно возможным образом, отрезав уродам вышестоящих типов все пути к отступлению в туманный отказ. Они устроили в Java такой Освенцим, что остается только восхищаться и трепетать. Им, слава Б-у, стало ясно, что если всю эту радость не запихать американским программерам ректально и эксплицитно, бардак из wchar и char продолжится до 3000 года.

 

Да, увы, их UTF-16 включает только Basic Multilingual Plane (не хватает пары десятков тысяч Хан-кодпойнтов), но по сравнению с вышестоящим убожеством это невероятный прогресс.

 

Описанные проблемы не обошли стороной и GPS. Года четыре назад

выяснилось, что UTF-8 в исходниках, отличных от адских, рано или поздно приводит GPS к падению из-за того, что в Gtk+ передаётся неправильно обрезанный UTF-8. Вот я тогда запарился переносить кириллицу из плюсовых исходников в отдельный заголовочный файл, который редактировал другим редактором.

 

Нет никакого желания наблюдать, как очередной разработчик опять начал играть с этим огнём и предсказуемо заигрался. Поэтому я очень болезненно реагирую на однобайтовые строки, сплю и вижу, как бы устроить ещё более лютый Освенцим, после которого выживет только UTF-32.

 

И CORBA тут совсем не радует. wstring прикручен как бант сбоку. Скачал самый свежий стандарт 3.3, посмотрел, как там дела обстоят. Сначала посмотрел ширину wchar. Если 16 бит, можно сразу крест ставить.

Implementation-defined. О, не всё ещё потеряно.

 

Потом напрашивается вопрос, а применяется ли wstring везде вместо string? Вроде через Istring переход собирались делать.

 

Я эмиттер пытался через Emitter Framework делать изначально, потому что так казалось правильно, а сейчас, лучше зная, как он работает, понял, что лучше делать через Interface Repository, а он в SOM является

расширением CORBA IR. И там однобайтовые строки (SOM не поддерживает wstring). Так что не пришлось далеко отходить, прямо в том же PDF от CORBA 3.3 нашёл Interface Repository и посмотрел, как он изменился за прошедшие 16 лет. И что же я вижу?

 

module CORBA {

typedef string Identifier;

typedef string ScopedName;

typedef string RepositoryId;

 

Э! А как же wstring или хотя бы Istring? Только укрепился я в мыслях, что нельзя на уровне модели оставлять однобайтовые строки. Все

разработчики плюют на дополнительное.

 

В принципе, CORBA (в смысле совместимости) могло бы спасти, если и string, и wstring на уровне ORB спроецировать в UTF-32, а невалидные октеты обратимо конвертировать, как в Python.

 

Только есть ли всё ещё смысл разъигрывать эту карту? Сейчас не 1990е. Нужен ли вообще кому-то этот CORBA? Как им пользуются?

 

Текущий план модернизации SOM на данный момент включает в себя коррекцию новой модели под семантику Objective-C так, чтобы можно было

псевдо-Objective-C компилятором портировать программы на новое ядро с минимальными правками там, где семантика Objective-C не имеет аналогов и не может быть изменена без ущерба для возможностей, ради которых за основу берётся именно SOM. Важным элементом тут являются блоки, без которых не будет Grand Central Dispatch и ReactiveX.io. И исключения в Objective-C являются объектами, а не непонятным отдельно стоящим нечто, как в CORBA. А ещё можно семантику дополнить фичами, которые чаще встречаются в языках, произошедших от Паскаля, и однажды сделать

Ада-подобный ЯП, поддерживающий эту модель как родную, используя эти заделы на будущее. Всё это привлекательно, но, как я понимаю, рвёт совместимость с CORBA.

 

С уважением,

Левашев Иван,

Барнаул

 

--

If you want to get to the top, you have to start at the bottom

On 10/19/2016 09:39 AM, Иван Левашев octagram@... [ada_ru] wrote:

 

Нет никакого желания наблюдать, как очередной разработчик опять начал

играть с этим огнём и предсказуемо заигрался. Поэтому я очень болезненно

реагирую на однобайтовые строки, сплю и вижу, как бы устроить ещё более

лютый Освенцим, после которого выживет только UTF-32.

 

Пробуйте Матрёшку и её Universal_String из пакета League.Strings. И прибудет с Вами щастье. Но не долго, найдёте Вы и grapheme cluster-ы. Universal_String Вам с ними подсобит, но не избавит от ошибок криворуких программеров.

 

И CORBA тут совсем не радует. wstring прикручен как бант сбоку. Скачал

самый свежий стандарт 3.3, посмотрел, как там дела обстоят. Сначала

посмотрел ширину wchar. Если 16 бит, можно сразу крест ставить.

Implementation-defined. О, не всё ещё потеряно.

 

Вообще-то не просто implementation defined. Есть ещё и string/wstring encoding negotiation на уровне около GIOP. А ещё и language mappings. Иными словами, все способы создания ада на земле путём возведения Вавилонской башни.

 

module CORBA {

typedef string Identifier;

typedef string ScopedName;

typedef string RepositoryId;

 

Э! А как же wstring или хотя бы Istring? Только укрепился я в мыслях,

что нельзя на уровне модели оставлять однобайтовые строки. Все

разработчики плюют на дополнительное.

 

Он и не изменится. В первую очередь для обеспечения совместимости.

 

Только есть ли всё ещё смысл разъигрывать эту карту? Сейчас не 1990е.

Нужен ли вообще кому-то этот CORBA? Как им пользуются?

 

Для новых систем, живущих в Internet-е - не нужен. А вот если Internet-ом и не пахнет - почему бы и нет?

19.10.2016 14:15, Vadim Godunko vgodunko@... [ada_ru] пишет:

Пробуйте Матрёшку и её Universal_String из пакета League.Strings. И прибудет с Вами щастье. Но не долго, найдёте Вы и grapheme cluster-ы. Universal_String Вам с ними подсобит, но не избавит от ошибок криворуких программеров.

 

Матрёшка специфична для Ады, а я в данном контексте могу воспользоваться только тем, у чего есть стабильное ABI, чтобы использовать из разных языков программирования и разных версий GNAT.

 

Только есть ли всё ещё смысл разъигрывать эту карту? Сейчас не 1990е. Нужен ли вообще кому-то этот CORBA? Как им пользуются?

 

Для новых систем, живущих в Internet-е - не нужен. А вот если

Internet-ом и не пахнет - почему бы и нет?

 

У меня туманные представления обо всяких WebSphere, и отдалённое

впечатление таково, что это суп, в который можно кидать новые

компоненты. Кинул — и уже можно писать скрипт, а если CORBA не

поддерживается, то так сразу нельзя.

 

Правда, тут есть градации.

1) Какой-то новый ORB, с IDL и IIOP, но не тот ORB, который используется для остальных элементов

2) Какой-то новый ORB, с IDL и IIOP, но с нестандартным способом

проецирования на языки

3) Какой-то новый ORB, но со своим IDL и протоколом

 

И не очевидно, на каком этапе суп перестанет принимать в себя инородные тела. Те системы, которые я сам видел, вполне допускают третий вариант.

С уважением,

Левашев Иван,

Барнаул

 

--

If you want to get to the top, you have to start at the bottom

Новое сообщение:
Страницы: 1

Чтобы оставить новое сообщение необходимо Зарегистрироваться и Войти