Γλώσσα προγραμματισμού χαμηλού επιπέδου
Το λήμμα δεν περιέχει πηγές ή αυτές που περιέχει δεν επαρκούν. |
Μια γλώσσα προγραμματισμού χαμηλού επιπέδου είναι μια γλώσσα προγραμματισμού η οποία είναι πολύ κοντά στην γλώσσα μηχανής γι' αυτό και ονομάζεται χαμηλού επιπέδου.
Μια γλώσσα χαμηλού επιπέδου δεν χρειάζεται μεταγλωττιστή ή διερμηνευτή, ο επεξεργαστής για τον οποίο γράφτηκε η γλώσσα μπορεί να τρέξει το πρόγραμμα όπως είναι. Συγκριτικά με τις γλώσσες υψηλού επιπέδου η γλώσσα χαμηλού επιπέδου είναι εξαρτημένη από το μηχάνημα και ένα πρόγραμμα το οποίο έχει γραφτεί για ένα συγκεκριμένο μηχάνημα δεν μπορεί να τρέξει σε κάποιο διαφορετικό, επίσης είναι δύσκολή στην μάθηση και πολύπλοκη.
Οι γλώσσες προγραμματισμού χαμηλού επιπέδου μερικές φορές χωρίζονται σε δύο κατηγορίες: της πρώτης γενιάς, και της δεύτερης γενιάς.
Πρώτη γενιά
[Επεξεργασία | επεξεργασία κώδικα]Η πρώτη γενιά γλώσσα προγραμματισμού, ή 1GL, είναι η γλώσσα μηχανής. Είναι η μόνη γλώσσα μικροεπεξεργαστή που μπορεί να επεξεργαστεί άμεσα χωρίς προηγούμενη μετατροπή. Επί του παρόντος, οι προγραμματιστές σχεδόν ποτέ δεν γράφουν τα προγράμματα άμεσα σε κώδικα μηχανής, επειδή απαιτεί προσοχή σε πολλές λεπτομέρειες οι οποίες σε γλώσσα μια υψηλού επιπέδου γίνονται αυτόματα, και επίσης απαιτεί απομνημόνευση κωδικών για κάθε οδηγία που χρησιμοποιείται. Για το λόγο αυτό, η δεύτερης γενιάς γλώσσες προγραμματισμού παρέχουν ένα επίπεδο αφαίρεσης πάνω από την γλώσσα μηχανής.
Παράδειγμα: Μια συνάρτηση σε 32-μπιτ x86 γλώσσα μηχανής για τον υπολογισμό της νιοστής ακολουθίας Φιμπονάτσι:
8B542408 83FA0077 06B80000 0000C383 FA027706 B8010000 00C353BB 01000000 B9010000 008D0419 83FA0376 078BD98B C84AEBF1 5BC3
Δεύτερη γενιά
[Επεξεργασία | επεξεργασία κώδικα]Η δεύτερη γενιά γλωσσών προγραμματισμού ή 2GL, είναι η συμβολική γλώσσα. Θεωρείται μία από τις γλώσσες της δεύτερης γενιάς, διότι ενώ δεν είναι η μητρική γλώσσα κάποιου μικροεπεξεργαστή, απαιτεί από τον προγραμματιστή της συμβολικής γλώσσας να γνωρίζει την μοναδικότητα και τις ιδιαιτερότητες κάθε μικροεπεξεργαστή (όπως είναι οι καταχωρητές και το σύνολο εντολών). Οι οδηγίες της συμβολικής γλώσσας μετατρέπονται σε γλώσσα μηχανής. Η συμβολική γλώσσα μπορεί να δεχτεί αφαίρεση σε κάποιο ανώτερο επίπεδο, παρόμοια με την αφαίρεση της γλώσσας μηχανής σε συμβολική γλώσσα.
Παράδειγμα: Η ίδια συνάρτηση υπολογισμού της ακολουθίας Φιμπονάτσι σε συμβολική γλώσσα:
fib: mov edx, [esp+8] cmp edx, 0 ja @f mov eax, 0 ret @@: cmp edx, 2 ja @f mov eax, 1 ret @@: push ebx mov ebx, 1 mov ecx, 1 @@: lea eax, [ebx+ecx] cmp edx, 3 jbe @f mov ebx, ecx mov ecx, eax dec edx jmp @b @@: pop ebx ret