Πηγαίος κώδικας του Διερμηνευτή της ΓΛΩΣΣΑΣ

Ξεκίνησε από alkisg, 23 Αυγ 2008, 02:02:32 ΠΜ

« προηγούμενο - επόμενο »

alkisg

Μετά από 6 χρόνια ανάπτυξης, και επειδή αρκετά άτομα μου το έχουν ζητήσει, ο Διερμηνευτής γίνεται πλέον ανοικτού κώδικα υπό την άδεια GPL v3. Αυτό εν περιλήψει σημαίνει ότι οποιοσδήποτε μπορεί να δει, να τροποποιήσει ή να χρησιμοποιήσει μέρος του κώδικα σε άλλο λογισμικό, αρκεί και το λογισμικό αυτό να διανέμεται με συμβατή άδεια χρήσης.

Όμως, δεν έγινε ακόμη ολόκληρος ο Διερμηνευτής ανοικτού κώδικα, αλλά μόνο το κυρίως πρόγραμμα, ενώ η διεπαφή χρήστη (User Interface) θα μείνει για λίγο ακόμα απλά freeware. Αυτό κυρίως επειδή ο Διερμηνευτής από το 2005 χρησιμοποιεί τα Tnt Unicode Controls, τα οποία τότε δινόταν με άδεια παραπλήσια με public domain. Το 2007 όμως αγοράστηκαν από την εταιρία TMS software και έγιναν εμπορικά. Αν και αυτό δεν μπορεί να αναιρέσει την προηγούμενη (ελεύθερη) άδεια, δημιουργεί έναν προβληματισμό, και δυσκολεύει τη συντήρηση του κώδικα, επειδή σε κάθε νέα έκδοση των Windows (π.χ. Vista) παρουσιάζονται προβλήματα τα οποία χρειάζονται αρκετό χρόνο για να επιλυθούν. Αν και το ποσό για τα εμπορικά πια components είναι εντελώς ασήμαντο (30€), προτίμησα να μην τα συμπεριλάβω στον κώδικα του Διερμηνευτή, ακριβώς επειδή ήθελα όλος ο κώδικας να γίνει κάποια στιγμή open source.
Ευτυχώς η αναμενόμενη έκδοση 2009 του Delphi θα είναι (επιτέλους) Unicode, και έτσι θα μπορέσω να αφαιρέσω τα Tnt Unicode Controls, να τακτοποιήσω τον κώδικα του User Interface (αφαιρώντας και τις πάμπολες κλήσεις Windows API για την καλύτερη υποστήριξη των Windows 9x, τα οποία πλέον δεν θα υποστηρίζονται από το Delphi) και να τον ανοίξω κι αυτόν. Από την άλλη, δε νομίζω ότι ο κώδικας του UI ενδιαφέρει ιδιαίτερα τους developers, παρά μόνο ίσως κάποια εξεζητημένα κολπάκια για θέματα συμβατότητας και ταχύτητας.

Ο συνημμένος κώδικας είναι αυτός που χρησιμοποιείται για την παραγωγή εκτελέσιμων του Διερμηνευτή, δηλαδή περιλαμβάνει τα αντικείμενα για τη λεκτική και συντακτική ανάλυση, την κατασκευή της ενδιάμεσης αναπαράστασης, το εσωτερικό περιβάλλον εκτέλεσης, καθώς και ένα μικρό User Interface το οποίο δίνει στα προγράμματα τη μορφή εκτελέσιμων κονσόλας (σαν το MasterMind του παραδείγματος παρακάτω). Ο κώδικας αυτός (και κατά συνέπεια τα εκτελέσιμα που φτιάχνονται με το Διερμηνευτή) είναι ιδιαίτερα συμβατός, τρέχει σε Windows 95, 98, Me, NT, 2000, XP, 2003, Vista, 2008 καθώς και σε Linux κάτω από wine ή wineconsole.

Αν κάποιος ενδιαφέρεται να συμμετάσχει στη μεταφορά του Διερμηνευτή σε C++ ή Javascript ας επικοινωνήσει μαζί μου, υπάρχουν ήδη κάποιες πρώτες προσπάθειες.

alkisg

Ένα παράδειγμα για να γίνει πιο σαφές το τι περιλαμβάνεται στον κώδικα του Διερμηνευτή που επισυνάφθηκε παραπάνω. Αν τον κάνουμε compile και του ενσωματώσουμε ένα αρχείο ΓΛΩΣΣΑΣ, δημιουργείται κάτι σαν το συνημμένο παιχνίδι. Θα ακολουθήσει σε λίγες μέρες και το User Interface της έκδοσης 0.9.3 του Διερμηνευτή, με το οποίο η ενσωμάτωση αρχείων ΓΛΩΣΣΑΣ θα γίνεται αυτοματοποιημένα (μενού αρχείο » παραγωγή εκτελέσιμου). Για την ώρα όποιος δεν έχει όρεξη να κάνει compile, μπορεί να χρησιμοποιήσει το reshacker!  ;)


  ▄   ▄  ▄   ▄▄ ▄▄▄ ▄▄▄ ▄▄  ▄   ▄ ▄ ▄   ▄ ▄▄▄
  █▀▄▀█ █▄█ ▀▄   █  █▄  █▄▀ █▀▄▀█ █ █▀▄ █ █  █
  █   █ █ █ ▄▄▀  █  █▄▄ █ █ █   █ █ █  ▀█ █▄▄▀

Το MasterMind είναι ένα παιχνίδι λογικής, στο οποίο ο ένας παίκτης (υπολογιστής) σκέφτεται έναν τετραψήφιο αριθμό και ο άλλος παίκτης (χρήστης) προσπαθεί να τον πετύχει. Η κανονική βέβαια έκδοση είναι με χρώματα, αλλά στη ΓΛΩΣΣΑ είμαστε υποχρεωμένοι να κάνουμε συμβιβασμούς! :)
Τα ψηφία του μυστικού αριθμού είναι διαφορετικά μεταξύ τους, αλλά επιτρέπεται το πρώτο ψηφίο να είναι μηδέν, για παράδειγμα 0248. Ο χρήστης εισάγει έναν αριθμό προσπαθώντας να τον πετύχει, ας πούμε 1234. Τότε ο υπολογιστής του απαντάει με τα γράμματα ΟΝΟΠ.
Η σημασία των γραμμάτων είναι η εξής:

  • Οχι, ο μυστικός αριθμός δεν περιέχει το ψηφίο 1.
  • Ναι, ο μυστικός αριθμός περιέχει το ψηφίο 2.
  • Οχι, ο μυστικός αριθμός δεν περιέχει το ψηφίο 3.
  • Περίπου, υπάρχει 4 στο μυστικό αριθμό αλλά όχι σ' αυτή τη θέση.

Βασιζόμενος στην απάντηση του υπολογιστή και εάν χρησιμοποιήσει τη λογική του ο χρήστης μπορεί πολύ γρήγορα να βρει το μυστικό αριθμό. Η εκτέλεση του παιχνιδιού σταματά όταν ο χρήστης πετύχει τον αριθμό, ή αν εισάγει 0000, το οποίο σημαίνει ότι παραιτείται.

Περισσότερες πληροφορίες μπορείτε να βρείτε στο άρθρο της Wikipedia για το MasterMind.
Επισυνάπεται το εκτελέσιμο παιχνίδι και εικόνα από την εκτέλεσή του σε Windows Vista.