Next Previous Contents

8. Μερικά Ακόμη Μαθήματα απο το Fetchmail.

Πριν επιστρέψουμε σε θέματα γενικού ενδιαφέροντος παραγωγής λογισμικού, υπάρχουν ακόμη μερικά μαθήματα απ' την εμπειρία του fetchmail για να μελετήσουμε.

Η σύνταξη των αρχείων rc περιλαμβάνει προαιρετικές δεσμευμένες λέξεις "θορύβου" [noise keyword] που αγνοούνται πλήρως από τον προγραμματιστή. Η σύνταξη Αγγλικού τύπου που προτιμούν είναι πολύ πιο αναγνώσιμη απ' τα παραδοσιακά λιτά ζεύγη τιμών δεσμευμένων λέξεων που παίρνει κανείς όταν απογυμνώσει αυτές τις δεσμευμένες λέξεις.

Αυτό άρχισε σαν ένα πείραμα, όταν πρόσεξα πόσο πολύ οι ανακοινώσεις των αρχείων rc άρχιζαν να μοιάζουν μια επιβεβλημένη μικρή γλώσσα. (Αυτός είναι ο λόγος που άλλαξα την αρχική δεσμευμένη λέξη του popclient από "server" σε "poll").

Μου φαινόταν ότι αν προσπαθούσα να κάνω αυτή την επιβεβλημένη μικρή γλώσσα να μοιάζει με τα Αγγλικά θα γινόταν πιο εύχρηστη. Όμως, αν και είμαι αφοσιωμένος οπαδός της σχολής σχεδιασμού που αποκαλείτε "κάνετο μια γλώσσα", όπως μας παραδειγματίζουν το Emacs η HTML και πολλές μηχανές βάσεων δεδομένων, δεν είμαι σπουδαίος οπαδός της σύνταξης Αγγλικού τύπου.

Οι παραδοσιακοί προγραμματιστές έτειναν να ευνοούν σύνταξη ελέγχου που είναι πολύ ακριβής και συμπαγής και δεν είχαν καθόλου περιττές επαναλήψεις. Αυτό είναι μια πολιτισμική κληρονομιά από την εποχή που οι πόροι των υπολογιστών ήσαν ακριβοί, ώστε η ανάλυση των σταδίων να είναι όσο το δυνατόν πιο φτηνή κι απλή. Τα Αγγλικά, με περίπου 50% περιττών επαναλήψεων, φαινόταν τότε πολύ ακατάλληλο μοντέλο.

Δεν είναι αυτός ο λόγος που αποφεύγω την σύνταξη Αγγλικού τύπου. Την αναφέρω εδώ μόνο για να την καταργήσω. Έχοντας φτηνούς κύκλους και πυρήνα η λακωνικότητα δεν θα έπρεπε να είναι αυτοσκοπός. Σήμερα, είναι πιο σημαντικό η γλώσσα να είναι βολική για τους ανθρώπους από το να είναι φτηνή για τους υπολογιστές.

Υπάρχουν, όμως, σοβαροί λόγοι να ανησυχούμε. Ένας, είναι το κόστος που δημιουργεί η περιπλοκή των αναλυμένων σταδίων-κανείς δεν θέλει να αυξήσει αυτή την περιπλοκή στο σημείο να είναι πηγή bugs και σύγχυσης των χρηστών. Ένας άλλος είναι ότι, προσπαθώντας να κάνουμε μια γλώσσα σύνταξης να μοιάζει με Αγγλικά συχνά απαιτείται τα "Αγγλικά" που μιλά αυτή να ξεφεύγουν αρκετά από κάθε γνωστή μορφή, τόσο ώστε η επιφανειακή ομοιότητα προς την φυσική γλώσσα να είναι τόσο συγχυτική όσο μπορεί να είναι κάθε παραδοσιακή σύνταξη. (Αυτό το συναντά κανείς σε πολλές εμπορικές γλώσσες που εφαρμόζουν αναζήτηση μέσω βάσεων δεδομένων και τις λεγόμενες γλώσσες "τέταρτης γενιάς".

Η σύνταξη ελέγχου του fetchmail φαίνεται να αποφεύγει αυτά τα προβλήματα, επειδή ο χώρος κυριαρχίας της γλώσσας του είναι πολύ περιορισμένος. Δεν είναι μια γενική γλώσσα. Τα πράγματα που λέει αυτή δεν είναι τόσο περιπλεγμένα, ώστε υπάρχει μικρή πιθανότητα σύγχυσης όταν κινούμαστε μεταξύ ενός μικρού υποσυνόλου της Αγγλικής και της πραγματικής γλώσσας ελέγχου. Εδώ υπάρχουν ευρύτερα διδάγματα:

16. Όταν μια γλώσσα δεν είναι πλήρης κατά Turing (Turing-complete), τότε η καλύτερη λύση είναι η συντακτική ζάχαρη.

Ένα άλλο μάθημα είναι για την ασάφεια της ασφάλειας. Μερικοί χρήστες του fetchmail μου ζήτησαν να κάνω αλλαγές στο πρόγραμμα ώστε να αποθηκεύει κρυπτογραφημένους κωδικούς στο αρχείο rc, ώστε να μην μπορούν να τους δουν τυχαία οι αδιάκριτοι.

Δεν το έκανα, επειδή κάτι τέτοιο δεν προσφέρει ασφάλεια. Οποιοσδήποτε έχει άδεια να διαβάσει το αρχείο rc θα μπορεί να χρησιμοποιήσει το fetchmail-κι αν ψάχνουν τον κώδικά σας θα μπορούν να απομονώσουν τον αποκωδικοποιητή μέσα από τον ίδιο τον κώδικα του fetchmail.

Όποια κρυπτογράφηση κώδικα στο αρχείο .fetchmailrc κι αν επιχειρηθεί δίνει μια εσφαλμένη αίσθηση ασφάλειας. Ο γενικός κανόνας είναι ο εξής:

17. Ένα σύστημα ασφαλείας είναι τόσο ασφαλές όσο είναι και το μυστικό του. Προσοχή στα ψευδο-μυστικά.


Next Previous Contents