Chat with us, powered by LiveChat

Выбор технологии для вашего проекта

Фреймворки, CMS и популярные языки программирования - разбираемся в технологиях

Фреймворки, CMS, CMF и популярные языки программирования — разбираемся в технологиях, прежде чем запускать свой проект

Часто к нам приходят клиенты с убеждением, что программная разработка должна быть сделана именно на PHP или только на Python, без объяснения причин.

сложный выбор


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

В чем проблема?

Чтобы принимать рациональное решение надо разобраться, какие технологии работают для конкретных задач и сформировать перечень объективных критериев оценки.

Взаимосвязь размера проекта и технологий

Простые задачи:

Для небольшого простого проекта, как корпоративный веб-сайт с возможностью редактирования контента, обычно достаточно готовой платформы или конструктора сайтов, например, 1С-Битрикс, UMI CMS или WordPress.

В результате с минимальными инвестициями вы получите возможность воплотить свои идеи здесь и сейчас. Возможно, вы немного потеряете в функциональности или столкнетесь с парой неприятных моментов при воплощении задуманного дизайна.

конструкторы сайтов

Сложные проекты среднего размера:

Оптимальным решением будет либо кастомизируемый SaaS, либо разработка ПО специально под ваши нужны с использованием готовых фреймворков. Чуть ниже подробнее расшифруем, что есть что.

А пока поясним на примерах. Если вы знакомы с бухгалтерской программой 1С, то это как раз классический пример SaaS решения — программы, которую вы можете купить, оплатив лицензию. Установили и сразу начали работать.

А если что-то требует серьезной настройки, например, вам нужен двойной учет бухгалтерских операций для внешнеэкономической деятельности, то это и будет кастомизация. Небольшие доработки — и все готово.

1с

Но: если доработка влияет на ядро программы, придется постоянно пользоваться поддержкой команды программистов. Как вода из дырявого ведра, все сделанные изменения будут утекать с очередным обновлением программы, регулярно предоставляемым разработчиками-владельцами 1-C.

Вот мы и столкнулись с первой дилеммой — готовое решение vs сделанное специально под вас.

  • Вариант написания уникальной программы с использованием готовых программных блоков может быть экономически более рациональным. Но будьте готовы, оно такое ПО во многом зависит от компании-собственника. Может быть, завтра она решит отказаться от поддержки вашей модели планшета или сократит колл-центр, переведя поддержку на роботов.
  • При индивидуальной разработке вы — единоличный собственник программы, и разработчики вас ценят, как золотого клиента, обеспечивая индивидуальный подход и окружая заботой. Техподдержка у вас по индивидуальному плану и в согласованном объеме.

Сложные программные продукты и масштабируемые проекты

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

Глубокий анализ этого набора факторов и дает правильный ответ, какой язык программирования, компоненты и архитектура должны быть выбраны.

продукты google

В качестве примера рассмотрим системы Яндекс или Гугл. Для решения таких задач нет готовых инструкций. Разработка идет с нуля, под цели проектов привлекаются не только готовые фреймворки, а развиваются целые языки программирования — Го, Котлин. Выкупаются компании-разработчики, изобретатели инновационных технологий.

Немного теории: на чем строятся программные продукты

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

  • Языки программирования

Запрограммировать можно все. Но это долго и дорого.
Оптимизация выражается в использовании языка, специально заточенного под решение определенных задач и интеграции готовых компонентов (фреймворков).

Примеры языков программирования: Java, PHP, C++, JS, Go.

популярные языки программирования
  • Фреймворки

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

  • СMS (ЦМС или системы управления контентом)

Готовые программы для наполнения контентом и управления простым сайтом, блогом, интернет-магазином с предопределенным набором функций (админ-панель с системой паролей, текстовый редактор, настраиваемые новостные ленты, добавление видео, аудио и графических файлов и т.д.).

CMS, как системы с открытым кодом,  постоянно пополняются новыми возможностями. Однако они не защищены от различного рода уязвимостей. Гарантировать надежность системы, в которую ежедневно вносятся изменения всеми желающими нереально.  

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

