Все языки программирования, которые я знаю, написаны - то есть так или иначе напечатаны как длина текста. Но мне интересно, есть ли какой-нибудь язык программирования, где вы можете просто перетащить всю программу; чтобы получить цикл, вы выбираете это поле здесь и перетаскиваете его туда, где находится «код», и так далее. И если бы не было такого, разве он полетел бы, если бы его изобрели?
Лично я не верю, что это была бы такая хорошая идея, но я хотел бы услышать, что вы думаете.
programming-languages
gablin
источник
источник
Ответы:
Многие наряды сделали системы программирования перетаскивания.
National Instruments "Labview", пожалуй, самый известный и лучший.
Фундаментальная проблема, с которой они все сталкиваются, заключается в том, что не существует известного способа превратить Flying Code Monkey в опытного программиста и инженера. Как ОДИН пример, нет никакой разницы для Обезьяны летящего кода между процессом O (N ^ 2) или O (N ^ 3) и процессом O (N log N), что означает, что они должны быть снабжены постоянными процедурами для алгоритмы O (N log N), которые можно настраивать в соответствии с созданными ими быстрыми графическими кладжами.
Вторая проблема, с которой они все сталкиваются, заключается в том, что когда вы предоставляете блоки специального назначения, необходимые для первой проблемы, накладные расходы, связанные с перемещением данных между блоками, становятся дорогостоящими. Я работал с одной очень хорошей такой системой под названием Rippen. Когда я профилировал, чтобы увидеть, где мы страдаем от приложения обработки сенсора HIGH! -Required производительности, я был довольно обеспокоен тем, что около 20% моего процессорного времени уходит на перемещение данных. (Поскольку я выполнял обработку изображений LADAR, выполняя значительную часть обработки с плавающей запятой для каждого пикселя входного изображения, 20% ЦП было МНОГО накладных расходов на перемещение данных.)
Вероятно, вы могли бы обойти часть 2, перейдя к системе на основе компилятора: вы передаете ей свою картинку, и она компилируется в сильно оптимизированную исполняемую программу, но я не уверен, что это действительно решит проблемы, и это может повредить интерактивный характер инструмента.
источник
Простой ответ - нет.
Когда дело доходит до программирования, текстовый ввод намного превосходит заданную информацию, чем его визуальный счетчик.
источник
LabVIEW довольно графический.
С веб-сайта LabVIEW :
источник
Yahoo! Pipes - это, вероятно, прекрасный пример графического языка того типа, который вы описываете; вы перетаскиваете примитивы (все, от источников данных, с которыми вы работаете, до циклов и условных выражений) для создания потока информации через систему.
Это сильно зависит от предметной области, но это главное. Трубы ориентированы на данные, что делает визуализацию (а не выражение) первостепенной. Аналогично, учебные среды, такие как Scratch или Sprog! подчеркнуть визуализацию того, над чем вы работаете в качестве учебного пособия; эффективность ввода данных является гораздо более низким приоритетом в этой области.
источник
Время от времени кто-то придумывает язык программирования или инструмент перетаскивания, который собирается «положить конец программированию, каким мы его знаем» и превратить каждого, кто использует его, в программиста.
Причина того, что ни один из них на самом деле еще не выполнил свою работу и вывел нас всех из работы, заключается в том, что на самом деле, независимо от того, какую функциональность перетаскивания вы создаете, и независимо от того, насколько вы удобны для пользователя, простой факт в том, что программирование трудно.
Настоящие дисциплины программирования заключаются в том, чтобы знать, как решать проблемы, понимать, как моделировать процессы и систематизировать данные, чтобы их можно было использовать. Даже понимание того, что возможно с компьютером вообще.
Есть доказательства (если они противоречивы), позволяющие предположить, что некоторых людей нельзя научить так думать, что приводит меня к паре интересных и актуальных мыслей. Начнем с того, что если вы не можете так думать, то вокруг много программистов, так что вы всегда можете нанять кого-нибудь для реализации идеи, если она у вас есть, и вы думаете, что за нее стоит заплатить. Если вы можете достаточно хорошо работать с логикой программирования, вы можете изучить реальный язык, а не возиться с относительно простой средой перетаскивания.
Я думаю об общем программировании здесь. То же самое не обязательно применяется в более ограниченном сценарии типа DSL, где перетаскивание может быть действительно полезным пользователям процесса, которые являются специалистами в этой области, а не специалистами по ИТ.
источник
Лучшая система программирования с использованием перетаскивания, которую я видел, предназначена для роботов Lego Mindstorms NXT.
Это позволяет вам делать довольно удивительные вещи, управляя довольно сложной функциональностью.
Однако в какой-то момент он выходит из строя, и вам необходимо вернуться к другой системе.
Смотрите эту статью: http://www.wired.com/geekdad/2007/11/the-best-progra/
Возможно, однако, что если бы это было улучшено, и различные сценарии, где учитывались, потребность в этом становилась бы все меньше и меньше.
источник
Программирование потока данных (или программирование на основе потоков) может быть своего рода. Хотя программирование потока данных не является полным по Тьюрингу.
Программирование потока данных - это метод создания приложений, когда вы размещаете экземпляры компонентов на сцене и подключаете их порты, чтобы они образовывали сеть обработки сообщений. Компоненты могут быть выбраны из библиотеки, они имеют потребительские (входные) и производственные (выходные) порты, которые готовы к соединению с портами других компонентов.
Вот хороший пример, когда даже мышь не использовалась для создания приложения для синтезатора, а голые руки и маленькие кубики: http://www.youtube.com/watch?v=0h-RhyopUmc
Статьи Википедии - хорошая отправная точка: http://en.wikipedia.org/wiki/Flow-based_programming http://en.wikipedia.org/wiki/Dataflow_programming
Генерация звука является типичной областью программирования потоков данных. Существует несколько систем с открытым исходным кодом: http://www.synthedit.com/ http://alsamodular.sourceforge.net/
Если у вас Mac, у вас может быть предварительно установленный на заводе Quartz Composer: http://developer.apple.com/graphicsimaging/quartz/quartzcomposer.html
Я также сделал систему DF с моим другом, но у нас нет никакого визуального редактора еще , только скрипт визуализатора.
источник
Программная система MIT Scratch практически полностью перетаскивается.
Google App Inventor, похоже, похож (и приписывает Scratch).
Я бы не хотел кодировать что-либо большое в себе, но для обучения «мышлению программистов» Scratch превосходен. Это реальное программирование, но благодаря мгновенному визуальному удовлетворению и блокам, объединяемым воедино, можно избежать многих неприятностей, связанных с «синтаксической ошибкой», которые отталкивают новичков (вид, который я вижу в этой статье ). Попытка увлечь маленьких детей командной строкой python в наши дни не сработает.
источник
Это уже существует, хотя, возможно, не в той форме, о которой вы думаете. Два примера - это Симулинк и Алиса.
Simulink - это графическое средство построения динамических систем моделирования. Хотя большинство конструкций более сложны, чем то, о чем вы обычно думаете, как о программировании, такие вещи, как for и if, все еще могут быть построены графически. Simulink представляет собой большую проблему в аэрокосмических приложениях, поскольку правительство и многие крупные компании делают свои первоначальные проекты в Simulink, а затем применяют те или иные средства проверки теорем к «коду» Simulink.
Алиса, инструмент для обучения программированию для детей. Это позволяет детям получать удовольствие от создания историй, перетаскивая действия и объекты на своего рода программную доску.
источник
Prograph был классным языком, который был все перетаскивать. Также в Википедии есть статья с хорошим списком визуальных языков .
источник
Существует довольно много визуальных языков программирования. Телефонная система, которой я управлял для большого центра обработки вызовов, была запрограммирована с использованием модулей перетаскивания. Мой дядя разработал систему Just-In-Time для проектирования производственных линий, которая была полностью перетаскиваемой, и это было 20 лет назад.
Я даже играл в боевую игру роботов на PS1, в которой использовался язык перетаскивания.
источник
Текстовое программирование прошло 50 лет, но разработка программного обеспечения должна перейти в графическую область, чтобы справиться с новым уровнем сложности. Например, появление многоядерных процессоров и проблемы параллельного программирования выдвигают модель многопоточности к своему пределу. Честно говоря, я думаю, что сообщество разработчиков программного обеспечения просто высокомерно думает, что в программировании есть что-то принципиально и особенное, что оно не поддается визуализации, как любая другая область. Подобно телефонным операторам и многим другим профессиям, правильная технология автоматизации позволит экспертам в данной области вскоре сотрудничать в богатых пространствах моделирования систем, основанных на знаниях. Индустрии программного обеспечения давно пора сменить парадигму.
источник