понедельник, 21 января 2013 г.

Вечные проблемы с мультиплатформенностью

Сегодня пытался установить RMagick. Под Windows XP он категорически отказывается ставить. Пришлось отложить на некоторое время установку.

Вернулся к своему любимому Cairo, который верой и правдой служит уже много лет.

И возникло ощущение, что многие приложения заточены под свою платформу, хотя и пишут, что они мультиплатформенные. Но на самом деле - они привязаны к своему окружению, которое стоит у автора.

Так RMagick привязан к Linux/Ruby 1.8.3

***

Вот уже пару лет пользуюсь Ubuntu и прихожу к выводу, что без XP можно было бы и обойтись. Но почему то авторы приложений не выдают эквиваленты для этих платформ. Так я использую Ruby и FreePascal - так даже в этих стандартизированных средах попадаются компоненты не совместимые для переноса.

И хотя я не люблю Java с её претенциозностью и тяжестью, но всё же больше и больше поглядываю на неё. С провалом NET (Windows 8 без него будет) - пожалел, что столько лет изучал и применял WPF/C#/LINQ. Хотя и можно применять и дальше на старых платформах, но у клиентов потихоньку обновляется парк. А на новых машинах стоят всё более новые и совершенные программы (хотя им это лишь для имиджа и надо).

***

Многие виртуальные машины не справляются с заявленной мультиплатформенностью. Так Squeak - разновидность SmallTalk выглядит и чувствуется чужеродным на всех платформах, что я использовал. Java - хоть и пытается выглядеть как родная - остаётся осадок, что она всё же гость на этой платформе.

Использовать только базовые функциональные возможности библиотек Ruby/FPC - так теряешь основной фактор скорости - количество написанного и отлаженного кода. Много приходится писать самому.

Кросскомпиляторы не спасают, камень преткновения - библиотеки всё равно привязаны к платформе.

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