Разное

Язык программирования визуальный: Визуальное программирование — почему это плохая идея / Хабр

Содержание

Визуальное программирование — почему это плохая идея / Хабр

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

Язык визуального программирования — это такой язык, который позволяет программисту создавать программы, манипулируя графическими элементами, а не печатая текстовые команды. Известным примером является Scratch, язык визуального программирования родом из MIT, который используется для обучения детей. Его преимущества заключаются в том, что он делает программирование более доступным для новичков и не-программистов.

В 1990-х годах было очень популярное движение по внедрению визуального программирования в корпоративную среду с помощью так называемых CASE-инструментов, где корпоративные системы можно было бы определять с помощью UML и генерировать [их код] без необходимости в привлечении обученных разработчиков программного обеспечения.

Это связано с концепцией «round tripping» («туда и обратно»), где система может быть смоделирована визуально, программный код будет генерироваться из полученных моделей, а любые изменения кода могут быть возвращены обратно в модель. Увы, подобные инструменты так и не смогли выполнить свою миссию, и большинство из экспериментов [по их внедрению] в настоящее время в значительной степени заброшены.

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

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

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

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

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

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

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

Между визуальным «кодом» и текстовым кодом существует рассогласование импеданса (

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

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

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

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

Большинство профессиональных программистов будут постоянно абстрагировать и декуплицировать код. По сути разница между хорошим и плохим кодом в основном и заключается в том, насколько программисту удалось это сделать. У инструментов визуального программирования очень редко есть эффективные механизмы для таких вещей, в результате «визуальный» разработчик оказывается в ловушке доступных возможностей, эквивалентной BASIC’у 1970-х годов.

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

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

Даже если они сохраняют свой макет в текстовом формате, «диффы» не имеют никакого или почти никакого смысла. Очень трудно сделать ‘blame’ (найти коммит и ответственного за изменения конкретной строки) в большой глыбе XML или JSON. Вещи, которые не имеют никакого значения для функционального исполнения программы, такие как положение и размер графических элементов, при этом постоянно приводят к изменениям в метаданных, что делает «дифф» еще более сложным для синтаксического анализа.

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

Апдейт

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

Другим контр-примером, приведенным в Reddit, были инструменты статической структуры, такие как дизайнеры пользовательского интерфейса, дизайнеры схем баз данных или дизайнеры классов. Я согласен, что они могут быть очень полезными. Все, что помогает визуализировать структуру данных или масштабную структуру программы, является бонусом. Но их никогда не бывает достаточно. Об этом свидетельствует полный провал инструментов из 90-х, таких как Power Builder, которые базировались на графических визуализациях для создания среды разработки без необходимости работать с кодом.

Об авторе:
Заметки, мысли вслух, обучение у всех на виду, недоразумения, ошибки, неразбавленные мнения. Я Майк Хэдлоу, проповедующий разработчик. Я живу недалеко от Брайтона на южном побережье Англии.

Перевод выполнен при поддержке компании EDISON Software, которая профессионально занимается разработкой и тестированием софта.

Что такое визуальное программирование – среды и языки, принципы, история технологии, программы, интерфейсы и примеры Scratch и Bubble

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

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

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

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

Узнайте больше о разработке без кода и визуальных инструментах на бесплатном двухдневном марафоне от онлайн-университета «‎Зерокодер»!

Отличительные особенности

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

⚡ Между разными элементами формируются связи. Буквально: стрелка протягивается от одного графического объекта к другому, чтобы показать, как именно они связаны и в каких отношениях состоят.

⚡ Обычно разобраться в интерфейсе довольно легко — платформы содержат фичу автоматического форматирования кода, расширяемый язык разметки и drag-n-drop редактор. Чисткой памяти занимаются роботы.

⚡ Регистр символов, к которому чувствительны некоторые языки программирования вроде C++ и Java, тут не имеет значения. Конечно, кроме случаев, когда в систему встраивается дополнительный язык вроде JavaScript.

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

Так выглядит интерфейс алгоритмического языка ДРАКОН российского производства. Он был разработан в 1996 году и используется до сих пор — в медицине, образовании и космонавтике.

Преимущества и недостатки

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

Так что визуальное программирование:

  • Подойдет новичкам — поэтому графические принципы использует, например, визуальная блочная событийно-ориентированная среда программирования Scratch — платформа для обучения детей разработке;
  • Посильно даже для тех, кто не умеет писать код. Большинство профессиональных no-code и low-code инструментов так или иначе задействуют визуальное программирование, как среда Scratch. Научиться использовать их проще и быстрее, чем начать писать на Python;

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

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

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

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

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

Идея применять графические элементы в разработке не нова — ее пытались внедрить в 1990-х годах. Успеха она не снискала, и многие программы тех времен оказались забыты. Не все — тот же ДРАКОН используется до сих пор. С алгоритмами работают и более современные платформы, такие как Flowgorithm, Visual Logic, Raptor.

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

Но алгоритмы и обучение — это не все. С ростом мощностей ПК растут возможности программ. Появляются новые библиотеки для существующих невизуальных языков, таких как JavaScript. Повышается востребованность приложений: рынок создает запрос, разрабатываются конструкторы, позволяющие собрать из блоков готовый сайт. Такие инструменты — это Tilda и WordPress, Bubble и FlutterFlow, десятки других конструкторов, не требующих знания кода.

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

Разрабатывать проекты без кода легко и интересно: этому учат на курсе «‎Зерокодер на Bubble». За семь недель мы учим создавать проекты, сравнимые по сложности и функциональности с написанными на текстовых языках программирования — таких как JavaScript и Python.

Ссылка скопирована

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

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

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

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

Существует n языков визуального программирования, и несколько из них в верхнем списке приведены ниже

  • Scratch: С помощью этого языка пользователи могут создавать истории , игры и анимация без написания каких-либо строк кода, вам просто нужно создать логику и собрать блоки.
  • Blockly: Используется для создания блочного языка программирования и редакторов, а также для генерации кода из блоков в javascript lua dart python и PHP и т. д.
  • Язык mBlock: Используется при программировании роботов.
  • Язык пузырьков: Используется для создания веб-приложений.
  • Язык Minibloq: Используется в качестве графической среды программирования для Arduino.

Примеры интерфейса визуального языка программирования:

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

Рисунок: Пример интерфейса языка визуального программирования Scratch

 

Рисунок: Пример языка Blockly, используемого kodular для создания приложений

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

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

  • Мультимедиа:- VPL помогает пользователям создавать мультимедиа, не беспокоясь о реальном коде или других сложных функциях. Он сужается до конкретных функций, и с помощью этих функций создается мультимедиа.
  • Образовательная цель:- Scratch VPL и т. д. используются, чтобы помочь учащимся в их проектах и ​​познакомить их с программированием.
  • Видеоигры:- VPL помогает создавать видеоигры без написания строк кода Ex- Scratch VPL используется для создания видеоигр.

Преимущества визуального языка программирования:

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

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

  • Эти языки требуют больше памяти, так как используют графику, в результате их выполнение тоже медленное и они занимают большой объем памяти.
  • Они могут работать только в такой операционной системе, как Windows, Mac или любой другой операционной системе, поддерживающей графику.
  • Поскольку встроенных функций недостаточно, вам необходимо добавить собственный код, в результате чего это громоздко.
  • В этих языках присутствуют только ограниченные функции.
  • Добавление нашего пользовательского кода в виде блока требует знаний в области программирования, иначе вам придется работать с ограниченными функциями, предоставляемыми языком.
  • Компьютерному инженеру не рекомендуется использовать VPL, поскольку большинство технологических гигантов, таких как FAANG или другие технологические компании, работают с текстовыми языками, такими как JAVA, HTML и т. д., а не с VPL.
  • В долгосрочной перспективе VPL может быть не так уж полезен, так как на обычном языке вы можете больше изучить его, но в VPL в какой-то момент вам надоест использовать один и тот же язык.
Sr. № Обычные языки Язык визуального программирования
1.012017. Это язык программирования, который использует графику или блоки вместо текста.
2.  Этот язык не подходит для начинающих  Это язык для начинающих
3.  Индивидуальные и гибкие приложения могут быть созданы с использованием обычных языков Настраиваемых не так много, поскольку блоки или графика, содержащие коды, ограничены, и после этого нам нужно добавить наш собственный код как блок.
4.  Это довольно быстро и эффективно. Это не быстро и неэффективно, так как каждый блок содержит некоторый код, что требует времени, а также графику.
5.  Интерфейс не очень хороший, т.е. только текст и синтаксис языка, с которым мы должны ознакомиться. Отличный интерфейс, так как пользователю нужно просто соединить блоки и сформировать логику без написания кода. it любой школьник сможет освоить VPL и создать приложения
7. Требует больших усилий как новичок, чтобы начать изучение языка кодирование
8. Это довольно быстро по сравнению с VPL, так как у них нет графики. Они медленнее по сравнению с обычными языками, так как имеют графику.
9. Для этого требуется меньше памяти по сравнению с VPL Для этого требуется больше памяти, так как в нем есть графика, поэтому для их хранения используется больше памяти.
10. Примеры: Javascript, C, C++, Java, Python и т. д. Примеры: Mblock, Blockly, Scratch и т. д.
9000 в их соответствующих категориях единственная разница, которая заключается между ними, заключается в том, что сначала пишутся обычные языки, а с помощью языков визуального программирования части обычного языка берутся в соответствии с его функциями и блоками, а с помощью блочного программирования создается проще.

Руководство по визуальному программированию | 2019 Обзор доступных языков и программных средств

Перейти к содержимому

Обзор доступных инструментов графического программирования. От поддерживаемых языков до обзоров инструментов для Arduino и Raspberry Pi.

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

Инновации, такие как графический пользовательский интерфейс, открыли доступ к базовым элементам, таким как файловая система, более широкой аудитории, а Интернет становится все более демократизированным, поскольку удобные инструменты, такие как WordPress, Youtube и Soundcloud, позволяют любому создавать, публиковать и распространять контент, не написав ни строчки. кода. Сегодня бум доступных наборов для прототипирования позволяет любителям и любителям погрузиться в растущий Интернет вещей, объединяя связанные компьютерные проекты.

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

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

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

  • Бесплатно / с открытым исходным кодом
  • Коммерческий / корпоративный
  • Дополнительные инструменты и ресурсы

01.11.2019

Рекомендуемое решение

Подробный обзор инновационной платформы без кода от DGLogik

DG Solution Builder

DG Solution Builder — это платформа разработки приложений без кода с графическим набором инструментов на основе данных для быстрого создания визуально насыщенных интерактивных веб-приложений и приборные панели.

  • Шаблоны, виджеты и библиотеки
  • Встроенный механизм потока данных
  • Объедините все свои данные