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



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

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

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

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

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

Εισαγωγή στον Προγραμματισμό

Προγραμματισμός ΗΥ. 1. Γλώσσα μηχανής

Εισαγωγή στις Αρχές της Επιστήμης των ΗΥ

Ενότητα 2 ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ

Τεχνολογία Λογισµικού Ι Κεφάλαιο 5

Εισαγωγή στον προγραμματισμό

Γλώσσες Προγραμματισμού Μεταγλωττιστές

Μέρος Α. Λογισµικό & Προγράµµατα συστήµατος και εφαρµογών ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ. Το σηµερινό µάθηµα. Λογισµικό συστηµάτων & εφαρµογών

ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ

Κεφάλαιο 7 : Είδη, Τεχνικές, και Περιβάλλοντα Προγραµµατισµού

Αρχές Προγραμματισμού Υπολογιστών

ΚΕΦΑΛΑΙΟ VI. Εισαγωγή στον προγραμματισμό

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ

ΕΙΔΗ,ΤΕΧΝΙΚΕΣ ΚΑΙ ΠΕΡΙΒΑΛΛΟΝΤΑ ΠΡΟΓΡΑΜΜΑΤΙ- ΣΜΟΥ

Πληροφορική 2. Γλώσσες Προγραμματισμού

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

ΚΕΦΑΛΑΙΟ 6 ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ. Η επίλυση ενός προβλήματος με τον υπολογιστή περιλαμβάνει τρία εξίσου σημαντικά στάδια.

ΚΕΦΑΛΑΙΟ 6 ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ. 03/01/09 Χαράλαμπος Τζόκας 1

Προγραμματισμός Η/Υ. Προτεινόμενα θέματα εξετάσεων Εργαστήριο. Μέρος 1 ό. ΤΕΙ Λάρισας- Σχολή Τεχνολογικών Εφαρμογών Τμήμα Πολιτικών Έργων Υποδομής

Γλώσσες υψηλού επιπέδου Περιέχουν περισσότερες εντολές για την εκτέλεση πολύπλοκων εργασιών Τα προγράµµατα µεταφράζονται σε γλώσσα µηχανής είτε από το

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

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

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

ΑΕΠΠ Ερωτήσεις θεωρίας

ιαφάνειες παρουσίασης #1

ΕΙΣΑΓΩΓΗ ΣΤΟΥΣ ΑΛΓΟΡΙΘΜΟΥΣ ΚΑΙ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΜΑΡΙΑ Σ. ΖΙΩΓΑ ΚΑΘΗΓΗΤΡΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ

Προγραµµατισµός Η/Υ. Μέρος2

Περιεχόµενα. Ανασκόπηση - Ορισµοί. Ο κύκλος ανάπτυξης προγράµµατος. Γλώσσες Προγραµµατισµού Ασκήσεις

Κεφ. 2 Θέματα Θεωρητικής Επιστήμης Υπολογιστών. Κοντογιάννης Βασίλειος ΠΕ19

Α. Ερωτήσεις Ανάπτυξης

Αντικειμενοστρεφής Προγραμματισμός -Python. Κ.Π. Γιαλούρης

10. Με πόσους και ποιους τρόπους μπορεί να αναπαρασταθεί ένα πρόβλημα; 11. Περιγράψτε τα τρία στάδια αντιμετώπισης ενός προβλήματος.

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ. Στέφανος Ουγιάρογλου

ΜΕΡΙΚΑ ΣΤΟΙΧΕΙΑ ΓΙΑ ΤΙΣ ΓΛΩΣΣEΣ ΠPOΓPAMMATIΣMOY

Κεφάλαιο 7: Υπορουτίνες

Εισαγωγή στον δομημένο προγραμματισμό

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

ΠΛΗΡΟΦΟΡΙΑΚΑ & ΤΗΛΕΠΙΚΟΙΝΩΝΙΑΚΑ ΣΥΣΤΗΜΑΤΑ

