ΚΕΦΑΛΑΙΟ(6:(Γλώσσες(...

Click here to load reader

  • date post

    22-Sep-2019
  • Category

    Documents

  • view

    0
  • download

    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)  έδωσε  ώθηση  

    σε  αυτές  τις  γλώσσες