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

Но это была не единственная проблема ...

Несколько пропусков зажигания

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

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

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

Нет серебряной пули

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

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

Примером может служить стремительный рост количества языков, идиом и практик, иногда с противоположными подходами (например, строго / слабо типизированный, клиент-сервер / сервер, все различные новые JavaScript-фреймворки и т. Д.). Нефункциональные требования, такие как масштабируемость или безопасность, и новые ожидания, такие как мобильные устройства и взаимодействие с пользователем, только усложнили задачу.

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

Так почему еще нет?

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

Визуальные языки не расширяются

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

Визуальные языки создают медленный код

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

Инструменты визуального языка могут быть ужасными

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

Визуальные языки запирают вас

Любое технологическое решение приводит к определенному уровню блокировки. Страх оказаться в тупике оправдан, учитывая, что большинство визуальных языков генерируют нечитаемый код нижнего уровня, только целевые нишевые сегменты, поддерживаются стартапами-самоубийцами или еще не ушли. исследовательская лаборатория еще (где сейчас ведутся потрясающие работы вроде Брета Виктора). Истории успеха людей, использующих его в крупных проектах, по-прежнему редки, и эти сообщества продолжают расти.

Вы неврологически запрограммированы отвергать это

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

Но есть более глубокие причины, по которым вы не доверяете визуальным языкам:

Первый связан с нашей любовью к сложностям. Хотя можно сказать иначе, все мы, по словам отца юзабилити, Дона Нормана. Взять, к примеру, музыкальные инструменты: музыканты любят их, потому что их сложно освоить. Подумайте о законодательстве. Или даже язык: большая часть поэзии скрыта за сложными предложениями и словами. Нам нравится интеллектуальный вызов трудных мыслей. Ваш разум, вероятно, делает это прямо сейчас, соглашаясь с этими идеями или проверяя, есть ли в них что-то неправильное или упущенное.

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

Как сказал Стив Джобс: «Простое может быть сложнее, чем сложное. Но это того стоит."

Вторая причина еще более примитивна: это боязнь перемен. Мы тратим время на то, чтобы приобрести некоторый опыт, и внезапно нам кажется, что наше старое оружие больше не нужно. Но мы ошибаемся: наше оружие не может выполнять malloc или арифметические операции с указателями; они должны быть в состоянии разделить проблему на более мелкие части, понять процесс итераций до тех пор, пока мы не достигнем решения, обнаружить странные запахи кода, обсудить диаграмму на доске, провести рефакторинг систем для получения более совершенных архитектур.

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

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

Мы бывали здесь раньше

Из-за этих инстинктивных реакций все, что направлено на демократизацию вычислений, встречает скептицизм. HyperCard, Delphi, Visual Basic, COBOL. Мы, «настоящие» разработчики, слишком быстро указываем на их недостатки и безжалостно насмехаемся над ними, пока они не умрут, вместо того, чтобы помогать им совершенствоваться. Даже JavaScript почти постигла та же участь во времена DHTML.

Однако есть аналогия, которая может лучше показать нам будущее: переход от текстовых операционных систем, таких как Unix и MS-DOS, к графическим пользовательским интерфейсам, таким как Mac или Windows, который в то время подвергся противодействию со стороны нескольких компьютерных экспертов.

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

Вы можете представить себе мир без этих невероятных вещей?

Итак, мы наконец готовы к этому?

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

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

Первоначально опубликовано на www.outsystems.com.