Как инженер-программист, я часто мечтаю о том, как будет выглядеть моя работа через 10, 20 или 30 лет. Сможет ли визуальный сценарий стать доминирующей формой создания программного обеспечения в будущем?

То, как языки развиваются, часто либо достигает более высокого уровня абстракции, либо вызывает сдвиг парадигмы.

Что делает язык более абстрактным, чем другой? Просто сняв часть ответственности с разработчика и автоматизировав ее таким образом, чтобы он работал почти во всех случаях использования. Одним из лучших примеров абстракции является сборка мусора (GC). Всегда будут существовать одна или две ниши, требующие ручного управления памятью, как в игровой индустрии, однако в подавляющем большинстве случаев использования GC позаботится об этом за вас.

Прогресс на данный момент

В 1947 году ассемблер увидел свет. Цель состояла в том, чтобы просто назначить удобочитаемые слова (аббревиатуры) необработанным инструкциям ЦП. Сборка очень сильно зависит от аппаратного обеспечения, поскольку разные процессоры могут иметь разные наборы инструкций, поэтому программа, написанная для одной модели, не обязательно будет работать для другой без какого-либо слоя перевода.

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

Процедурные языки становились все ближе и ближе к удобочитаемому языку с дополнительными абстракциями, такими как C, который гораздо более многословен, но все же требует от вас ручного управления памятью. Управляемые языки, такие как Java, затем абстрагировались (почти) от необходимости думать о распределении памяти, позволяя вам все больше и больше сосредотачиваться только на самой программе, а не на технологии, которая заставляет ее работать. Языки более высокого уровня теперь позволяют нам вообще забыть о типах. Сегодня написание строки кода на Python может привести к написанию гораздо большего количества строк на C.

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

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

Визуальный сценарий

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

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

Но есть причины, по которым он оставался ограниченным в рамках нескольких нишевых приложений.

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

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

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

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

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

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

Заключительные мысли

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

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