Εισαγωγή στην επιστήμη των υπολογιστών

Επιµέλεια Θοδωρής Πιερράτος

Outline. 4 Object-Oriented Programming

Μαλούτα Θεανώ Σελίδα 1

procedure P ( < pars > ) < type> f( < pars > ) begin { < local vars > < local vars > < procedure body> < procedure body> end; }

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ Κεφάλαιο 6 ο

<<ΔΗΜΗΤΡΗΣ ΜΑΝΩΛΗΣ ΦΥΣΙΚΟΣ ΜCs>> 1

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

Κεφάλαιο 7: Υποπρογράμματα. Αρχές Γλωσσών Προγραμματισμού και Μεταφραστών

Ε Ι Α Γ Ω Γ Η Σ Ο Ν Π Ρ Ο Γ Ρ Α Μ Μ Α Σ Ι Μ Ο Κ Ε Υ Α Λ Α Ι Ο 6. Σο πρόγραμμα γράφεται σε κάποια γλώσσα προγραμματισμού.

Ανάπτυξη Εφαρµογών σε Προγραµµατιστικό Περιβάλλον

Κεφάλαιο 6 ο. Διαχείριση στοιχείων λογισμικού

Κεφάλαιο 6 Υλοποίηση Γλωσσών Προγραμματισμού

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

Διάλεξη 2η: Αλγόριθμοι και Προγράμματα

Ελληνική Δημοκρατία Τεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου. Πληροφορική II. Ενότητα 3 : Γλώσσες προγραμματισμού. Δρ.

Κεφάλαιο 7 Προγραμματισμός υπολογιστή

Εισαγωγή στην επιστήμη των υπολογιστών. Λογισμικό Υπολογιστών Κεφάλαιο 9ο Γλώσσες Προγραμματισμού

Αντικειμενοστραφής Προγραμματισμός I (5 ο εξ) Διάλεξη #1 η : Εισαγωγή: Λογισμικό, Γλώσσες Προγραμματισμού, Java

7 ο ΓΕΛ Καλλιθέας Οδηγός Α.Ε.Π.Π. ΚΕΦΑΛΑΙΟ 6 ο

ΚΑΤΑΝΟΗΣΗ ΑΝΑΛΥΣΗ ΕΠΙΛΥΣΗ. Ο προγραμματισμός ασχολείται με το σύνολο των εντολών που δίνονται στον υπολογιστή ώστε να υλοποιείται ο αλγόριθμος.

Η ΑΕΠΠ IN A GLANCE! ΦΡΟΝΤΙΣΤΗΡΙΑ ΠΟΛΥΜΕΝΗ

ΚΕΦΑΛΑΙΟ 7 ΕΙ Η, ΤΕΧΝΙΚΕΣ ΚΑΙ ΠΕΡΙΒΑΛΛΟΝΤΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ

Εισαγωγή στις έννοιες του προγραμματισμού και της πληροφορικής

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

Εισαγωγή. Σκοπός του μαθήματος

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

Π ρ ο γ ρ α μ μ α τ ι σ μ ό ς Β α σ ι κ έ ς έ ν ν ο ι ε ς Ι σ τ ο ρ ι κ ή α ν α δ ρ ο μ ή Η έννοια του προγράμματος Ιστορική αναδρομή

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

ΚΥΡΙΑ ΜΟΝΤΕΛΑ ΓΛΩΣΣΩΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ

Βασικές Αρχές Προγραμματισμού

Διαφάνειες παρουσιάσεων

κ ε φ ά λ α ι ο 7 0 Α. Θ Ε Ω Ρ Ι Α Η έ ν ν ο ι α τ ο υ π ρ ο γ ρ ά µ µ α τ ο ς Ι σ τ ο ρ ι κ ή Α ν α δ ρ ο µ ή π α ρ α τ ή ρ η σ η

