Visuelle Programmiersprachen

35

Die meisten von uns haben das Programmieren mit "textuellen" Programmiersprachen wie Basic, C / C ++ und Java gelernt. Ich glaube, es ist natürlicher und effizienter für den Menschen, visuell zu denken. Die visuelle Programmierung ermöglicht Entwicklern das Schreiben von Programmen durch Manipulieren grafischer Elemente. Ich denke, die visuelle Programmierung sollte die Qualität des Codes verbessern und Programmierfehler reduzieren. Ich kenne einige visuelle Sprachen wie App Inventor , Scratch und LabView .

Warum gibt es keine allgemeinen Bildsprachen für Entwickler? Was sind die Vor- und Nachteile der visuellen Programmierung?

Mohammad Al-Turkistany
quelle
7
Sie haben Recht: Die Leute denken visuell. Bilder von komplexem Code sind jedoch nicht auf einen Blick zu erfassen. Wo liegt also der Vorteil? Ein guter Programmierer hat ein visuelles Modell des Codes im Kopf, egal was auf dem Bildschirm angezeigt wird. Bildsprachen sind imho für Leute, die (noch) nicht gelernt haben, wie man aus der Textdarstellung eines Programms abstrahiert. Das heißt, ich glaube , dass Textcode hat zu schön aussehen, zB Strukturen und klar, um es navigierbaren mit den Augen zu machen.
Raphael
@Raphael, OK, stellen Sie sich das vor. Was, wenn ich Sie nach einer textuellen Beschreibung eines Wolkenkratzers anstelle seines Entwurfs frage?
Mohammad Al-Turkistany
2
Visuelle Sprachen werden sicherlich zumindest zu einem gewissen Grad in Erstellern von Benutzeroberflächen verwendet. Man kann sogar Schaltflächen usw. mit dem zugrunde liegenden Code verbinden, um die Funktionalität zu implementieren, ohne Code zu schreiben (mit Ausnahme des zugrunde liegenden Codes).
Dave Clarke
1
@ MohammadAl-Turkistany: Dieser Vergleich ist nicht sehr gut. Erstens werden Wolkenkratzer "visuell" gebaut, daher ist es sinnvoll, dass ihre Pläne passen. Software ist am Ende des Tages Text, so scheint es angebracht, Text als Modell zu verwenden. Zweitens glaube ich nicht, dass irgendjemand Pläne von mehreren überlappenden Wolkenkratzern haben möchte, die die Gesetze der Physik brechen. aber so sieht software heute aus.
Raphael
@ MohammadAl-Turkistany Ich finde das zu weit gefasst. Ihr letzter Absatz enthält 4 Fragen. Das ist zu viel.
uli

Antworten:

36

Im Allgemeinen gibt es einen Kompromiss zwischen Benutzerfreundlichkeit und Ausdruckskraft (Leistung) bei der Gestaltung von Programmiersprachen. Das Schreiben eines einfachen "Hello, world" -Programms in einer Anfängersprache wie Scratch oder App Inventor ist im Allgemeinen einfacher als das Schreiben in einer universellen Programmiersprache wie Java oder C ++, in der Sie möglicherweise zwischen mehreren Streams wählen können Ausgabe in verschiedene Zeichensätze, die Möglichkeit, die Syntax zu ändern, dynamische Typen usw.

Bei der Erstellung von App Inventor (an dem ich beteiligt war) bestand unsere Designphilosophie darin, die Programmierung für Anfänger zu vereinfachen. Ein triviales Beispiel war, unsere Array-Indizes auf 1 anstatt auf 0 zu setzen, obwohl dies die Berechnungen für fortgeschrittene Programmierer etwas komplexer erscheinen lässt.

Die Hauptmethode, mit der visuelle Programmiersprachen in der Regel für Anfänger entwickelt werden, besteht darin, die Möglichkeit von Syntaxfehlern auszuschließen, indem die Erstellung syntaktisch ungültiger Programme unmöglich gemacht wird. Beispielsweise können Sie in den Blocksprachen einen r-Wert nicht zum Ziel einer Zuweisungsanweisung machen. Diese Philosophie führt tendenziell zu einfacheren Grammatiken und Sprachen.

Wenn Benutzer anfangen, komplexere Programme in einer Blocksprache zu erstellen, stellen sie fest, dass das Ziehen und Ablegen von Blöcken langsamer ist als das Eingeben. Möchten Sie lieber "a * x ^ 2 + b * x + c" eingeben oder mit Blöcken erstellen?

