Жесткие пределы low-code/no-code и каково альтернативное решение. Тезис Flatlogic


Введение

Если вы работаете в интернет-бизнесе, особенно в качестве инженера-программиста, вы наверняка слышали об инструментах low-code/no-code (LCNC). Популярные технологические порталы сегодня часто упоминают no-code; например, диаграмма google trends показывает постоянно растущий интерес к фразе «no code low code».

Количество инвестиций в low-code/no-code также постоянно растет. По крайней мере, до 2022 года. Вот график, построенный на основе данных Spreadsheetweb, который показывает данные до 2022 года:

К сожалению, свежей информации, описывающей реакцию венчурного рынка LCNC на недавний финансовый спад в 1 и 2 кварталах 2022 года, нет, однако, на мой взгляд, она должна коррелировать с общим спадом венчурного рынка в целом и не сильно отклоняться. Более того, согласно отчету Spreadsheetweb, содержащему различные прогнозы, прогнозируемый размер «Рынка платформ для разработки с низким кодом» еще более свифтовый, ожидается, что к 2027 году он достигнет 84,8 миллиарда (среднее значение прогнозов). Это очень много.

Таким образом, данные показывают, что low-code/no-code — это очень горячая тема, которая привлекает внимание инвесторов и освещается в СМИ, но вопрос в том, действительно ли они помогают в разработке программного обеспечения?

В этой статье сравниваются инструменты LCNC с классическим способом создания приложений, ставится под сомнение их способность создавать действительно пользовательские приложения, а также рассказывается об альтернативном решении (шаблоны сайтов и классические IDE) проблемы, которую пытаются решить инструменты LCNC.

Вкратце, что такое low-code/no-code?

Инструменты low-code/no-code обещают решить проблему огромных затрат и времени на создание веб-/мобильных приложений, минимизируя или устраняя количество денег, потраченных на дорогие инженерные ресурсы. По крайней мере, это обещание.

Типичный инструмент LCNC пытается подойти к разработке веб-приложений, предоставляя пользователю интерфейс drag and drop, где пользователь должен построить приложение, размещая элементы пользовательского интерфейса на холсте и соединяя их между собой, с источниками данных, и прикрепляя некоторые действия к определенным элементам. Другими словами, инструменты LCNC предоставляют среду для визуальной разработки программного обеспечения в отличие от традиционного способа, когда инженер пишет код в IDE. Предполагается, что новый способ более продуктивен и требует меньше технических знаний, поэтому утверждается, что инженеры-программисты полностью исключены из процесса. Это используется в качестве маркетингового сообщения, обещающего достижение исключительных результатов революционным способом.

Ниже приведены примеры некоторых инструментов LCNC, которые упоминаются на первой странице Google при поиске «no-code tools»:

Bubble, Retool, Microsoft Power Apps, Adalo, Webflow, Google Appsheet.

Визуальный язык программирования старой школы

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

Согласно Википедии, «визуальный язык программирования (ВЯП) — это любой язык программирования, который позволяет пользователям создавать программы, манипулируя элементами программы графически, а не задавая их текстуально». Хорошо, теперь давайте сравним это с определением платформы разработки без кода, которое дает Википедия: «Платформы разработки без кода (NCDP) позволяют программистам и непрограммистам создавать прикладное программное обеспечение с помощью графических пользовательских интерфейсов и конфигурации вместо традиционного компьютерного программирования». Звучит ли это несколько похоже? Или полностью похоже? Оба обещают создавать программное обеспечение графически, а не визуально. Поэтому имеет смысл проанализировать, а затем экстраполировать, что произошло с VPL и почему они так и не стали стандартом разработки программного обеспечения.

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

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

Иван также утверждает (и я с ним согласен), что именно по этой причине «визуальные языки программирования» так и не достигли широкой популярности — человек хочет давать инструкции в текстовом, а не визуальном виде. С моей точки зрения, это та же причина, по которой инструменты LCNC потерпят неудачу в долгосрочной перспективе — алгоритмы лучше читать и писать как текст. Пытаясь подойти к разработке программного обеспечения визуально, подобно «визуальным языкам программирования», инструменты low-code/no-code тоже получили слабые места VPL и, с моей точки зрения, обречены разделить ту же судьбу.