популярные цмс

Популярные языки программирования

Если отбросить палочки и счеты, то первым языком программирования является Ассемблер. Работа на нем состояла в написании команд в виде машинного кода.

Определенный набор цифр отвечал за выполнение конкретной операции электронно-вычислительной машиной (ЭВМ тогда с трудом помещались в комнату размером с футбольное поле). К счастью, прогресс не стоит на месте. И работа с кодом теперь автоматизирована.  

Все языки, которые переводят (компилируют) некоторый предписанный стандартами синтаксис в машинный код — компилируемые — составляют группу высокоуровневых языков программирования.

популярные зыки программирования

Ниже подборка из популярных языков.

  • JS —  простой язык программирования для разработки динамических страниц веб сайтов. Программистов на JS много. Разработка стоит дешево.
  • PHP — для небольших и средних проектов. Разработчики относительно недорогие. С выходом новой версии наверстывает упущенную в последние годы популярность.
  • Python — молодой язык, позволяет эффективно решать сложные задачи. Программисты дорогие, и их мало.
  • Ruby  — молодой и простой в освоении язык, быстрая разработка. Отлично подходит для простых и небольших проектов. Программистов немного. Средний ценовой сегмент.
  • C#  — многоцелевой язык для решения нестандартных задач и больших проектов. Высокооплачиваемые программисты.
  • C++ — один из самых продвинутых, быстроразвивающихся языков, популярен во всем мире. Программисты — одни из самых высокооплачиваемых.
  • Kotlin — молодой язык для кросс-платформенной разработки. Активно поддерживается Гуглом для внедрения проектов на платформе Андроид. Опытных программистов мало, они востребованы и высоко ценятся.

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

Основываясь на своем опыте мобильной разработки, из всех молодых языков программирования мы готовы рекомендовать Swift. Его возможности в разработке нативных приложений для iOS и кросс-платформенных мобильных систем, достойны внимания.
По статистике, Swift сегодня — самый перспективный язык для разработки под “яблочные” гаджеты.

swift ios

Фреймворки и CMS

Фреймворки — это общий класс, описывающий запрограммированные наборы функций с открытым кодом, доступные для переиспользования. Существуют многоцелевые и узкоспециализированные фреймворки. Некоторые работают только в связке с одним языком программирования, другие совместимы сразу с несколькими.

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

cms types

Важное отступление: Некоторые фреймворки позволяют вести управление контентом (аналоги CMS). Это более защищенный вариант решения проблемы в сравнении с Вордпресс, самой популярной СМS. На ней регулярно находят уязвимости. Часто происходят утечки информации, либо сайт становится источником для распространения вредоносного ПО.   

Популярные фреймворки:

  • PHP: Symfony, Yii, Laravel
  • Python: Django
  • Ruby: Ruby On Rails
  • C #: .NET
  • C++: Qt
  • JS: AngularJS, ReactJS, Vue.js

CMS and CMF

По сути CMS (Система управления контентом)  — это готовая программа. Она которая позволяет добавлять тексты, картинки, видео и новости, а часто еще и товары, цены, описания и фильтры. ЦМС требует минимальной настройки и доступна без навыков программирования. Основная часть работ может быть выполнена через админ-панель.

CMF (Content Management Framework). Контент менеджмент фреймворк — это частный вид фреймворка. Его работа — решение задач по управлению контентом. Но для применения он должен быть интегрирован в какую-то, пусть даже очень простую оболочку (кастомное ПО).

Популярные CMS и CMF:

вордпресс

WordPress — самая популярная в мире платформа, которая изначально была спроектирована для ведения блогов. Бесплатна, но есть коммерческие версии оформления (темы) и плагинов (дополнительные встраиваемые блоки). Их возможности, например, добавление ссылок на страницы сайта, как у Википедии, построение карты сайта или СЕО-подсказки.