Diesem Thema kann (zumindest von mir) in einigen Absätzen nicht gerecht werden, aber einige der Hauptgründe sind:

  1. Blocksprachen sind in der Regel für Anfänger gedacht und daher nicht so leistungsfähig.
  2. Es gibt keine schöne visuelle Möglichkeit, einige komplexe Konzepte wie Typensysteme, die Sie in allgemeinen Programmiersprachen finden, auszudrücken.
  3. Die Verwendung von Blöcken ist für komplexe Programme unhandlich.
Ellen Spertus
quelle
3
Können Sie sagen, dass visuelle Goodies nicht mit dem Fortschritt des Benutzers skalieren?
Raphael
Gute Antwort. Ich mag die Erwähnung der Design-Kompromisse.
John Percival Hackworth
7
@ Raffael, ich denke schon. Dies ist einer der Gründe, warum das Design von integrierten Schaltkreisen vom Schaltplan (einer grafischen Sprache) zum HDL und zur Synthese überging. Ich denke, jemand, der sich für Grafiksprachen interessiert, sollte die Verwendung von Schaltplan und HDL im Schaltungsdesign studieren und wissen, warum der Wechsel stattgefunden hat und warum Schaltplan in einigen Fällen immer noch bevorzugt wird.
Programmierer
1
@AProgrammer: Interessant. Klingt nach "visuell lernen, die Abstraktion meistern".
Raphael
Ich denke, die Leute sollten versuchen, das Beste aus beiden Welten zu kombinieren. Also für "a x ^ 2 + b x + c" würde ich es eingeben, aber es würde als Blöcke (oder was auch immer visuelles Ding) erscheinen, und dann könnte ich es ziehen oder Verbindungen grafisch herstellen. Ich denke , es ist alles ein mater von UI - Design, für die der beste Kompromiss die effektivste Verwendung von grafischen und Tastatursteuerung ist, und grafische und textuelle Visualisierung, und ich denke , wir können es besser machen als einfache Syntax - Hervorhebung ..
guillefix
21

Warum gibt es keine allgemeinen Bildsprachen für Entwickler? Was sind die Vor- und Nachteile der visuellen Programmierung?

Visuelle Sprachen neigen dazu, drei große Kategorien zu durchbrechen:

  1. Tools, die keine Programmierer sind, um grundlegende Automatisierungsaufgaben auszuführen. Denken Sie an Automator auf dem Mac.
  2. Lernumgebungen, in denen es nicht praktisch ist, viel zu tippen, oder in denen die Struktur des Programms, die den logischen Ablauf anzeigt, wichtig ist. Denk an Scratch, Alice usw.
  3. Das angesprochene Problem ist ein Datenflussproblem, und die Lösung des Problems wird durch eine Art Datenfluss zwischen in sich geschlossenen Boxen, die die physische Welt imitieren, gut modelliert. LabView und Ableton kommen beide in den Sinn.

Der Vorteil der visuellen Programmierung besteht darin, dass Sie einen umfassenden Überblick über die Systemstruktur erhalten. Dies führt zu dem unmittelbaren Problem, dass Ihr Spaghetti-Code, wenn Sie detailliert werden, wirklich wie Spaghetti aussieht . Eine übliche Komponente visueller Sprachen ist eine Art Codeblock oder Konfigurationskomponente für das visuelle Element. Das Problem ist, dass der Programmierer getrennte Codeblöcke verstehen muss, die auf seltsame Weise miteinander verbunden sein können.

Während an der visuellen Programmierung nichts auszusetzen ist, kann es sein, dass dies für die meisten Aufgaben einfach kein guter Ansatz ist.

John Percival Hackworth
quelle
Ich dachte nur, ich würde dich wissen lassen, dass der Autor der anderen Antwort denkt, dass deine eine gute ist. :-)
Ellen Spertus
Wenn Sie sich auf Ableton beziehen, meinen Sie Max / MSP? Die beiden sind separate Projekte, die von verschiedenen Organisationen entwickelt wurden, und Max / MSP sowie sein Open-Source-Geschwister PureData sind komplexer und aussagekräftiger, als es in Punkt 3 für IMO der Fall ist.
Sol
11

Es gab zahlreiche visuelle Programmiersprachen, wie die folgenden zwei Bibliografien zeigen werden: vlib.org und oregonstate.edu .

