Τι είναι ο Λειτουργικός Προγραμματισμός; Εκμάθηση με Παράδειγμα

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

Ο λειτουργικός προγραμματισμός (ονομάζεται επίσης FP) είναι ένας τρόπος σκέψης για την κατασκευή λογισμικού με τη δημιουργία καθαρών συναρτήσεων. Αποφεύγει τις έννοιες της κοινής κατάστασης, των μεταβλητών δεδομένων που παρατηρούνται στον Αντικειμενοστραφή Προγραμματισμό.

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

Χαρακτηριστικά Λειτουργικού Προγραμματισμού

  • Η μέθοδος λειτουργικού προγραμματισμού εστιάζει στα αποτελέσματα και όχι στη διαδικασία
  • Έμφαση δίνεται στο τι πρόκειται να υπολογιστεί
  • Τα δεδομένα είναι αμετάβλητα
  • Λειτουργικός προγραμματισμός Αναλύστε το πρόβλημα σε «συναρτήσεις».
  • Είναι βασισμένο στην έννοια των μαθηματικών συναρτήσεων που χρησιμοποιεί εκφράσεις υπό όρους και αναδρομή για να κάνει τον υπολογισμό
  • Δεν υποστηρίζει επαναλήψεις όπως εντολές βρόχου και εντολές υπό όρους όπως If-Else

Ιστορία του λειτουργικού προγραμματισμού

  • Το θεμέλιο για τον Λειτουργικό Προγραμματισμό είναι ο Λογισμός Λάμδα. Αναπτύχθηκε τη δεκαετία του 1930 για τη λειτουργική εφαρμογή, τον ορισμό και την αναδρομή
  • Η LISP ήταν η πρώτη λειτουργική γλώσσα προγραμματισμού. Ο McCarthy το σχεδίασε το 1960
  • Στα τέλη της δεκαετίας του '70, ερευνητές στο Πανεπιστήμιο του Εδιμβούργου όρισαν την ML (Meta Language)
  • Στις αρχές της δεκαετίας του '80, η γλώσσα Hope προσθέτει αλγεβρικούς τύπους δεδομένων για αναδρομική και εξισωτική συλλογιστική
  • Το έτος 2004 Καινοτομία της λειτουργικής γλώσσας «Scala».

Λειτουργικές Γλώσσες Προγραμματισμού

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

Ακολουθούν μερικές από τις πιο σημαντικές λειτουργικές γλώσσες προγραμματισμού:

  • Χασκέλ
  • SML
  • Clojure
  • Scala
  • Ερλάνγκ
  • Καθαρός
  • F#
  • ML/OCaml Lisp / Scheme
  • XSLT
  • SQL
  • Mathematica

Βασική ορολογία Λειτουργικού Προγραμματισμού και Concepts

Βασική ορολογία Λειτουργικού Προγραμματισμού και Concepts

Αμετάβλητα δεδομένα

Τα αμετάβλητα δεδομένα σημαίνει ότι μπορείτε εύκολα να δημιουργήσετε δομές δεδομένων αντί να τροποποιήσετε δομές που υπάρχουν ήδη.

Αναφορική διαφάνεια

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

Αρθρωτότητα

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

Συντήρηση

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

Λειτουργία πρώτης κατηγορίας

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

Κλείσιμο

Το κλείσιμο είναι μια εσωτερική συνάρτηση που μπορεί να έχει πρόσβαση σε μεταβλητές της γονικής συνάρτησης, ακόμη και μετά την εκτέλεση της γονικής συνάρτησης.

Λειτουργίες ανώτερης τάξης

Οι συναρτήσεις υψηλότερης τάξης είτε λαμβάνουν άλλες συναρτήσεις ως ορίσματα είτε τις επιστρέφουν ως αποτελέσματα.

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

Καθαρή λειτουργία

Μια «καθαρή συνάρτηση» είναι μια συνάρτηση της οποίας οι είσοδοι δηλώνονται ως είσοδοι και καμία από αυτές δεν πρέπει να είναι κρυφή. Οι έξοδοι δηλώνονται και ως έξοδοι.

Οι καθαρές συναρτήσεις δρουν στις παραμέτρους τους. Δεν είναι αποτελεσματικό εάν δεν επιστρέφει τίποτα. Επιπλέον, προσφέρει την ίδια έξοδο για τις δεδομένες παραμέτρους

Παράδειγμα:

Function Pure(a,b)
{
	return a+b;
}

Μη καθαρές συναρτήσεις

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

Παράδειγμα

int z;
function notPure(){
	z = z+10;
}

Σύνθεση συνάρτησης

Η σύνθεση συναρτήσεων συνδυάζει 2 ή περισσότερες λειτουργίες για να δημιουργήσει μια νέα.

κοινές πολιτείες

Οι κοινές καταστάσεις είναι μια σημαντική έννοια στον προγραμματισμό OOP. Βασικά, προσθέτει ιδιότητες σε αντικείμενα. Για παράδειγμα, εάν ένας σκληρός δίσκος είναι αντικείμενο, η χωρητικότητα αποθήκευσης και το μέγεθος δίσκου μπορούν να προστεθούν ως ιδιότητες.