ΑΕΠΠ Ερωτήσεις τύπου Σωστό-Λάθος

Κεφάλαιο 2: Μεταφραστές

Σχολικό Βιβλίο - Κεφάλαιο 7 ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΕ PASCAL ΠΑΡΟΥΣΙΑΣΗ 13

Διδάσκων:Μ.Χατζόπουλος, Παραδόσεις:Τρίτη 4-6, Τετάρτη 1-3; (Αμφιθέατρο Α15) Πληροφορίες στην ιστοσελίδα του μαθήματος

6. Εισαγωγή στον προγραµµατισµό

Τμήμα Μηχανολόγων Μηχανικών Πανεπιστήμιο Θεσσαλίας ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ. Βασικές Έννοιες Προγραμματισμού. Ιωάννης Λυχναρόπουλος Μαθηματικός, MSc, PhD

ΤΕΙ ΙΟΝΙΩΝ ΝΗΣΩΝ ΣΧΟΛΗ ΔΙΟΙΚΗΣΗΣ ΚΑΙ ΟΙΚΟΝΟΜΙΑΣ ΤΜΗΜΑ ΔΙΟΙΚΗΣΗΣ ΕΠΙΧΕΙΡΗΣΕΩΝ - ΕΙΣ

29/9/2017. Εισαγωγή. Διαφάνειες παρουσιάσεων 29/9/17. Σκοπός του μαθήματος

ΙΑΓΩΝΙΣΜΑ ΣΤΗΝ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΘΕΜΑ 1 Α.

Προγραμματισμός Μεθόδων Επίλυσης Προβλημάτων. 1. Εισαγωγή. Ιωάννης Κατάκης. ΕΠΛ 032: Προγραμματισμός Μεθόδων Επίλυσης Προβλημάτων

Εισαγωγή στους Ηλεκτρονικούς Υπολογιστές

(Imperative Programming) Pascal, C, Ada, Pazcal. (Functional Programming) Prolog (Logic Programming) (object-oriented programming) Java, C#

ΕΡΩΤΗΣΕΙΣ ΑΞΙΟΛΟΓΗΣΗΣ

Εισαγωγή στην Επιστήμη των Υπολογιστών

Σύντοµη Ιστορία της Πληροφορικής

Προγραμματισμός Ι (ΗΥ120)

Γενικά περί υπολογιστών

TEI Ιονίων Νήσων Τμήμα Τεχνολογίας Τροφίμων Πληροφορική Σημειώσεις Τεύχος 3. Μάκης Σταματελάτος

Τι είναι; Ο Πίνακας Συμβόλων είναι όπως ένα λεξικό:

ΠΛΗΡΟΦΟΡΙΚΗ I. 9 η ΔΙΑΛΕΞΗ Λογισμικό - Προγραμματισμός

Μεταγλωττιστές Ενότητα 1: Εισαγωγή

Προγραμματισμός Η/Υ. Ενότητα 1: Εισαγωγή στον Προγραμματισμό

ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ. Στην αναγκαιότητα ύπαρξης των μεταγλωττιστών

Transcript:

Κεφάλαιο 1: Εισαγωγή Αρχές Γλωσσών και Προγραμματισμού και Μεταφραστών

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

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

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

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

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

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

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

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

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

Ιστορικά (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)

Ιστορικά (2) Μέσα δεκαετίας του 1950 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 Έννοιες «Τύπου» και «Ελέγχου Τύπων» Κανόνες λεξικής εμβέλειας

Ιστορικά (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 1971, Niklaus Wirth C 1972, Bell Labs, Dennis Ritchie (για UNIX system programming)

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

Ομάδες Γλωσσών Επιτακτικές (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) εν εκμεταλλεύονται πλήρως τις δυνατότητες των Η/Υ. Επεξεργασία μιας λέξης τη φορά

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

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

Γλώσσες Λογικού Προγραμματισμού (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)

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

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