Αρχές Γλωσσών Προγραμματισμού και Μεταφραστών

Σχετικά έγγραφα
Κεφάλαιο 1: Εισαγωγή. Αρχές Γλωσσών και Προγραμματισμού και Μεταφραστών. Γιάννης Γαροφαλάκης ΤΜΗΥΠ - Πανεπιστήμιο Πατρών

Αρχές Γλωσσών Προγραμματισμού και Μεταφραστών

Εισαγωγή στους Αλγορίθμους

Ενδεικτικές λύσεις ασκήσεων διαχείρισης έργου υπό συνθήκες αβεβαιότητας

1 η Διάλεξη. Ενδεικτικές λύσεις ασκήσεων

Μαθηματικά Διοικητικών & Οικονομικών Επιστημών

Εισαγωγή στους Αλγορίθμους

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ

Αρχές Γλωσσών Προγραμματισμού και Μεταφραστών

Οντοκεντρικός Προγραμματισμός

Εισαγωγή στους Υπολογιστές

Εισαγωγή στους Υπολογιστές

Εισαγωγή στους Αλγορίθμους

Τίτλος Μαθήματος: Μαθηματική Ανάλυση Ενότητα Γ. Ολοκληρωτικός Λογισμός

Κβαντική Επεξεργασία Πληροφορίας

Μαθηματικά Διοικητικών & Οικονομικών Επιστημών

Θερμοδυναμική. Ανοικτά Ακαδημαϊκά Μαθήματα. Πίνακες Νερού σε κατάσταση Κορεσμού. Γεώργιος Κ. Χατζηκωνσταντής Επίκουρος Καθηγητής

Προγραμματισμός Η/Υ. Βασικές Προγραμματιστικές Δομές. ΤΕΙ Ιονίων Νήσων Τμήμα Τεχνολόγων Περιβάλλοντος Κατεύθυνση Τεχνολογιών Φυσικού Περιβάλλοντος

Μαθηματικά Διοικητικών & Οικονομικών Επιστημών

Κεφάλαιο 2.3: Προγραμματισμός. Επιστήμη ΗΥ Κεφ. 2.3 Καραμαούνας Πολύκαρπος

Ενδεικτικές λύσεις ασκήσεων διαγραμμάτων περίπτωσης χρήσης (1ο Μέρος)

Διοικητική Λογιστική

Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Αθήνας. Βιοστατιστική (Ε) Ενότητα 3: Έλεγχοι στατιστικών υποθέσεων

Μαθηματικά Διοικητικών & Οικονομικών Επιστημών

Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Αθήνας. Βιοστατιστική (Ε) Ενότητα 1: Καταχώρηση δεδομένων

Οντοκεντρικός Προγραμματισμός

Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Αθήνας. Βιοστατιστική (Ε) Ενότητα 2: Περιγραφική στατιστική

Εκπαιδευτική Διαδικασία και Μάθηση στο Νηπιαγωγείο Ενότητα 1: Εισαγωγή

Εισαγωγή στους Αλγορίθμους Φροντιστήριο 1

Εισαγωγή στους Αλγορίθμους Ενότητα 10η Άσκηση Αλγόριθμος Dijkstra

Βέλτιστος Έλεγχος Συστημάτων

Μαθηματικά Διοικητικών & Οικονομικών Επιστημών

Εισαγωγή στους Η/Υ. Ενότητα 2β: Αντίστροφο Πρόβλημα. Δημήτρης Σαραβάνος, Καθηγητής Πολυτεχνική Σχολή Τμήμα Μηχανολόγων & Αεροναυπηγών Μηχανικών

Δομημένος Προγραμματισμός

Λογιστική Κόστους Ενότητα 12: Λογισμός Κόστους (2)

Εφαρμογές των Τεχνολογιών της Πληροφορίας και των Επικοινωνιών στη διδασκαλία και τη μάθηση

Επικοινωνία Ανθρώπου- Υπολογιστή Σχεδίαση Αλληλεπίδρασης

Διοίκηση Ολικής Ποιότητας & Επιχειρηματική Αριστεία Ενότητα 1.3.2: Παραδοσιακή VS νέα προσέγγιση της ΔΟΠ

Κβαντική Επεξεργασία Πληροφορίας

ΣΥΣΤΗΜΑΤΑ ΗΛΕΚΤΡΙΚΗΣ ΕΝΕΡΓΕΙΑΣ ΙIΙ