Παρενέργειες

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

Τα οφέλη του λειτουργικού προγραμματισμού

  • Σας επιτρέπει να αποφύγετε προβλήματα σύγχυσης και σφάλματα στον κώδικα
  • Πιο εύκολο να δοκιμάσετε και να εκτελέσετε τη δοκιμή μονάδας και τον εντοπισμό σφαλμάτων του κώδικα FP.
  • Παράλληλη επεξεργασία και συγχρονισμός
  • Ανάπτυξη ζεστού κώδικα και ανοχή σφαλμάτων
  • Προσφέρει καλύτερη αρθρωτότητα με συντομότερο κωδικό
  • Αυξημένη παραγωγικότητα του προγραμματιστή
  • Υποστηρίζει ένθετες λειτουργίες
  • Λειτουργικές κατασκευές όπως Lazy Map & Lists, κ.λπ.
  • Επιτρέπει την αποτελεσματική χρήση του Λογισμού Λάμδα

Περιορισμοί Λειτουργικού Προγραμματισμού

  • Το παράδειγμα λειτουργικού προγραμματισμού δεν είναι εύκολο, επομένως είναι δύσκολο να το κατανοήσει ο αρχάριος
  • Δύσκολο να διατηρηθεί καθώς πολλά αντικείμενα εξελίσσονται κατά τη διάρκεια της κωδικοποίησης
  • Χρειάζεται πολλή κοροϊδία και εκτεταμένη περιβαλλοντική ρύθμιση
  • Η επαναχρησιμοποίηση είναι πολύ περίπλοκη και χρειάζεται συνεχώς ανακατασκευή
  • Τα αντικείμενα ενδέχεται να μην αντιπροσωπεύουν σωστά το πρόβλημα

Λειτουργικός Προγραμματισμός εναντίον Αντικειμενοστρεφούς Προγραμματισμού

Λειτουργικός προγραμματισμός OOP
Το FP χρησιμοποιεί αμετάβλητα δεδομένα. Το OOP χρησιμοποιεί Μεταβλητά δεδομένα.
Ακολουθεί το μοντέλο που βασίζεται σε δηλωτικό προγραμματισμό. Ακολουθεί το Imperative Programming Model.
Αυτό που εστιάζει είναι: «Αυτό που κάνεις. στο πρόγραμμα». Αυτό που εστιάζει είναι στο «Πώς κάνεις τον προγραμματισμό σου».
Υποστηρίζει παράλληλο προγραμματισμό. Δεν υποστηρίζεται παράλληλος προγραμματισμός.
Οι λειτουργίες του δεν έχουν παρενέργειες. Η μέθοδος μπορεί να προκαλέσει πολλές παρενέργειες.
Ο Έλεγχος ροής εκτελείται χρησιμοποιώντας κλήσεις συναρτήσεων και κλήσεις λειτουργίας με αναδρομή. Η διαδικασία ελέγχου ροής διεξάγεται χρησιμοποιώντας βρόχους και εντολές υπό όρους.
Η σειρά εκτέλεσης των δηλώσεων δεν είναι πολύ σημαντική. Η σειρά εκτέλεσης των δηλώσεων είναι σημαντική.
Υποστηρίζει τόσο το "Abstraction over Data" και το "Abstraction over Behavior". Υποστηρίζει μόνο "Αφαίρεση μέσω δεδομένων".

Συμπέρασμα

  • Ο λειτουργικός προγραμματισμός ή FP είναι ένας τρόπος σκέψης για την κατασκευή λογισμικού που βασίζεται σε ορισμένες θεμελιώδεις καθοριστικές αρχές
  • Οι έννοιες του λειτουργικού προγραμματισμού επικεντρώνονται στα αποτελέσματα και όχι στη διαδικασία
  • Ο στόχος οποιασδήποτε γλώσσας FP είναι να μιμείται τις μαθηματικές συναρτήσεις
  • Μερικές πιο εξέχουσες γλώσσες προγραμματισμού λειτουργικών: 1) Haskell 2) SM 3) Clojure 4) Scala 5) Erlang 6) Clean
  • Μια «καθαρή συνάρτηση» είναι μια συνάρτηση της οποίας οι είσοδοι δηλώνονται ως είσοδοι και καμία από αυτές δεν πρέπει να είναι κρυφή. Οι έξοδοι δηλώνονται και ως έξοδοι.
  • Τα αμετάβλητα δεδομένα σημαίνει ότι μπορείτε εύκολα να δημιουργήσετε δομές δεδομένων αντί να τροποποιήσετε δομές που υπάρχουν ήδη
  • Σας επιτρέπει να αποφύγετε προβλήματα σύγχυσης και σφάλματα στον κώδικα
  • Ο λειτουργικός κώδικας δεν είναι εύκολος, επομένως είναι δύσκολο να τον κατανοήσει ο αρχάριος
  • Το FP χρησιμοποιεί αμετάβλητα δεδομένα ενώ το OOP χρησιμοποιεί Μεταβλητά δεδομένα