суббота, 15 сентября 2018
Казалось бы, как вообще можно сравнивать встроенную реализацию языка Visual Basic в продуктах MS Office с операционной системой для мобильных устройств? Но, давайте, на секунду абстрагируемся и посмотрим на них просто как на две технологии для разработки некоторого ПО в вакууме. Это, на мой взгляд, может оказаться небезинтересное наблюдение.
читать дальшеВо-первых, обе технологии на сегодняшний день морально устарели по мнению своих вендоров, и их с каждым годом всё громче угрожают выпилить, заменив, соответственно, на Visual Basic Tools и OS Fuchsia. Вот только устаревание у них происходило по-разному. VBA с момента своего создания в 1993 году претерпел всего 7 релизных версий, которые на 90% были связаны с багфиксом и добавлением нового функционала. В 4.0 появились инструменты для ООП, но обратная совместимость со старым кодом не нарушилась.
Что же Android? Выпущенный в 2009 году он за прошедшие 9 лет выдал 28 (!) версий API для разработки и 9 "основных" версий OS, поддерживаемых на сегодняшний день. Количество @Deprecated или вовсе не поддерживаемых классов/методов фантастическое просто настолько, что любой код для Android'а, который вы найдёте в этих наших интернетах, скорее всего, уже устарел, как минимум морально. Обратная совместимость версий Андроида? Ну, формально она декларируется, но по факту, если вы начнёте писать для него хоть какие-то мобильные приложения, то не пройдёт и месяца, как вас посетят боль и отчаяние от того, что приходится один и тот же метод переписывать в двух (а то и трёх) вариантах - для новой и для старой версии.
Во-вторых, архитектура приложений. VBA 4.0-7.1 - ООП язык, предоставляющий разработчику 3 вида модулей, 2 вида процедур, константы, глобальные переменные и т.п. Единственный косяк с реализацией ООП - это наследование. Оно там есть, но весьма, кхм... специфичное, и я, честно говоря, ни разу не видел живого программиста, который бы им пользовался. Архитектурно код большой надстройки вполне можно вписать в концепцию MVC, хотя обычно этого не требуется: для GUI есть пользовательские формы и события, а остальное нормально ложится в модули и модули классов. Заложенная изначально концепция процедурного программирования тоже вполне реализуется в виде отдельных макросов.
В Андроиде с архитектурой приложений всё... печально. Начать с того, что основных концепций на сегодняшний день аж 3, они друг другу противоречат и активно вставляют палки в колёса... и дальше можно не продолжать. Просто попробуйте реализовать в своём приложении разделение ответственности по идеологии Model-View-Presenter с возможностью операций с базой данных на уровне модели (где им и положено находиться). Меньше чем синглтоном для хранения контекста в модели, но который надо инициализировать из View, не отделаетесь.
В-третьих, востребованность в своей рыночной нише. У VBA реальных конкурентов нет ни в качестве языка разработки надстроек для программ Microsoft (хотя они честно пытаются его выпилить и заменить, но - не смогут, пока народ будет пользоваться старыми версиями офисов), ни в качестве языка макросов электронных таблиц (Basic в LibreOffice и OpenOffice, GoogleScript не имеют такой популярности). Учитывая его поддержку в Libre\Open Offic'ах, можно сказать, что VBA - монополист.
У Android'а в 2017 году было 73% рынка мобильных OS и 40% рынка OS в целом. Такой успех обычно связывается с открытостью платформы.
В-четвёртых, язык. Чтобы писать на VBA вам достаточно знать... VBA
. Ну и плюсом такие мелочи, как язык формул Excel, например. Хорошим плюсом будет знание C/C++, чтобы делать свои либы.
Чтобы писать для Android вам недостаточно просто знать Java и/или Kotlin, надо ещё разбираться в их версиях, т.к. разные версии Андроида работают с разными версиями языков. Также Вам никуда не деться от минимальных знаний SQL и XML, и от знания специфики annotation processing и использования лямбд в многочисленных библиотеках типа JavaRx, без которых вы шагу ступить не сможете.
В-пятых, тестирование. В VBA, как и любом нормальном ЯП, проблем с тестированием нет: вызываешь событие или макрос - и код начинает выполняться.
С приложениями для Андроида всё не так. Сама настройка вашей IDE для тестовых компиляций - задача не совсем тривиальная и требующая поковыряться в настройках Windows, поустанавливать драйвера, а иногда и в BIOS залезть, так ещё и с разными мобильными устройствами могут быть совершенно непредсказуемые особенности (например, смартфоны разных производителей с одной версией системы могут по-разному воспринять вашу программу, или какой-то смартфон, например, откажется устанавливать apk по "неоригинальному" USB-кабелю).
И что из всего вышеперечисленного следует, спросите вы? В общем-то, лишь то, что я не понимаю, почему обычно на VBA смотрят как на г*но, а на разработчиков на нём, как на ненормальных, в то время как Android - это "модно, стильно, молодёжно".
@темы:
наболело