Drag-and-Drop-Programmierung - würde es fliegen? [geschlossen]

12

Alle mir bekannten Programmiersprachen sind geschrieben, dh in der einen oder anderen Weise als Textlänge abgetippt. Aber ich frage mich, ob es eine Programmiersprache gibt, in der Sie einfach das gesamte Programm ziehen und ablegen können. Um eine Schleife zu erhalten, markieren Sie dieses Kästchen hier und ziehen es in den entsprechenden Bereich des "Codes". Und wenn es so etwas nicht gibt, würde es fliegen, wenn man erfunden würde?

Persönlich glaube ich nicht, dass es eine so gute Idee wäre, aber ich würde gerne hören, was Sie denken.

gablin
quelle
Sag niemals nie (du hast gesagt: "Ich glaube nicht, dass es eine so gute Idee wäre") - es kann eine seltsame Situation geben, in der die seltsamste Idee eine gute Leistung bringen kann.
ern0
6
"Würde es fliegen?" Um ehrlich zu sein, wenn ich denke, dass die Flugsteuerungssysteme in dem Flugzeug, in dem ich mich befand, von jemandem programmiert wurden, der Drag-n-Drop programmiert, kann es sein, dass ich nicht in dieses Flugzeug einsteige. ; D
Glenatron
Ich mag diese Frage wirklich, obwohl ich mir wünsche, dass einige der Antworten länger und tiefer sind.
Nicole
1
Ironman wird es benutzen und fliegen! Aber er existiert nicht in der realen Welt!
Manoj R
@glenatron - So reisen Sie mit dem Zug ... Flugsteuerungssysteme bestehen aus einem Teil aus endlichen Automaten, die grafisch aufgebaut sind, und einem anderen Teil aus technischen Steuerungssystemen, die aus Basisblöcken bestehen und in GUI-Schnittstellen zusammengesetzt sind. Der Rest ist UML.
mouviciel

Antworten:

23

Viele Outfits haben Drag-and-Drop-Programmiersysteme erstellt.

National Instruments "Labview" ist wahrscheinlich das bekannteste und das beste.

Das grundlegende Problem, auf das sie alle stoßen, ist, dass es keinen bekannten Weg gibt, einen Flying Code Monkey in einen erfahrenen Programmierer und Ingenieur umzuwandeln. Als EIN Beispiel gibt es keinen Unterschied zu einem Flying Code Monkey zwischen einem O (N ^ 2) - oder O (N ^ 3) -Prozess und einem O (N log N) -Prozess die O (N log N) -Algorithmen, die in die Quickie-Grafikkludges, die sie erstellen, angepasst werden können.

Das zweite Problem, auf das sie alle stoßen, besteht darin, dass der durch das Verschieben der Daten zwischen den Blöcken entstehende Overhead teuer wird, wenn Sie die für das erste Problem erforderlichen Spezialblöcke bereitstellen. Ich habe mit einem sehr schönen System namens Rippen gearbeitet. Als ich ein Profil erstellt habe, um zu sehen, wo wir uns in einer Hochleistungs-Sensorverarbeitungsanwendung verletzt haben, war ich ziemlich verstört, als ich sah, dass ungefähr 20% meiner CPU-Zeit für das Verschieben von Daten verwendet wurden. (Da ich die LADAR-Bildverarbeitung durchführte und auf jedem Pixel eines Eingabebildes einen angemessenen Anteil an Gleitkomma-Verarbeitung ausführte, waren 20% der CPU mit viel Aufwand verbunden, um Daten zu verschieben.)

Sie könnten wahrscheinlich Teil 2 umgehen, indem Sie sich für ein compilerbasiertes System entscheiden: Sie geben Ihr Bild ein und es wird zu einem stark optimierten ausführbaren Programm kompiliert, aber ich bin nicht sicher, ob dies die Probleme wirklich beheben würde, und es könnte wehtun die interaktive Natur des Werkzeugs.

John R. Strohm
quelle
Sie können theoretisch einen Debug- und einen Release-Modus (optimiert) verwenden.
Job
15

Die einfache Antwort lautet nein.

Bei der Programmierung geht die Texteingabe in Bezug auf die angegebenen Informationen weit über das visuelle Gegenstück hinaus.

