Σάββατο 16 Απριλίου 2022

Όχι για... Αμιγκάδες!

Δεν είναι μία και δύο οι φορές που έχω γράψει κάποιο θέμα σχετικό με τον προγραμματισμό σε BASIC στο παρόν blog. Βλέπετε, για όσους ανήκουν στη γενιά μου και η ενασχόλησή τους με τους υπολογιστές ξεκίνησε από τα 8bit home micros, τότε που - θέλοντας και μη - περνούσες από τον BASIC interpreter προκειμένου να κάνεις οτιδήποτε, η (αρχαία, πια) αυτή γλώσσα προγραμματισμού είχε πολύ μεγαλύτερη σημασία από ότι στους μεταγενέστερους "κομπιουτεράδες". Και όταν αναφέρομαι σε "μεταγενέστερους" εννοώ ανθρώπους που κόλλησαν το "μικρόβιο" μερικά μόλις χρόνια αργότερα και η πρώτη τους επαφή ήταν με την Amiga ή με τον Atari ST. Αυτούς τους ανθρώπους πώς άραγε μπορείς να τους πείσεις ότι η δημιουργική απόλαυση που προσέφεραν μηχανήματα με (πολύ) υποδεέστερο hardware ήταν ίση ή και μεγαλύτερη από την ικανοποίηση που αντλούσε κανείς από τις ψυχαγωγικές (λέγε με παιχνίδια) αρετές των πανίσχυρων απογόνων τους; Πόσο εύκολο είναι άραγε να θαυμάσει ένα παιχνίδι σκακιού που φτιάχτηκε χωρίς γραφικά στο 1KB μνήμης RAM του ZX81 κάποιος που μεγάλωσε με τις αισθήσεις του να διεγείρονται από το Shadow of the Beast; Πιστέψτε με, δεν είναι καθόλου εύκολο, και το κατανοώ απόλυτα. Γι' αυτό και ο τίτλος της ανάρτησης: οι Αμιγκάδες (και οι Αταράδες - αν υπάρχουν τέτοιοι - ) πιθανότατα δεν πρόκειται να διαβάσουν εδώ κάτι που να τους αγγίζει ή να τους ενδιαφέρει. Στους υπόλοιπους... δεινόσαυρους απευθύνεται η ανάρτηση, σε αυτούς που έχουν βιώσει κάποτε στη ζωή τους το αίσθημα της ολοκλήρωσης φέρνοντας εις πέρας ένα απλό ή σύνθετο προγραμματιστικό task μέσα από μερικές (ή περισσότερες από μερικές) γραμμές προγράμματος BASIC.

Για αυτούς δηλαδή που χρονικά βρίσκονται πιο κοντά στο να αποκτήσουν εγγόνια από το να κάνουν παιδιά, η ιστορία με την BASIC έχει "ζουμί". Διότι, όπως άπαντες θα θυμάστε - αν δεν σας έχει χτυπήσει η γεροντική άνοια - , δεν υπήρχε κάτι που δεν μπορούσε να γίνει μέσω της BASIC, απλά η πλειοψηφία των προγραμμάτων δεν μπορούσε να υλοποιηθεί με ικανοποιητική ταχύτητα. Το πρόβλημα αυτό φυσικά μπορεί κάλλιστα να ξεπεραστεί με την επεξεργαστική ισχύ των σύγχρονων υπολογιστών, αλλά τι γίνεται όταν κάποιος έχει να αντιμετωπίσει επεξεργαστές που "τρέχουν" (πιο σωστά "σέρνονται") στο 1-4MHz σε συνδυασμό με περιορισμένη μνήμη ελάχιστων kilobytes; Πόσους λαγούς μπορεί να βγάλει κάποιος από το καπέλο του;

Πολλούς, απ' ότι αποδείχτηκε. Οι σύγχρονοι coders, υποβοηθούμενοι από τα μέσα και την τεχνογνωσία της εποχής μας, κατάφεραν να φτιάξουν εντυπωσιακότατα προγράμματα σε BASIC στα 8bit home micros του παρελθόντος. Και ναι, μιλάμε για demos αλλά και παιχνίδια. Όπως για παράδειγμα το (απίστευτο) Balik για τον ZX Spectrum για το οποίο είχα γράψει παλιότερα. Ή το Tetris dotBAS στον Amstrad CPC. Ή το ZX Frogger 48K, πάλι στον Spectrum. Μιλάμε για παραγωγές που στα 80s θα μπορούσαν άνετα να ήταν commercial τίτλοι, έτσι;


