Perl

Η Perl είναι μία πολύ δημοφιλής αντικειμενοστρεφής γλώσσα προγραμματισμού. Συνήθως ένα πρόγραμμα σε Perl εκτελείται χρησιμοποιώντας άμεσα ή έμμεσα το διερμηνέα της γλώσσας. Αυτό που διακρίνει την Perl από πολλ́ες άλλες γλώσσες προγραμματισμού είναι το γεγονός ότι είναι διαθέσιμη για σχεδόν όλα τα λειτουργικά συστήματα. Η γλώσσα σχεδιάστηκε από τον Larry Wall και ο πηγαίος κώδικάς της διατίθεται βάση της αδείας ανοικτού κώδικα GPL. Η πρώτη έκδοση της γλώσσας εμφανίστηκε το 1987 ενώ στις αρχές του 2017, 30 χρόνια μετά τη δημιουργία της, η πιο πρόσφατη έκδοσή της ήταν η 5.24.0.

Ιστορία

Η γλώσσα προγραμματισμού Perl σχεδιάστηκε επειδή ο Larry Wall ήθελε μία γλώσσα η οποία να συνδυάζει μόνο τα καλά στοιχεία του sed, της C, της awk και του κελύφους Bourne του λειτουργικού συστήματος Unix. H πρώτη έκδοση της γλώσσας ανακοινώθηκε στο alt.comp.sources του Usenet στις στις 18 Δεκεμβρίου του 1987. Μετά την ταχύτατη διάδοση της γλώσσας ακολούθησαν οι εκδόσεις 2 (1988) και 3 (1989). Η τέταρτη έκδοση του 1991 δεν είχε σημαντικές διαφορές από την 3η αλλά δημιουργήθηκε ως έκδοση αναφοράς για το πρώτο βιβλίο με θέμα τη γλώσσα.
Η πέμπτη έκδοση ξεκίνησε να γράφεται το 1993 με την σταθερή έκδοση της να εκδίδεται τον Οκτώβριο του 1994. Η έκδοση αυτή έφερε σημαντικές αλλαγές και προσέθεσε σημαντικές δυνατότητες ενώ ταυτόχρονα αύξησε τον αριθμό των υποστηριζόμενων λειτουργικών συστημάτων. Η έκδοση 5 συνεχίζει να αναπτύσσεται ακόμα και βρίσκεται στην έκδοση 5.30.0. Η Perl 6 είναι η επόμενη έκδοση της γλώσσας η οποία επέφερε αρκετές αλλαγές τόσο στο συντακτικό όσο και στις δυνατότητες της γλώσσας.

Χαρακτηριστικά

Ως γλώσσα προγραμματισμού η Perl έχει ένα δυναμικό σύστημα τύπων, δηλαδή μία μεταβλητή αποκτά τύπο μόνο μετά από την ανάθεση μιας τιμής σε αυτή. Η Perl μπορεί να διαχειριστεί αριθμούς (δεκαδικούς και ακεραίους) και συμβολοσειρές. Επιπλέον, μπορούμε να έχουμε πίνακες απλούς (arrays) και συσχετιστικούς (associative arrays ή απλά hash tables), οι οποίοι είναι μηχανισμοί οργάνωσης δεδομένων. Μάλιστα με τους συσχετιστικούς πίνακες μπορούμε να δημιουργήσουμε δυναμικές δομές όπως δένδρα, στοίβες, ουρές κ.λπ. Υπάρχει πρόνοια για τον διαχωρισμό μεταβλητών στις οποίες αναθέτουμε απλές τιμές ή σύνθετες τιμές.
Όταν ορίζουμε μία διαδικασία ή μία συνάρτηση στην Perl δεν σημειώνουμε τυπικές παραμέτρους αλλά απλά θεωρούμε πως η διαδικασία ή η συνάρτηση θα έχουν ως όρισμα έναν πίνακα. Άρα για μια συνάρτηση ή μία διαδικασία δεν υπάρχει προκαθορισμένος αριθμός ορισμάτων. Επίσης οι συναρτήσεις και οι διαδικασίες στην Perl μπορούν να οριστούν αναδρομικά. 
Ένα άλλο βασικό χαρακτηριστικό της γλώσσας είναι η εξαιρετική υποστήριξη των κανονικών εκφράσεων, δηλαδή παραστάσεων που μπορούν να περιγράψουν την γενική δομή μιας συμβολοσειράς και μπορούν να χρησιμοποιηθούν στη διαχείριση συμβολοσειρών. Η πιο χαρακτηριστική χρήση των κανονικών εκφράσεων είναι στην λεκτική ανάλυση γλωσσών προγραμματισμού, δηλαδή στο κομμάτι εκείνο ενός μεταγλωττιστή που «σπάει» την είσοδο σε λεκτικές μονάδες (tokens).
Όπως αναφέρθηκε η Perl είναι μία αντικειμενοστρεφής γλώσσα προγραμματισμού. Στην Perl οι κλάσεις είναι πακέτα με ειδικές συναρτήσεις τα οποία επιστρέφουν την τιμή 1. Ο τρόπος δημιουργίας και χρήσης κλάσεων δεν είναι ιδιαίτερα κομψός ενώ παράλληλα δεν υποστηρίζει πολλές από τις δυνατότητες που υποστηρίζουν κατεξοχήν αντικειμενοστρεφείς γλώσσες όπως η Java και η Scala. 
Επίσης η Perl παρέχει εργαλεία για ταυτόχρονη επεξεργασία δεδομένων μέσω νημάτων ή κάνοντας χρήση της κλήσης συστήματος fork. Επιπλέον παρέχει υποδομές για δικτυακό προγραμματισμό. Επίσης παρέχει υποδομές για την εύκολη διασύνδεση με γνωστές βάσεις δεδομ́ενων, ενώ τα τελευταία χρόνια έγινε ιδιαίτερη δημοφιλής λόγω της χρήσης της στη βιοπληροφορική. Τέλος, η Perl έγινε πολύ γνωστή λόγω της χρήσης της για τη δημιουργία των λεγομένων CGI scripts.

Χρήση

Η Perl χρησιμοποιείται από ένα ευρύ φάσμα χρηστών και σε πολλές εφαρμογές. Για παράδειγμα χρησιμοποιείται στη βιοπληροφορική, στη διαχείριση συστημάτων, στη διαχείριση ιστοτόπων, στη διαχείριση κειμένων (οργάνωση/παρουσίαση δεδομένων) κ.λπ.