Skip to main content

Τι είναι ο λειτουργικός προγραμματισμός;

Ο λειτουργικός προγραμματισμός είναι ένα πρότυπο προγραμματισμού όπου η βάση του υπολογισμού είναι η αξιολόγηση των εκφράσεων.Ορισμένα χαρακτηριστικά είναι η χρήση λειτουργιών υψηλότερης τάξης, διαφάνειας αναφοράς και τεμπέλης αξιολόγησης.Τα πλεονεκτήματα του στυλ προγραμματισμού περιλαμβάνουν ότι τα προγράμματα είναι εύκολο στην ανάγνωση, είναι πολύ αξιόπιστα και μπορούν να σπάσουν σε εξαρτήματα.Τα μειονεκτήματα είναι ότι οι υπολογισμοί μπορεί να είναι αργοί και το στυλ και η σύνταξη είναι εντελώς διαφορετικά από άλλα κοινά στυλ προγραμματισμού.Το λειτουργικό στυλ προγραμματισμού συχνά αγκαλιάζεται από ακαδημαϊκούς παρά από τους επαγγελματίες της επιστήμης των υπολογιστών. "Όπως υποδηλώνει το όνομα, οι λειτουργίες αποτελούν θεμελιώδες μέρος αυτού του παραδείγματος προγραμματισμού.Οι λειτουργίες μπορούν να ενσωματωθούν σε άλλες λειτουργίες, που ονομάζονται λειτουργίες υψηλότερης τάξης και κάθε λειτουργία υψηλότερης τάξης μπορεί να αναλυθεί σε λειτουργίες δομικών στοιχείων που είναι εύκολο να κατανοηθούν και να εντοπιστούν.Παραδείγματα ορισμένων λειτουργιών υψηλότερης τάξης είναι ο χάρτης και η φωλιά.Ο χάρτης λειτουργίας παίρνει μια συνάρτηση F και τη λίστα των μεταβλητών, για παράδειγμα (x, y, z) και δίνει το αποτέλεσμα σε μια λίστα: χάρτης [f, (x, y, z)] ' (f (x), f(y), f (z)).Η Nest παίρνει τη λειτουργία F, τη μεταβλητή x και τον αριθμό των επαναλήψεων: Nest [F, X, 3] ' F (F (F (x))).

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

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

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

Δυστυχώς, δεν είναι όλα τα προγράμματα να προσφέρονται σε παράλληλους υπολογιστές και τα υπολογιστικά λειτουργικά προγράμματα μπορεί να είναι μάλλον αργά.Τα λειτουργικά προγράμματα βασίζονται σε μεγάλο βαθμό στην επανάληψη, η οποία είναι συχνά λιγότερο αποτελεσματική από τη χρήση παραδοσιακών βρόχων ή μεθόδων επανάληψης.Στην πραγματικότητα, ο λειτουργικός προγραμματισμός μπορεί να είναι αρκετά αδέξιος και δύσκολο να μάθει, αφού δεν μοιάζει με άλλα πιο κοινά παραδείγματα, όπως ο προγραμματισμός που προσανατολίζεται με αντικειμενικό.Ορισμένες καθαρές γλώσσες είναι Haskell και Erlang.Το Mathematica εξειδικεύεται στα συμβολικά μαθηματικά, το R εξειδικεύεται στις στατιστικές και η J εξειδικεύεται στην οικονομική ανάλυση.Οι γλώσσες MultiparAdigm όπως το Scala και το F# υποστηρίζουν τόσο τον λειτουργικό προγραμματισμό όσο και άλλα στυλ προγραμματισμού.