M4 (γλώσσα προγραμματισμού)

Η m4 είναι μια γλώσσα και πρόγραμμα επεξεργασίας μακροεντολών 
(ή ένας μακροεπεξεργαστής) που σχεδιάστηκε από τους Brian Kernighan και Dennis Ritchie.

Χρήση

Ένας μακροεπεξεργαστής είναι ένα εργαλεία αντικατάστασης κειμένου. Κυρίως
χρησιμοποιείται για την επεναχρησιμοποιήση φορμών κειμένου σε γλώσσες
σε εφαρμογές προγραμματισμού αλλά και σε εφαρμογές επεξεργασίας κειμένου.

Ιστορία
Οι μακροεπεξεργαστές ήταν στο προσκήνιο όταν ο προγραμματισμός γινόταν σε
συμβολική γλώσσα. Εκείνη την περίοδο οι προγραμματιστές παρατήρησαν 
ότι τα προγράμματά τους περιείχαν κομμάτια επαναλαμβανόμενου κώδικα.
Απλοί τρόποι για να επαναχρησιμοποιείται ένα επαναλαμβανόμενο κομμάτι επινοήθηκαν.
Οι προγραμματιστές σύντομα ανακάλυψαν ότι ήταν ευκολότερο όχι μόνο να 
επαναχρησιμοποιούν ολόκληρα κομμάτια κειμένου, αλλά ανά περίσταση να αντικαθιστούν
κάποιες παραμέτρους με διαφορετικές τιμές. Αυτές οι απαιτήσεις καθόρισαν 
και το εύρος της λειτουργικότητας των μακροεπεξεργαστών. 
Η  m4 αναπτύχθηκε το  1977. Ήταν η αρχική μακρομηχανή που χρησιμοποιήθηκε για
να υλοποιηθεί η  Rational Fortran, και περιλαμβάνεται στις διάφορες
παραλλαγές του Unix. 
Μια από τις πιο διαδεδομένες του χρήσεις σήμερα είναι σαν μέρος του εγχειρήματος
GNU του πακέτου autoconf.

Χαρακτηριστικά
Η m4 παρέχει τις εξής δυνατότητες:
αντικατάσταση κειμένου
αντικατάσταση παραμέτρων
συμπερίληψη αρχείων
χειρισμός αλφαριθμητικών
αποτίμηση υπό συνθήκη
αριθμητικές εκφράσεις
διασύνδεση συστήματος
διαγνωστικά προγραμματιστή

Σε αντίθεση με άλλους μακροεπεξεργαστές ο Μ4 είναι Turing-πλήρης καθώς 
και μια πρακτική γλώσσα προγραμματισμού.

Υλοποιήσεις ελεύθερου λογισμικού
Υπάρχει μια  GNU έκδοση του m4. Τα λειτουργικά συστήματα FreeBSD, NetBSD, και OpenBSD παρέχουν επίσης δικές τους υλοποιήσεις του m4.

Δείτε επίσης
 Προεπεξεργαστής

Αναφορές
Brian W. Kernighan and Dennis M. Ritchie. The M4 macro processor. Technical report, Bell Laboratories, Murray Hill, New Jersey, USA, 1977. pdf
Kenneth J. Turner. Exploiting the m4 macro language. Technical Report CSM-126, Department of Computing Science and Mathematics, University of Stirling, Scotland, September 1994. pdf
René Seindal.  GNU M4 Manual.  GNU Press.  2004.

Εξωτερικοί σύνδεσμοι
 GNU M4 - GNU Project 

m4
Εργαλεία προγραμματισμού Unix