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.
programming-languages
gablin
quelle
quelle
Antworten:
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.
quelle
Die einfache Antwort lautet nein.
Bei der Programmierung geht die Texteingabe in Bezug auf die angegebenen Informationen weit über das visuelle Gegenstück hinaus.
quelle
LabVIEW ist sehr grafisch.
Von der LabVIEW-Website :
quelle
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.
quelle
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.
quelle
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.
quelle
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.
quelle
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.
quelle
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.
quelle
Prograph war eine coole Sprache, die alles per Drag & Drop war. Wikipedia hat auch einen Artikel mit einer großen Liste visueller Sprachen .
quelle
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
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.
quelle