Στο παρόν άρθρο θα ρίξουμε μία ενδελεχή ματιά στην Επιστήμη των Υπολογιστών, παραθέτοντας παράλληλα γνωστές και άγνωστες πληροφορίες που θα σας βοηθήσουν να κατανοήσετε το αντικείμενο.
Τι είναι Επιστήμη των Υπολογιστών
Επιστήμη υπολογιστών ονομάζεται η θετική και εφαρμοσμένη επιστήμη η οποία ερευνά τα θεωρητικά θεμέλια των εννοιών της πληροφορίας και του υπολογισμού, καθώς και την τεχνολογική υλοποίηση και εφαρμογή τους σε, συνήθως ηλεκτρονικά και ψηφιακά, αυτοματοποιημένα υπολογιστικά συστήματα. Ο όρος σχετίζεται πολύ στενά με την πληροφορική, ενώ ως διακριτή επιστήμη προέκυψε κατά τη δεκαετία του 1940 χάρη στην εύρεση των μαθηματικών ιδιοτήτων του υπολογισμού και την κατασκευή ηλεκτρονικών υπολογιστικών μηχανών.
Η επιστήμη υπολογιστών ερευνά τα θεωρητικά θεμέλια των εννοιών της πληροφορίας και του υπολογισμού, καθώς και την τεχνολογική υλοποίηση και εφαρμογή τους σε αυτοματοποιημένα υπολογιστικά συστήματα.
Η φιλοσοφία της επιστήμης είναι ο κλάδος της φιλοσοφίας που μελετά τις φιλοσοφικές αρχές, τις αξιώσεις, και τις επιπτώσεις της επιστήμης, συμπεριλαμβανομένων των φυσικών επιστημών όπως είναι η φυσική και η βιολογία, καθώς και των κοινωνικών επιστημών, όπως είναι η ψυχολογία και τα οικονομικά. Από αυτή την άποψη, η φιλοσοφία της επιστήμης συνδέεται με την επιστημολογία και την οντολογία. Προσπαθεί να αναλύσει θέματα όπως: την ουσία των επιστημονικών δηλώσεων και σκέψεων, τον τρόπο με τον οποίο παράγονται, πως η επιστήμη εξηγεί, προβλέπει και, δια μέσου της τεχνολογίας, χαλιναγωγεί την φύση· τα μέσα για την αξιολόγηση της αξιοπιστίας των πληροφοριών, τη δημιουργία και χρήση της επιστημονικής μεθόδου, τις μορφές σκέψης που χρησιμοποιούνται για την εξαγωγή συμπερασμάτων και τις επιπτώσεις των επιστημονικών μεθόδων και μοντέλων τόσο στην κοινωνία όσο και στις ίδιες τις επιστήμες.
Η Φιλοσοφία της Επιστήμης των Υπολογιστών
Η επιστήμη υπολογιστών έχει πολλούς κλάδους, κάποιοι εκ των οποίων δίνουν έμφαση στον υπολογισμό συγκεκριμένων αποτελεσμάτων (όπως τα γραφικά υπολογιστών), κάποιοι σχετίζονται με ιδιότητες υπολογιστικών προβλημάτων (όπως η θεωρία πολυπλοκότητας), ενώ άλλοι επικεντρώνονται στις προκλήσεις που παρουσιάζονται κατά την υλοποίηση υπολογισμών. Για παράδειγμα, η θεωρία γλωσσών προγραμματισμού μελετά προσεγγίσεις για την περιγραφή υπολογισμών, ενώ ο προγραμματισμός υπολογιστών εφαρμόζει συγκεκριμένες γλώσσες προγραμματισμού για να λύσει προκαθορισμένα υπολογιστικά προβλήματα. Ο κλάδος της αλληλεπίδρασης ανθρώπου-υπολογιστή ασχολείται με το ζήτημα της ευχρηστίας και προσβασιμότητας των υπολογιστών, όσον αφορά το ευρύ κοινό.
Η Φιλοσοφία της Επιστήμης των Υπολογιστών (PCS = Philosophy of Computer Science) ασχολείται με φιλοσοφικά ζητήματα που προκύπτουν από τον προβληματισμό σχετικά με τη φύση και την πρακτική της ακαδημαϊκής πειθαρχίας της επιστήμης των υπολογιστών.
Το μόνο σίγουρο είναι πως όταν αναφερόμαστε στην Επιστήμη των Υπολογιστών, δε μιλάμε μόνον για προγραμματισμό.
Ούτως ή άλλως, πολλοί άνθρωποι που γράφουν προγράμματα υπολογιστή δεν έχουν ειδικότητα πληροφορικής. Μπορεί να είναι για παράδειγμα φυσικοί, χημικοί, λογιστές.
Πράγματι, θα ήταν πιο καίριο να πούμε ότι η επιστήμη των υπολογιστών ενδιαφέρεται για την μετα-δραστηριότητα που σχετίζεται με τον προγραμματισμό.
Γενικότερα και πιο συγκεκριμένα, ασχολείται με το σχεδιασμό, την ανάπτυξη και την έρευνα των εννοιών και των μεθόδων που διευκολύνουν και βοηθούν τις προδιαγραφές, την ανάπτυξη, την εφαρμογή και την ανάλυση των υπολογιστικών συστημάτων.
Παραδείγματα αυτής της δραστηριότητας θα μπορούσαν να περιλαμβάνουν το σχεδιασμό, την ανάλυση του προγραμματισμού, τις προδιαγραφές και τη γλώσσα περιγραφής, την κατασκευή και βελτιστοποίηση των μεταγλωττιστών, των διερμηνέων, την ευρεσιτεχνία των εννοιολογικών πλαισίων, το σχεδιασμό των ενσωματωμένων συστημάτων και πολλά άλλα.
Πολλά από τα κεντρικά φιλοσοφικά ερωτήματα της επιστήμης των υπολογιστών περιβάλλουν και υποστηρίζουν τις δραστηριότητες αυτές ενώ άλλα τόσα επικεντρώνονται στα λογικά, οντολογικά και επιστημολογικά θέματα που την αφορούν.
Ωστόσο, στο τέλος, η επιστήμη των υπολογιστών είναι αυτή με την οποία ασχολούνται οι επιστήμονες πληροφορικής και δεν υπάρχει ακριβής στερεότυπος ορισμός που να μπορεί να λειτουργήσει ως κάτι περισσότερο από έναν οδηγό για την ανάλυση που ακολουθεί.
Πράγματι, ελπίζουμε ότι η ίδια η Φιλοσοφία της Επιστήμης των Υπολογιστών τελικά θα συμβάλλει σε μια βαθύτερη κατανόηση της φύσης της επιστήμης των υπολογιστών.
Αλλά η χαρτογράφηση του φιλοσοφικού τοπίου αυτής της επιστήμης δεν είναι εύκολη υπόθεση.
Ευτυχώς, οι παραδοσιακοί κλάδοι της φιλοσοφίας μπορούν να προσφέρουν πνευματική και διαρθρωτική καθοδήγηση.
Για παράδειγμα, στις φιλοσοφίες των μαθηματικών και της φυσικής, υπάρχουν καίρια ερωτήματα σχετικά με τη φύση των αντικειμένων που εξετάζονται, τι συνιστά γνώση και τα μέσα για την απόκτηση αυτής της γνώσης.
Η φιλοσοφία της γλώσσας εγείρει ερωτήματα σχετικά με το περιεχόμενο και τη μορφή μιας σημασιολογικής θεωρίας για τη φυσική γλώσσα. Φέρνει στο προσκήνιο τις βασικές οντολογικές και επιστημολογικές παραδοχές της σημασιολογικής επιχείρησης.
Η οντολογία δείχνει τα είδη των πραγμάτων που υπάρχουν, πώς να τα εξατομικεύσουμε και το ρόλο τους στη διαμόρφωση των εννοιολογικών συστημάτων μας.
Η φιλοσοφία της λογικής παρέχει έναν απολογισμό και μία περαιτέρω ανάλυση των διαφόρων ειδών των λογικών συστημάτων αλλά και του ρόλου τους στην καθημερινή και εξειδικευμένη συζήτηση.
Οι αναλογίες και οι ομοιότητες από αυτούς αλλά και από άλλους κλάδους της φιλοσοφίας θα πρέπει να αποδειχθούν χρήσιμες για τον εντοπισμό και την αποσαφήνιση ορισμένων από τις κεντρικών φιλοσοφικών ανησυχιών της επιστήμης των υπολογιστών.
Η υφιστάμενη επιρροή αυτών των κλάδων στην Φιλοσοφία της Επιστήμης των Υπολογιστών θα προκύψει στη συνέχεια και θα αντικατοπτρίσει τον αντίκτυπο της οντολογίας και της φιλοσοφίας της γλώσσας και των μαθηματικών.
Ύπαρξη και Ταυτότητα
Πως μπορούμε να κατηγοριοποιήσουμε και να εξατομικεύσουμε τις οντότητες και έννοιες της επιστήμης των υπολογιστών;
Τι είδους πράγματα είναι αυτοί οι περιβόητοι υπολογιστές που έχουν γίνει αναπόσπαστο κομμάτι της καθημερινότητάς μας και τι είναι αυτό που καθορίζει την ταυτότητά τους;
Για παράδειγμα, κάποια είναι σαφώς συγκεκριμένα υλικά αντικείμενα (οι δρομολογητές / routers, οι φορητοί υπολογιστές και οι κάρτες γραφικών, για παράδειγμα) και μερικά δεν είναι (οι τυπικοί κανόνες και οι αρχές της επιστήμης, τα τεκμηριωμένα θεωρήματα, τα λογικά πλαίσια εργασίας, οι διεργασίες άλγεβρας, οι αφηρημένοι τύποι δεδομένων).
Αλλά ο χαρακτηρισμός ορισμένων από των κεντρικών εννοιών, όπως τα προγράμματα και τα δεδομένα, είναι περισσότερο «προβληματικός».
Ειδικότερα, η οντολογική κατάσταση των προγραμμάτων δεν είναι εντελώς απλή˙ ούτε και το ζήτημα των κριτηρίων της ταυτότητάς τους.
Η διπλή φύση των προγραμμάτων
Πολλοί συγγραφείς (ο Moor το 1978, ο Rapaport το 2005, ο Colburn το 2004) συζητούν τη λεγόμενη διπλή φύση των προγραμμάτων.
Εκ πρώτης όψεως, ένα πρόγραμμα φαίνεται να έχει τόσο μια μηχανική διαδικασία όσο και μια διαδικασία κειμένου.
Πολύ μεγάλο ρόλο, βέβαια, παίζει και η εμφάνιση.
Ως κείμενο, ένα πρόγραμμα μπορεί να τροποποιηθεί. Αλλά το πώς θα «δουλέψει» και το κατά πόσον θα το αναγνωρίζει ο δίσκος, φαίνεται να ποικίλει λόγω των διαφορετικών ιδιοτήτων των μηχανημάτων. Και για να γίνουμε πιο συγκεκριμένοι, ένα πρόγραμμα μπορεί να εκτελεστεί σε ένα φυσικό μηχάνημα.
Σύμφωνα με την αρχή της δυσδιακριτότητας των πανομοιότυπων (= Indiscernibility Identicals), οι δύο εκφάνσεις δεν μπορούν να έχουν την ίδια οντότητα.
Φυσικά, ο καθένας που είναι πεπεισμένος για τη δυαδικότητα αυτή, νιώθει υποχρέωσή του να πει δυο λόγια για τη σχέση που υπάρχει ανάμεσα σ’ αυτές τις δύο εμφανείς μορφές της ύπαρξης.
Η indiscernibility of identicals είναι μια αρχή βασισμένη στην κοινή λογική του κατηγορήματος. Αναφέρει ότι αν δύο αντικείμενα είναι ισοδύναμα, τότε μοιράζονται όλες τις ιδιότητες.
Τέτοιου είδους αρχές, συνήθως, βασίζονται σε λογικές θεωρίες. Αλλά θα πρέπει να δώσουμε ιδιαίτερο βάρος στην ικανότητά τους να διακρίνουν τα διάφορα είδη σημασιολογίας στις γλώσσες προγραμματισμού. Πράγματι, ο νόμος Leibniz είναι μια από τις κεντρικές έννοιες της σύγχρονης σημασιολογικής θεωρίας. Το κριτήριο της ταυτότητας εμπλουτίζεται με την ισοδυναμία της παρατήρησης.
Μια άμεση πρόταση είναι ότι η υλοποίηση του ενός προγράμματος είναι η εφαρμογή του άλλου˙ δηλαδή, η φυσική υλοποίηση είναι η εφαρμογή του κειμένου.
Ωστόσο, ακόμη και μέσα στα όρια της επιστήμης των υπολογιστών, δεν είναι άμεσα σαφές ότι η λέξη εφαρμογή αναφέρεται σε μία μόνο έννοια. Συχνά χρησιμοποιείται για να δηλώσει το αποτέλεσμα μιας διαδικασίας συλλογής, όπου ένα πρόγραμμα σε γλώσσα υψηλού επιπέδου (ο πηγαίος κώδικας) μετατρέπεται σε γλώσσα μηχανής (σε αντικειμενικό κώδικα).
Αλλά εξίσου συχνά χρησιμοποιείται για να αναφερθεί στη διαδικασία όπου ο πηγαίος κώδικας, άμεσα, πραγματοποιείται στο hardware υλικό (π.χ. μια συγκεκριμένη εφαρμογή σε ημιαγωγούς). Και πιθανώς, αυτή είναι η σχετική έννοια.
Με την ίδια λογική, η σχέση προγράμματος – κειμένου και προγράμματος – μεθόδου, είναι παρόμοια με εκείνη μεταξύ ενός σχεδίου και της εκδήλωσής του ως μια σειρά από φυσικές ενέργειες.
Αλλά αυτή η παρομοίωση δεν φαίνεται να είναι επαρκώς ανάλογη με την αντιστοίχιση πρόγραμμα-διαδικασία
Ίσως, μια καλύτερη περιγραφή θα ήταν αν λέγαμε ότι τα προγράμματα προκαλούν μηχανικές διαδικασίες.
Το λογισμικό είναι μια συγκεκριμένη αφαίρεση που έχει ένα μέσον περιγραφής (το κείμενο είναι η αφαίρεση) και ένα μέσον εκτέλεσης.
Μια ελαφρώς διαφορετική προοπτική για τα ζητήματα αυτά ξεκινά από το ζήτημα της ταυτότητας του προγράμματος.
Πότε δύο προγράμματα θεωρούνται ότι είναι ίδια;
Τέτοια θέματα ανακύπτουν για παράδειγμα, στις προσπάθειες να προσδιοριστεί η νομική ταυτότητα σε ένα κομμάτι του λογισμικού. Αν έχουμε εντοπίσει ένα πρόγραμμα με εκδήλωση του κειμένου, τότε η ταυτότητα του προγράμματος είναι ευαίσθητη σε αλλαγές ως προς την εμφάνιση του (π.χ. αλλαγή της γραμματοσειράς).
Προφανώς, το κείμενο δεν είναι το μόνο που μας παρέχει μια ενδιαφέρουσα φιλοσοφική έννοια της ταυτότητας του προγράμματος.
Μάλλον, για να καταλήξουμε σε κάποιο τεκμηριωμένο κριτήριο της ταυτότητας ενός προγράμματος, θα πρέπει να λάβουμε περισσότερο υπ’ όψιν τη σημασιολογία και την εφαρμογή του.
Προγράμματα και Αλγόριθμοι
Ανεξάρτητα από τη γνώμη που έχουμε για τα προγράμματα, η διάκριση μεταξύ του αλγόριθμου και του προγράμματος χρήζει περαιτέρω εννοιολογικής διευκρίνισης. Οι αλγόριθμοι είθισται να θεωρούνται μαθηματικά αντικείμενα. Αν αυτό είναι αλήθεια, τότε πολλά από τα φιλοσοφικά ζητήματα που τους αφορούν, επίσης ανήκουν στην φιλοσοφία των μαθηματικών. Ωστόσο, οι αλγόριθμοι είναι αναμφισβήτητα περισσότερο στο επίκεντρο της επιστήμης των υπολογιστών από ό,τι στα μαθηματικά και αξίζουν περισσότερη προσοχή.
Αν και υπήρξε κάποια σημαντική μαθηματική μελέτη των αλγορίθμων στη θεωρητική επιστήμη των υπολογιστών και στη μαθηματική λογική (μην ξεχνάμε τη μελέτη του Μοσχοβάκη το 1997 και των Blass & Gurevich το 2003), δεν έχει υπάρξει μια μεγάλη φιλοσοφική συζήτηση που να επικεντρώνεται στη φύση των αλγορίθμων και στις διαφορές μεταξύ των αλγορίθμων και των προγραμμάτων.
Μήπως λόγω του ότι οι αλγόριθμοι είναι αφηρημένες έννοιες, ενώ τα προγράμματα είναι συγκεκριμένα;
Και για να γίνουμε πιο σαφείς, μήπως οι αλγόριθμοι είναι το αφηρημένο μαθηματικό ομόλογο του κειμένου, που είναι το πρόγραμμα; Αυτή η εικόνα φυσικά μας παραπέμπει σε μια οντολογική μορφή του Πλατωνισμού (Shapiro 1997), όπου οι αλγόριθμοι έχουν οντολογική προτεραιότητα και τα προγράμματα παρέχουν το γλωσσικό μέσον. Από την άποψη αυτή, θα μπορούσε να θεωρηθεί ότι οι αλγόριθμοι παράσχουν τη σημασιολογία των γλωσσών προγραμματισμού.
Μια λιγότερο πλατωνική άποψη λέει ότι οι αλγόριθμοι περιέχουν τις ιδέες που εκφράζονται σε ένα πρόγραμμα˙ λαμβάνοντας πάντα υπ’ όψιν ότι οι αλγόριθμοι, σε αντίθεση με τα προγράμματα, δεν είναι copyrightable.
Τέλος, μία σχεδόν λαογραφική άποψη είναι ότι οι Turing μηχανές μας δίνουν μια επίσημη ανάλυση της έννοιας του αλγορίθμου μας. Αλλά αυτό δεν ταιριάζει με το σύγχρονη έννοια που χρησιμοποιείται στη σύγχρονη επιστήμη των υπολογιστών με τις εξελιγμένες έννοιες της αναπαράστασης και του ελέγχου.
Προγράμματα και Προδιαγραφές
Μια άλλη διάκριση που θα έπρεπε να γίνει σαφής είναι η σχέση ανάμεσα στα προγράμματα και τις προδιαγραφές. Ποιες είναι οι προδιαγραφές και πώς είναι διαφορετικές από τα προγράμματα;
Η φύση των προδιαγραφών είναι ένα θεμελιώδες ζήτημα για τα εννοιολογικά θεμέλια της επιστήμης των υπολογιστών.
Μια άποψη, που βρίσκεται συνήθως στα εγχειρίδια σχετικά με τις τυπικές προδιαγραφές, είναι ότι τα προγράμματα περιέχουν λεπτομερείς οδηγίες για το μηχανισμό τους και την επεξεργασία τους ενώ οι (λειτουργικές) προδιαγραφές περιγράφουν μόνον τη σχέση μεταξύ της εισαγωγής και της εξαγωγής δεδομένων.
Τα προγράμματα είναι επιτακτική ανάγκη και περιγράφουν τον τρόπο για την επίτευξη του στόχου που περιγράφεται από τις προδιαγραφές.
Οι μη λειτουργικές προδιαγραφές δεν μπορεί να θεωρούνται ως δηλώσεις σχετικά με τη σχέση μεταξύ εισαγωγής και εξαγωγής δεδομένων, επειδή επιβάλλουν απαιτήσεις για τον σχεδιασμό και το είδος των οδηγιών που μπορούν να συμπεριληφθούν σε οποιοδήποτε πρόγραμμα.
Μια άλλη άποψη είναι ότι η διαφορά μεταξύ των προδιαγραφών και των προγραμμάτων έγκειται στην έννοια της εφαρμογής˙ δηλαδή, μπορούν να καταρτίζονται και να εκτελούνται.
Κατά τη διάρκεια των πρώτων πέντε γενιών των γλωσσών προγραμματισμού (2ο μισό του 20ου αιώνα), οι recursive, modular, functional και object-oriented (αναδρομική, σπονδυλωτή, λειτουργική και object-oriented) προδιαγραφές μιας γενιάς έχουν έρθει για να διαρθρωθούν ως πρόγραμμα στην επόμενη γενιά˙ δηλαδή, οι γλώσσες προδιαγραφών του σήμερα συχνά γίνονται γλώσσες προγραμματισμού του αύριο.
Μια άλλη άποψη είναι ότι οι γλώσσες προγραμματισμού είναι οι γλώσσες που έχουν εφαρμογή επί της αρχής, ενώ οι γλώσσες των προδιαγραφών είναι εκείνες που δεν μπορούν να εφαρμοστούν. Και κατά πάσα πιθανότητα, ο λόγος που δε μπορεί να γίνει κάτι τέτοιο, να είναι ότι οι γλώσσες προδιαγραφών επιτρέπουν σε κάποιον να εκφράσει έννοιες που δεν είναι Turing υπολογίσιμες. Η διάκριση αυτή είναι σύμφωνη με πολλές από τις υπάρχουσες γλώσσες προδιαγραφών που βασίζονται στην Zermelo-Fraenkel θεωρία των συνόλων και της λογικής της ανώτερης τάξης. Ωστόσο, φαίνεται περίεργο το γεγονός ότι αυτό που πρέπει να χαρακτηρίζει μια γλώσσα προδιαγραφής είναι το γεγονός ότι μπορεί να εκφράσει μη υπολογίσιμες ιδιότητες και σχέσεις.
Το μόνο σίγουρο είναι ότι το δυαδικό χάσμα μεταξύ των προδιαγραφών και των προγραμμάτων των υπολογιστών είναι ένα ζήτημα που αξίζει περισσότερη προσοχή, όχι μόνο για την εννοιολογική διευκρίνιση, αλλά και επειδή θα μπορούσε να έχει συνέπειες για το σχεδιασμό των μελλοντικών γλωσσών προγραμματισμού και των προδιαγραφών.
Σημασιολογία
Η γραμματική μιας γλώσσας προγραμματισμού καθορίζει μόνον ό,τι είναι νόμιμο συντακτικά. Δεν μας ενημερώνει για την προβλεπόμενη έννοια των δομών της. Έτσι, η γραμματική μιας γλώσσας προγραμματισμού, από μόνη της, δεν καθορίζει αυτό που οι άνθρωποι προγραμματίζουν (το λογισμικό).
Αντ’ αυτού, είναι η γραμματική που εμπλουτίζεται με μια σημασιολογική ερμηνεία (τυπική ή άτυπη), που θα πρέπει να ληφθεί υπ’ όψιν.
Η σημασιολογία έχει ως στόχο να ενημερώσει τον προγραμματιστή, τον συγγραφέα και τον μεταφραστή που θεωρητικά ενδιαφέρονται να εξερευνήσουν τις ιδιότητες της γλώσσας.
Πράγματι, είναι συχνός ο ισχυρισμός ότι για να ικανοποιηθούν οι διαφορετικές ανάγκες του προγραμματιστή και του δημιουργού κώδικα, διαφορετικές σημασιολογικές ερμηνείες, σε διαφορετικά επίπεδα αφαίρεσης, απαιτούνται. Και η δουλειά του θεωρητικού είναι να διερευνήσει τη σχέση τους.
Η σημασιολογία παίζει κανονιστικό ή καθοριστικό ρόλο στην επιστήμη των υπολογιστών. Χωρίς σημασιολογικούς ορισμούς, οι γλώσσες και οι δομές δεν έχουν περιεχόμενο πέρα και πάνω από εκείνο που παρέχεται από την συντακτική περιγραφή τους.
Αποδείξεις και Προγράμματα
Οι προδιαγραφές προκαλούν μια συγκεκριμένη έννοια της ορθότητας. Σύμφωνα με την αφηρημένη ερμηνεία αυτής της έννοιας, ένα πρόγραμμα θεωρείται ορθώς συνδυασμένο με τις (λειτουργικές) προδιαγραφές του, εάν η σχέση που σμιλεύει μεταξύ της εισαγωγής και της εξαγωγής δεδομένων, πληροί εκείνην που προβλέπεται από τις προδιαγραφές.
Πρόκειται για μια φιλοσοφική διαμάχη που περιβάλλει το ζήτημα της ορθότητας και επικεντρώνεται στη φύση των εν λόγω αποδείξεων.
Αποδείξεις στην Επιστήμη των Υπολογιστών
Η φύση της γνώσης που προέρχεται από τις αποδείξεις ορθότητας, φέρεται να είναι διαφορετική από τη γνώση που μπορεί να φανεί από τις αποδείξεις στα μαθηματικά.
Θα πρέπει επίσης να γίνει διάκριση αυτής της, ουσιαστικά κοινωνιολογικής, προοπτικής για αποδείξεις από αυτήν που υποστηρίζει ότι οι αποδείξεις είναι σωστές ή λάθος με τρόπο που να είναι ανεξάρτητες από την επιστημολογική κρίση.
Ας κρατήσουμε αποστάσεις και, ως πιο ρεαλιστές, ας συμφωνήσουμε με την άποψη ότι κάθε δεδομένη απόδειξη είναι είτε σωστή είτε λάθος˙ χωρίς να εγκαταλείψουμε το αίτημα ότι οι αποδείξεις, προκειμένου να ληφθούν και να επικυρωθούν, θα πρέπει να κατακτηθούν.
Θα μπορούσε κανείς να προσπαθήσει να κερδίσει έδαφος υποστηρίζοντας ότι οι αποδείξεις ορθότητας πρέπει να ελέγχονται από έναν υπολογιστή αντί από τον άνθρωπο.
Ακόμα και αν κανείς παραμερίσει αυτές τις επιστημολογικές ανησυχίες, μια δεύτερη και φαινομενικά πιο ισοπεδωτική κριτική σχετικά με την ορθότητα των αποδείξεων, εγείρει το ερώτημα για το τι πραγματικά έχει συσταθεί από αυτές τις αποδείξεις. Φαινομενικά, η απόδειξη της ορθότητας παρέχει ορθότητα μόνο μέχρι την κειμενική αναπαράσταση του προγράμματος.
Δε μπορεί ποτέ κανείς να εγγυηθεί ότι κάποια συγκεκριμένη εκτέλεση του προγράμματος σε ένα φυσικό μηχάνημα, θα προχωρήσει πραγματικά όπως αναμενόταν (Fetzer 1988, Fetzer 1999, Colburn 2004).
Αλλά τι σημαίνει να είναι σωστή η εκτέλεση ενός προγράμματος;
Ας υποθέσουμε ότι έχουμε μια προδιαγραφή του προγράμματος και ότι μπορεί να είναι τυπική ή άτυπη. Στη συνέχεια, ας υποθέσουμε ότι έχουμε πραγματοποιήσει μια σειρά από δοκιμές, ώστε να βεβαιωθούμε ότι το πρόγραμμα ανταποκρίνεται στις προδιαγραφές του. Αν τα καταφέρουμε, έχουμε εμπειρικά στοιχεία ότι το φυσικό ομόλογο του κειμένου του προγράμματος είναι πράγματι σωστό, επειδή λειτουργεί σύμφωνα με τις προδιαγραφές. Από την άποψη αυτή, είναι το φυσικό ομόλογό του που δοκιμάζεται. Και όχι το κείμενο του προγράμματος.
Η ανάλυση δείχνει ότι υπάρχει μια δυαδικότητα στην έννοια της ορθότητας των προγραμμάτων. Συνεπείς με τη διττή φύση των προγραμμάτων, θα μπορούσαμε να πούμε ότι το κειμενικό πρόγραμμα υπόκειται σε μαθηματική ακρίβεια, ενώ το σωματικό ομόλογό του, υπόκειται σε εμπειρική επαλήθευση.
Υπολογίσιμο
Η υπολογισιμότητα είναι ένα από τα παλαιότερα θέματα που μπορούν να επισημαίνονται ως καίριο στη Φιλοσοφία της Επιστήμης των Υπολογιστών.
Ο Άλαν Μάθισον Τούρινγκ (Alan Matheson Turing) ήταν Bρετανός μαθηματικός, καθηγητής της λογικής, κρυπτογράφος και θεωρείται συχνά πατέρας της επιστήμης των υπολογιστών. Με τη δοκιμή Τούρινγκ, είχε μια σημαντική και χαρακτηριστική συμβολή στη συζήτηση σχετικά με τη τεχνητή νοημοσύνη˙ εάν είναι δυνατόν να ειπωθεί ότι μια μηχανή γνωρίζει και μπορεί να σκεφτεί. Παρείχε μία επίσημη έννοια του αλγορίθμου και των υπολογίσιμων αριθμών με τη μηχανή Τούρινγκ, διατυπώνοντας την ευρέως αποδεκτή έκδοση “Τούρινγκ” με την διατριβή του για την καθολική μηχανή Τούρινγκ, δηλαδή ότι οποιοδήποτε πρακτικό πρότυπο υπολογισμού έχει είτε ένα ισότιμο είτε ένα υποσύνολο των ικανοτήτων μιας μηχανής Τούρινγκ.
Δύο είναι οι βασικές ερμηνείες υπολογισιμότητας
- Οι θεωρητικοί υπολογιστές τούριγκ (Turing machines) μπορούν να κάνουν το ο,τιδήποτε που θα μπορούσε να περιγραφεί ως «κανόνας» ή «καθαρά μηχανικό».
- Ό,τι μπορεί να υπολογιστεί από ένα μηχάνημα (που εργάζεται σε πεπερασμένα στοιχεία, σύμφωνα με ένα πεπερασμένο πρόγραμμα οδηγιών) είναι Turing μηχανικά υπολογίσιμο.
Η πρώτη ερμηνεία έχει ως στόχο να συλλάβει την έννοια της αποτελεσματικής ή μηχανικής μεθόδου στη λογική και στα μαθηματικά. Έχει ως στόχο να αντανακλά την άτυπη έννοια του αλγορίθμου σιωπηρά στα μαθηματικά και ήρθε στο προσκήνιο με το πρόγραμμα του Hilbert.
Η δεύτερη ερμηνεία φαίνεται να διέπει τις φυσικές μηχανές.
Η φυσική διαφορά αφορά τις δυνατότητες των πραγματικών μηχανών.
Για παράδειγμα, αυτή φαίνεται να είναι η σιωπηρή παραδοχή στη mainstream (mainstream = δεσπόζουσα τάση) επιστήμη των υπολογιστών.
Το μόνο σίγουρο είναι ότι κάθε πρόγραμμα γραμμένο σε μια υπάρχουσα γλώσσα εφαρμογής προγραμματισμού είναι Turing εφαρμόσιμο και αντιστρόφως, ότι όλες οι γενικής χρήσης γλώσσες προγραμματισμού είναι Turing πλήρεις˙ εμπεριέχουν, δηλαδή, όλους τους απαραίτητους κατασκευαστικούς ελέγχους για την προσομοίωση μιας καθολικής μηχανής Turing.
Προγραμματισμός και γλώσσες προγραμματισμού
Ο σχεδιασμός των προγραμμάτων και των γλωσσών προγραμματισμού είναι μία από τις παραδοσιακές δραστηριότητες της επιστήμης των υπολογιστών.
Αφαίρεση
Η αφαίρεση είναι ένας από τους ακρογωνιαίους λίθους της εννοιολογικής επιστήμης των υπολογιστών. Αποτελεί αναπόσπαστο μέρος του σχεδιασμού του προγράμματος και της κατασκευής του και σχηματίζει ένα πυρήνα μεθοδολογίας για τον σχεδιασμό των γλωσσών προγραμματισμού. Πράγματι, αυτό οδηγεί στη δημιουργία νέων υποδειγμάτων προγραμματισμού. Δεν κρύβεται πίσω από την εφεύρεση εννοιών όπως διαδικαστική και λειτουργική αφαίρεση, πολυμορφισμός, αφαίρεση στοιχείων, αντικείμενα και κλάσεις, σχεδιαστικά πρότυπα, αρχιτεκτονικό στυλ και υποκατηγορίες.
Πολλοί κλάδοι της τεχνολογίας λογισμικού (π.χ. λογισμικό μοντελοποίησης, η κατανόηση του προγράμματος, η οπτικοποίηση του προγράμματος, η αντιστροφή και αναδιοργάνωση) κατά κύριο λόγο ασχολούνται με την έρευνα των κατάλληλων μηχανισμών για την αφαίρεση του προγράμματος. Και μεγάλο μέρος της προόδου της τεχνολογίας λογισμικού που έχει επιτευχθεί οφείλεται στην εισαγωγή νέων μηχανισμών άντλησης.
Αλλά ποια είναι η φύση της αφαίρεσης στην επιστήμη των υπολογιστών; Ποια είναι η υποκείμενη φιλοσοφική εξήγηση του;
Δυστυχώς, σε γενικές γραμμές, η ίδια η ιδέα της αφαίρεσης είναι φιλοσοφικά προβληματική. Σύμφωνα με την παραδοσιακή άποψη, που έχει τις ρίζες της στην φιλοσοφική ψυχολογία, η αφαίρεση είναι μια διανοητική διαδικασία κατά την οποία οι νέες αντιλήψεις που σχηματίζονται από την εξέταση αρκετών αντικειμένων ή ιδεών, παραλείπουν κάποια από τα χαρακτηριστικά που τους διακρίνουν. (Rosen 2001). Όμως, αυτή η προσέγγιση έχει λίγους, εάν υπάρχουν, σύγχρονους φιλοσοφικούς υποστηρικτές.
Δεν είναι σαφές αν οι ιδέες, οι οποίες αναπτύχθηκαν για τη μαθηματική αφαίρεση, εφαρμόζονται στην επιστήμη υπολογιστών. Προφανώς, κάποιες από τις έννοιες της αφαίρεσης στην επιστήμη των υπολογιστών είτε είναι εμπνευσμένες είτε αντλήθηκαν από τα μαθηματικά.
Αλλά ποια είναι η εννοιολογική σχέση μεταξύ της άντλησης σε αυτούς τους κλάδους; Είναι ριζικά διαφορετική; Δυστυχώς, ενώ υπάρχει σημαντική βιβλιογραφία σχετικά με τα φιλοσοφικά θεμέλια της μαθηματικής αφαίρεσης (Wright 1983, Hale 1987, Fine 2002), η εννοιολογική διερεύνηση της αφαίρεσης στην επιστήμη των υπολογιστών είναι ακόμη στα σπάργανα.
Ο Colburn (2007) υποδηλώνει ότι η διάκριση μεταξύ της άντλησης στα μαθηματικά και της αφαίρεσης στην επιστήμη των υπολογιστών έγκειται στο γεγονός ότι στα μαθηματικά αφαίρεση είναι παραμέληση πληροφοριών, ενώ στην επιστήμη των υπολογιστών είναι απόκρυψη πληροφοριών.
Τύποι και Οντολογίες
Οι γλώσσες προγραμματισμού είναι, ως επί το πλείστον, δακτυλογραφημένες γλώσσες,
Στην επιστήμη των υπολογιστών, οι τύποι παίζουν έναν ρόλο που είναι ακριβώς στη μέση˙ ανάμεσα στη σύνταξη και στη σημασιολογία.
Νομικά και ηθικά ζητήματα
Ορισμένα ζητήματα για την ηθική των υπολογιστών ανήκουν στη Φιλοσοφία της Επιστήμης των Υπολογιστών, δεδομένου ότι η δραστηριότητα της κατασκευής και της χρήσης του λογισμικού εγείρει ηθικά ζητήματα που προσκρούουν στο σύνολο της τεχνολογίας των πληροφοριών και των εφαρμογών της πληροφορικής (Bynum 2001). Ως εκ τούτου, θα αναφέρουμε μόνο δύο που φαίνονται στο επίκεντρο της επιστήμης των υπολογιστών.
Πνευματικά δικαιώματα, διπλώματα ευρεσιτεχνίας και Ταυτότητα
Στο Texnologia.Net έχουμε πει την άποψή μας για τα πνευματικά δικαιώματα και για το μονοπώλιο που διαμορφώνουν οι πατέντες, ουκ ολίγες φορές.
Πιστεύουμε ακράδαντα ότι χρειαζόμαστε μια ανοιχτή και ελεύθερη κοινωνία που δεν έχει ανάγκη από πατέντες και πολυεθνικές.
Μια κοινωνία όπου ο επιστήμονας θα ασχολείται με το έργο του.
ΧΩΡΙΣ μεσάζοντες ή εταιρείες, να του υποδεικνύουν και να βάζουν όρια και πατέντες.
Θα μπορούσε, βέβαια, να ισχυριστεί κάποιος πως τα πνευματικά δικαιώματα παρέχουν κάποια προστασία για το λογισμικό, αλλά ακόμα κι αυτό αναιρείται από το γεγονός ότι δεν είναι σε θέση να προστατεύσει την σημασιολογία του πυρήνα του. Και να υποθέσω ότι ο πυρήνας καθορίζεται από μια σημασιολογική περιγραφή της γλώσσας προγραμματισμού, στην οποία το πρόγραμμα είναι γραμμένο. Προφανώς, η ουσία του θέματος αφορά το πρόβλημα της ταυτότητας του προγράμματος. Αλλά αν υπάρχουν πολλές πιθανές σημασιολογικές έννοιες της ταυτότητας, ποια είναι η κατάλληλη για τη νομική εφαρμογή;
Μια άτυπη σημασιολογική περιγραφή που αναφέρεται συχνά στη νομοθεσία και προσδιορίζει το πρόγραμμα με τις ιδέες που εκφράζονται σε αυτό, θεωρείται ότι είναι υποκείμενο του αλγορίθμου.
Αλλά δεν είναι μόνον το γεγονός ότι συχνά είναι δύσκολο να πούμε ακριβώς τι είναι αυτός ο αλγόριθμος, αλλά και το γεγονός ότι, όπως και τα μαθηματικά θεωρήματα, έτσι και οι αλγόριθμοι δεν μπορούν να προστατευθούν από πνευματικά δικαιώματα.
Αλλά ακόμα κι αν θα μπορούσαμε να εντοπίσουμε μια σημασιολογική περιγραφή που θα περάσει τον έλεγχο με τους νόμους της πνευματικής ιδιοκτησίας, η νομική εικόνα -και πάλι- δεν θα ήταν πλήρης. Η παραβίαση πνευματικών δικαιωμάτων εξαρτάται συχνά όχι μόνον από την περιγραφή της ταυτότητας, αλλά και από το κατά πόσον είναι εύλογο να υποθέσουμε ότι κάποιος θα «έρθει» με το ίδιο πρόγραμμα.
Με άλλα λόγια, ακόμη και όταν δύο προγράμματα είναι ισοδύναμα σύμφωνα με το σημασιολογικό κριτήριο μας, αν θα μπορούσε να θεωρηθεί ως εύλογο ότι είχαν κατασκευαστεί ανεξάρτητα, δεν θα υπήρχε παραβίαση πνευματικών δικαιωμάτων.
Τα διπλώματα ευρεσιτεχνίας (οι πατέντες χρησιμότητας, για να γίνουμε πιο συγκεκριμένοι) δεν τα πάνε και πολύ καλά, δεδομένου ότι αφηρημένες ιδέες και αλγόριθμοι δε μπορούν να μπουν σε πατέντες και διανοητικές διαδικασίες,.
Και μέχρι τώρα μιλάμε για αλγόριθμους και όχι για τον πηγαίο κώδικα που συχνά περιέχει τις νέες ιδέες. Αλλά και πάλι, η κεντρική φιλοσοφική ανησυχία, είναι ο εντοπισμός και τα θέματα ταυτότητας.
Και αυτές αφορούν τόσο σημασιολογικές όσο και εκ προθέσεως εκτιμήσεις.
Ορθότητα και Ευθύνη
Από ηθικής απόψεως, η περίπτωση ενός προγραμματιστή που αποτυγχάνει να αναλύσει και να εκτελέσει το πρόγραμμα του είναι διαφορετική από εκείνη ενός πολιτικού μηχανικού που αδυνατεί να εκτελέσει την απαιτούμενη μαθηματική μοντελοποίηση και τις δοκιμές σε κατασκευές.
Οι ηθικές υποχρεώσεις φαίνονται παρόμοιες.
Ένας τρόπος με τον οποίο θα μπορούσαν να είναι διαφορετικές, αναφέρεται στην πολυπλοκότητα του λογισμικού (Brooks 1987) η οποία υπερβαίνει την πολυπλοκότητα οποιουδήποτε άλλου είδους ανθρώπινου τεχνουργήματος, κατά τάξεις μεγέθους.
Πολλοί θα μπορούσαν να ισχυριστούν ότι δεν είναι εφικτό να υπάρχει καμία τέτοια εγγύηση ορθότητας.
Το λογισμικό είναι τόσο πολύπλοκο, ώστε η διαδικασία της αυστηρώς μαθηματικής απόδειξης και τη δοκιμής του λογισμικού, είναι ανέφικτη.
Και, προφανώς, κάποιος μπορεί να έχει μόνο (ηθική ή νομική) υποχρέωση να πραγματοποιήσει μια εφικτή διαδικασία.
Αλλά πώς μπορεί κανείς να ισορροπήσει τις πτυχές που αποδεικνύει και τον έλεγχο της ανάπτυξης λογισμικού κατά την προβλεπόμενη χρήση του λογισμικού;
Νέες ανατροπές ή Νέα Θέματα;
Ακόμα και αυτή μάλλον η σύντομη επισκόπηση της Φιλοσοφίας της Επιστήμης των Υπολογιστών θα πρέπει να σας έχει πείσει ότι η επιστήμη των υπολογιστών εγείρει ενδιαφέροντα και απαιτητικά φιλοσοφικά ζητήματα.
Πράγματι, μία από τις πρωταρχικούς εντυπώσεις είναι ότι έχει ουσιαστική σύνδεση με τους περισσότερους από τους παραδοσιακούς κλάδους της φιλοσοφίας. Υπάρχουν σαφείς συνδέσεις με την οντολογία, την ηθική, την επιστημολογία και τις φιλοσοφίες των μαθηματικών, της φυσικής και της γλώσσας.
Η τεχνητή νοημοσύνη και η γνωστική επιστήμη αποδίδουν φιλοσοφικά ερωτήματα που ανήκουν στη φιλοσοφία του νου (McLaughlin 2004).
Φυσικά, μεγάλο μέρος αυτής προέρχεται από τον Turing (1950).
Άλλες εφαρμογές της επιστήμης των υπολογιστών σε παραδοσιακούς τομείς της επιστήμης, της περιβόητης υπολογιστικής επιστήμης, δημιουργούν θέματα για τη φιλοσοφία της επιστήμης.
Ποιες είναι η επιστημολογικές επιπτώσεις των προσομοιώσεων σε υπολογιστή, ιδιαίτερα όταν αυτή είναι η μόνη βιώσιμη μορφή του πειραματισμού;
Η υπολογιστική στροφή στην οντολογία φέρνει νέες τεχνικές που θα υποστηρίξουν την δομή κάθε είδους εννοιολογικής οντολογίας. Η φιλοσοφία της λογικής εμπλουτίζεται από μια μάζα του υλικού˙ μεγάλος αριθμός νέων λογικών συστημάτων έχει προκύψει για τους σκοπούς της αναπαράστασης και της συλλογιστικής σχετικά με τα υπολογιστικά συστήματα.
Αν και είναι σαφές ότι η επιστήμη των υπολογιστών δημιουργεί πολλές σημαντικές ανατροπές σε παραδοσιακές φιλοσοφικές ανησυχίες, αυτό που είναι λιγότερο σαφές είναι εάν αυτές οι ανατροπές δημιουργούν κάποιες πραγματικά νέες φιλοσοφικές ανησυχίες. Υπάρχουν καυτά ζητήματα που εγείρονται στην Φιλοσοφία της Επιστήμης των Υπολογιστών που, αντίστοιχά τους, δεν έχουν τεθεί σε οποιονδήποτε άλλο κλάδο της φιλοσοφίας.