Σε κάθε κύκλο του ο υπολογιστής (για την ακρίβεια ο μικροεπεξεργαστής που είναι η καρδιά κάθε υπολογιστικού συστήματος) λαμβάνει μια εντολή και την εκτελεί. Μια τέτοια εντολή δεν είναι κατ' ανάγκη αριθμητικής φύσης, και εκεί ακριβώς έγκειται η ισχύς του υπολογιστή. Υπάρχουν, π.χ., εντολές που λένε στο μικροεπεξεργαστή να πάρει ως επόμενη εντολή που θα εκτελέσει την εντολή Α ή την εντολή Β, ανάλογα με το αν η τιμή που υπολόγισε στο αμέσως προηγούμενο βήμα είναι θετική ή αρνητική. Είναι ακριβώς τέτοιες εντολές που δίνουν τη δυνατότητα στον υπολογιστή να εκτελεί περίπλοκα ``προγράμματα'', όπως το επόμενο.
Διάβασε τις τιμές των φυσικών αριθμών a και b x <- 0 test: Αν a >= b τότε { x <- x+1 a <- a - b Πήγαινε στο test } Τύπωσε "Το πηλίκο της διαίρεσης ", a, "δια ", b, "είναι ", x
Πρέπει να τονίσουμε εδώ ότι το σύνολο εντολών που αναγνωρίζει και μπορεί να εκτελεί κάθε υπολογιστής είναι ένα μικρό σχετικά σύνολο εντολών, οι οποίες έχουν τέτοια δυσανάγνωστη μορφή που είναι σχεδόν αδύνατο να γράψει κανείς κάποιο μεγάλο πρόγραμμα χρησιμοποιώντας τις.
Σε αυτή ακριβώς τη δυσκολία οφείλεται, κατά κύριο λόγο, η ύπαρξη των γλωσσών προγραμματισμού υψηλού επιπέδου όπως οι Fortran (χρονικά η πρώτη τέτοια γλώσσα), BASIC, C, Pascal, Lisp και δεκάδες άλλες.
Όπως θα δούμε παρακάτω οι γλώσσες αυτές παρέχουν σημαντικές ευκολίες στον προγραμματιστή, οι οποίες δεν υφίστανται στη γλώσσα μηχανής, ή έστω στη γλώσσα assembly που αποτελεί ένα ενδιάμεσο σημείο ανάμεσα στη γλώσσα μηχανής και στις γλώσσες υψηλού επιπέδου (πολύ πλησιέστερα όμως στη γλώσσα μηχανής απ' ότι στις τελευταίες).
Επειδή όμως κάθε υπολογιστής μια γλώσσα μόνο ``καταλαβαίνει'' κάθε πρόγραμμα που έχει γραφεί σε μια γλώσσα προγραμματισμού (C, BASIC, Fortran κλπ, ή ακόμη και σε γλώσσα assembly) πρέπει πρώτα να μεταγλωττιστεί σε γλώσσα μηχανής προτού μπορέσει να εκτελεστεί. Η διαδικασία αυτή της μεταγλώττισης συναντάται σε τρεις, λίγο-πολύ, διαφορετικές μορφές:
Το bytecode interpretation προσφέρει μια ενδιάμεση αποδοτικότητα (προγράμματα που έχουν γίνει fully compiled και έχουν μετατραπεί σε εκτελέσιμο κώδικα σε γλώσσα μηχανής είναι πολύ ταχύτερα από προγράμματα που διαβάζονται και εκτελούνται ταυτόχρονα από interpreters, είναι όμως καταδικασμένα να τρέχουν μόνο στον τύπο μηχανής (η έννοια ``τύπος της μηχανής'' εδώ περιλαμβάνει το είδος του hardware αλλά και το είδος και τις διάφορες παραμέτρους του λειτουργικού συστήματος) για τον οποίο έχουν μεταγλωττιστεί. Αντίθετα, ένα πρόγραμμα που τρέχει μέσα από interpreter τρέχει οπουδήποτε υπάρχει εγκατεστημένος ένας interpreter για τη γλώσσα στην οποία έχει το πρόγραμμα γραφεί. Είναι όμως πολύ πιο αργό. Το bytecode προσφέρει μια μέση οδό ανάμεσα στο portability (μεταφερσιμότητα) και στο efficiency, που είναι μάλιστα ιδιαίτερα σημαντική στην εκτέλεση προγραμμάτων διά μέσου του Internet για τον απλούστατο λόγο ότι θέλει κανείς να κάνει κλικ σε ένα πρόγραμμα που βρίσκεται στο τάδε site και αυτό να τρέχει τοπικά, στη μηχανή του. Εκεί έχει σημασία τα προγράμματα να είναι αποθηκευμένα σε γλώσσα ανεξάρτητη μηχανής, μια και δεν μπορεί κανείς να υποθέσει κάτι για ένα remote site, αλλά είναι επίσης σημαντικό να είναι αποθηκευμένα σε μια μορφή που να γίνεται interpreted αποτελεσματικά. Το bytecode προσφέρει μια καλή μέση οδό.