Samsung Galaxy Note 3

С тех пор как Nokia свернула работы по развитию Symbian, я никак не могу определиться, какими же телефонами мне пользоваться. Выбор-то, по большому счету, не велик: либо красивый iPhone с ограниченным функционалом и выбором железа, но более-менее адекватной фильтрацией приложений в AppStore и какой-ни какой защитой личных данных, либо страшненький Android с широким набором функционала, выбором железа, но совершенно никакой защитой персональны данных, ведь 9 из 10 “фонариков” хотят читать твои СМС-ки и получать полный доступ к сети. Если же говорить об идеальном с точки зрения железа телефоне, то на данный момент это Nokia Lumia 1020, но идеальное железо – это еще не причина терпеть Венду и ограниченный набор приложений на телефоне. Continue reading

Пара слов про Android

Начал было, от избытка свободного времени, писать RSDN-клиента для Android. Но что-то Android меня дико разочаровал, так что продолжать писать под эту “чудо-платформу” не буду. Честно сказать не ожидал такого. Претензии по пунктам:

  1. Нормальных биндингов нет. Есть некое жалкое подобие биндингов, работающее со списками и вроде еще с каким-то контролом.
  2. Архитектура построена таким образом, что ты волей-неволей вынужден валить все в Activity. Попытки разнести на слои с данными и логикой заканчиваются диким количеством проблем. Единственное что можно вынести – Content Providers, но на практике этого маловато.
  3. Вторая архитектурная проблема – работа с потоками за пределами Activity так же чрезмерно усложнена. Основная идея платформы – потоки внутри Activity это круто и правильно.
  4. Основной язык разработки – Java. Крайне убогий язык, особенно, если 10 лет писал на C++.

И если пункты 1 и 3, 4 еще как-то можно пережить, то вот мириться со вторым, для меня, совсем сложно.

О мобильных девайсах и глубине резкости

Убедившись в том что Андроид в целом и Motorola Milestone в частности просто говно несусветное, я задумался о возвращении на по-сути единственную приличную платформу для мобильных телефонов – Symbian. Как раз в конце прошлой недели я продал свой говнодроид и стал искать на что бы его заменить. iPhone отпал сразу, так как платить больше 1К долларов за телефон по моему мнению глупо, да и iOS на телефоне меня мягко говоря не вдохновляла.

Поиск вышел долгим и, похоже, я наконец-то решился – Nokia N8. Но тут речь даже не о самом телефоне, а том, что меня в нем удивило. Судя по тестовым снимкам из обзора на Mobile-review, Carl Zeiss просто творит чудеса! На снимках сделанных смартфоном(!!!) есть хоть какая-то, но глубина резкости!

Да и сам обзор реально доставляет, т.к. по мнению того идиота что его написал, наличие глубины резкости (“детализация предметов вокруг”, в оригинальном исполнении) это минус. И в тоже время немного грустно, ведь такие же идиоты пишут про политику, экономику, культуру…

Что не так с Java?

Меня долгое время мучил вопрос, почему приложения на Java такие тормозные? Если верить синтетическим тестам на The Computer Language Benchmarks Game, то в среднем приложения на Java работают всего-то в 2 раза медленнее при использовании памяти в 10 раз больше по отношению к C++ приложениям. В принципе, это не такой уж и большой разрыв. Хотя в этих тестах нет приложений на Objective-C, я думаю что результат для был-бы приблизительно тем же, ну может памяти тратилось бы не в 10, а в 5 раз больше, а ведь c приложениями на Objective-C можно нормально работать. Так в чем же дело?

Ответ пришел нежданно-негаданно. Заинтересовавшись Andoid, а как всем известно, приложения для него пишутся именно на Java, я похоже наткнулся на ответ. Как это ни печально, дело в программистах. Разработчики Java живут в мире неограниченных ресурсов – бесконечной памяти, бесконечного дискового пространства и бесконечной производительности процессора. И в результате мы имеем очень сильное усложнение ПО с потерей производительности в угоду читабельности и простоты разработки. И если такая стратегия работает для корпоративного ПО, где пользователь будет работать с тем что ему дали (как бы то г-но что ему дали не работало), а мощность серверов действительно высока, то десктопное ПО, и уж тем более мобильно ПО начинает сталкиваться с серьезными проблемами.

Изучая примеры Open Source приложений под Android просто диву даешься, насколько безграмотно они написаны с точки зрения ограничения используемых ресурсов. Куча бесполезных абстракций, нагромождение паттернов (привет не понимаю зачем была создана GoF) и совершенно бездумное использование памяти. Достаточно показательный момент – основные советы разработчикам под Android сводятся к тому, что надо плодить меньше сущностей, больше думать о сложности используемых алгоритмов и менее фанатично относиться к ООП. Создается ощущение что появление GC, упрощение разработки и отдаление от проблем среды исполнения вызвало сильнейшую деградацию разработчиков.

Одно радует, теперь понятно почему на десктопах количество приложений написанных на C# или Java ничтожно мало