Αλλά, δεν έφταναν αυτά. Οι περιορισμοί της ταχύτητας και της λιλιπούτειας μνήμης δεν αρκούσαν ως προκλήσεις για τους ταλαντούχους προγραμματιστές του σήμερα. Έτσι, σκέφτηκαν να προσθέσουν έναν ακόμα, και οδηγήθηκαν στα περίφημα 10-liners: τι πρόγραμμα μπορεί άραγε να φτιάξει κάποιος σε 10 γραμμές BASIC; Στο σημείο αυτό, είναι απαραίτητο να διευκρινίσουμε το εξής: στους 8bit micros των 80s, μία "γραμμή" BASIC μπορεί να είχε παραπάνω από μία εντολές. Ανάλογα μάλιστα με τη διάλεκτο του κάθε υπολογιστή, αυτή η "γραμμή" μπορεί είτε να φαινόταν... κινέζικα (Commodore 64) είτε να ήταν μία ολόκληρη οθόνη (ZX Spectrum). Αλλά αυτά είναι λεπτομέρειες. 10 γραμμές είναι 10 γραμμές. Από τη στιγμή που, αναλόγως του υπολογιστή, μπορούσες να έχεις ένα πρόγραμμα με από 9999 έως 65535 "γραμμές", καταλαβαίνετε τον περιορισμό που δημιουργεί ο αριθμός "10", έτσι δεν είναι;

Έτσι λοιπόν ξεκίνησε πριν από μερικά χρόνια ο διαγωνισμός για τα "10 liners", ο οποίος έφτασε φέτος στην 11η διοργάνωσή του και, όπως και κάθε χρονιά, μας χάρισε πολλά "διαμαντάκια". Τους ακριβείς κανόνες και τις υποκατηγορίες μπορείτε να τους δείτε παρακάτω:

Μιας και ο φετινός διαγωνισμός ολοκληρώθηκε, δυστυχώς δεν μπορείτε να πάρετε μέρος, ακόμα και αν σας κέντρισε το ενδιαφέρον. Κάντε λίγη υπομονή για του χρόνου. Μπορείτε όμως να πάρετε μία ιδέα για τις παραγωγές που διαγωνίστηκαν ή, ακόμα καλύτερα, να ψαχουλέψετε τα listings τους, εδώ (πατήστε στο "Read more" σε κάθε πρόγραμμα).

Όπως έγραψα και προηγουμένως, ο "κώδικας" (δεν το λέγαμε έτσι τότε) μπορεί να είναι πυκνός και ολίγον τι ακαταλαβίστικος σε κάποιες περιπτώσεις, προκειμένου να χρησιμοποιηθεί μέχρι και ο τελευταίος διαθέσιμος χαρακτήρας, ή το τελευταίο διαθέσιμο byte. Το αποτέλεσμα δεν είναι και αυτό που θα χαρακτηρίζαμε ως... user friendly, όπως π.χ. εδώ:

Εντάξει, διάλεξα επίτηδες μηχάνημα σε Commodore BASIC με τις "ιδιαίτερες" συντομογραφίες των εντολών που το κάνουν κάτι περισσότερο από δυσανάγνωστο. Αλλά πήρατε μια ιδέα, έτσι;

Προσωπικά, βγάζω το καπέλο σε όλους αυτούς τους coders οι οποίοι, ορμώμενοι από την προκήρυξη του διαγωνισμού, έσπευσαν να καταθέσουν τις προγραμματιστικές τους ιδέες, άλλες απλές, άλλες (πολύ) πιο σύνθετες, αλλά όλες ποτισμένες με μεράκι και αγάπη για αυτό που πρέσβευαν κάποτε τα 8μπιτα μηχανήματα: ήταν υπολογιστές, με όλη τη σημασία της λέξης, που προορίζονταν για τον προγραμματιστή, τον χομπίστα, τον επιστήμονα, τον καλλιτέχνη και, φυσικά, τον gamer. Αλλά δεν στόχευαν σχεδόν αποκλειστικά στον τελευταίο όπως οι 16μπιτοι διάδοχοί τους, στους οποίους η BASIC ήταν αρχικά ένα ακόμα πρόγραμμα και στη συνέχεια δεν δινόταν καν μαζί με τη βασική μονάδα. Άλλα μηχανήματα, άλλες εποχές. Ακόμα κι αν μεσολάβησαν λιγότερα από 10 χρόνια...

2 σχόλια:

  1. Πωωωω, ακόμα και αυτό κάνει κύκλους ταχύτερα από τον CPC...
    Αγαπημένη Basic στον CPC και έπειτα τη φάβα της Amiga.
    Εκεί είδα αργότερα AMOS και Blitz καθώς και GW όπου ο IBM Transformer μου έλυσε τα χέρια στον ΟΑΕΔ.

    ΑπάντησηΔιαγραφή
    Απαντήσεις
    1. Ναι, η Amiga BASIC και η αντίστοιχη της Atari για τον ST ήταν μεγάλες απογοητεύσεις. Οι AMOS, STOS, Blitz και GFA ήταν εξαιρετικές - αν δίνονταν μαζί με τα μηχανήματα και με ένα παχύ και αναλυτικό εγχειρίδιο θα ήταν πολύ καλύτερα τα πράγματα. Από τις διαλέκτους BASIC των 8μπιτων όντως η Locomotive τα έσπαγε, όπως και αυτή των BBC micro/Electron. Προσωπικά, λόγω ευκολίας χρήσης και... έντονων συναισθημάτων και νοσταλγίας θα διάλεγα αυτήν του Spectrum, παρόλο που από ταχύτητα ήταν ε... χμ... λίγο χελώνα!

      Διαγραφή

Το σχόλιό σας θα δημοσιευθεί μετά από έλεγχο του διαχειριστή του blog προς αποφυγή spam σχολίων. Σας ευχαριστούμε για την κατανόηση.