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

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

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

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

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

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

Ερωτήσεις και απαντήσεις

Q: Τι είναι η αναφορική διαφάνεια;


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

Ερ: Ποιο είναι το αντίθετο της αναφορικής διαφάνειας;


Α: Το αντίθετο της αναφορικής διαφάνειας είναι η αναφορική αδιαφάνεια.

Ερ: Είναι όλες οι συναρτήσεις στα μαθηματικά αναφορικά διαφανείς;


Α: Ναι, όλες οι συναρτήσεις στα μαθηματικά είναι αναφορικά διαφανείς επειδή μια μαθηματική συνάρτηση μπορεί μόνο να λαμβάνει τιμές και να δίνει μια τιμή.

Ε: Πώς βοηθάει η αναφορική διαφάνεια τους προγραμματιστές και τους μεταγλωττιστές;


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

Ερ: Ποιες είναι μερικές τεχνικές που χρησιμοποιούνται για να γίνει ο κώδικας πιο γρήγορος ή να χρησιμοποιεί λιγότερη μνήμη;


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

Ερώτηση: Υπάρχει κάποια διαφορά μεταξύ των συναρτήσεων στον προγραμματισμό σε σύγκριση με αυτές στα μαθηματικά;


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

AlegsaOnline.com - 2020 / 2023 - License CC3