Другие, менее популярные, бесплатные CMS — это Joomla!,  Drupal, ModeХ. Сравнение можно посмотреть здесь: https://habr.com/en/post/151879/

Мобильные приложения

Есть 2 подхода к разработке приложений для мобильных устройств: нативный, т.е. строго по стандарту конкретной платформы и не работающая на другой. И кросс-платформенный. Такие приложения не требуют установки и запускаются в браузере.

Нативная разработка

Для “яблочных устройств”  используют Swift и Objective-C. Для Андроид применяют  Java и Kotlin.

Сложные высоконагруженные приложения делают под конкретную платформу. При этом на полную катушку используются все возможности операционки, например, экономия памяти и  заряда. Минусы:

  • большой бюджет на разработку;
  • время на 2 самостоятельных проекта (один под iOS, второй под Android, пусть даже со сходным дизайном).
ios vs android

Гибридные приложения

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

Если это HTML и таблица стилей CSS3, которые используют для простых веб-решений, то функциональность приложения будет сильно ограничена. Начиная с глючного отображения на разных по размеру экранах смартфонов и заканчивая расходом заряда батареи мобильного телефона.

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

гибридные приложения

Перечень типичных проблем гибридной разработки включает:

  • Для разработчиков: выполнение требований двух платформ, иногда диктующих совершенно разные условия. Сложный, трудоемкий процесс.
  • Программный код под iOS и модифицированный под Android очень длинный. Это повышает риски медленной работы программы и выражается в задержках работы приложения на мобильном устройстве пользователя.
  • Гибридные решения обычно получают более низкие оценки в АппСтор и ГуглПлей, а это негативный сигнал для новых клиентов.

Использование фреймворков в кросс-платформенной мобильной разработке

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

Какую технологию выбрать?

Для построения комплексных программных систем часто используются сразу несколько языков программирования, фреймворков и библиотек. При этом оптимизируют объем необходимой памяти и учитывают особенности железа (пропускная способность и надежность). Также важно знать, нужно ли масштабировать решение в будущем.

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

Стоимость специалистов

Количество программистов, профессионально владеющих конкретным языком программирования, существенно влияет на их рыночную цену. А это в свою очередь — на финальную стоимость разработки.

Ссылка на официальный обзор ставок разработчиков с сайта vc.ru

Резюме:

  • Если проект действительно сложный, то в нем будут задействованы языки программирования Python, C++ или те, что уже были использованы в программах, с которыми должна быть выполнена интеграция.
  • Для мобильной разработки под iOS вам потребуются профессионалы SWIFT, для Андроид — эксперты по Java.
  • Типичное гибридное приложение может быть выполнено с помощью популярных фреймворков: Cordova, Xamarin, Corona.
    Хороший обзор трендов на Хабре.
  • Финальный стек технологий сильно меняется от конкретной идеи. А на стоимость проекта влияет не только сам процесс разработки, но и цена поддержки.
стек технологий

Подведем итоги

Факторы, влияющие на выбор технологии разработки:

  • Средняя стоимость часа;
  • Суммарное количество часов проекта;
  • Наличие программистов на рынке;
  • Тип и размер проекта, масштабируемость и повторяемость задач, уникальность и сложность отдельных функций
  • Бюджет, максимальные сроки готовности ПО
  • Наличие готовых решений и/или надежной и функциональной среды разработки для кастомного решения
  • Технические требования, спецификация
  • Простота обслуживания и стоимость поддержки.
  • Возможность последующей модификации софта
  • Стратегический подход к разработке.

Вывод: цель нашей статьи была помочь вам разобраться в стеке технологий, применяемых сегодня на рынке веб и мобильной разработки.

Решение, какие компоненты использовать должно приниматься экспертами на основании анализа задач и требований к проекту.

Вам, как заказчику, рекомендуем собрать и донести до команды разработчиков все пожелания не только к текущему продукту, но и смутные идеи, каким бы вы хотели видеть продукт через 5 или 10 лет.

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