ΣΥΣΤΗΜΑΤΑ ΗΛΕΚΤΡΙΚΗΣ ΕΝΕΡΓΕΙΑΣ ΙIΙ

ΣΥΣΤΗΜΑΤΑ ΗΛΕΚΤΡΙΚΗΣ ΕΝΕΡΓΕΙΑΣ ΙIΙ

Διδακτική των εικαστικών τεχνών Ενότητα 2

Τίτλος Μαθήματος. Ενότητα 1: Γενικά περί λογικού προγραμματισμού

Διδακτική των εικαστικών τεχνών Ενότητα 2

Διδακτική των εικαστικών τεχνών Ενότητα 2

Διδακτική των εικαστικών τεχνών Ενότητα 2

ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΗΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

Ψηφιακή Επεξεργασία και Ανάλυση Εικόνας Ενότητα 10 η : Ανάλυση Εικόνας. Καθ. Κωνσταντίνος Μπερμπερίδης Πολυτεχνική Σχολή Μηχανικών Η/Υ & Πληροφορικής

Προγραμματισμός και Εφαρμογές Υπολογιστών

Διοίκηση Ολικής Ποιότητας & Επιχειρηματική Αριστεία Ενότητα 1.3.3: Μεθοδολογία εφαρμογής προγράμματος Ολικής Ποιότητας

Ευφυής Προγραμματισμός

ΘΕΡΜΟΔΥΝΑΜΙΚΗ Ι. Ενότητα 2: Θερμοδυναμικές συναρτήσεις. Σογομών Μπογοσιάν Πολυτεχνική Σχολή Τμήμα Χημικών Μηχανικών

Προσχολική Παιδαγωγική Ενότητα 2: Οργάνωση χρόνου και χώρου στα νηπιαγωγεία

Ενότητα. Εισαγωγή στις βάσεις δεδομένων

Διδακτική των εικαστικών τεχνών Ενότητα 2

Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον κεφ.6 Εισαγωγή στον Προγραμματισμό

Πληροφοριακά Συστήματα Διοίκησης (ΜΒΑ) Ενότητα 3: Εφαρμογές Δικτυωτής Ανάλυσης (2 ο Μέρος)

ΠΛΗΡΟΦΟΡΙΚΗ Ι Ενότητα 4: Συναρτήσεις

Εφαρμογές των Τεχνολογιών της Πληροφορίας και των Επικοινωνιών στη διδασκαλία και τη μάθηση

Δομημένος Προγραμματισμός

6. 1 Η έννοια του προγράμματος

Προγραμματισμός H/Y Ενότητα 2: Εντολές ελέγχου ροής. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

Πληροφοριακά Συστήματα Διοίκησης (ΜΒΑ) Ενότητα 2: Εφαρμογές Δικτυωτής Ανάλυσης (1 ο Μέρος)

Διαφήμιση και Δημόσιες Σχέσεις Ενότητα 9: Σχέσεις διαφημιστή-διαφημιζόμενου

Διδακτική της Πληροφορικής: ερευνητικές προσεγγίσεις στη μάθηση και στη διδασκαλία (ΜΠΣ)

Κβαντική Επεξεργασία Πληροφορίας

Εισαγωγή στους Αλγορίθμους Ενότητα 9η Άσκηση - Αλγόριθμος Prim

Εισαγωγή στους Αλγορίθμους Ενότητα 11η Άσκηση - Σταθμισμένος Χρονοπρογραμματισμός Διαστημάτων

Μυελού των Οστών Ενότητα #1: Ερωτήσεις κατανόησης και αυτόαξιολόγησης

Μαθηματικά Διοικητικών & Οικονομικών Επιστημών

Έλεγχος και Διασφάλιση Ποιότητας Ενότητα 4: Μελέτη ISO Κουππάρης Μιχαήλ Τμήμα Χημείας Εργαστήριο Αναλυτικής Χημείας

ΕΦΑΡΜΟΣΜΕΝΗ ΗΘΙΚΗ. Ενότητα 9: Σχέση Ηθικής και Δικαιοσύνης. Παρούσης Μιχαήλ. Τμήμα Φιλοσοφίας

Λογιστική Κόστους Ενότητα 8: Κοστολογική διάρθρωση Κύρια / Βοηθητικά Κέντρα Κόστους.

Αντικειμενοστρεφής Προγραμματισμός Ενότητα 1: Εισαγωγή. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

Οντοκεντρικός Προγραμματισμός

