Μάθημα 5: Γλώσσες Προγραμματισμού
5.1 Εισαγωγή στις Γλώσσες Προγραμματισμού
Οι γλώσσες προγραμματισμού αποτελούν τα εργαλεία με τα οποία ο άνθρωπος επικοινωνεί με τον υπολογιστή. Επιτρέπουν τη μετάφραση αφηρημένων αλγορίθμων σε εντολές που μπορεί να εκτελέσει το μηχάνημα. Χωρίς τις γλώσσες προγραμματισμού, οι υπολογιστές θα παρέμεναν απλές υπολογιστικές μηχανές, ανίκανες να υποστηρίξουν τη σύγχρονη επιστήμη, τεχνολογία, οικονομία και καθημερινότητα.
Μια γλώσσα προγραμματισμού καθορίζει το συντακτικό (syntax), τους κανόνες γραφής, αλλά και τη σημασιολογία (semantics), δηλαδή το τι σημαίνουν οι εντολές. Ο συνδυασμός αυτών επιτρέπει τη δημιουργία προγραμμάτων με συνέπεια, προβλεψιμότητα και σαφήνεια.
5.2 Ιστορική Εξέλιξη και Γενιές Γλωσσών
Οι γλώσσες προγραμματισμού εξελίχθηκαν σταδιακά μέσα από διάφορες γενιές:
• Πρώτη γενιά – Γλώσσες μηχανής (Machine Language): Οι εντολές γράφονταν απευθείας σε δυαδικό κώδικα.
• Δεύτερη γενιά – Assembly: Συμβολικές εντολές πιο κοντά στον άνθρωπο, αλλά ακόμη χαμηλού επιπέδου.
• Τρίτη γενιά – Υψηλού επιπέδου γλώσσες (Fortran, COBOL, Pascal, C): Έδωσαν δυνατότητα πιο αφαιρετικής γραφής.
• Τέταρτη γενιά – Γλώσσες για βάσεις δεδομένων και παραγωγικότητα (SQL).
• Πέμπτη γενιά – Γλώσσες λογικού και τεχνητής νοημοσύνης (Prolog).
Σήμερα, οι πιο δημοφιλείς γλώσσες όπως η Python, η Java και η JavaScript συνδυάζουν στοιχεία από διαφορετικά παραδείγματα προγραμματισμού, προσφέροντας ευελιξία και μεγάλη κοινότητα υποστήριξης.
5.3 Διερμηνευτές και Μεταγλωττιστές
Ένα βασικό στοιχείο στον προγραμματισμό είναι η μετάφραση του πηγαίου κώδικα σε μορφή που μπορεί να εκτελέσει ο υπολογιστής. Αυτό γίνεται με δύο τρόπους: μέσω διερμηνέα (interpreter) ή μέσω μεταγλωττιστή (compiler).
Ο διερμηνέας διαβάζει τον κώδικα γραμμή προς γραμμή και τον εκτελεί άμεσα. Αυτό καθιστά την ανάπτυξη πιο ευέλικτη αλλά συχνά πιο αργή. Παραδείγματα: Python, JavaScript.
Ο μεταγλωττιστής μεταφράζει όλο το πρόγραμμα σε εκτελέσιμο αρχείο πριν από την εκτέλεση. Αυτό προσφέρει ταχύτητα εκτέλεσης και ασφάλεια. Παραδείγματα: C, C++.
5.4 Υποδείγματα Προγραμματισμού
Οι γλώσσες προγραμματισμού ταξινομούνται συχνά με βάση το προγραμματιστικό τους υπόδειγμα:
• Διαδικαστικός (Procedural): Δομημένος σε συναρτήσεις/διαδικασίες. Παράδειγμα: C, Pascal.
• Αντικειμενοστραφής (Object-Oriented): Οργανώνει τον κώδικα σε αντικείμενα με ιδιότητες και μεθόδους. Παράδειγμα: Java, C++.
• Συναρτησιακός (Functional): Θεωρεί τον υπολογισμό ως αξιολόγηση συναρτήσεων. Παράδειγμα: Lisp, Haskell.
• Λογικού Προγραμματισμού (Logic): Βασίζεται σε δηλώσεις γεγονότων και κανόνων. Παράδειγμα: Prolog.
5.5 Στοιχεία Γλωσσών Προγραμματισμού
Κάθε γλώσσα προγραμματισμού διαθέτει βασικά δομικά στοιχεία:
• Μεταβλητές και σταθερές
• Τύποι δεδομένων (ακέραιοι, πραγματικοί, χαρακτήρες, λογικές τιμές)
• Τελεστές (αριθμητικοί, λογικοί, συγκριτικοί)
• Δομές ελέγχου ροής (if, switch, while, for)
• Συναρτήσεις και υπορουτίνες
• Δομές δεδομένων (πίνακες, λίστες, στοίβες, ουρές).
5.6 Δομές Ελέγχου
Οι δομές ελέγχου καθορίζουν τη ροή εκτέλεσης ενός προγράμματος:
• Επιλογής: if, if-else, switch.
• Επανάληψης: while, do-while, for.
• Διακοπής: break, continue.
Αυτές επιτρέπουν την κατασκευή πολύπλοκων λογικών ακολουθιών.
5.7 Υπορουτίνες και Μεταφορά Παραμέτρων
Οι υπορουτίνες (συναρτήσεις και διαδικασίες) επιτρέπουν την οργάνωση του κώδικα σε ανεξάρτητες ενότητες. Η μεταφορά παραμέτρων μπορεί να γίνει:
• Κατά τιμή (by value): Μεταφέρεται το αντίγραφο της τιμής.
• Κατά αναφορά (by reference): Μεταφέρεται η διεύθυνση της τιμής, οπότε η αλλαγή επηρεάζει την αρχική μεταβλητή.
5.8 Από τον Πηγαίο Κώδικα στον Εκτελέσιμο
Η διαδικασία μετατροπής ενός προγράμματος από πηγαίο κώδικα σε εκτελέσιμο αρχείο περιλαμβάνει στάδια:
• Προεπεξεργασία (π.χ. ενσωμάτωση βιβλιοθηκών).
• Μεταγλώττιση (compiler).
• Σύνδεση (linking).
• Φόρτωση και εκτέλεση.
5.9 Παραδείγματα και Σύγχρονες Τάσεις
• Python – Ευέλικτη, εύκολη, ιδανική για επιστήμη δεδομένων και μηχανική μάθηση.
• Java – Αντικειμενοστραφής, φορητή, κατάλληλη για μεγάλα συστήματα.
• C – Κοντά στο υλικό, υψηλής απόδοσης.
• C++ – Συνδυάζει χαμηλού επιπέδου δυνατότητες με αντικειμενοστρέφεια.
• JavaScript – Κυρίαρχη στο web development.
• SQL – Διαχείριση βάσεων δεδομένων.
• Rust και Go – Ασφάλεια και ταχύτητα, κατάλληλες για συστήματα.