Dunkle Nacht
quelle
Je höher die Stufe, desto größer die Chance, das Problem grafisch darzustellen. Die Datenflussprogrammierung ist ein solcher Ansatz (siehe meine Antwort auf diese Frage): Komponenten sind gegeben, sie sind Black Boxes, die Aufgabe des "Programmierers" (besser: App-Designer) besteht darin, sie einfach in einem Netz zu organisieren.
ern0
12

LabVIEW ist sehr grafisch.

Von der LabVIEW-Website :

LabVIEW

Zeke
quelle
Huh, das sieht ordentlich aus. Wie viel kannst du damit anfangen? Ist es nur auf eine Art "Programmieren" spezialisiert, wie die Physik, oder können Sie es für irgendetwas verwenden?
Gablin
2
Ja, es gibt LabVIEW- Experten : lavag.org . Diskussionsforen: forums.ni.com . Erlang-Vergleich: bit.ly/2yC0Tn . Compiler-Beschreibung: bit.ly/c6quPK . Allgemeines Programmierbeispiel: bit.ly/cSnt5D . Verwenden Sie im LHC: bit.ly/9Yp4oo . Es ist eine Nischensprache, die überall verwendet wird: ni.com/solutions . Es ist verdammt teuer, verliert Abstraktionen von links und rechts, installiert eine Menge unerklärlicher Dienste und leidet unter Tonnen von Amateuren. Es ist plattformübergreifend, einfach zu parallelisieren und so einfach / schwierig wie jede andere Sprache.
Joe Z
2
Es laufen LEGO Roboter. ni.com/academic/mindstorms
rwong
1
@Zeke: Wenn Sie für ein VI (LabVIEW-Äquivalent zu einem Programm oder einer Funktion) in mehr als einer Richtung scrollen müssen, wurde es nicht richtig geschrieben.
Osterwal
1
@oosterwal: Du hast recht, es ist üblich. Darüber hinaus wird die Sprache absichtlich an Wissenschaftler und Ingenieure vermarktet, da sie leicht zu erlernen ist. Bei kleinen Programmen ist dies wahr. Da Programme komplexer sein müssen, ist der Code in der Regel ziemlich unkontrolliert. (Bearbeiten: Nicht wegen der Sprache als solche, sondern wegen der gut gemeinten Benutzer. Vollständige Offenlegung: Ich bin an manchen Tagen ein Wissenschaftler :)
Joe Z
6

Yahoo! Pipes ist wahrscheinlich ein perfektes Beispiel für eine Grafiksprache des Typs, den Sie beschreiben. Sie ziehen Primitive per Drag-and-Drop (alles von Datenquellen, auf die Sie sich beziehen, bis hin zu Schleifen und Bedingungen), um einen Informationsfluss durch das System zu erzeugen.

Es ist sehr domänenspezifisch, aber das ist meistens der Punkt; Pipes ist datenzentriert, sodass die Visualisierung (und nicht der Ausdruck) an erster Stelle steht. Ebenso Tutorial-Umgebungen wie Scratch oder Sprog! betonen Sie die Visualisierung dessen, woran Sie als Lernhilfe arbeiten; Die Effizienz der Dateneingabe hat in dieser Domäne eine viel niedrigere Priorität.

esm
quelle
Wenn mehr Amateur-Web-App-Entwickler von Pipes wüssten, wäre die Welt ein besserer Ort. +1
Sparr
3

Von Zeit zu Zeit hat jemand eine Drag-and-Drop-Programmiersprache oder ein Designtool entwickelt, das "der Programmierung ein Ende setzt, wie wir sie kennen" und jeden, der sie verwendet, zu einem Programmierer macht.

Der Grund, warum noch keiner von ihnen die Arbeit erledigt hat und uns alle arbeitslos gemacht hat, ist, dass unabhängig davon, wie viele Drag & Drop-Funktionen Sie erstellen und wie benutzerfreundlich Sie sie gestalten, die einfache Tatsache ist, dass die Programmierung ist schwer.