Low-code/no-code и полнота Тьюринга

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

В конечном итоге это означает, что для того, чтобы быть гибким в рамках инструмента LCNC, для создания действительно специфического приложения, соответствующего конкретным требованиям, необходимо писать код в рамках инструмента LCNC (SQL-запросы, инъекции javascript, шаблоны и т.д.), что уже возможно в некоторых из упомянутых инструментов, что в конечном итоге превращает инструмент LCNC в IDE.

Логика следующая, в виде упорядоченного списка:

  1. Я хочу создать приложение, минимизировав количество кодирования;
  2. Я захожу в инструмент LCNC и создаю приложение;
  3. Мне нужно расширить приложение под мои конкретные нужды, поэтому я пишу код в инструменте LCNC;
  4. Поскольку я уже пишу код, то почему бы мне не пойти на полную катушку, установить IDE и писать код обычным способом?

Таким образом, для того чтобы позволить создавать полноценное программное обеспечение, инструменты с низким кодом/без кода должны сближаться с IDE, а значит, конкурировать с текущими продуктами (Visual Studio, JetBrains). С точки зрения автора, проще добавить функции low-code/no-code в IDE (например, UI builder), чем создавать новую сложную IDE с нуля. Более того, инструменты LCNC основаны на браузере, следовательно, IDE также должна быть основана на браузере, что ограничивает ее возможности. Вот почему я считаю, что написание кода никогда не устареет в индустрии программного обеспечения.

Что насчет шаблонов?

Шаблон, стартовый набор, тема, кодовая таблица — это слова с очень похожим значением — набор файлов и папок, которые служат отправной точкой для приложения. Существуют различные примеры, например, бесплатные шаблоны на Github, такие как create-react-app или react-material-admin, ThemeForest с большим количеством тем WordPress, Template Monster, Creative-Tim и Flatlogic с премиум-шаблонами react, angular, vue, другие ресурсы, специализирующиеся на веб-шаблонах, и так далее. Только Flatlogic продал не менее 20 000 лицензий с момента своего запуска в 2013 году. Metronic имеет более 100 000 продаж. Количество использований бесплатных шаблонов еще выше и вряд ли поддается подсчету. Сколько пользователей ежедневно используют create-react-app?

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

Итак, суть в том, что рынок шаблонов — это тот рынок, который требует разрушения и инноваций. А не рынок LCNC, поскольку в конечном итоге всем нужно писать код. Прежде всего, рынок шаблонов жив. Вероятно, самым значительным игроком на нем является Envato, которая одна генерирует более $200M годового дохода, являясь прибыльной компанией с $36M прибыли. По моим оценкам, весь объем рынка сегодня составляет не менее $1B реальных доходов, производимых игроками рынка сегодня. Но вы никогда не услышите об этом рынке в новостях. Он просто работает.

Я считаю, что гораздо больше инвестиций в инструменты LCNC, и НЕТ инвестиций в шаблоны/темы, потому что гораздо легче продать «серебряную пулю» создания веб-приложений без кодирования инвесторам, так как большинство из них не являются техническими специалистами, следовательно, не понимают тезисов, объясненных в этой статье. Это также подогревается различными «исследованиями», прогнозирующими, что объем рынка LCNC достигнет $XXXB через несколько лет, в то время как о рынке шаблонов вообще никто не говорит.

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

Об авторе

Филипп Дайнека — специалист в области компьютерных наук с более чем 13-летним опытом работы в сфере разработки программного обеспечения. Филипп также является магистром экономики и генеральным директором компании Flatlogic в течение последних 8 лет. Вы можете следить за Филипом в Twitter @okendokenn.

Оцените статью
devanswers.ru
Добавить комментарий