ΚΕΦΑΛΑΙΟ(6:(Γλώσσες(...
date post
22-Sep-2019Category
Documents
view
0download
0
Embed Size (px)
Transcript of ΚΕΦΑΛΑΙΟ(6:(Γλώσσες(...
ΚΕΦΑΛΑΙΟ 6: Γλώσσες Προγραμματισμού
● 6.1 Ιστορική εξέλιξη ● 6.2 Παραδοσιακές έννοιες προγραμματισμού ● 6.3 Διαδικασιακές μονάδες ● 6.4 Υλοποίηση γλώσσας ● 6.5 Αντικειμενοστρεφής προγραμματισμός ● 6.6 Προγραμματισμός ταυτόχρονων δραστηριοτήτων
● 6.7 Δηλωτικός προγραμματισμός Οι διαφάνειες βασίζονται σε μεγάλο βαθμό σε αυτές που συνοδεύονται με το προτεινόμενο σύγγραμμα, καθώς και στις διαφάνειες προηγούμενων ετών του κ. Κουρκουμπέτη. 1
Γλώσσες προγραμματισμού Γλώσσα Προγραμματισμού: Εργαλείο για αναπαράσταση των αλγορίθμων • προσιτό στους ανθρώπους • εύκολα μετατρέπεται σε γλώσσα μηχανής που είναι κατανοητή από τον Η/Υ
2
Πρώτη Γενιά: Γλώσσα Μηχανής • Γλώσσα μηχανής: οι εντολές αναπαριστώνται με δυαδικό
σύστημα • Κάθε εντολή αναπαρίσταται ως μια ακολουθία από δυαδικά
ψηφία
• Το πρόγραμμα ήταν μια σειρά από τέτοιες εντολές, π.χ.
• Εξαιρετικά δύσκολο το γράψιμο και η κατανόηση προγραμμάτων • Συχνά σφάλματα • Δύσκολη αποσφαλμάτωση (debugging)
3
Δεύτερη γενιά: γλώσσα assembly ● Ένα μνημονικό σύστημα για την αναπαράσταση προγραμμάτων
– Χρήση μνημονικών (mnemonic) ονομάτων για την αναπαράσταση εντολών.
– Ονόματα για όλους τους καταχωρητές. – Τα αναγνωριστικά (identifiers) είναι περιγραφικά ονόματα για τις θέσεις
μνήμης, τα οποία επιλέγονται από τον προγραμματιστή.
● Υπάρχει ακριβής 1-‐1 αντιστοιχία μεταξύ των εντολών της μηχανής και των εντολών assembly.
● Η μετάφραση από γλώσσα assembly σε γλώσσα μηχανής γίνεται από ένα πρόγραμμα που ονομάζεται “assembler”
4
Παράδειγμα γλώσσας assembly
Γλώσσα μηχανής
156C 166D 5056 30CE C000
Γλώσσα assembly
LD R5, Price LD R6, ShippingCharge ADDI R0, R5 R6 ST R0, TotalCost HLT
5
Μειονεκτήματα της Assembly
• O προγραμματιστής πρέπει να σκέφτεται πάλι σε γλώσσα μηχανής (απλά αλλάζει η αναπαράσταση και η σύνταξη των εντολών)
• Η assembly είναι εγγενώς εξαρτημένη από τη μηχανή (οι εντολές ενός προγράμματος σε assembly εκφράζονται με ιδιότητες εγγενείς στην τεχνολογία της συγκεκριμένης μηχανής)
• Δύσκολη έως αδύνατη φορητότητα (portability) (μεταφορά του ίδιου προγράμματος ώστε να είναι σωστό σε μια άλλη μηχανή)
• Τα αρχέτυπα (εντολές) είναι χαμηλού επιπέδου (πολύ κοντά στο hardware)
• Δεν διευκολύνει στον γενικό σχεδιασμό ενός προγράμματος (γιατί αποτελείται από μικροεντολές που συνδέονται με πολύ μικρές λειτουργίες του Η/Υ)
6
Τρίτη γενιά γλωσσών ● Βασίζεται σε (σχετικά μικρό αριθμό από αρχέτυπα (primitives)
υψηλού επιπέδου, π.χ.
● Ανεξάρτητες από τη μηχανή (τις περισσότερες φορές) ● Παραδείγματα: FORTRAN, COBOL ● Κάθε αρχέτυπο ανταποκρίνεται σε μία μικρή ακολουθία εντολών
γλώσσας μηχανής. ● Μεταφράζεται σε γλώσσα μηχανής από ένα πρόγραμμα που
λέγεται compiler (μεταγλωττιστής) ● Εναλλακτικά αντί για compiler υπάρχει ο ερμηνευτής
(interpreter) ● Εκτελεί τις εντολές καθώς τις μεταφράζει, ενώ ο compiler πρώτα
μεταφράζει όλες τις εντολές του προγράμματος σε γλώσσα μηχανής και μετά τις εκτελεί
7
Η εξέλιξη των προγραμματιστικών μοντέλων
8
Προγραμματιστικά μοντέλα • Διαφορετικές φιλοσοφίες στον προγραμματισμό • Προστακτικό (imperative) ή διαδικαστικό (procedural) μοντέλο: η
διαδικασία προγραμματισμού είναι μια ακολουθία από εντολές , που όταν εκτελεστούν, επενεργούν στα δεδομένα και παράγουν το επιθυμητό αποτέλεσμα – Υπονοεί ότι πρέπει να βρεθεί ο αλγόριθμος για την επίλυση του
προβλήματος και έπειτα ο αλγόριθμος να αναπαρασταθεί σαν μια ακολουθία από εντολές
– Το πιο παραδοσιακό από τα μοντέλα – Παραδείγματα: – FORTRAN (για αριθμητικούς υπολογισμούς) – COBOL (για επιχειρησιακές εφαρμογές ), – BASIC, C, Pascal (γενικής χρήσης) – Ada (η επίσημη γλώσσα ανάπτυξης στρατιωτικών εφαρμογών από το Υπ.
Άμυνας των ΗΠΑ, επίσης για εναέριες εφαρμογές)
9
Προγραμματιστικά μοντέλα (2) • Δηλωτικό (declarative) μοντέλο: ο προγραμματιστής πρέπει να
περιγράψει το πρόβλημα προς επίλυση, και όχι τον αλγόριθμο – Εφαρμόζει ένα γενικό αλγόριθμο επίλυσης προβλημάτων – Ο προγραμματιστής πρέπει να περιγράψει κατάλληλα το πρόβλημα – Χρήση για προσομοίωση συστημάτων (οικονομία, πολιτική, μετεωρολογία,
περιβάλλον) για π.χ. πρόγνωση – Ο προγραμματιστής περιγράφει τι θέλει να προσομοιωθεί, ο αλγόριθμος
πρόγνωσης υπάρχει στην γλώσσα – Παραδείγματα: Prolog: τομέας τεχνητής νοημοσύνης – Ο τομέας μαθηματικών της Επίσημης Λογικής (Formal Logic) έδωσε ώθηση
σε αυτές τις γλώσσες