In den eigentlichen Disziplinen der Programmierung geht es darum, Probleme zu lösen, Prozesse zu modellieren und Daten so zu organisieren, dass sie nutzbar sind. Selbst zu verstehen, was mit einem Computer überhaupt möglich ist.

Es gibt Beweise (wenn auch kontrovers), die darauf hindeuten, dass manche Menschen nicht in der Lage sind, so zu denken, was mich zu ein paar interessanten und relevanten Gedanken führt. Zunächst einmal, wenn Sie nicht so denken können, gibt es viele Programmierer, so dass Sie immer jemanden einstellen können, der eine Idee umsetzt, wenn Sie eine Idee haben und Sie denken, dass es sich lohnt, dafür zu bezahlen. Wenn Sie mit der Programmierlogik gut genug arbeiten können, können Sie auch eine echte Sprache lernen, anstatt mit einer relativ einfachen Drag & Drop-Umgebung herumzuspielen.

Ich denke hier an die allgemeine Programmierung. Dasselbe gilt nicht unbedingt für ein eingeschränkteres DSL-Szenario, bei dem Drag-and-Drop ein wirklich nützlicher Prozess ist, wenn Benutzer eher Spezialisten auf diesem Gebiet als IT-Spezialisten sind.

Glenatron
quelle
Das Programmieren ist ein komplexer, harter und langer Prozess, der eine Menge Arbeit von Ingenieuren erfordert. Aus diesem Grund versucht die Branche, die App-Entwicklung auch für Nicht-Programmierer verfügbar zu machen: Reduzierung der Entwicklungskosten, Optimierung des Personaleinsatzes. Als Programmierer kann ich auch sagen, dass es viele Aufgaben gibt, die von Nicht-Programmierern ausgeführt werden sollten, aber sie haben keine Werkzeuge für diese Aufgaben, daher müssen sie von Programmierern ausgeführt werden, die 1. es hassen diese Art von Aufgaben 2. sind teuer 3. sind nicht die besten Leute dafür. Daher begrüße ich jede Idee, die darauf hindeutet, wie z. B. visuelle Programmierung.
ern0
1
Ich weiß, warum die Industrie versucht, es zu tun. Aber ich meine, wenn Sie programmieren können, sind Sie ein Programmierer, und Leute, die nicht programmieren können, können es nicht besser, weil es visuelle Werkzeuge gibt, die dieselben Aufgaben erledigen, die sie sonst hätten schreiben müssen zum. Die Werkzeuge sind nicht das Problem, die Sache, die Sie mit ihnen tun müssen, ist das Problem.
Glenatron
Ich meine liberaler programmieren. Es wird auch programmiert, wenn Sie Ihre Waschmaschine anweisen, 5 Minuten lang zu waschen und 10 Minuten lang zu trocknen. Jemand sollte verschiedene Programmierschichten mit unterschiedlichen Namen versehen. Ist die Datenflussprogrammierung eine Programmierung? Ist die Tabellenkalkulation (ohne Makros)? Ja, das sind sie, aber auch andere Arten, die sogenannte Programmierer machen. Wie auch immer, es gibt starke Unterschiede, was Programmierer tun, ich meine Drag-and-Drop-Module in SuperIDE12 ++ mit Plugins VS-Assembly-Codierung. Außerdem ist es nur ein großer Unterschied, ob Ihre Plattform über GC verfügt. Oder: Skript-VS-Compiler. "Programmierung" ist ein zu gebräuchlicher Begriff.
ern0
3

Das beste Drag & Drop-Programmiersystem, das ich je gesehen habe, ist für die Lego Mindstorms NXT-Roboter.

Auf diese Weise können Sie einige erstaunliche Dinge tun und einige komplexe Funktionen steuern.

Irgendwann bricht es jedoch zusammen und Sie müssen auf ein anderes System zurückgreifen.
Siehe diesen Artikel: http://www.wired.com/geekdad/2007/11/the-best-progra/

Es ist jedoch möglich, dass, wenn dies verbessert würde und verschiedene Szenarien berücksichtigt würden, die Notwendigkeit dafür immer geringer würde.

