Ασφάλεια τύπων
From Wikipedia, the free encyclopedia
Στην Επιστήμη των Υπολογιστών,η ασφάλεια τύπων είναι η έκταση στην οποία μία γλώσσα προγραμματισμού αποθαρρύνει ή αποτρέπει τα σφάλματα τύπων. Ένα σφάλμα τύπων είναι μία λανθασμένη ή μη επιθυμητή συμπεριφορά προγράμματος που προκαλείται από την ασυμφωνία μεταξύ διαφορετικών τύπων δεδομένων. Η ασφάλεια τύπων εναλλακτικά μπορεί να θεωρηθεί ως ιδιότητα ενός προγράμματος παρά ως ιδιότητα της γλώσσας στην οποία στην οποία το πρόγραμμα είναι γραμμένο: αυτό σημαίνει ότι μερικές γλώσσες έχουν ασφαλείς διευκολύνσεις που μπορούν να χρησιμοποιηθούν από όσους προγραμματιστές ακολουθούν πρακτικές οι οποίες χαρακτηρίζονται από χαμηλή ασφάλεια τύπων. Ο τυπικός τυποθεωρητικός ορισμός της ασφάλειας τύπων είναι ισχυρότερος από αυτόν που είναι κατανοητός από τους περισσότερους προγραμματιστές.
Ασφάλεια Τύπων |
Αυτό το πλαίσιο: π • σ • ε |
Η επιβολή τύπων μπορεί να είναι στατική, βρίσκοντας ενδεχόμενα λάθη κατά το χρόνο μεταγλώττισης, ή δυναμική, συνδέοντας πληροφορίες για τους τύπους, με τις τιμές στο χρόνο εκτέλεσης,και συμβουλεύοντας τους προγραμματιστές όπως χρειάζεται για τον εντοπισμό επικείμενων λαθών, ή συνδυασμό και των δύο.
Οι συμπεριφορές που κατηγοριοποιούνται ως σφάλματα τύπων από μία δοσμένη γλώσσα προγραμματισμού είναι συνήθως αυτές που καταλήγουν από προσπάθειες να εφαρμοστούν ιδιότητες σε τιμές οι οποίες δεν είναι του κατάλληλου τύπου δεδομένων. Η κατηγοριοποίηση είναι εν μέρει βασισμένη στην προσωπική άποψη: μερικοί σχεδιαστές γλωσσών και προγραμματιστές υποστηρίζουν ότι κάθε λειτουργία που δεν οδηγεί σε βίαιο τερματισμό του προγράμματος, λάθη ασφάλειας ή άλλα προφανή λάθη, είναι νόμιμη και δεν χρειάζεται να θεωρηθεί ως λάθος, ενώ άλλοι θεωρούν κάθε παράβαση της σαφούς πρόθεσης του προγραμματιστή ως λανθασμένη και όχι "ασφαλή ως προς τους τύπους".
Στο περιβάλλον των στατικών(κατά το χρόνο μεταγλώττισης) συστημάτων τύπων, η ασφάλεια τύπων συνήθως εμπλέκει(ανάμεσα και σε άλλα πράματα) μία εγγύηση ότι η ενδεχόμενη τιμή κάθε έκφρασης θα είναι ένα νόμιμο μέλος του στατικού τύπου της έκφρασης. Η ακριβής απαίτηση είναι πιο πολύ λεπτή από αυτό - δείτε για παράδειγμα τον υποτύπο και τον πολυμορφισμό για πιθανές επιπλοκές.
Η ασφάλεια τύπων είναι στενά συνδεδεμένη με την ασφάλεια μνήμης,η οποία είναι ένας περιορισμός στην ικανότητα να αντιγραφούν αυθαίρετα bits από μία περιοχή μνήμης σε μία άλλη. Για παράδειγμα, σε μία υλοποίηση μίας γλώσσας που περιέχει έναν τύπο , ώστε κάποια ακολουθία από bits (κατάλληλου μήκους) να μην αναπαριστά ένα έγκυρο μέλος του ,αν η γλώσσα επιτρέπει δεδομένα να αντιγραφούν σε μία μεταβλητή του τύπου , τότε δεν είναι ασφαλής ως προς τους τύπους διότι μία τέτοια λειτουργία μπορεί να αναθέσει μία μη τιμή σε αυτή την μεταβλητή. Αντίστροφα, εάν η γλώσσα δεν έχει ασφάλεια τύπων στο βαθμό που επιτρέπεται σε έναν αυθαίρετο ακέραιο να χρησιμοποιηθεί σαν δείκτης, τότε είναι ξεκάθαρα μη ασφαλής ως προς τις προσβάσεις στη μνήμη.
Οι πιο πολλές γλώσσες με στατικό σύστημα τύπων προσφέρουν ένα βαθμό ασφάλειας τύπων η οποία είναι αυστηρά ισχυρότερη από την ασφάλεια μνήμης, επειδή τα συστήματα τύπων καταστρατηγούν την κατάλληλη χρήση των αφηρημένων δομών δεδομένων που ορίζονται από προγραμματιστές,ακόμα και όταν αυτό δεν είναι τελείως απαραίτητο για ασφάλεια μνήμης ή για να εμποδιστούν οποιουδήποτε είδους καταστροφικά σφάλματα.