ΔΙΔΑΚΤΙΚΗ ΤΗΣ ΚΑΛΑΘΟΣΦΑΙΡΙΣΗΣ ΙΙ

Εισαγωγή στη Δικτύωση Υπολογιστών

Πληροφοριακά Συστήματα Διοίκησης (ΜΒΑ) Ενότητα 6: Συμπίεση Έργου

Ευφυής Προγραμματισμός

Μαθηματικά Διοικητικών & Οικονομικών Επιστημών

Δομές Δεδομένων Ενότητα 1

Διοίκηση Ολικής Ποιότητας & Επιχειρηματική Αριστεία Ενότητα 1.6.1: Το οργανόγραμμα της ποιότητας

Διδακτική των εικαστικών τεχνών Ενότητα 2

Μεθοδολογία Έρευνας Κοινωνικών Επιστημών Ενότητα 2: ΣΥΓΚΕΝΤΡΩΣΗ ΠΛΗΡΟΦΟΡΙΩΝ ΜΑΡΚΕΤΙΝΓΚ Λοίζου Ευστράτιος Τμήμα Τεχνολόγων Γεωπόνων-Kατεύθυνση

Εισαγωγή στους Αλγορίθμους Ενότητα 9η Άσκηση - Αλγόριθμος Kruskal

Μάρκετινγκ Αγροτικών Προϊόντων

Θερμοδυναμική. Ανοικτά Ακαδημαϊκά Μαθήματα. Πίνακες Νερού Υπέρθερμου Ατμού. Γεώργιος Κ. Χατζηκωνσταντής Επίκουρος Καθηγητής

Εισαγωγή στην Διοίκηση Επιχειρήσεων

Πληροφοριακά Συστήματα Διοίκησης Ενότητα 10: Διαχείριση Έργων (2ο Μέρος)

Κβαντική Επεξεργασία Πληροφορίας

Κβαντική Φυσική Ι. Ενότητα 16: Αναπαράσταση τελεστών με μήτρες. Ανδρέας Τερζής Σχολή Θετικών Επιστημών Τμήμα Φυσικής

Μηχανολογικό Σχέδιο Ι

Διεθνείς Οικονομικές Σχέσεις και Ανάπτυξη

Ενδεικτικές λύσεις ασκήσεων

Ευφυής Προγραμματισμός

Διδακτική των εικαστικών τεχνών Ενότητα 1

Μαθηματικά Διοικητικών & Οικονομικών Επιστημών

Εισαγωγή στην Πληροφορική

Αριθμητική Ανάλυση. Ενότητα 1: Εισαγωγή Βασικές Έννοιες. Φραγκίσκος Κουτελιέρης Πολυτεχνική Σχολή Τμήμα Χημικών Μηχανικών

Transcript:

Αρχές Γλωσσών Προγραμματισμού και Μεταφραστών Ενότητα 1: Εισαγωγή Καθ. Γιάννης Γαροφαλάκης Πολυτεχνική Σχολή Τμήμα Μηχανικών Η/Υ και Πληροφορικής

Εισαγωγή (1) Γιατί υπάρχουν τόσες πολλές Γλώσσες Προγραμματισμού (ΓΠ); o Εξέλιξη έχουμε μάθει καλύτερους τρόπους να κάνουμε πράγματα με το πέρασμα του χρόνου o Κοινωνικό-οικονομικοί Παράγοντες: ιδιωτικά ενδιαφέροντα, εμπορικό πλεονέκτημα o Προσανατολισμός σε ειδικούς σκοπούς (π.χ. εφαρμογές στο Web) o Προσανατολισμός σε ειδικό hardware o Διάφορες ιδέες για το τι είναι ευχάριστο να χρησιμοποιείται 2

Εισαγωγή (2) Τι κάνει μια γλώσσα προγραμματισμού επιτυχημένη; o Ευκολία στη μάθηση (BASIC, Pascal) o Ευκολία στο να εκφραστούν πράγματα, ευκολία στη χρήση όταν τη μάθει κανείς (C, Common Lisp, APL, Algol-68, PHP) o Ευκολία στην ανάπτυξη (BASIC) o Δυνατότητα να μεταγλωττιστεί σε πολύ καλό (γρήγορο/μικρό) κώδικα (Fortran) o Να έχει ένα δυνατό υποστηρικτή (COBOL, PL/1, Ada, Visual Basic) o Μεγάλη διασπορά με ελάχιστο κόστος (Pascal, Java) 3