Bravax
quelle
Do love Mindstorms (das aus Lego Dacta hervorgegangen ist, das traditioneller codiert [eine Sprache ähnlich wie Logo / Lisp]), hat es vor 15 Jahren in der Schule gelernt. Ein ausgezeichnetes Geschenk für einen Programmierer, um seine Kinder zu bekommen, falls sie welche haben sollten.
Orbling
1
NXT ist eigentlich LabVIEW. Nun, LV, das ist ein bisschen gekürzt worden
Joe Z
Das habe ich nie gewusst, danke! Ich bin sehr beeindruckt davon.
Bravax
2

Datenflussprogrammierung (auch bekannt als flussbasierte Programmierung) kann eine Art sein. Die Datenflussprogrammierung ist jedoch nicht vollständig.

Die Datenflussprogrammierung ist die Methode zum Erstellen von Anwendungen, wenn Sie Komponenteninstanzen in die Szene stellen und ihre Ports verbinden, sodass sie ein Nachrichtenverarbeitungsnetzwerk bilden. Die Komponenten können aus einer Bibliothek ausgewählt werden. Sie verfügen über Consumer- (Eingabe) und Producer- (Ausgabe) Ports, die für die Verbindung mit den Ports anderer Komponenten bereit sind.

Hier ist ein schönes Beispiel, in dem nicht einmal eine Maus zum Erstellen einer Synth-App verwendet wurde, sondern bloße Hände und kleine Würfel: http://www.youtube.com/watch?v=0h-RhyopUmc

Wikipedia-Artikel sind ein guter Ausgangspunkt: http://en.wikipedia.org/wiki/Flow-based_programming http://en.wikipedia.org/wiki/Dataflow_programming

Die Klangerzeugung ist ein typischer Bereich der Datenflussprogrammierung. Es gibt einige Open-Source-Synthesizersysteme: http://www.synthedit.com/ http://alsamodular.sourceforge.net/

Wenn Sie einen Mac haben, ist möglicherweise ein Quartz Composer ab Werk vorinstalliert: http://developer.apple.com/graphicsimaging/quartz/quartzcomposer.html

Ich habe auch ein DF - System mit einem Freund von mir gemacht, aber wir haben keinen visuellen Editor noch , nur Skript Visualizer.

ern0
quelle
3
Warum halten Sie die Datenflussprogrammierung für nicht vollständig?
Osterwal,
Das Herumspielen mit Boxanschlüssen ist nicht vollständig. Das Schreiben von Komponenten ist Turing-vollständig (normalerweise gibt es keine Einschränkungen, nur das DF-Framework, das für die Kommunikation mit anderen Komponenten verwendet werden muss).
ern0
1
Die zugrunde liegende Hardware jeder CPU ist im Grunde genommen der Datenfluss. Wie kann diese Nicht-Turing-Gesamtkonstruktion zu einem Turing-Gesamtsystem führen?
mouviciel
@mouviciel Meine erste Reaktion war "Nein, CPU ist kein Datenfluss", aber es ist. Auf jeden Fall ist dies ein schlechtes Beispiel für Datenflusssysteme. schlechtes Design. Es gibt nur eine Quellkomponente (die externe / interne Uhr), die die CPU-Komponente dazu veranlasst, den nächsten Befehl zu verarbeiten. Auch wenn wir andere Teile, z. B. Audio, Grafikkarte, DMA-System usw., als Komponenten betrachten, ist das Design dennoch schlecht: Die Komponenten sind zu groß und zu spezialisiert. Aber die Idee ist gut, vielleicht ist es eine Möglichkeit, die Leistung / Vielseitigkeit zu steigern, Computer mit kleineren Einheiten zu bauen und Teile wie Datenflusskomponenten zu verbinden? Riecht nach Patent :)
ern0
2

Das Scratch- Programmiersystem des MIT wird fast ausschließlich per Drag & Drop erstellt.

Googles App Inventor scheint ähnlich zu sein (und Credits Scratch).

Ich möchte auch nichts Großes in mir selbst programmieren, aber für das Unterrichten von "Programmiererdenken" ist Scratch hervorragend. Es ist echtes Programmieren, aber mit sofortiger visueller Befriedigung und den zusammenklappbaren Blöcken vermeiden Sie einen Großteil der "Syntaxfehler" -Frustration, die Neulinge abschreckt (eine Ansicht, die ich in diesem Artikel als Echo sehe ). Der Versuch, junge Kinder mit einer Python-Kommandozeile zu begeistern, ist heutzutage kein Problem mehr.

