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

[thumb|right|Το [KTechlab χρησιμοποιεί διαγράμματα ροής για τον προγραμματισμό μικροελεγκτών με γραφικό τρόπο.]]
Στην επιστήμη υπολογιστών, **οπτική γλώσσα προγραμματισμού** (**visual programming language**, συντ. **VPL**) είναι μια γλώσσα προγραμματισμού που επιτρέπει στο χρήστη τη δημιουργία προγραμμάτων μέσα από το γραφικό χειρισμό προγραμματιστικών στοιχείων (αντί κειμένου). Μια VPL επιτρέπει τον προγραμματισμό με οπτικές εκφράσεις που είναι η τοποθέτηση στο χώρο κειμένου και γραφικών συμβόλων, είτε σαν σύνταξη, είτε σαν βοηθητική σύνταξη. Για παράδειγμα, υπάρχουν πολλές οπτικές γλώσσες, που είναι γνωστές σαν *γλώσσες ροής δεδομένων* (*dataflow*) ή *διαγραμματικός προγραμματισμός* (*diagrammatic programming*)http://ieeexplore.ieee.org/xpl/freeabs_all.jsp?arnumber=381508, που βασίζονται στην ιδέα "τετράγωνα και βέλη" ("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, γραφική γλώσσα για μηχανικούς και επιστήμονες
[200px|thumb|Ένα μικρό διάγραμμα μπλοκ (block diagram) σε [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, επεκτάσιμο πλαίσιο για συστήματα γραφικού προγραμματισμού https://web.archive.org/web/20110726004815/http://mit.dspace.org/handle/1721.1/41550
*OpenMusic, οπτική γλώσσα προγραμματισμού για προγράμματα σύνθεσης μουσικής (βασισμένη στο CLOS) και για κινητές εφαρμογές
thumb|200px|Δείγμα από τον προγραμματισμό σε Open Music.
*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

## Παραπομπές



Οπτικη