Εισαγωγή (3) Γιατί έχουμε γλώσσες προγραμματισμού; Τι κάνει μια ΓΠ; o Τρόπος σκέψης τρόπος έκφρασης αλγορίθμων o Γλώσσες από τη σκοπιά που σκέφτεται ο χρήστης o Αφαίρεση εικονικής μηχανής τρόπος καθορισμού του τι θέλουμε o Τρόπος να κάνουμε το hardware να κάνει κάτι χωρίς να μπλεχτούμε με τα bits o Γλώσσες από τη σκοπιά του κατασκευαστή 4

Γιατί να μάθει κανείς για γλώσσες προγραμματισμού; (1) Βοήθεια για να επιλεχθεί μια γλώσσα o C vs C++ για προγραμματισμό συστημάτων o Fortran vs Ada για αριθμητικούς υπολογισμούς o Common Lisp vs Scheme vs ML για διαχείριση συμβολικών δεδομένων o Java vs C για δικτυωμένα προγράμματα υπολογιστών 5

Γιατί να μάθει κανείς για γλώσσες προγραμματισμού; (2) Mερικές γλώσσες είναι παρόμοιες: είναι εύκολο να μάθεις μια γλώσσα αν ξέρεις τη γλώσσα στην οποία βασίστηκε o Οι έννοιες έχουν ακόμη μεγαλύτερη ομοιότητα: αν σκεφτεί κανείς τις έννοιες της επανάληψης, αναδρομής, αφαίρεσης, θα βρει πιο εύκολο να αφομοιώσει τη σύνταξη και τις σημασιολογικές λεπτομέρειες μιας νέας γλώσσας από το να προσπαθήσει κάτι από την αρχή. Σε αναλογία με τις ανθρώπινες γλώσσες: μεγάλος έλεγχος της γραμματικής κάνει πιο εύκολη την εκμάθηση μιας νέας γλώσσας (τουλάχιστον ινδοευρωπαϊκή) 6

Γιατί να μάθει κανείς για γλώσσες προγραμματισμού; (3) Βοήθεια για να κάνει κανείς καλύτερη χρήση οποιασδήποτε γλώσσας προγραμματισμού o Να κατανοηθούν τα δυσνόητα χαρακτηριστικά Π.χ. στη C, βοηθάει να κατανοηθούν ενώσεις, πίνακες και δείκτες, η ξεχωριστή μεταγλώττιση 7

Γιατί να μάθει κανείς για γλώσσες προγραμματισμού; (4) Βοήθεια για να κάνει κανείς καλύτερη χρήση οποιασδήποτε γλώσσας προγραμματισμού Εύρεση για το πως μπορούν να γίνουν πράγματα σε μια γλώσσα όταν αυτή δεν τα υποστηρίζει ρητά: Έλλειψη κατάλληλων δομών ελέγχου και αναδρομής στη Fortran Έλλειψη ονομασμένων σταθερών και απαριθμήσεων στη Fortran Χρήση μεταβλητών που αρχικοποιήθηκαν μια φορά, και μετά ποτέ δεν αλλάζουν 8

Ορισμοί (1) Γλώσσα Προγραμματισμού (ΓΠ): Συστηματική Σημειογραφία με την οποία περιγράφουμε υπολογιστικές διεργασίες Σύνολο βημάτων που μπορεί να εκτελέσει μια μηχανή για να λύσει ένα πρόβλημα Η περιγραφή της λύσης ενός προβλήματος στον Η/Υ προϋποθέτει ένα σύνολο εντολών που καταλαβαίνει και εκτελεί ο Η/Υ Ο Αλγόριθμος περιγράφει μεθόδους και διαδικασίες για τον τρόπο χειρισμού των δεδομένων εισόδου, με στόχο την ικανοποίηση των επιθυμητών στόχων 9

Ορισμοί (2) Εντολή για την ανάθεση της τιμής 2 σε μεταβλητή: (εξέλιξη) 1. Γλώσσα μηχανής (Intel 8x86, PCs) C7 06 0000 0002 (μετακίνηση του 2 στη δ/νση 0000, 16δικό) 2. Assembly (εξαρτώμενη από μηχανή) MOV X, 2 3. Γλώσσα Προγραμματισμού Υψηλού Επιπέδου Χ = 2 10

