НовостиОбзорыСобытияIT@WorkРеклама
Идеи и практики автоматизации:

Блог

Кроссплатформные Герои

Сложность многих современных ИТ-проектов подчас сильно преувеличивается.
Во-первых, сложность нередко путают с трудоемкостью -- если в проекте тысячи сущностей и сотни таблиц в базе данных, понятно, быстро его не реализовать. Но и сложного особо ничего нету, просто много рутинной технической работы.



[spoiler]Во-вторых, "сложность" нередко проистекает из плохо продуманной архитектуры системы -- но и тут "сложность" правильнее назвать запутанностью, и методы недопущения и борьбы запутанности хорошо известны.
В-третьих, проект подчас искусственно усложняется из-за неверно или неточно выбранного инструментария. Например, создается многофункциональный продукт, который в перспективе хорошо бы сделать кросс-платформным. Разработчики берут этот момент на заметку, но так как сроки сдачи продукта для основной платформы никто не отменял, особо кросс-платформностью не заморачиваются. В результате же после сдачи первой версии вариант для других платформ приходится переделывать чуть более чем наполовину.
В-четвертых, на фоне развития опенсорсной среды все более и более разительно смотрится разница в производительности рядовых офисно-корпоративных разработчиков и довольно большого числа "ковбоев кода" -- от энтузиастов небольших public domain-проектов до тим-лидеров ведущих ИТ-компаний.
Сложные вещи, на которые весьма внушительные коллективы тратят десятки и сотни человеко-лет и солидные бюджеты, настоящие профи реализуют за считанные месяцы и подчас за спасибо (которое, впрочем, нередко стоит дороже любых денег).

Пример: проект Free Heroes 2 -- свободный клон легендарной игрушки Heroes of Might and Magic ][, которая в 1990-е более года лидировала по продажам в России и Европе (бинарник и исходники FH2 на C++ тут).

Создал и развивает его практически в одиночку Andrey Afletdinov. При этом работают порты игры на все мыслимые платформы -- Windows, Linux, Мак, айфоны, windows-планшеты, даже на PlayStation 3.

В основе движка -- свободная библиотека Simple DirectMedia Layer (SDL) на Си (автор -- один из таких "ковбоев", Sam Lantinga), оборачивающая независимым кодом интерфейсы низкоуровневых обращений к графическому 2D-буферу, 3D-железу (через OpenGL), аудио, клавиатуре, джойстику и мышке. Она работает на Windows CE/XP/Vista/7, Mac OS X, iOS, Linux, Android, Free/Net/OpenBSD, Solaris, Nintendo и т. д., за счет чего кросс-платформность FH2 и достигнута. Имеется например неофициальная поддержка AmigaOS, Dreamcast, Atari, AIX, OSF/Tru64, RISC OS, SymbianOS, OS/2, есть стыковка с программами на С++, C#, D, Java, PHP и многими другими.

Что интересно, несмотря на упомянутую разницу в производительности разработчиков, я практически не встречал каких-либо семинаров, учебных курсов, которые бы целенаправленно предлагали эту производительность повысить (речь идет, конечно, о программировании). А казалось бы, вот он, бездонный кладезь ресурсов. На рынке с квалифицированными специалистами полная беда (см. результаты опроса!), а зарплаты выросли до небес -- так инвестируйте в своих программистов, научите их, как работать в десятки раз производительнее. Но вот обучить как следует особо и некому.  
Юрий
>>>В результате же после сдачи первой версии вариант для других платформ приходится переделывать чуть более чем наполовину.

ты в корне неправ: если заранее не предусмотреть многовариантность (в данном случае - кроссплатформенность), переделывать приходится всё намного более, чем полностью, когда написать с нуля намного проще.
То есть, первоначальные усилия убиваются напрочь.
Вот так - правильно. Не в смысле, что так надо делать, а что так получается, как правило.
Дмитрий Менщиков
Я правильно понимаю, что под "ИТ-проектом" понимается специализированное заказное решение (а не коммерческий продукт)?
Зачем тут вообще нужна кроссплатформенность?
Делается конкретное решение под конкретное железо.

А игры-то, конечно, пусть делают под разные смартфоны, те кто на этом зарабатывает...
Сергей Бобровский
Ну разные ИТ-проекты бывают, те же игры издатели заказывают конкретным исполнителям, а бюджеты у них уже как у голливудских фильмов.

Клиентскую часть точно лучше планировать кросс-платформной, только пока непонятно, как лучше, даже с веб-интерфейсом сейчас больше путаницы, то ли HTML5, то ли специализированный софт. Для специализированных решений SDL как раз неплохо поможет.