IMHO haben sie es nicht geschafft, Fuß zu fassen, weil sie zwar gut für Spielzeugbeispiele sind, aber nicht die verschiedenen Ebenen der Abstraktion, Darstellung und Granularität verwalten können, die für große Projekte erforderlich sind. Sie müssen sich ein System wie AutoDesk Revit ansehen (ein Verwaltungssystem für Gebäudeinformationen, das von Architekten und Ingenieuren verwendet wird), um zu sehen, wie komplex die Verwaltung visueller Informationen werden kann.

Anstatt sich mit der allgemeinen Programmierung zu befassen, gelingt die visuelle Programmierung am ehesten als Konfigurationswerkzeug in speziellen Bereichen.

CyberFonic
quelle
8

Text ist visuell.

Wir verwenden alle Arten von visuellen Hinweisen in unserem Code. Jede Verwendung von Leerzeichen (Einrückungen, neue Zeilen, Leerzeilen, Zeilenabstände) zielt darauf ab, visuelle Hinweise für die Funktionalität des Codes zu geben. Wir verwenden alle Arten von Syntax, um visuelle Informationen darüber zu liefern, was Code tut. Unsere Redakteure färben unseren Code, um ihn hervorzuheben.

Mathematik ist textuell. Es gibt alle Arten von Notationen, aber am Ende geht es im Grunde genommen um Text. Sie haben seit Hunderten von Jahren zu tun.

Mein Punkt: Die textuelle Darstellung von Code nutzt die visuellen Fähigkeiten, die Menschen haben. Wir können es wahrscheinlich besser nutzen, aber nicht, indem wir auf Text verzichten.

Winston Ewert
quelle
1
Gute Beobachtung, aber Ihr letzter Unterpunkt ist eine kühne Behauptung. Warum glauben Sie, dass aufwändigere visuelle Elemente als Leerzeichen und verschiedene Symbole (und möglicherweise Farben) nicht helfen können?
Raphael
1
@Raphael, ich sage nicht, dass wir keine aufwändigeren visuellen Elemente verwenden können. Deshalb sagte ich: "Wir können es wahrscheinlich besser nutzen." Ich sage, es wird nicht passieren, wenn man einen Text wegwirft. Alle "visuellen" Programmiersprachen, die ich gesehen habe, beginnen mit der Annahme, dass der Text schlecht ist und versuchen, ihn zu beseitigen, und da sind sie völlig falsch.
Winston Ewert
6

[Für die PDF-Version dieser Antwort sind die Abbildungen oder Diagramme interaktiv und dynamisch.]

Netzelemente und Anmerkungen: Eine visuelle Programmiersprache für allgemeine Zwecke

Ich verwende Grafiken, um JavaScript ™ -Programme zu organisieren, die die Acrobat® / JavaScript-API verwenden. Jedes Grafikobjekt repräsentiert ein Petri-Netz-Element (Ort, Übergang, Eingabe oder Ausgabe) oder repräsentiert mehr als ein Petri-Netz-Element. Jedes Grafikobjekt ist eigentlich eine Annotation des entsprechenden Netzelements. Wenn jedoch jedes Grafikobjekt einem und nur einem Netzelement zugeordnet ist, kann es zum Generieren des Netzelements verwendet werden. Wenn ein Grafikobjekt auf mehr als ein Netzelement abgebildet wird und das Mapping genau definiert ist, kann es auch zum Generieren der Netzelemente verwendet werden. Standard-Petri-Net-Elemente werden durch bestimmte Arten von Grafiken dargestellt: Ein Kreis ist ein Ort, ein Quadrat oder ein Rechteck oder eine Linie ist ein Übergang, ein Pfeil von einem Kreis zu einem Quadrat ist eine Eingabe und ein Pfeil von einem Quadrat zu einem Kreis ist eine Eingabe Ausgabe. Außerdem,

[Die Arten von Anmerkungen in einem "Standard-Petri-Netz" finden Sie in der PDF-Version dieser Antwort.]