Ιστορικά (1) Δεκαετίες 1930 & 1940 Πολλές ΓΠ που δεν είχαν στόχο την υλοποίηση: Plankalkül (Zuse Konrad) A + 1 A v 4 5 A(5) := A(4) + 1 s 1.n 1.n Turing Machine (Alan Turing) Lambda Calculus (Alonzo Church) Mark I (Howard Aiken) Διαγράμματα Ροής (Von Neumann) 11

Μέσα δεκαετίας του 1950 Ιστορικά (2) FORTRAN (FORmula TRANslation) IBM (1954) για τον IBM 704, John Backus (Υλοποίηση 1957) Χωρίς συναρτήσεις του χρήστη Μεταβλητές 2 char If <συνθήκη> 8, 10 (δηλ. If <συνθήκη> true goto 8, else goto 10) Αρχές δεκαετίας του 1960 ALGOL 60 Αλγοριθμική γλώσσα περιγραφής υπολογιστικών διεργασιών Επιτακτική (imperative): Αλγόριθμος ως ακολουθία αλλαγών μνήμης Βασικές μονάδες υπολογισμού: blocks, procedures Έννοιες «Τύπου» και «Ελέγχου Τύπων» Κανόνες λεξικής εμβέλειας 12

Ιστορικά (3) COBOL (COmmon Business Oriented Language) 1960, Υπ. Άμυνας ΗΠΑ Περιγραφή δεδομένων ανεξάρτητη από μηχανή (Συστήματα Διαχείρισης Βάσεων Δεδομένων) Γενική if then else Σχόλια Δεκαετία 1960 και στη συνέχεια (βάση η ALGOL) BASIC (Beginners All purpose Symbolic Instruction Code) 1964, Dartmouth College, USA (Interpreter το 1975 η Microsoft) Pascal C 1971, Niklaus Wirth 1972, Bell Labs, Dennis Ritchie (για UNIX system programming) 13

Ιστορικά (4) C++ 1979, Bell Labs, Bjarne Stroustrup Java 1991, Sun HTML (HyperText Markup Language) όχι ακριβώς ΓΠ 1991, CERN, Tim Berners-Lee PHP (Hypertext Pre-processor) 1994, Rasmus Lerdorf JavaScript 1995, Netscape Εν τω μεταξύ: Ada, APL, LISP, SNOBOL, PL/1, SIMULA, ALGOL-W, Scheme, ML, Prolog, Smalltalk, VisiCalc, RPG, Perl, 14

Ομάδες Γλωσσών Επιτακτικές (Imperative) Γλώσσες Προγραμματισμού Von Neumann Αντικειμενοστραφείς Γλώσσες Περιγραφής Σεναρίων (Scripting Languages) FORTRAN, Pascal, BASIC, C C++, Java, Smalltalk JavaScript, PHP, Perl Γλώσσες Εφαρμοστικού (Applicative) Προγραμματισμού Συναρτησιακές (Functional) Λογικές (Logic) Scheme, ML, LISP Prolog, VisiCalc, RPG

Επιτακτικές Γλώσσες (1) Ο υπολογισμός επιτυγχάνεται με αλλαγή κατάστασης μεταβλητών (θέσεις μνήμης). Οι πιο δημοφιλείς ΓΠ. Δυνατότητες: Ενοποίηση ομάδας εντολών (begin-end, { }) Περιγραφή ομάδων δεδομένων (arrays, records) Περιγραφή ροής ελέγχου (while, for, case) Μηχανισμοί αφαίρεσης (abstraction) δεδομένων (function, procedure) Δεν εκμεταλλεύονται πλήρως τις δυνατότητες των Η/Υ. Επεξεργασία μιας λέξης τη φορά 16

Επιτακτικές Γλώσσες (2) Von Neumann bottleneck Π.χ. για την πρόσθεση 2 μεταβλητών: 1. Πρόσβαση στη διεύθυνση 1 ης μεταβλητής 2. Λήψη της τιμής που υπάρχει στη διεύθυνση 1 ης μεταβλητής 3. Πρόσβαση στη διεύθυνση 2 ης μεταβλητής 4. Λήψη της τιμής που υπάρχει στη διεύθυνση 2 ης μεταβλητής 5. Πρόσθεση των δύο αριθμών 6. Πρόσβαση στη διεύθυνση 3 ης μεταβλητής 7. Αποθήκευση αποτελέσματος πρόσθεσης στη διεύθυνση 3 ης μεταβλητής Δηλαδή, χρειάζονται 6 προσπελάσεις στη μνήμη 17