timday
quelle
1

Dies existiert bereits, wenn auch möglicherweise nicht in der Form, über die Sie nachdenken. Zwei Beispiele sind Simulink und Alice.

Simulink ist ein grafisches Mittel zur Erstellung dynamischer Systemsimulationen. Während die meisten Konstrukte komplexer sind als das, was Sie normalerweise als Programmierung ansehen, können Dinge wie for- und if-Anweisungen immer noch grafisch konstruiert werden. Simulink spielt in Luft- und Raumfahrtanwendungen eine große Rolle, da die Regierung und viele der großen Unternehmen ihre ersten Entwürfe in Simulink ausführen und dann eine Art Theorembeweiser auf den Simulink- "Code" anwenden.

Alice ist ein Drag & Drop-Programmiertraining für Kinder. Auf diese Weise können Kinder mit Spaß Geschichten erstellen, indem sie Aktionen und Objekte auf eine Art Programmier-Storyboard ziehen und dort ablegen.

John Berryman
quelle
1

Prograph war eine coole Sprache, die alles per Drag & Drop war. Wikipedia hat auch einen Artikel mit einer großen Liste visueller Sprachen .

der Blechmann
quelle
Würde es Ihnen etwas ausmachen, die einzelnen Ressourcen etwas näher zu erläutern, und warum empfehlen Sie diese zur Beantwortung der gestellten Frage? "Nur-Link-Antworten" sind bei Stack Exchange nicht ganz willkommen
gnat
0

Es gibt einige visuelle Programmiersprachen. Ein Telefonsystem, das ich für ein großes Callcenter verwaltet habe, wurde mit Drag & Drop-Modulen programmiert. Mein Onkel hat ein Just-In-Time-System für den Entwurf von Fertigungslinien entwickelt, das vor 20 Jahren komplett per Drag & Drop erstellt wurde.

Ich habe sogar ein Roboterkampfspiel auf der PS1 gespielt, bei dem eine Drag & Drop-Programmiersprache verwendet wurde.


quelle
Carnage Heart war ein großartiges Spiel.
Ape-inago,
Ich konnte mich nicht an den Namen erinnern. Ich habe dieses Spiel geliebt. Sehr cleveres Design.
-1

Die Textprogrammierung hat eine schöne Laufzeit von 50 Jahren, aber das Software-Engineering muss in den grafischen Bereich vordringen, um die nächste Komplexitätsstufe zu bewältigen. Beispielsweise bringen das Aufkommen von Manycore-Prozessoren und die Herausforderungen der parallelen Programmierung das Threading-Modell an seine Grenzen. Ehrlich gesagt denke ich, dass die Software-Community nur arrogant denkt, dass das Programmieren etwas grundlegend Anderes und Besonderes hat, das der Visualisierung nicht wie jede andere Domäne zugänglich wäre. Wie Telefonisten und viele andere Berufe wird die richtige Automatisierungstechnologie es Fachleuten ermöglichen, in Kürze in umfangreichen Simulationsräumen wissensbasierter Systeme zusammenzuarbeiten. Die Softwareindustrie ist für einen Paradigmenwechsel längst überfällig.

user9196
quelle
2
Ich würde dem überhaupt nicht zustimmen: Die Komplexität vieler realer Programme ist viel zu hoch, um sie vollständig grafisch darstellen zu können. Alle mir bekannten Personen, die (1) wissen, wie man programmiert, und (2) LabView für ein größeres Projekt verwendet haben, haben festgestellt, dass die grafische Darstellung von Natur aus zu umfangreich ist, um in größeren Projekten produktiv arbeiten zu können. Natürlich ist LabView sehr praktisch, wenn Ihr Programm auf einen einzigen Bildschirm passt. Wenn Ihr Programm jedoch über die Grenzen eines einzelnen Bildschirms hinaus wächst, ist LabView nur schwer effizient zu verwenden (keine einfache Textsuche, das Neuanordnen von Blöcken ist schmerzhaft, ...).
Eric O Lebigot