Γλώσσα προγραμματισμού χαμηλού επιπέδου

Μια γλώσσα προγραμματισμού χαμηλού επιπέδου είναι μια γλώσσα προγραμματισμού η οποία είναι πολύ κοντά στην γλώσσα μηχανής γι' αυτό και ονομάζεται χαμηλού επιπέδου.

Μια γλώσσα χαμηλού επιπέδου δεν χρειάζεται μεταγλωττιστή ή διερμηνευτή, ο επεξεργαστής για τον οποίο γράφτηκε η γλώσσα μπορεί να τρέξει το πρόγραμμα όπως είναι. Συγκριτικά με τις γλώσσες υψηλού επιπέδου η γλώσσα χαμηλού επιπέδου είναι εξαρτημένη από το μηχάνημα και ένα πρόγραμμα το οποίο έχει γραφτεί για ένα συγκεκριμένο μηχάνημα δεν μπορεί να τρέξει σε κάποιο διαφορετικό, επίσης είναι δύσκολή στην μάθηση και πολύπλοκη.

Οι γλώσσες προγραμματισμού χαμηλού επιπέδου μερικές φορές χωρίζονται σε δύο κατηγορίες: της πρώτης γενιάς, και της δεύτερης γενιάς.

Πρώτη γενιά 
Η πρώτη γενιά γλώσσα προγραμματισμού, ή 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

Δείτε επίσης 
 Γλώσσα προγραμματισμού υψηλού επιπέδου
 Γλώσσα προγραμματισμού πολύ υψηλού επιπέδου

Χαμηλου επιπεδου