Γλώσσες Συναρτησιακού Προγραμματισμού (Functional Programming Languages) Βασίζονται σε μαθηματικές συναρτήσεις Δεδομένα και προγράμματα έχουν την ίδια μορφή Δεν χρησιμοποιούνται «μεταβλητές» και εντολές ανάθεσης Επανάληψη με χρήση αναδρομής LISP: (print(process_data(get_data( )))) begin end. GetData( ); ProcessData( ); OutputData( ); 18

Γλώσσες Λογικού Προγραμματισμού (Logic Programming Languages) Προγράμματα σε μορφή συμβολικής λογικής Δηλώνονται οι προδιαγραφές των επιθυμητών αποτελεσμάτων Ουσιαστικά δημιουργούνται Βάσεις Δεδομένων Προγράμματα: facts, rules, queries Prolog: FACT: mother (Helen, Jim) RULE: grandparent (X, Z) : -parent (X, Y), parent (Y, Z) QUERY: father (Bob, Joe) 19

Κριτήρια καλού σχεδιασμού μιας ΓΠ Καλή συντακτική και σημασιολογική περιγραφή Αξιοπιστία Γρήγορη μετάφραση Αποδοτικός αντικειμενικός κώδικας Ορθογωνιότητα Ανεξαρτησία από μηχανή Τεκμηρίωση Συνέπεια 20

Για την επιτυχία μιας ΓΠ Απλότητα Σαφήνεια συντακτικού Υποστήριξη αφαιρετικότητας Ευκολία πιστοποίησης ορθότητας προγραμμάτων Περιβάλλον ανάπτυξης εφαρμογών Κόστος χρήσης εκτέλεση μετάφραση δημιουργία συντήρηση 21

Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στo πλαίσιo του εκπαιδευτικού έργου του διδάσκοντα. Το έργο «Ανοικτά Ακαδημαϊκά Μαθήματα στο Πανεπιστήμιο Πατρών» έχει χρηματοδοτήσει μόνο την αναδιαμόρφωση του εκπαιδευτικού υλικού. Το έργο υλοποιείται στο πλαίσιο του Επιχειρησιακού Προγράμματος «Εκπαίδευση και Δια Βίου Μάθηση» και συγχρηματοδοτείται από την Ευρωπαϊκή Ένωση (Ευρωπαϊκό Κοινωνικό Ταμείο) και από εθνικούς πόρους. 22

Σημείωμα Ιστορικού Εκδόσεων Έργου Το παρόν έργο αποτελεί την έκδοση 1.0 23

Σημείωμα Αναφοράς Copyright Πανεπιστήμιο Πατρών, Γιάννης Γαροφαλάκης, 2015. «Αρχές Γλωσσών Προγραμματισμού και Μεταφραστών. Εισαγωγή». Έκδοση: 1.0. Πάτρα 2015. Διαθέσιμο από τη δικτυακή διεύθυνση: https://eclass.upatras.gr/courses/ceid1091/ 24

Σημείωμα Αδειοδότησης Το παρόν υλικό διατίθεται με τους όρους της άδειας χρήσης Creative Commons Αναφορά, Μη Εμπορική Χρήση Παρόμοια Διανομή 4.0 [1] ή μεταγενέστερη, Διεθνής Έκδοση. Εξαιρούνται τα αυτοτελή έργα τρίτων π.χ. φωτογραφίες, διαγράμματα κ.λ.π., τα οποία εμπεριέχονται σε αυτό και τα οποία αναφέρονται μαζί με τους όρους χρήσης τους στο «Σημείωμα Χρήσης Έργων Τρίτων». [1] http://creativecommons.org/licenses/by-nc-sa/4.0/ Ως Μη Εμπορική ορίζεται η χρήση: που δεν περιλαμβάνει άμεσο ή έμμεσο οικονομικό όφελος από την χρήση του έργου, για το διανομέα του έργου και αδειοδόχο που δεν περιλαμβάνει οικονομική συναλλαγή ως προϋπόθεση για τη χρήση ή πρόσβαση στο έργο που δεν προσπορίζει στο διανομέα του έργου και αδειοδόχο έμμεσο οικονομικό όφελος (π.χ. διαφημίσεις) από την προβολή του έργου σε διαδικτυακό τόπο Ο δικαιούχος μπορεί να παρέχει στον αδειοδόχο ξεχωριστή άδεια να χρησιμοποιεί το έργο για εμπορική χρήση, εφόσον αυτό του ζητηθεί. 25