Οπτική γλώσσα προγραμματισμού

Στην επιστήμη υπολογιστών, οπτική γλώσσα προγραμματισμού (visual programming language, συντ. VPL) είναι μια γλώσσα προγραμματισμού που επιτρέπει στο χρήστη τη δημιουργία προγραμμάτων μέσα από το γραφικό χειρισμό προγραμματιστικών στοιχείων (αντί κειμένου). Μια VPL επιτρέπει τον προγραμματισμό με οπτικές εκφράσεις που είναι η τοποθέτηση στο χώρο κειμένου και γραφικών συμβόλων, είτε σαν σύνταξη, είτε σαν βοηθητική σύνταξη. Για παράδειγμα, υπάρχουν πολλές οπτικές γλώσσες, που είναι γνωστές σαν γλώσσες ροής δεδομένων (dataflow) ή διαγραμματικός προγραμματισμός (diagrammatic programming), που βασίζονται στην ιδέα "τετράγωνα και βέλη" ("boxes and arrows"), όπου τα τετράγωνα (ή άλλου τύπου αντικείμενα) της οθόνης θεωρούνται οντότητες που συνδέονται από βέλη, γραμμές ή ακμές, που αναπαριστούν σχέσεις μεταξύ τους.

Οι οπτικές γλώσσες προγραμματισμού μπορούν να κατηγοριοποιηθούν, ανάλογα με τον τύπο και την έκταση της χρήσης των οπτκών εκφράσεων, σε γλώσσες βασισμένες στα εικονίδια (icon-based), γλώσσες βασισμένες στις φόρμες (form-based) και σε γλώσσες διαγραμμάτων (diagram languages). Περιβάλλοντα οπτικού προγραμματισμού παρέχουν τότε στοιχεία εικονιδίων ή γραφικών που μπορούν να χρησιμοποιηθούν διαλογικά από το χρήστη σύμφωνα με κάποια χωρική γραμματική (spatial grammar), για την κατασκευή ενός προγράμματος.

Γίνεται προσπάθεια να ενσωματωθεί ο οπτικός προγραμματισμός στις γλώσσες προγραμματισμού ροής δεδομένων (dataflow programming), ώστε να είναι πιο εύκολη και άμεση η αποσφαλμάτωσή τους ή η αυτόματη παραγωγή προγραμμάτων και τεκμηρίωσης (visual paradigm). Οι γλώσσες ροής δεδομένων επιτρέπουν επίσης αυτόματο παραλληλισμό (automatic parallelization), που αποτελεί σημαντικό και ανοιχτό πρόβλημα στον προγραμματισμό ηλεκτρονικών υπολογιστών.

Οπτικές γλώσσες και διεπαφές 
AgentSheets, ένα εύχρηστο εργαλείο δημιουργίας προγραμμάτων
AppWare, γνωστό και σαν MicroBrew, προγραμματισμός με εικονίδια για Mac OS και Microsoft Windows
AudioMulch, περιβάλλον για τη δημιουργία ήχου και μουσικής, με βάση τη ροή ακουστικών σημάτων
Macromedia Authorware
Cisco Unified Application Designer, περιβάλλον οπτικού προγραμματισμού για τη δημιουργεία εφαρμογών (Unified Communications), γνωστό και σαν Metreos Visual Designer
Catrobat, οπτική γλώσσα προγραμματισμού για κινητές συσκευές. 
DRAKON, γλώσσα που σχεδιάστηκε για εφαρμογές στο Σοβιετικό διαστημόπλοιο Μπουράν
Προγραμματισμός με ροές (Flow-based programming)
Flowcode, γλώσσα που χρησιμοποιείται στο KTechlab, έναν προσομοιωτή και εργαλείο ανοιχτού κώδικα για τον προγραμματισμό μικροελεγκτών με κώδικα ροών (flowcode)
Function block diagrams, που χρησιμοποιούνται στους προγραμματιζόμενους λογικούς ελεγκτές (programmable logic controllers ή PLC)
Game Maker, εργαλείο ανάπτυξης παιχνιδιών
Google App Inventor, εργαλείο δημιουργίας εφαρμογών για το Google Android, βασισμένο στο OpenBlocks και το Kawa
GNU Radio Companion, περιβάλλον επεξεργασίας σήματος με χρήση οπτικών στοιχείων
Kodu, λογισμικό για τον προγραμματισμό παιχνιδιών με 3D εμφάνιση, από το Microsoft Research
LabVIEW, γραφική γλώσσα για μηχανικούς και επιστήμονες

Mama (λογισμικό) - γλώσσα προγραμματισμού και περιβάλλον ανάπτυξης για την κατασκευή 3D animations και παιχνιδιών 
Max (λογισμικό), περιβάλλον οπτικού προγραμματισμού για την κατασκευή διαδραστικών εφαρμογών μουσικής και πολυμέσων, σε πραγματικό χρόνο
Max/MSP
Pure Data
jMax
nato.0+55+3d
Microsoft Visual Programming Language, γλώσσα ροής δεδομένων για τον προγραμματισμό ρομποτικής, αποτελεί τμήμα του Microsoft Robotics Studio
NXT-G, οπτική γλώσσα προγραμματισμού για το κιτ ρομποτικής Lego Mindstorms NXT
OpenBlocks, επεκτάσιμο πλαίσιο για συστήματα γραφικού προγραμματισμού 
OpenMusic, οπτική γλώσσα προγραμματισμού για προγράμματα σύνθεσης μουσικής (βασισμένη στο CLOS) και για κινητές εφαρμογές

Prograph
Εγχείρημα Πτολεμαίος (Ptolemy)
PWGL , γλώσσα βασισμένη στην Common Lisp, το CLOS και την OpenGL
Quartz Composer, γλώσσα για την επεξεργασία και απόδοση γραφικών δεδομένων (Mac OS X)
Reaktor, γλώσσα DSP και επεξεργασίας MIDI της Native Instruments
SCADE
Simulink
Σε Squeak
Σενάρια Etoys
Scratch, του MIT, σχεδιασμένη για παιδιά και σχολική εκπαίδευση
SynthMaker, εργαλείο προγραμματισμού ήχου που χρησιμοποιεί μια οπτική γλώσσα προγραμματισμού
SynthEdit, όμοια με το SynthMaker
ToonTalk, σύστημα προγραμματισμού για παιδιά
VEE
VisSim, γλώσσα μοντελοποίησης και προσομοίωσης, επιτρέπει τη γρήγορη δημιουργία μαθηματικών μοντέλων και την εκτέλεσή τους σε πραγματικό χρόνο
Virtools, ενδιάμεσο λογισμικό (middleware) που χρησιμοποιείται για τη δημιουργία αλληλεπιδραστικών εμπειριών 3D
VISION/HPC, περιβάλλον οπτικού προγραμματισμού με drag-and-drop σε Python για τον προγραμματισμό υπολογισμών υψηλής απόδοσης (High-performance computing ή HPC)

Σημείωση: το Microsoft Visual Studio και οι γλώσσες του (Visual Basic, Visual C#, Visual J#, κλπ.) θεωρούνται "οπτικές" λόγω της χρήσης της αγγλικής λέξης "visual" στα ονόματά τους αλλά είναι κειμενικές γλώσσες, όχι γραφικές. Το MS Visual Studio είναι οπτικό περιβάλλον προγραμματισμού, αλλά όχι περιβάλλον οπτικου προγραμματισμού.

Δείτε επίσης 
Ροή δεδομένων
Διάγραμμα ροής
Unified Modeling Language

Παραπομπές 

Οπτικη