Xαιρετώ την παρέα!
Ο AMSTRAD 6128 ήταν ο πρώτος μου υπολογιστής, και παρά το ότι τον απέκτησα σε ηλικία 12 ετών (και μέχρι τα 16-17 που απέκτησα το dream machine ΑΜIGA), περισσοτερο ασχολιόμουν με τον προγραμματισμό παρά με παιχνίδια! Την locomotive Basic την είχα ξετινάξει (ισως η καλύτερη basic που υπήρχε από ολους του home micro της εποχής),μέχρι και με assembly και γλώσσα μηχανης είχα ασχοληθεί προς το τέλος!
shock είπε:
... Αν πήγαινες σε graphics mode η ταχύτητα ανέβενε δραματικά. Λέγοντας text mode και "graphics mode" εννοώ asm, ο amstrad δεν είχε το αντίστοιχο των PCs. Δεν υπήρχε άλλος τρόπος να ανάψεις μια σειρα από pixel στην οθόνη εκτός από την plot και την line(ή κάπως έτσι δεν θυμάμαι και τόσο καλά).
Η ουσία είναι ότι αν ήθελες ταχύτητα ΕΠΡΕΠΕ να πας σε asm.
Φίλε shock, ουσιαστικά το πρόβλημα με την αργη ταχύτητα στην basic του ΑMSTRAD δεν ήταν θέμα "mode" αλλά το γεγονός ότι η locomotive basic ήταν γλώσσα με interpreter και όχι με compiler.
Αν θυμάσαι όλα τα προγράμματα που γραφονταν στη basic και είχαν καταληξη .BAS ήταν απλά αρχεια κειμένου που ουσιαστικά αποτελούσαν τον πηγαίο κώδικα.Αυτός λοιπόν, όταν εδινες την εντολή RUN" ", διαβαζόταν από τον interpreter της Basic, μία μία γραμμή, "μεταφραζόταν" σε εκτελέσιμο κώδικα (γλώσσα μηχανής), και κατόπιν εκτελούνταν σε πραγματικό χρόνο, "On the fly".
Αυτός ο τρόπος εκτέλεσης αν και σου δίνει την δυνατότητα να κάνεις πολύ εύκολα και γρήγορα debugging σε real time, δυστηχώς κοστίζει ΠΑΡΑ ΠΟΛΥ σε χρόνο,άρα και σε απόδοση..
Σε αντίθεση με την μέθοδο αυτή τώρα, οι γλώσσες που διεθεταν μετταγλωτιστές (compilers) παρήγαγαν ολόκληρο τον εκτελεσιμο κώδικα από τον πηγαίο, μονομιάς, οπώτε η εκτέλεση γινόταν απευθείας χωρίς να μεσολαβεί η πολύ χρονοβόρα διαδικασία της "μετάφρασης" των γραμμών του κώδικα μία μία.
Αυτό ακριβώς γινόταν με κάποια άλλα αρχεία με κάταληξη .BIN. Αυτά αν θυμάσαι έτρεχαν είτε κατευθείαν, είτε φορτόνονταν και καλούνταν μέσω κάποιου μικρου προγράμματος basic.
Η διαφορά στη ταχύτητα εκετέλεσης με τις 2 μεθόδους (ειδικά όταν υπήρχαν επαναλαμβανόμενα Loop,πράγμα πολύ συνηθισμένο στα παιχνίδια) είναι ΤΕΡΑΣΤΙΑ! Τουλάχιστον 5-10 φορές γρηγορότερη εκτέλεση! Για να καταλάβεις τη διαφορά, σκέψου πόσος παραπάνω χρόνος χρειαζεται για να διαβάσεις ένα ξενογλωσσο βιβλίο, μεταφράζωντας κάθε φορά μία,μια πρόταση, σε σχέση με το να το έπαιρνες έτοιμο μεταφρασμένο!
Με δεδομένη λοιπόν την πολύ περιορισμένη επεξεργαστική ισχύ της εποχής, ειδικά στα 8-bit μηχανήματα, ήταν πρακτικώς αδύνατο να φτιάξεις σε interpreter γλώσσα παιχνίδι με αξιώσεις που να έτρεχε και αρκούντως γρήγορα. Γι'αυτό και πρακτικά ελάχιστα παιχνιδια κυκλοφορησαν που να ήταν αποκλειστικα γραμμένα σε locomotive basic,μόνο όσα δεν απαιτούσαν επεξεργασία σε real time όπως π.χ. θυμάμαι ένα παιχνίδι ξερής που είχα στον 6128 ήταν κάπου 25kb-30kb κώδικας σε basic!!
Σήμερα βέβαια πλέον, όλες οι γλώσσες που χρησιμοποιούνται για δημιουργία εφαρμογών σε περιβάλλον windows/linux (c/c++.delphi,basic κτλ) είναι με compilers. Η λογική του Ιnterpreter όμως χρησιμοποιειται κατα κόρον στον κόσμο του Internet μιας και η html με την οποια γράφονται ολες οι ιστοσελιδες, είναι κατα κάποιο τρόπο ένα αρχείο κειμένου ".BAS" της Locomotive basic που εκτελείται από τον html interpreter που διαθέτει οποιοδήποτε πρόγραμμα προβολής ιστοσελιδων, με μόνη εξάιρεση τα προγράμματα σε java όπου εκεί έχουμε μεταγλώτισση compilation του πηγαίου κώδικα από κάποιο java machine και επειτα εκτέλεση.Ο λόγος νομίζω είναι προφανής:ένα αρχείο κειμενου που περιέχει πηγαίο κωδικα είναι ΠΟΛΥΥΥΥΥ μικρότερο σε μέγεθος από το μέγεθος του αρχείου σε εκτελέσιμο κώδικα (μάλιστα όσο ποιο μεγάλο το προγραμμα τοσο μεγαλύτερη η διαφορά) οπώτε "κoστίζει" πολύ λιγοτερο bandwidth το να μεταφέρεις από εναν webserver ένα αρχειο κειμενου και να εκτελεστεί τοπικά στον υπολογιστή σου παρά να μεταφέρεται ένα πολύ ποιο ογκωδες εκτελέσιμο αρχείο!