Samsung bada OS глазами разработчика

Оригинал статьи.

Полный текст статьи: 

Posted on 2010.01.08 at 14:40

Пока Муртазин, словно мантру, бормочет что "это название интерфейса TouchWiz 3 и ряда надстроек к нему и только, не полноценная ОС", я тихонечко скачал API reference. SDK утянуть не получилось, т.к. корейцы им делятся на данном этапе только с избранными. Ну да бох им судья.



Итак, что мы имеем на данном этапе.
Плюсовый API в виде классов, от контейнеров и примитивных типов вроде строк до сокетов, UI, XML и управления камерой, Bluetooth, WiFi. В комплекте имеются даже классы для создания многопоточных приложений (это для тех, кто все еще сомневается, что речь идет о создании серьезных приложений для серьезной ОС). Если сравнивать весь доступный на сегодня набор с первыми публичными релизами Android, то тут функциональность явно побогаче.
Кого-то это обрадует? Спешу расстроить -- перспективы новой ОС от Samsung для сторонних разработчиков весьма печальны. Объясню почему.

Выбран крайне неудачный язык -- C++. Писать GUI приложения в XXI веке на плюсах это очень дорого. Более того, выбран не стандартный C++, а какой-то огрызок, без поддержки исключений. Вы хотите RAII? Умные указатели? Забудьте! Оно вам не надо!

Вот вам надпись со слайда: "2-Phase Construction: Motivation"
"Samsung bada uses error results instead of C++ exceptions. C++ exceptions require too large of a runtime for resource-constrained devices and incur too much overhead."
А мужики то и не знали!

Как управлять памятью с таким подходом? Да очень просто! На другой слайде читаем:
"If a method has an „N‟ postfix, the caller MUST delete the returned instance after the caller is finished with the object. Otherwise, thememory for the object is leaked."

Слайды, рассказывающие об обработке ошибок вдохновят вас вещами вроде GetLastError() и прыжками на метки внутри функций (ей богу не вру!).

Про STL забудьте. На хрена он вам?
У нас все свое -- кашерное! Свой базовый класс для всего и вся -- Object, в который зачем-то (добросовестно слизали с Java/.NET) засунули два архиважных метода GetHashCode и Equals.
Свои коллекции (тоже вдохновленные .NET), как типизированные через шаблоны, так и без этой, никому не нужной, придури. И (конечно же! фанфары!) свой класс строк. Слава богу, уникодовый.

Хочется взять этот самый Osp::Base::String в качестве отличного примера выбранной кем-то крайне удачной стратегии обработки ошибок. Как вам нравиться десяток методов Append (перегруженных для разных типов аргументов), которые возвращают result (т.е. ихний error code), потому что в любой момент может же возникнуть E_OUT_OF_MEMORY?! Как при этом обрабатывает ошибки представленный рядом оператор += известно только корейским программистам (GetLastError(), вы серьезно?).
Кстати, если вы думаете, что добавляя к строке double вы можете хоть как-то управлять форматированием, вы очень, очень сильно заблуждаетесь.

До детального разбора предложенного корейцами UI я не добрался. Зачем бить маленьких?



Примеры кода, попавшие в слайды и API поражают воображение. Честно говоря, даже стыдно сюда что-то скопировать, хотя и говорят, что бумага все стерпит...

В общем, все понятно -- тотальный FAIL.
Как известно -- сила любой открытой платформы в большом выборе сторонних приложений. На дворе XXI век, 2010-й год. Вместо риторических слайдов "Garbage Collection: Motivation" нам предлагают недо C++, со слепленными на коленке самопальными библиотеками, абсолютно ни с чем не совместимыми.
Ребята! В свой Jet вы ставите почти гигагерцовый камень с оперативкой в пол гектара! Вы действительно думаете, что исключения дают нереальный overhead? Побойтесь своего узкоглазого бога, он же вас просто поубивает!

Совпадение с Symbian -- 100%.
Сегодня Symbian скорее мертв, чем жив.
Извините, но "симба" начиналась больше чем десять лет назад. И тогда действительно были очень хлипкие мобильные устройства. И тогда действительно не было стандарта на C++.
Но сегодня! Помня о законе Мура! Имея перед носом Android! И имея в портфолио устройства вроде S8000!
Хождение по граблям во всем великолепии! Симбиан умер, но дело его великих создателей-оптимизаторов живет и побеждает!

Это не конкурент Android.
Там у вас есть абсолютно надежный и безопасный язык, рефлекшн (и все вытекающие из него рулезы), сборка мусора, набор стандартных классов от Sun, компиляция в кросс-платформенный байт-код и т.д. и т.п.

Верьте мне, Samsung bada умер еще не родившись.

Сайт для разработчиков -- developer.bada.com

зы. Может кто-то у них там подумал, что если для iPhone пишут на Objective-C (ой, мамо!), то почему для нас на недо-плюсах писать не будут? Не будут, мужики, точно не будут.

0 коммент.:

Отправить комментарий