Десктоп программирование что это
Да, я пишу десктопные приложения под Windows
Здравствуйте, меня зовут Владимир и я анонимный разработчик десктопных приложений под Windows. В этом месте все должны сказать «Здравствуй, Владимир!», а кто-то может быть добавит «Молодец, что осознал!». А потом все похлопают. Нет, правда, иногда от чтения Хабра у меня возникают именно такое ощущение, что нормально, нет, даже не «нормально», а допустимо и одобряемо сегодня писать только микросервисы для каких-то стартапов, которые будут по какому-то REST API отдавать данные какому-нибудь фронтенду на Ангуляре, который и будет, наконец, показывать пользователю что-то невероятно полезное, вроде таблицы с аггрегированными отзывами о стрижках пуделей с возможностью посмотреть на гуглокартах где бы в вашем городе можно было сделать именно такую стрижку вашему пуделю (несуществующему). А никаких других программ писать уже нет-нет, никак нельзя! Что за чушь?!
Да, многое сегодня происходит в вебе и на мобильных устройствах, но, знаете ли, далеко не всё. Значительная часть приложений по-прежнему является десктопным софтом. И даже (о, ужас!) не под Mac Os или Linux, а под тот самый богомерзкий Windows. И, знаете ли, софт этот живёт, развивается, поддерживается и является ежедневным рабочим инструментом миллионов людей. И никуда он мигрировать не собирается, потому что есть причины, по которым иногда именно десктопное приложение является лучшим вариантом.
Десктопный софт работает без интернета
Работа пользователя не прервется от падения столба на датацентр Амазона или умелого тракториста в соседнем дворе. Вся мощь криворуких сисадминов провайдера, Великих Правительственных Файрволов, горе-хакеров, облачных сервисов, которые на самом деле ни разу не облачные — всё это бессильно перед ПО, которому не нужен интернет, чтобы работать. Пользователь приходит на работу, открывает свой Autocad\Maya\ПО_по_рассчёту_дырчатости_бубликов — и получаёт свой результат, который принесёт его фирме деньги. А больше ничего и не надо.
Лицензирование десктопного софта просто и понятно
Нет, бывают, конечно оригиналы, которые невероятно удачную модель лицензирования «ваша программа через год превратиться в тыкву» заменяют на ещё более удачную «ваша программа через год откатит все апдейты и превратится в семена тыквы». Но это редко. В основном вы покупаете программу, активируете лицензию — и она работает. Всё, что бы там дальше не стрельнуло в голову её авторам — уж по крайней мере эта версия у вас работать не перестанет! 100% гарантия того, что завтра вы включите компьютер и вот этот вот ярлык запустит то же самое, что работало вчера — не прекрасно ли это? Можете ли вы рассчитывать на такую же гарантию у веб-сайта? Да черта с два — вспоминаем недавнюю историю с некоторым популярным сервисом про кино. Ну так ладно кино, а если бы что-то подобное произошло с ресурсом, на который завязана ваша работа и зарплата?
Десктопный софт выглядит одинаково каждый день
Установив некоторую версию софта, человек может научиться работать в ней быстро и эффективно. Со временем ты изучаешь быстрые клавиши, уже не ищешь ту или иную кнопку, ты знаешь что сейчас произойдёт и сколько времени это займёт. Работа становится предсказуемой. Если менеджер в фирме по установке пластиковых окон уже рассчитал в некоторой специализированной программе 100 окон, то время рассчёта 101-го окна он может вам назвать с точностью до пары секунд. И будет прав. Можем ли мы рассчитывать на что-то похожее с веб-сервисами? Ага, разогнались. Как же меня в своё время бесил Gmail, который к такой элементарной вещи как почта каждые 2 недели придумывал то фильтры, то теги, то категории, то 5 разных видов UI, то чат, то ещё какого-то черта лысого. Просто дай мне мою почту и ничего не меняй! Нет, так нельзя, надо вот сюда рюшечку и сюда иконочку. Ну и ладно, пойду-ка я в Outlook. С десктопным софтом вы сами, по крайней мере, решаете когда именно он будет обновляться и до какой версии.
Десктопный софт доступен для расширения
Частенько у десктопного софта есть система плагинов и есть уже готовые плагины, которые можно скачать и поставить. Ну или есть SDK и можно написать плагин самому. Или заплатить за его разработку. А даже если системы плагинов нет, то всё равно что-то да есть: есть интерфейс, который можно автоматизировать с помощью чего-то типа AutoIt, есть входные и выходные форматы данных, которые можно парсить, есть в конце-концов, бинарники, которые можно дизассамблировать и что-то подправить\понять\добавить. Нет, такое, конечно, по лицензии часто делать нельзя, но если очень надо, вот вопрос жизни и смерти человечества, то это по крайней мере физически возможно. А что с сайтом? Зачастую у нас либо нет вообще ничего, поддающегося расширению, либо есть API, который ограничен ровно настолько, чтобы ничего толком полезного с ним было сделать нельзя. Ну, спасибо большое.
Десктопный софт работает
В десктопной программе мне не нужно рассказывать пользователю, что у него старая версия IE или нет Flash или заблокировна Java — я просто поставлю инсталлятором всё необходимое. Мне не нужно его разрешение на геолокацию или доступ к папке с фотографиями — я пропишу его согласие на это в том лицензионном соглашении, которое все принимают не читая. У меня есть доступ к железу. У меня есть доступ к диску. Я могу написать всё, что угодно и не заниматься героическим решением задач типа «как передать данные из одной вкладки браузера в другую» или «как подписать платёж с помощью аппаратного криптоключа».
С десктопным софтом быстрее начать работать
Это кажется парадоксальным — ведь устанавливаемое ПО нужно скачать и установить, а сайт можно просто открыть в браузере. Но давайте посмотрим, что будет дальше: десктопное ПО запустится по двойному клику на иконке и сразу готово к работе. В то время как сайт, скорее всего, попросит вас зарегистрироваться (нудная процедура, ещё небось и капчу разгадывать заставят), потом пришлёт вам письмо для подтверждения почты, потом попросит авторизоваться. Если мы говорим о платных сервисах, то за десктопную программу нужно заплатить 1 раз, а сайт скорее всего попросит подписаться на регулярные взносы. В итоге скачать пару мегабайт и 2 раза нажать «Next» в инсталляторе получается куда быстрее пробежки по граблям при попытке начать пользоваться модным сайтом.
Десктопный софт работает быстро
Да-да, я знаю что Javascript по бенчмаркам работает уже в 2 раза быстрее ассемблера. Да хоть в 10 раз бенчмарки эти ваши будут показывать — что-то не выходят пока что последние Call of Duty и GTA в браузерах. По-старинке гоняют байтики древним нативным кодом. И чего это они? Не понимают ничего, видимо.
Десктопный софт можно контролировать
Саму инсталяху можно проверить антивирусом. И установленную программу можно. А ещё её можно запустить от юзера с ограниченными правами. Или в виртуалке. Или ограничить файрволом. Данные из неё можно сохранить локально, а можно — на удалённый диск. Можно забекапить. Удалить можно. Что из этого всего можно сделать с веб-сайтом? Вы понятия не имеете, что он сделает с вашими данными, куда сохранит, кому продаст, когда потеряет, почему не забекапит и зачем оставит после удаления вашего аккаунта.
Почему же в окружающей нас хабрареальности (и не только) так мало уделяется внимания десктопному ПО и так много информации о веб- и мобильной разработке?
12 типов разработчиков, которые должен знать каждый рекрутер
Растущий спрос на подбор программистов означает, что рекрутеры должны постоянно улучшить свои знания
У разработчиков то же самое, что и у других сотрудников: у всех разные навыки и способности. Например, ит специалист, который специализируется на создании визуального интерфейса, работает совершенно иначе, чем разработчик, который фокусируется на логике, лежащей в основе программного обеспечения. Используемые инструменты также играют важную роль.
Однако, поскольку вы не являетесь разработчиком (в большинстве случаев), вам может быть трудно отличить их друг от друга и найти того, который лучше всего соответствует вашим потребностям.
В этом году Stack Overflow проводил исследование где было опрошено более 90 000 человек с прицелом на технологическую отрасль и, в частности на фокус развития. Они использовали эти данные для создания списка 12 самых распространенных типов программистов. Это поможет ответить на самые важные вопросы в будущем: в какой области активно работает разработчик, как он работает и что именно он делает?
Front-end developers
Front-end разработчики, также известные как разработчики на стороне клиента, сосредоточены на создании, поддержании и улучшении пользовательских интерфейсов, с которыми большинство из нас взаимодействует при использовании продукта или технологии. Они, как правило, заинтересованы в том, чтобы сделать дизайн пользовательских интерфейсов более интуитивно понятным и решить кросс-браузерные проблемы.
Mobile developer (Мобильные разработчики)
В то время как разработчики десктопов пишут код, который используется для ноутбуков и настольных компьютеров, разработчики мобильных приложений пишут код для операционных систем мобильных устройств, таких как iPhone и Android. Некоторые мобильные разработчики в основном являются специализированными фронтендами, которые используют мобильные технологии, платформы и языки программного обеспечения вместо языков веб-программирования. Однако другие разработчики мобильных приложений используют автономные приложения и системы, такие как разработчики настольных компьютеров. Они в основном работают на языках, специфичных для устройств iOS (Objective C и Swift) и устройств Android (Java / Kotlin), но могут также работать на C, C ++ и связанных с ними технологиях, а также на других широко используемых языках программирования.
В опросе было обнаружено, что мобильные разработчики, в среднем зарабатывают 55 000 евро в год и относятся к числу наименее оплачиваемых (как во всем мире, так и в Германии). В то же время они являются наименее опытными, что является еще одним фактором снижения заработной платы. В целом, можно сказать, что заработная плата мобильных разработчиков, как правило, ниже, чем у других программистов с таким же средним уровнем опыта.
Графические программисты
Графические программисты в основном работают в области производства видеоигр и спецэффектов. Они создают свои собственные проекты или реализуют другие, работая над рендерингом, затенением и другими визуальными эффектами, создавая сложные изображения в играх, фильмах, телешоу и других визуальных медиа. Их навыки, как правило, чрезвычайно специфичны, и они часто обладают обширными базовыми знаниями в области математики и алгоритмов, а также художественными навыками и талантами. Графические программисты обычно свободно владеют такими языками программирования, как Java, JavaScript и C ++. Те, кто знает специализированные языки, такие как Swift и Objective-C (которые используются для разработки игр для iOS), как правило, пользуются большим спросом. В целом, графические программисты, как правило, находятся в нижней части диапазона зарплаты. Обычно они зарабатывают немного больше, чем мобильные разработчики € 55 000 евро в год, но, как правило, них немного больше опыта.
Инженер баз данных
Инженеры баз данных (и администраторы) создают и управляют системами баз данных, а также системами и приложениями, используемыми для извлечения данных из хранилища баз. В некоторых позициях инженеры баз данных также управляют конвейерами данных (т. е. они преобразуют производственные данные в полезные данные анализа), а также фокусируются на оптимизации производительности. Их навыки, как правило, включают реализации на основе SQL (такие как MySQL и PostgreSQL) и могут также включать более специфичные и современные базы данных NoSQL (такие как MongoDB и Cassandra). Инженеры по базам данных также свободно владеют языками программирования, особенно Python.
Data scientists
Специалисты по данным используют инструменты программирования для преобразования больших объемов данных в полезную информацию, чтобы делать выводы и получать информацию. Как правило, они не относятся к области компьютерных наук, но хорошо разбираются в использовании языков машинного обучения, таких как R, Python, и таких инструментов, как Spark, для проведения статистического анализа и прогнозирования. Как правило, они обладают обширными знаниями в области статистики и способны эффективно общаться с руководством, отделом продаж, маркетинга и другими отделами.
Исследователи данных являются одними из самых высокооплачиваемых разработчиков, если посмотреть на их средний опыт. Они занимают четвертое место среди респондентов и среди самых высокооплачиваемых разработчиков в мире. Согласно опросу, дата сайнтисты со средним опытом 7,8 лет не слишком опытны. Тем не менее, их средняя зарплата выше, чем у более опытных разработчиков, таких как администраторы баз данных и разработчики десктопов.
DevOps и инженеры по надежности сайта (SRE)
Инженеры DevOps и Site Reliability упрощают процесс производства приложений. Они специально нацелены на написание кода, который гарантирует, что приложение безопасно запускается в производство и остается функциональным и доступным как для разработчиков, так и для пользователей. Это включает в себя множество задач и дисциплин, в том числе создание процессов, предоставление ресурсов и обеспечение устойчивости инфраструктуры приложения к возможным вирусам, повреждению базы данных, ошибкам и другим потенциальным проблемам. Как правило, они хорошо знакомы с облачными провайдерами, такими как AWS и Azure, инструментами для непрерывной интеграции, такими как spinnaker, а также с реализациями Git и системами управления журналами, такими как Splunk.
Специалисты по обеспечению / контролю качества (QA)
Специалисты по обеспечению качества (также называемые QA) гарантируют, что приложение работает должным образом. Инженеры QA уделяют особое внимание обеспечению того, чтобы код, написанный другими разработчиками, не повредил рассматриваемое приложение. Традиционно инженеры QA вручную тестировали коды с помощью программного обеспечения, чтобы увидеть, что-то пошло не так. Хотя многие инженеры QA по-прежнему считают это частью процесса, они также могут программировать автоматизированные тесты, которые имитируют использование и проверяют наличие ошибок. Это могут быть юнит-тесты или интеграционные тесты.
Поскольку они работают над кодом, написанным другими разработчиками, инженеры QA говорят на разных языках программирования. К ним относятся наиболее распространенные языки для автоматизации тестирования (Java и Python), а также другие языки, такие как Ruby. В среднем они являются одними из наименее опытных разработчиков. Хотя их зарплата находится на нижнем уровне спектра, их зарплата в среднем выше, чем у других разработчиков с большим опытом. Исследование показывает, что они примерно на одном уровне с фронтенд разработчиками с точки зрения многолетнего опыта и уровня заработной платы.
Разработчики для управления взаимоотношениями с клиентами (CRM)
Разработчики по управлению взаимоотношениями с клиентами находятся на границе между компьютерными технологиями и продажами. Они сосредоточены на создании, настройке и внедрении корпоративного программного обеспечения (программного обеспечения, которое хранит информацию о клиентах и бизнесе). Корпоративное программное обеспечение обычно относится к одной из трех категорий: системы управления взаимоотношениями с клиентами (например, Salesforce), системы планирования корпоративных ресурсов (например, SAP) и системы хранения документов (например, Sharepoint). Разработчики управления взаимоотношениями с клиентами могут сыграть решающую роль в повышении продаж и удовлетворенности клиентов, написав коды для улучшения процессов продаж и продуктов.
Embedded developers (Разработчики встраиваемых систем)
Разработчики встраиваемых систем отличаются от всех других типов программистов, упомянутых в этом списке, тем, что они работают не с программным обеспечением, а с аппаратным обеспечением. Это означает, что вместо написания кодов для систем, программ и приложений, работающих в машине, они работают на самой реальной аппаратной системе. Разработчики встроенных программ программируют поведение микроконтроллеров микросхем, встроенных программ и других устройств, иногда даже «голых» (Системы без операционной системы) между оборудованием и кодом. Как правило, они работают на C / C ++, имеют много инженерных знаний и становятся все более востребованными, поскольку все больше вещей, которые мы используем в повседневной жизни (например, устройства и транспортные средства), требуют микропроцессоров и других микросхем со встроенной логикой.
Вот все 12 типов разработчиков, которые должен знать каждый IT рекрутер в своей работе. Надеемся, что подбор ит персонала станет для вас немного легче.
Десктопное или веб-приложение: плюсы и минусы
Сегодня поговорим об отличиях десктопных и веб-приложений. Не обещаем, что сможем быть полностью непредвзятыми, но постараемся честно рассмотреть плюсы и минусы.
Итак, веб-приложение работает через браузер, используя его как среду выполнения, десктопное— устанавливается, запускается и работает локально. Сравним их по основным характеристикам.
Веб-приложение не требует установки, все обновления происходят на сервере, доставляются пользователям сразу — достаточно просто перезагрузить страницу или выйти, а потом снова зайти в аккаунт. Но иногда для его работы нужно установить дополнительные библиотеки или использовать защищенные сетевые протоколы.
Десктопное нужно устанавливать на компьютере или мобильном устройстве, обновлять каждый раз, как выходит новая версия. Несмотря на то, что чаще всего процесс автоматизирован — все равно это занимает время пользователей и ресурсы устройств. Дополнительно придется отслеживать версии на каждом компьютере, смартфоне и планшете.
Веб-приложение публикуется на локальном или облачном сервере, там же происходит процесс обновления. При этом сервер нужен в любом случае, даже если решение совсем простое. Ведь кроме фронтенда, с которым пользователи будут работать через браузер, нужно где-то размещать бэкенд.
Десктопное придется устанавливать вручную на каждом устройстве. В компании, где много рабочих мест, это может занять достаточно много времени. Плюс в том, что не обязательно выбирать сервер или искать ресурсы для публикации, если речь не идет о клиент-серверном решении.
Работа веб-приложения зависит не только от того, насколько грамотно оно разработано и характеристик пользовательского устройства, но также от скорости интернет-соединения, работоспособности удаленного сервера.
Десктопное работает автономно, поэтому главное — качество кода и стабильность оборудования, на котором этот код выполняется. Но если связь с сервером необходима — то возникают те же проблемы, что у «конкурента».
Веб-приложение доступно из любой точки мира, с любого устройства, а пользовательские файлы всегда будут под рукой. Но только если есть интернет-соединение или реализована возможность работы офлайн и загрузки-выгрузки данных.
Десктопное доступно всегда — но только с устройства, на котором оно установлено. Чтобы работать с разных устройств, его придется установить на каждом, а также придумать, где хранить файлы, чтобы всегда иметь к ним доступ.
Веб-приложение одинаково хорошо будет работать на любом устройстве, будь то стационарный компьютер, ноутбук, планшет или смартфон — ведь оно практически не зависит от «железа» или операционной системы. Главное — подходящий браузер. Как правило, для работы большинства веб-клиентов подходят Google Chrome, Mozilla Firefox, Safari от Apple или Windows-браузер (Microsoft Edge / Internet Explorer).
Десктопное зависит от операционной системы, процессора, видеокарты, ряда других параметров. Приходится учитывать нюансы каждой среды (в том числе при «отлове» ошибок), писать код с учетом возможных вариантов, нанимать отдельных разработчиков или даже целые команды для версий под разные ОС.
Веб-приложение полностью зависит от браузера и технологий его работы. Поэтому есть ряд ограничений, например — в доступе к аппаратному обеспечению вашего устройства. Это и некоторые другие ограничения обойти невозможно (во всяком случае, сейчас). Но целый ряд задач можно решить по принципу «что нельзя переписать, можно надстраивать или расширять». Редакторы документов, изображений, аудио, видео, 3D графики; системы управления проектами; хранилища файлов; no-code конструкторы — успешно работают в браузерах. Инструменты быстрой интеграции сервисов, а также интерфейсные библиотеки еще больше расширяют существующие возможности.
Десктопное позволяет реализовать буквально любые функции — в этом оно однозначно превосходит web. Во всяком случае, полноценного онлайн аналога Photoshop или Sony Vegas еще никто не разработал. Системные утилиты — определенно сфера десктопной разработки. Как и программы, которые должны долго работать в фоновом режиме — например, чаты или торрент-клиенты — через браузер с ними просто неудобно будет работать. Также такое ПО чаще используется для специфических проектов, с нестандартными интерфейсами или функциями. Поэтому web разработка пока не представляет опасности для desktop программистов— эти технологии будут развиваться параллельно, просто под разные задачи.
По поводу скорости работы все не так однозначно, как может показаться. Несмотря на то, что браузерный клиент постоянно обменивается данными с сервером, быстродействие будет во многом будет зависеть от того, насколько грамотно он спроектирован, «чистоты» кода, возможностей оборудования, стабильности канала связи. Разница в быстродействии, которая очевидна при тестировании, зачастую незаметна для пользователей.
Веб-приложение, разработанное с использованием современных протоколов и средств защиты, способно полноценно обеспечивать сохранность данных. Однако на некоторые моменты разработчики не могут повлиять: браузер, облачный сервер, канал связи — могут повысить уровень безопасности за счет дополнительных средств проверки, но также снизить его за счет своих уязвимостей. Несомненный плюс для пользователей: такое ПО проще контролировать. Ограничения среды снижают вероятность, что оно скрыто получит доступ к файлам или запустит какой-либо процесс.
Десктопное настраивается более гибко, а значит — теоретически при его разработке можно предусмотреть все потенциальные уязвимости. На практике — вряд ли. Впрочем, сделать его полностью безопасным все же можно. Но только если устройство, на котором оно установлено, не будет никуда подключаться, даже к защищенной локальной сети. В противном случае — риск все равно будет.
Однозначно сказать, что безопаснее — сложно (если вообще возможно). На это влияют много факторов, прежде всего — человеческий. А ведь именно в защите от человеческого фактора, в различных его проявлениях, заключается смысл всех мер безопасности.
Но очевидно, что доверие к десктопному ПО выше. Некоторые организации принципиально не соглашаются работать в браузерах, многие пользователи все еще относятся к ним настороженно. Однако ситуация меняется — с развитием технологий растет лояльность людей к ним.
Возможности браузерной разработки огромны, ее потенциал раскрыт далеко не полностью. Технологии развиваются, рынок ИТ растет, предлагая все новые приложения — при прочих равных пользователи будут выбирать web просто потому, что это удобнее. Если говорить о решениях для корпоративных клиентов, то тут браузерные приложения незаменимы. Они гибкие, универсальные, не требуют предварительной подготовки среды, позволяют сэкономить финансы компании, аппаратные ресурсы, время сотрудников.
Но рассмотрим другое мнение. Некоторые разработчики считают, что перспективы далеко не безоблачные. Слишком несовершенны технологии работы браузеров, слишком много некачественного ПО уже «накодили». Поэтому пользователи браузерных решений будут возвращаться обратно к десктопным. Такая тенденция будет продолжаться, пока разработчики браузеров массово используют Java Script. Только когда появится реальная альтернатива — можно будет делать прогнозы на будущее.
Веб-приложения уже сейчас подходят для решения многих задач — как бизнеса, так и обычных пользователей. Если вы решили разработать свое — используйте no-code платформу AppMaster.io.
Готовые блоки кода и визуальные инструменты для работы с ними помогут вам создать готовое веб-приложение и его серверную часть гораздо проще и быстрее, чем методы классического программирования!
На чем писать мультиплатформенное desktop-приложение? Взгляд менеджера
Сегодня авторы большинства приложений уже не могут позволить себе выпускаться под одну платформу. Early adopters сидят под маками, мейнстрим сидит под Win32, а гики и адепты open source предпочитают Linux. Каждая из этих аудиторий обладает уникальными свойствами, а поэтому важна для большинства проектов.
Данная статья задумывалась как открытая попытка разобраться, на чем стоит писать мультиплатформенное desktop-приложение. Приглашаю высказать свое мнение людей с опытом создания таких приложений.
Изначально определим критерии, по которым будем оценивать различные платформы. В первую очередь — это удобство пользователя. Уверен, что вы замечали общие черты у приложений, написанных под разные платформы. Во вторую — это интересы проекта. Моя задача — построить успешный бизнес, а не играться с различными инструментами.
Обозначим рамки исследования. Мое приложение — небольшая утилита для пользователя-«чайника», которая качает файлы из интернета: минимум GUI, небольшой набор функциональности, использование внешних С++ библиотек.
Ну что, начнем. Какие есть варианты? Я рассмотрю Java, C#, C++, Python. Буду рад, если вы расскажите о других альтернативах.
Данный язык/среда изначально задумывались как нечто мультиплатформенное. На Java написано большое количество приложений, крупные проекты вроде Eclipse используют именно этот фреймворк.
Все приложения, которыми мне доводилось пользоваться, не использовали «родной» интерфейс Win32. Не знаю, чем руководствовались разработчики, но с точки зрения конечного пользователя это выглядит очень не симпатично.
Примеры приложений: Eclipse, ZDE, клиент для Gnutella Limewire.
Плюсы: мультиплатформенность, большое количество кадров, развитость фреймворка.
Минусы: необходимость установки фреймворка, кривость GUI, низкая производительность.
Аналогично с Java, приложения на C# имеют большой минус — необходимость устанавливать фреймворк. Я сам отказался от установки несколько приложений, которые требовали этого фреймворка. Менее продвинутые пользователи будут ещё более требовательными.
В остальном — сплошные плюсы, на мой взгляд.
Примеры приложений😕
Плюсы: мультиплатформенность, большое количество кадров, хорошая производительность, развитость фреймворка.
Минусы: необходимость установки фреймворка.
Старичок дотянул до наших дней и замечательно себя чувствует. Много приложений под платформы Linux и Windows до сих пор пишутся на этом языке.
Программы, написанные на C++, являются примером для других по размеру дистрибутива и экономному использованию системных ресурсов (процессор, память). Тем не менее у разработчиков есть масса претензий к С++. По моему мнению, язык является «устаревшим» и его популярность в дальнейшем будет снижаться, что подтверждается индексом TIOBE.
С точки зрения развития проекта, по сравнению с динамическими интерпретируемыми языками (вроде Ruby и Python), разработка на данном языке может иметь менее высокую скорость и более высокие издержки изменения проекта. Для стартапа, которому не столь важна производительность приложения, это может стать существенным минусом.
Примеры: Firefox.
Плюсы: отличная производительность, большое количество кадров, большое количество библиотек.
Минусы: невысокая скорость разработки.
Python
Взглянуть на Python в качестве платформы для desktop-приложений меня заставила программа MusicBrainz Picard. Несмотря на свою скриптовую сущность, Python легко собирается в один exe-файл, не требуя от пользователя установки дополнительных компонентов.
В случае разработки небольшого приложения, интерпретируемые языки вроде Python будут большим плюсом. Легкость написания и высокая скорость изменения приложения пригодится любому стартапу.
Огромным минусом различных «модных» технологий является их низкое распространение, а значит серьезные проблемы в поиске квалифицированных кадров. Ситуация с поиском программистов итак плачевная, а если ограничиться узким языком — можно вообще никого не найти. С другой стороны, храбрость перейти на новый язык имеют наиболее прогрессивные разработчики. Может получиться так, что выбрав «перспективный» язык, мы сразу отсечем миллионы середнячков, оставив себе выбор из нескольких перспективных разработчиков.
Пример: MusicBrainz Picard, оригинальный BitTorrent.
Плюсы: высокая скорость разработки и изменений, хорошая интеграция с библиотеками на С и С++.
Минусы: мало кадров, низкая производительность.
Выводы
К сожалению, любая из вышеперечисленных платформ имеет свои плюсы и минусы, однозначного решения найти не удалось. Выбор одной из них сегодня принесет преимущества и недостатки, влияние которых на проект мы увидим только завтра.
Я пока выбираю между С++ и Python. Первый является «надежным» решением с известными недостатками. Второй является «рискованным», но интересным и перспективным. Надеюсь, ваши отзывы помогут мне сделать окончательный выбор. Какую платформу выбрали бы вы на моем месте?
PS. Я сейчас ищу программистов в этот стартап (с++/python/php), поэтому если кому интересно — присылайте свое резюме.