Carl Adam Petri beschrieb die meisten dieser Ideen (einschließlich der Arten von Annotationen in einem "Standard Petri Net" in seiner Dissertation (Petri, 1966). Er wandte die Netzelemente und Annotationen auch auf die Beschreibung mehrerer Logikschaltungen an, wie z 6.

Vorteile und Herausforderungen

Eine visuelle Programmiersprache kann einem Computerprogrammierer helfen, Computerprogramme zu entwickeln (Menzies, 2002).

Ich habe mindestens drei Gründe, warum ich Netzelemente und Anmerkungen nützlich finde (Vorteile?).

Grund genug. Die Prozesslogik kann jeweils ein Element erstellt werden. Dies bedeutet, dass ein Netz durch Hinzufügen von Elementen zum vorhandenen Netz erweitert werden kann (Petri, 1966). Beispielsweise kann ein Modell eines Controllers in interne und externe Komponenten unterteilt werden. Die interne Komponente regelt das System. Die externe Komponente ist mit der Umgebung verbunden, indem sie Eingaben von der Umgebung akzeptiert. Abbildung 1 zeigt ein Petri-Net-Modell der internen Komponente. Sie können dem Petri-Net-Modell der internen Komponente ein Petri-Net-Modell der externen Komponente hinzufügen, indem Sie die entsprechenden Stellen und Übergänge hinzufügen (Abbildung 2).

Abbildung 1 Ein Petrinetzmodell einer internen Komponente eines Controllers (Halloway, Krogh und Giua, 1997) Ein Petrinetzmodell einer internen Komponente eines Controllers (Halloway, Krogh und Giua, 1997)

Abbildung 2 Ein Petrinetzmodell einer internen und externen Komponente eines Controllers (Halloway, Krogh und Giua, 1997) Ein Petrinetzmodell einer internen und externen Komponente eines Controllers (Halloway, Krogh und Giua, 1997)

Zweiter Grund. Die jedem Netzelement zugeordneten Codes können aus mehr als einer „Programmiersprache“ stammen (Petri, 1973). Sie können aus einer Computersprache wie JavaScript, COBOL, ADA und einer Assemblersprache stammen. Sie können aus einer mathematischen Sprache wie algebraischen Symbolen stammen. Sie können aus Prosa stammen, die in Englisch, Deutsch, Französisch, Griechisch, Tagalog, Chinesisch usw. codiert ist. Sie können daher als Grundlage für die Kommunikation und Zusammenarbeit während des gesamten Lebenszyklus der Software- oder Systementwicklung verwendet werden. und unter verschiedenen Benutzern, Entwicklern und Interessengruppen (Petri, 1973).

Dritter Grund. Es ist möglich, sich auf bestimmte Grafikobjekte im Netz zu konzentrieren und die Code- oder Logikanmerkungen für die zugehörigen Grafikobjekte zu schreiben. Betrachten Sie ein Petri-Netz-Modell eines Kartenspiels in Abbildung 3. Wenn der Pfeil für die Eingabe P7  T4 eine Standardgrafik für eine Eingabe in einem Orts- / Übergangsnetz ist und wenn m_7 die Markierung für den Ort P7 ist, dann die logische Anmerkung für Das Aktualisieren der Marke des Eingabeorts ist m_7 = m_7-1. Wenn s_9 ^ - der Status des Eingangs ist, lautet die logische Anmerkung zum Aktualisieren des Status des Eingangs s_9 ^ - = ((m_7 <1)? False: true).

Abbildung 3 Ein Petri Net-Modell eines Kartenspiels Ein Petri Net-Modell eines Kartenspiels

Ich habe mindestens drei Gründe, warum ich die Anwendung von Petri-Netzen als schwierig empfinde (Nachteile?)

Wenn zu viele Grafikobjekte vorhanden sind, ist es schwierig, das Netz zu erstellen oder zu lesen. Die Schwierigkeit kann gemindert werden, indem eine Teilmenge der Grafiken genommen und mit einem, zwei oder drei Grafiksymbolen dargestellt wird (Noe, 1973; Petri, 1966). Wenn beispielsweise das Petri-Net-Modell eines Kartenspiels in Abbildung 3 zu viele Grafikobjekte im Diagramm enthält, können einige der Grafiken kombiniert werden, und es bleiben immer noch genügend Informationen, um das Diagramm in ein Computerprogramm abzubilden. Betrachten Sie Abbildung 4, ein Petri-Net-Modell desselben Spiels aus Abbildung 3 mit Grafiken auf hoher Ebene (Chionglo, 2016a).

Abbildung 4 Ein Petri-Netz-Modell eines Kartenspiels mit High-Level-Grafiken (Chionglo, 2016a) Ein Petri-Netz-Modell eines Kartenspiels mit High-Level-Grafiken (Chionglo, 2016a)

In einem anderen Beispiel können die externen Komponenten des Controllers in Abbildung 2 kombiniert werden, um eine übersichtlichere grafische Darstellung zu erstellen, wie in Abbildung 5 dargestellt.

Abbildung 5 Ein Petri-Netzmodell eines Controllers mit High-Level-Grafiken für externe Komponenten Ein Petri-Netzmodell eines Controllers mit High-Level-Grafiken für externe Komponenten

Schließlich kann eine sich gegenseitig ausschließende Menge von Stellen oder eine sich gegenseitig ausschließende Menge von Übergängen auch unter Verwendung eines Grafikobjekts auf hoher Ebene dargestellt werden (Chionglo, 2015).

Zweiter Grund. Selbst bei Standardgrafiken kann es schwierig sein, Grafiken zu zeichnen und zu positionieren, insbesondere wenn erwartet wird, dass das endgültige Diagramm benutzer- oder leserfreundlich ist. Zu den Entscheidungen für die Erstellung eines benutzer- oder leserfreundlichen Diagramms gehören: die richtige Anordnung der Grafikobjekte, die geeigneten Abmessungen der Zeichenfläche und Formen, die Krümmung der Pfeile, die Art der Pfeilspitzen, die Größe und die Schriftart des Texts, und die Wahl der Farben für Grafiken und Text.

Dritter Grund. Es ist einfach, Anmerkungen von Netzelementen auf geordnete Weise zu erstellen, da jede Anmerkung direkt oder indirekt mit einem Netzelement zusammenhängt. Es ist jedoch möglicherweise keine gute Idee, jede Anmerkung zusammen mit den Grafiken aller Netzelemente anzuzeigen, da das Diagramm möglicherweise zu viele Informationen enthält. Betrachten Sie beispielsweise ein Diagramm eines Petri-Net-Modells einer Logikschaltung, das Verweise auf alle Eigenschafts- und Logikanmerkungen enthält (Abbildung 6). [Das ursprüngliche Modell enthielt eine Testbedingung für den Status von für jeden Ausgang (Abbildung 31 auf Seite 78 von (Petri, 1966)); Die Testbedingung wurde hier weggelassen, da sie dem Originalmodell für die angegebene anfängliche Kennzeichnung entspricht. Somit hat jeder Ausgang eine logische Annotation zum Berechnen der Markierung des Ausgabeorts.]

Abbildung 6 Ein Orts- / Übergangsnetz mit Anmerkungen - basierend auf Abbildung 31, Seite 78 einer englischen Übersetzung von Petris Dissertation (1966) Ein Orts- / Übergangsnetz mit Anmerkungen - basierend auf Abbildung 31, Seite 78 einer englischen Übersetzung von Petris Dissertation (1966)

Eine Möglichkeit, diese Herausforderung zu mindern, besteht darin, die im Modell verwendeten Anmerkungstypen zu identifizieren und Grafikobjekte zu definieren, die Anmerkungen dieser Typen enthalten (Petri, 1966). Wenn sich ein Petri-Net-Diagramm aus Grafikobjekten aus den Definitionen zusammensetzt, sollte die Interpretation dieser Objekte die "unsichtbaren" Anmerkungen enthalten. Abbildung 7 sollte als Standard-Petri-Netz interpretiert werden (Definitionen siehe Anmerkungen zu einem Standard-Petri-Netz). daher kann die logische Anmerkung in dem Diagramm weggelassen werden.

Abbildung 7 Ein Orts- / Übergangsnetz - basierend auf Abbildung 31, Seite 78 einer englischen Übersetzung von Petris Dissertation (1966) Ein Orts- / Übergangsnetz - basierend auf Abbildung 31, Seite 78 einer englischen Übersetzung von Petris Dissertation (1966)

Eine andere Möglichkeit, diese Herausforderung zu mindern, besteht darin, Formularansichten der Anmerkungen zu verwenden, um die Diagramme zu ergänzen oder zu ergänzen (Chionglo, 2016b; 2014). Die Ansichten können weiter in kleinere Ansichten unterteilt werden, und jede Ansicht kann angezeigt und ausgeblendet werden.

Verweise

Chionglo, JF (2016a). Eine Antwort auf „Wie entwerfe ich einen Zustandsfluss für ein Reaktions- / Redux-Kartenspiel?“ Bei Stack Overflow. Verfügbar unter https://www.academia.edu/34059934/A_Reply_to_How_to_design_a_state_flow_for_a_react_redux_flashcard_game_at_Stack_Overflow .

Chionglo, JF (2016b). Zwei Formularansichten eines Petri-Netzes. Verfügbar unter http://www.aespen.ca/AEnswers/CAPDissF31P78-form.pdf .

Chionglo, JF (2015). Reduzieren der Anzahl der Netzelementgrafiken in einem Petri-Netzdiagramm mithilfe von Grafiken auf hoher Ebene. Verfügbar unter http://www.aespen.ca/AEnswers/WjTpY1429533268 .

Chionglo, JF (2014). Netzelemente und Anmerkungen für die Computerprogrammierung: Berechnungen und Interaktionen in PDF. Verfügbar unter https://www.academia.edu/26906314/Net_Elements_and_Annotations_for_Computer_Programming_Computations_and_Interactions_in_PDF .

Halloway, LE; Krogh, BH und Giua, A. (1997). Eine Übersicht über Petri-Net-Methoden für kontrollierte diskrete Ereignissysteme [elektronische Version]. Diskrete ereignisdynamische Systeme: Theorie und Anwendungen. 7. Boston: Kluwer Academic Publishers, S. 151 - 190.

Menzies, T. (2002). Evaluierungsprobleme für visuelle Programmiersprachen. In SK Chang (Hrsg.). Handbuch von Software Engineering & Knowledge Engineering, Vol. 2 Neue Technologien. World Scientific Publishing co. Pte. Ltd., S. 93 - 101.

Noe, JD und Nutt, GJ (1973). "Makro-E-Netze zur Darstellung paralleler Systeme", IEEE Transactions on Computers, vol. C-22, Nr. 8, August 1973, S. 718 - 727.

Petri, CA (1973). Konzepte der Netztheorie. In mathematischen Grundlagen der Informatik: Proc. of Symposium and Summer School, Hohe Tatra, 3. - 8. September 1973, S. 137 - 146. Math. Inst. der slowakischen Acad. of Sciences, 1973.

Petri, CA (1966). Kommunikation mit Automota [trans. CF Greene, Jr.]. Beilage I zum Technischen Bericht RADC-TR-65-377 (Band I). Griffiss Air Force Base, New York: Rome Air Development Center, Abteilung Forschung und Technologie, Kommando Luftwaffensysteme, Griffiss Air Force Base. Abgerufen am 31. August 2011 von http://www.informatik.uni-hamburg.de/TGI/mitarbeiter/profs/petri/doc/Petri-diss-engl.pdf .

John Frederick Chionglo
quelle
2

Johne Percival Hackworth :

Während an der visuellen Programmierung nichts auszusetzen ist, kann es sein, dass dies für die meisten Aufgaben einfach kein guter Ansatz ist.

Vielleicht waren die bisherigen visuellen Programmiersprachen einfach zu unausgereift? Die Vorstellung, dass fortgeschrittene Visualisierungen nicht auf Software-Artefakte angewendet werden können und dass es völlig der "Vorstellungskraft" jedes Entwicklers überlassen ist, eigene Visualisierungen zu erstellen, könnte eine falsche Annahme sein. Eine einheitliche und automatisierte Erhöhung der Abstraktionsebene ist naheliegend, solange die Fähigkeit zur Ausführung von Abstraktionen auf niedriger Ebene und eine hohe Ausführungsleistung nicht beeinträchtigt werden. Dies könnte letztendlich zu einer "Programmierung" von Domain-Experten führen, die sich nicht wesentlich von der Art und Weise unterscheidet, wie Tabellenkalkulationen die Aufgabe von COBOL-Programmierern automatisiert haben, Zahlen zu manipulieren. Der Hauptunterschied besteht darin, Zahlen durch die Manipulation "allgemeiner Systeme" zu ersetzen.

Sandy Klausner
quelle
2

Sie können sich Programmierung ohne Codierungstechnologie (PWCT) ansehen.

PWCT ist eine allgemeine visuelle Programmiersprache, die die Entwicklung von Systemen und Anwendungen ermöglicht, indem interaktive Schritte generiert werden, anstatt Code zu schreiben.

Hier ist ein guter Ausgangspunkt und Open Source .

user11416
quelle
Für eine Website über eine visuelle Programmiersprache ist dieser zweite Link sicher zu textuell. Keine einzige Seite mit Screenshots. Und der Wikipedia-Link ist kaputt; Der Artikel wurde wegen Nichtbeachtung gelöscht.
Wildcard
2

eine knifflige Frage. visuelle oder flussbasierte Programmierung wird zwar häufiger verwendet, ist jedoch im Vergleich zu allen Programmiersprachen nicht weit verbreitet. Wesentliche Faktoren sind Wartung und Standardisierung. Computercode kann auf Seiten gedruckt werden. Es ist nicht immer so klar, wie ein visuelles Programm gedruckt werden soll.

Im Gegensatz zur aktuellen Top-Antwort würde ich behaupten, dass es definitiv keine inhärente theoretische Einschränkung der visuellen Programmierleistung gegenüber Textsprachen gibt. Tatsächlich kann visuelle Programmierung als einfacher angesehen werden, wenn sie eines Tages auf der Grundlage einer schnelleren menschlichen Konzeptualisierung der vielen Abstraktionsebenen aufrechterhalten werden kann . es scheint also ein unverkennbares Element von sozialer / kultureller Trägheit / Konservativismus in seiner Aufnahme zu sein.

Die visuellen Editoren sind wahrscheinlich viel komplexer in ihrem Code, und dies ist beeindruckend, wenn man bedenkt, dass selbst textbasierte IDEs sehr komplex sein können, z. B. Eclipse . Beachten Sie, dass einige IDEs, wie z. B. Eciplse, Plugins für die visuelle Programmierung enthalten. Die visuelle Programmierung für die GUI-Erstellung ist mittlerweile ziemlich verbreitet.

Es scheint mir, dass der Einsatz von visueller Programmierung in ausgewählten Bereichen zunimmt und dass er in absehbarer Zeit häufiger wird.

Vergessen wir nicht, dass die visuelle Programmierung dem Design von EE- Chips seit Jahrzehnten inhärent ist, wo sie keine Abstraktion darstellt und (Sub-) Systeme in 2D-Designs genau wie vorgesehen angeordnet sind.

Das seit über einem Jahrzehnt verbreitete Lego Mindstorms-Kit verfügte seit jeher über eine Entwicklungssoftware, die auf visueller Programmierung basierte und nun in vielen Versionen erheblich optimiert wurde.

Hier ist ein interessanter aktueller Artikel, der die Geschichte und Perspektiven analysiert und darauf hinweist, dass dies bei der webbasierten Programmierung häufiger vorkommt. Das dynamische Layout von Steuerelementen / Widgets auf einer Seite ist eine Variante der visuellen Programmierung.

Ein weiterer Schlüssel- / aufstrebender Bereich, in dem es in vielen Tools weit verbreitet ist, ist BPM (Business Process Modeling).

vzn
quelle
1

Ich vermute, der Grund, warum diese Lösungen nicht so beliebt sind, weil sie in den meisten Fällen unhandlich sein und zu einem Durcheinander werden können.

Fast alle heute verfügbaren visuellen Programmiertools sind Teil größerer Anwendungen und werden für einen bestimmten Zweck verwendet (z. B. Blueprint in UE4).

Jedenfalls ist Korduene ein neues Programm, das ich kürzlich für die allgemeine Programmierung kennengelernt habe. Es ist wirklich kein allgemeiner Zweck, da es sich eher um die Erstellung von Windows-Anwendungen handelt.

NetInfo
quelle
Haben Sie irgendwelche Zitate, um Ihre Behauptung zu untermauern , dass visuelle Sprachen in den meisten Fällen unübersichtlich und unhandlich werden?
David Richerby
Ja, ich mache zum Beispiel Spaghetti-Diagramme, selbst mit der oben erwähnten Software, der Entwickler selbst hatte dieses Problem (ich habe die Entwicklung dieser App genau verfolgt), um meinen Standpunkt zu sichern, überprüfen Sie dies LINK .
NetInfo
1

Ich denke, dass @Raphael und andere falsch liegen, wenn sie sagen, dass ein Programm Text ist. Ist es nicht. Es sind viele Dinge. Es sagt dem Computer, was zu tun ist oder wie es zu tun ist. (imperaktive, deklarative Programmierung) Die Assoziation der Programmierung mit der Textbearbeitung ist ein historisches und kontraproduktives Dogma. Welches durch die begrenzten Texteingaben / -ausgaben der frühen Computer verursacht wurde. Leute sind keine Textparser!

Während ich denke, dass die Leute Recht haben, dass eine vollständig visuelle Sprache (bei der Sie alles visuell tun, indem Sie Elemente mit der Maus verbinden und so weiter) für eine Allzwecksprache unpraktisch ist, denke ich, dass alle aktuellen Sprachen zu einer Zwischenstufe verschoben werden könnten und sollten Niveau. Wobei Sprachelemente eine visuelle Darstellung haben, die in einer binären Sprachdatei gespeichert wird. Der Programmierer würde keinen verrückten Text schreiben oder im Bann von Linien und Einrückungen leben.

Fügt jedoch Elemente über die produktivste Kombination von Tastenkombinationen / Befehlen / Benutzeroberflächenelementen ein. Und nur Zeichenfolgen und andere Daten und Bezeichner eingeben. Dies würde Syntaxfehler unmöglich machen und Sprachen mit Blick auf Sicherheit und Korrektheit (z. B. ADA) produktiver machen. Und würde auch andere sicherer und weniger fehleranfällig machen, indem ganze Klassen häufiger Fehler unmöglich gemacht würden. (Wie die, die ADA verhindert, indem sie umständlich ist)

Bis zu einem gewissen Grad gingen die Dinge in diese Richtung. Durch automatische Einrückung und Syntaxfärbung. Leider hat niemand gemerkt (oder sich genug darum gekümmert), dass es das Kernkonzept des "menschlichen Textparsers" ist, woran es liegt. Die Argumente zwischen Emacs und Vim sind lustig, weil beide falsch sind. Sie sind "Lösungen" für ein künstlich geschaffenes Problem.

mzso
quelle
1
"Leute sind keine Textparser!" Was tust du gerade? Aber auf jeden Fall scheint diese Antwort hauptsächlich Ihre persönliche Meinung darüber zu sein, was die schönste Art zu programmieren wäre. Gibt es Sprach- oder Forschungsbeispiele, die Sie zitieren können und die über die persönliche Meinung hinausgehen? Welche Vorteile sehen Sie beim Speichern von Quellcode im Binärformat? Es scheint mir, dass dies Sie den Fehlern in der Entwicklungsumgebung aussetzen würde - zumindest wenn Dinge als Text gespeichert werden, kann ich einen anderen Texteditor verwenden, wenn mein Lieblings-Texteditor aus irgendeinem Grund nicht funktioniert.
David Richerby
@DavidRicherby Natürlich gibt es keine Beispiele. Ich habe darüber gesprochen, was sein könnte. Das Binärformat könnte auf die Sprache zugeschnitten sein. Es könnte eine bessere Leistung und Datensicherheit bringen. "Es scheint mir, dass Sie dadurch den Fehlern in der Entwicklungsumgebung ausgeliefert sind." Das ist immer der Fall. Es müsste fehlerfrei sein. Genau wie bei vielen anderen Programmen.
Mzso
Wenn das Format so standardisiert ist, wie es sein sollte, könnte es verschiedene Editoren haben. Ich dachte, es wäre am nützlichsten, wenn der visuelle Teil ebenfalls standardisiert ist. Ein Programm zum fehlerfreien Speichern und Abrufen von Daten ist keine exotische Anforderung. Viele ausgereifte Softwareprogramme erreichen dies mit wenigen und weit verbreiteten Fehlern.
Mzso
1
Ich habe nach "Beispielen oder Nachforschungen" gefragt. Sie haben gesagt, es gibt keine Beispiele. Das lässt die Forschung. Sie behaupten, dass ein Binärformat die Leistung und Sicherheit verbessern würde. Wie? Wir haben bereits ein standardisiertes Quellformat: Text. Warum binär verwenden? Eine visuelle Programmiersprache ist komplizierter und spezialisierter als ein Texteditor: Es scheint eher fehlerhaft zu sein, und es gibt bereits ausgereifte Texteditoren.
David Richerby
@DavidRicherby Text ist kein Quellformat. Es ist eine einfache dumme Textdatei, in der Text gespeichert wird. Natürlich wäre es komplizierter, es ist nur eine einfache Sache, Text zu bearbeiten, nicht zum Programmieren. Es wäre schneller, wenn das Parsen und Interpretieren von Texten vermieden würde. Eine Textdatei speichert Zeichen, eine Sprachdatei würde die Sprachelemente enthalten. (plus Daten) Die Bildsprache wäre nicht komplizierter, sie wäre in einer anderen Darstellung gleich. Ohne das Handicap des Texteditors. PS: Ich weiß nicht warum oder wie erwarten Sie Beispiele, Recherchen für eine Idee.
Mzso