cyanic-selkie/wikianc huggingface dataset:
Σύστημα τύπων
Βασικές έννοιες
Η ασφάλεια τύπων προσφέρει ορθότητα προγράμματος αλλά όχι πλήρως (αλλιώς ο έλεγχος τύπων γίνεται μη υπολογίσιμο πρόβλημα). Ανάλογα με το σύστημα τύπων, ένα πρόγραμμα μπορεί να δίνει λάθος αποτέλεσμα ενώ έχει τους σωστούς τύπους και δεν προκαλεί σφάλματα μεταγλώττισης. Για παράδειγμα η διαίρεση με το μηδέν δεν εντοπίζεται από τον ελεγκτή τύπων στις περισσότερες γλώσσες προγραμματισμού αλλά αποτελεί σφάλμα χρόνου εκτέλεσης (runtime error). Η απόδειξη της έλλειψης σφαλμάτων διασφαλίζεται συχνά από ένα σύνολο τυπικών μεθόδων (formal methods), γνωστές συνολικά με τον όρο ανάλυση προγράμματος, καθώς και από τις δοκιμές λογισμικού (software testing), μια συχνά χρησιμοποιούμενη εμπειρική μέθοδο για τον εντοπισμό λαθών που δε μπορεί να βρει ο ελεγκτής τύπων.
Ένα πρόγραμμα συνήθως αντιστοιχίζει σε κάθε τιμή κάποιον τύπο (και ένας τύπος μπορείς να έχει έναν ή περισσότερους υποτύπους, subtypes). Επίσης, τα αντικείμενα, οι μονάδες (modules), τα κανάλια επικοινωνίας (communication channels), οι εξαρτήσεις (dependencies), ακόμα και οι ίδιοι οι τύποι μπορούν να έχουν κάποιον τύπο. Ανάλογα με την υλοποίηση υπάρχουν και οι εξής χαρακτηρισμοί (που όμως τεχνικά αποτελούν διαφορετικές ιδέες):
Ένα σύστημα τύπων (type system), κάποιας γλώσσας προγραμματισμού, ελέγχει τον τρόπο με τον οποίο μπορούν να συμπεριφέρονται τα τυποποιημένα προγράμματα και θεωρεί μη έγκυρη τη συμπεριφορά έξω από αυτούς τους κανόνες. Ένα effect system συνήθως παρέχει λεπτομερέστερο έλεγχο από ένα σύστημα τύπων.
Τυπικά η θεωρία τύπων μελετά τα συστήματα τύπων. Πολυπλοκότερα συστήματα τύπων (όπως οι εξαρτώμενοι τύποι, dependent types) επιτρέπουν την επαλήθευση λεπτομερών προδιαγραφών προγραμμάτων από έναν ελεγκτή τύπων αλλά αυτό έχει το μειονέκτημα ότι η εξαγωγή τύπων και άλλες ιδιότητες γενικά γίνονται μη-υπολογίσιμες, ενώ ο έλεγχος τύπων εξαρτάται από αποδείξεις που δίνονται από το χρήστη. Αποτελεί σημαντική πρόκληση η εύρεση ενός αρκετά εκφραστικού συστήματος τύπων που να ικανοποιεί προγραμματιστικές πρακτικές με τυπικά ασφαλή τρόπο.
Στατικοί τύποι
Μια γλώσσα προγραμματισμού λέγεται ότι χρησιμοποιεί στατικούς τύπους όταν ο έλεγχος τύπων γίνεται κατά τη διάρκεια του χρόνου μεταγλώττισης αντί του χρόνου εκτέλεσης. Οι γλώσσες με στατικούς τύπους περιλαμβάνουν την Ada, την ActionScript 3, τη C, τη C++, τη C#, την Eiffel, την F#, τη Go, τη JADE, τη Java, τη Fortran, τη Haskell, την ML, την Objective-C, την Pascal, την Perl (που διακρίνει μεταξύ βαθμωτών τιμών (scalars), πινάκων, πινάκων κατακερματισμού και υπορουτινών) και τη Scala. Επειδή ο στατικός έλεγχος είναι μια περιορισμένη μορφή επαλήθευσης προγράμματος (program verification) (βλ. ασφάλεια τύπων), επιτρέπει σε πολλά σφάλματα τύπων να εντοπίζονται νωρίς κατά τη διάρκεια του κύκλου της ανάπτυξης του λογισμικού. Οι στατικοί ελεγκτές τύπων εκτιμούν μόνο την πληροφορία που μπορούν να προσδιορίσουν στο χρόνο μεταγλώττισης αλλά μπορούν να επαληθεύσουν ότι οι συνθήκες που ελέγχονται ισχύουν για όλες τις πιθανές εκτελέσεις του προγράμματος, με αποτέλεσμα να μη χρειάζεται να επαναλαμβάνεται ο έλεγχος τύπων κάθε φορά που εκτελείται το πρόγραμμα. Η εκτέλεση του προγράμματος μπορεί επίσης να γίνει πιο αποδοτική (σε ταχύτητα ή σε κατανάλωση μνήμης) όταν λείπει ο έλεγχος τύπων στο χρόνο εκτέλεσης και υπάρχουν βελτιστοποιήσεις.
Επειδή αναλύουν πληροφορία στο χρόνο μεταγλώττισης, και άρα δεν έχουν διαθέσιμη πληροφορία τύπων του χρόνου εκτέλεσης, οι στατικοί ελεγκτές τύπων είναι συντηρητικοί. Μπορεί να απορρίψουν κάποια προγράμματα που έχουν καλή συμπεριφορά στο χρόνο εκτέλεσης, αλλά δε φαίνεται στατικά ότι έχουν σωστούς τύπους. Για παράδειγμα, ακόμα και αν η έκφραση  πάντα αποτιμάται σε   στο χρόνο εκτέλεσης, ένα πρόγραμμα που περιέχει τον κώδικα
θα απορριφθεί ως πρόγραμμα με λάθος τύπους, γιατί μια στατική ανάλυση δε μπορεί να βρει ότι ο κώδικας στο σκέλος  δε θα εκτελεστεί ποτέ. Η συντηρητική συμπεριφορά των στατικών ελεγκτών τύπων αποτελεί πλεονέκτημα όταν η  αποτιμάται σε   σπάνια: ένας στατικός ελεγκτής τύπων μπορεί να εντοπίσει σφάλματα τύπων σε σπάνια χρησιμοποιούμενα μονοπάτια μέσα στον κώδικα. Χωρίς το στατικό έλεγχο τύπων, ακόμα και δοκιμές κάλυψης κώδικα (code coverage) με 100% κάλυψη, μπορεί να μη βρουν αυτά τα σφάλματα. Οι δοκιμές μπορεί να μη τα εντοπίσουν γιατί πρέπει να ληφθεί υπόψη ο συνδυασμός όλων των σημείων που δημιουργούνται τιμές και όλων των σημείων που μια τιμή χρησιμοποιείται.
Οι γλώσσες προγραμματισμού με στατικούς τύπους που χρησιμοποιούνται συχνότερα, δεν είναι επισήμως ασφαλείς ως προς τους τύπους τους (type safe). Περιέχουν "παραθυράκια" ("loopholes") στον ορισμό τους, ώστε ο προγραμματιστής να μπορεί να γράφει κώδικα που να αποφεύγει την επαλήθευση του στατικού ελεγκτη τύπων, για να λύσει κάποια προβλήματα. Για παράδειγμα, οι περισσότερες γλώσσες τύπου C έχουν τέτοιες εντολές ("type punning"), ενώ η Haskell έχει χαρακτηριστικά όπως η συνάρτηση : αυτές οι λειτουργίες μπορεί να μην είναι ασφαλείς στο χρόνο εκτέλεσης, επειδή δημιουργούν ανεπιθύμητη συμπεριφορά λόγω εσφαλμένων τύπων των τιμών όταν εκτελείται το πρόγραμμα.
Δυναμικοί τύποι
Μια γλώσσα προγραμματισμού λέγεται ότι έχει δυναμικούς τύπους όταν το μεγαλύτερο μέρος του ελέγχου τύπων της εκτελείται στο χρόνο εκτέλεσης αντί του χρόνου μεταγλώττισης. Στους δυναμικούς τύπους, οι τιμές έχουν τύπους αλλά οι μεταβλητές δεν έχουν με αποτέλεσμα μια μεταβλητή να μπορεί να αναφέρεται σε τιμές κάθε είδους. Οι γλώσσες με δυναμικούς τύπους περιλαμβάνουν την APL, την Erlang, τη Groovy, τη JavaScript, τη Lisp, τη Lua, αυτές των MATLAB/GNU Octave, την Perl (όσον αφορά τους τύπου που ορίζονται από το χρήστη αλλά όχι τους ενσωματωμένους), την PHP, την Prolog, την Python, τη Ruby, τη Smalltalk και την Tcl. Οι δυναμικοί τύποι μπορούν να είναι πιο ευέλικτοι από τους στατικούς τύπους (π.χ. επιτρέποντας σε ένα πρόγραμμα να παράγει τύπους και λειτουργίες με βάση δεδομένα στο χρόνο εκτέλεσης), αλλά εις βάρος λιγότερων εγγυήσεων εκ των προτέρων. Αυτό οφείλεται στο ότι μια γλώσσα με δυναμικούς τύπους δέχεται και προσπαθεί να εκτελέσει ορισμένα προγράμματα που θεωρούνται μη έγκυρα από τον στατικό ελεγκτή τύπων.
Οι δυναμικοί τύποι μπορεί να προκαλέσουν σφάλματα τύπων στο χρόνο εκτέλεσης: μια τιμή μπορεί να έχει τύπο που δεν προβλέπεται στο χρόνο εκτέλεσης, και να πρέπει να εκτελεστεί μια λειτουργία σε αυτήν που να μην έχει νόημα. Αυτή η λειτουργία μπορεί να συμβεί σε σημείο μεταγενέστερο από αυτό στο οποίο έγινε το προγραμματιστικό λάθος - εκεί δηλαδή που δεδομένα λάθος τύπου περάστηκαν σε κάποιον κώδικα που δε θα έπρεπε. Αυτό δυσχεραίνει την εύρεση τέτοιων σφαλμάτων.
Οι έλεγχοι στο χρόνο εκτέλεσης των συστημάτων των γλωσσών με δυναμικούς τύπους μπορούν να είναι πιο πολύπλοκοι από αυτούς των γλωσσών με στατικούς τύπους, επειδή μπορούν να χρησιμοποιήσουν δυναμική πληροφορία μαζί με την πληροφορία από τον πηγαίο κώδικα. Από την άλλη πλευρά, οι έλεγχοι στο χρόνο εκτέλεσης βεβαιώνουν μόνο συνθήκες που ικανοποιούν μια συγκεκριμένη εκτέλεση ενός προγράμματος και πρέπει να επαναλαμβάνονται για κάθε εκτέλεση.
Η ανάπτυξη λογισμικού σε γλώσσες με δυναμικούς τύπους συχνά υποστηρίζεται από πρακτικές όπως ο έλεγχος μονάδας (unit testing). Οι δοκιμές αποτελούν βασική πρακτική στην επαγγελματική ανάπτυξη λογισμικού και είναι ιδιαίτερα σημαντικές σε γλώσσες με δυναμικούς τύπους. Στην πράξη, οι δοκιμές μπορούν να εντοπίσουν ένα ευρύτερο πεδίο σφαλμάτων σε σχέση με το στατικό έλεγχο τύπων αλλά δεν είναι το ίδιο πλήρεις και εξαντλητικές.
Συνδυασμοί δυναμικών και στατικών τύπων
Η παρουσία στατικών τύπων σε μια γλώσσα προγραμματισμού δεν αποκλείει απαραίτητα τους μηχανισμούς των δυναμικών τύπων. Στη Java για παράδειγμα, καθώς και σε άλλες αντικειμενοστρεφείς γλώσσες, αν και χρησιμοποιούνται οι στατικοί τύποι, κάποιες λειτουργίες (downcasting) απαιτούν ελέγχους στο χρόνο εκτέλεσης, μια μορφή δυναμικών τύπων.
Κάποιες γλώσσες, όπως η Clojure, έχουν δυναμικούς τύπους αλλά επιτρέπουν τη χρήση ρητών σημειώσεων τύπων (explicit type hints) που έχουν ως αποτέλεσμα στατικούς τύπους. Ένας πιθανός λόγος που χρησιμοποιούνται είναι για τη βελτιστοποίηση κώδικα με απαιτήσεις ταχύτητας, με βάση τους στατικούς τύπους.
Από την έκδοση 4.0, το .NET Framework υποστηρίζει μια παραλλαγή των δυναμικών τύπων μέσω του χώρου ονομάτων System.Dynamic όπου ένα στατικό αντικείμενο (static) τύπου 'δυναμικό' ('dynamic') χρησιμοποιείται ως χώρος που το σύστημα χρόνου εκτέλεσης της πλατφόρμας .NET ρωτά για τις δυναμικές δυνατότητές του ώστε να επιλύσει μια αναφορά σε κάποιο αντικείμενο.
Στατικός και δυναμικός έλεγχος τύπων στην πράξη
Η απόφαση να χρησιμοποιηθούν στατικοί ή δυναμικοί τύποι εξαρτάται από πολλούς παράγοντες, με κάποιες αναγκαίες υποχωρήσεις σε κάθε περίπτωση (trade-offs).
Οι στατικοί τύποι μπορούν να εντοπίσουν σφάλματα τύπων στο χρόνο μεταγλώττισης, κάτι που κανονικά κάνει ένα πρόγραμμα πιο αξιόπιστο. Όμως, οι προγραμματιστές διαφωνούν σχετικά με το πόσο συχνά συμβαίνουν σφάλματα τύπων και ποιο ποσοστό από τα λάθη κατά την ανάπτυξη ενός προγράμματος εντοπίζεται με τους στατικούς τύπους. Οι υποστηρικτές των στατικών τύπων πιστεύουν ότι ένα πρόγραμμα είναι πιο αξιόπιστο όταν έχει περάσει τον έλεγχο τύπων ενώ οι υποστηρικτές των δυναμικών τύπων δείχνουν κατανεμημένο κώδικα που έχει αποδειχτεί αξιόπιστος. Η ισχύς των στατικών τύπων αυξάνεται όσο αυξάνεται και η ισχύς του συστήματος τύπων. Οι υποστηρικτές των γλωσσών με εξαρτώμενους τύπους (dependent types) όπως η Dependent ML και η Epigram, θεωρούν ότι σχεδόν όλα τα σφάλματα μπορούν να θεωρηθούν σφάλματα τύπων, αν οι τύποι που χρησιμοποιούνται σε ένα πρόγραμμα έχουν δηλωθεί σωστά από τον προγραμματιστή ή έχουν εξαχθεί σωστά από το μεταγλωττιστή.
Οι στατικοί τύποι συνήθως έχουν ως αποτέλεσμα μεταγλωττισμένο κώδικα που εκτελείται πιο γρήγορα. Όταν ο μεταγλωττιστής γνωρίζει ποιοι ακριβώς τύποι δεδομένων χρησιμοποιούνται, μπορεί να παράγει βελτιστοποιημένο κώδικα. Κάποιες γλώσσες με δυναμικούς τύπους όπως η Common Lisp επιτρέπουν προαιρετικά τη δήλωση τύπων για τη βελτιστοποίηση κατά αυτόν τον τρόπο. Οι στατικοί τύποι αποτελούν επομένως τη γενίκευση αυτού του φαινομένου σε όλο το εύρος του κώδικα. Βλ. βελτιστοποίηση (optimization).
Αντίθετα, οι δυναμικοί τύποι μπορούν να επιτρέψουν στο μεταγλωττιστή να εκτελείται πιο γρήγορα και στο διορθωτή να φορτώνει δυναμικά νέο κώδικα, επειδή οι αλλαγές στον πηγαίο κώδικα στις γλώσσες με δυναμικούς τύπους έχουν ως αποτέλεσμα λιγότερο περαιτέρω έλεγχο και λιγότερο κώδικα για επανεξέταση. Κάτι τέτοιο σε ορισμένες περιπτώσεις μπορεί να μικρύνει τον κύκλο διόρθωση-μεταγλώττιση-δοκιμή-αποσφαλμάτωση (edit-compile-test-debug).
Οι γλώσσες με στατικούς τύπους που δεν έχουν εξαγωγή τύπων (όπως η Java και η C) απαιτούν ο προγραμματιστής να δηλώνει όλους τους τύπους που πρόκειται να χρησιμοποιήσει μια μέθοδος ή μια συνάρτηση. Αυτό μπορεί να αποτελέσει επιπλέον τεκμηρίωση για το πρόγραμμα, την οποία ο μεταγλωττιστής δεν επιτρέπει στον προγραμματιστή να αγνοήσει ή να μην αντιστοιχεί στον κώδικα. Όμως μια γλώσσα μπορεί να έχει στατικούς τύπους χωρίς να απαιτεί δηλώσεις τύπων (π.χ. η Haskell, η Scala, και σε κάποιο βαθμό η C#), επομένως αυτό δεν είναι απαραίτητη συνέπεια των στατικών τύπων.
Οι δυναμικοί τύποι επιτρέπουν δομές που οι στατικοί τύποι απορρίπτουν ως μη επιτρεπτές. Για παράδειγμα, επιτρέπουν συναρτήσεις τύπου αποτίμησε (eval), που εκτελούν αυθαίρετα κομμάτια κώδικα. Επιπλέον οι δυναμικοί τύποι χειρίζονται καλύτερα κώδικα σε μεταβατική φάση (transitional code) και τη γρήγορη ανάπτυξη πρωτοτύπων (prototyping), όπως η χρήση μιας κενής δομής δεδομένων (ψευδο-αντικείμενο, mock object) στη θέση μιας πλήρους δομής δεδομένων (συνήθως για πειραματισμούς και δοκιμές).
Οι δυναμικοί τύποι χρησιμοποιούνται στο duck typing που μπορεί να υποστηρίζει ευκολότερη επαναχρησιμοποίηση κώδικα.
Οι δυναμικοί τύποι συνήθως διευκολύνουν το μεταπρογραμματισμό (metaprogramming). Για παράδειγμα, τα πρότυπα της C++ (templates) συνήθως είναι δυσκολότερα στη χρήση από αντίστοιχο κώδικα σε Ruby ή Python. Πιο προχωρημένες δομές χρόνου εκτέλεσης όπως οι μετακλάσεις και η ενδοσκόπηση (introspection) συχνά είναι πιο δύσχρηστες σε γλώσσες με στατικούς τύπους.
Ισχυροί και ασθενείς τύποι
Ένα σύστημα τύπων λέγεται ότι έχει ισχυρούς τύπους (strongly typed) όταν ορίζει έναν ή περισσότερους περιορισμούς στον τρόπο που συνδυάζονται οι λειτουργίες που χρησιμοποιούν τιμές από διαφορετικούς τύπους δεδομένων. Μια γλώσσα που υλοποιεί ισχυρούς τύπους απαγορεύει την επιτυχή εκτέλεση μιας λειτουργίας σε παραμέτρους που έχουν λάθος τύπο.
Οι ασθενείς τύποι (Weak typing) σημαίνουν ότι μια γλώσσα έμμεσα μετατρέπει τους τύπους. Έστω το εξής παράδειγμα:
var x := 5;   // (1)  (η x είναι ακέραιος) var y := "37"; // (2) (η y είναι συμβολοσειρά) x + y;        // (3)  (?)
Σε μια γλώσσα με ασθενείς τύπους, το αποτέλεσμα της τελευταίας λειτουργίας δεν είναι ξεκάθαρο. Κάποιες γλώσσες όπως η Visual Basic, θα παρήγαγαν εκτελέσιμο κώδικα που όταν εκτελεστεί να έχει αποτέλεσμα 42: το σύστημα θα μετέτρεπε τη συμβολοσειρά "37" στον αριθμό 37 ώστε να καταφέρει να βρει νόημα στη λειτουργία της πρόσθεσης. Άλλες γλώσσες όπως η JavaScript θα παρήγαγαν το αποτέλεσμα "537": το σύστημα θα μετέτρεπε τον αριθμό 5 στη συμβολοσειρά "5" και στη συνέχεια θα συνένωνε τις δύο συμβολοσειρές. Και στη Visual Basic και στη JavaScript, ο τύπος του αποτελέσματος ορίζεται από κανόνες που αφορούν και τις δύο παραμέτρους μιας λειτουργίας. Σε κάποιες γλώσσες όπως η AppleScript, ο τύπος της τιμής που προκύπτει καθορίζεται από τον τύπο της παραμέτρου που είναι στα αριστερά της έκφρασης.
Στη C μια μετατροπή (cast) που αποτυγχάνει δείχνει το πρόβλημα που μπορεί να εμφανιστεί αν λείπουν οι ισχυροί τύποι - αν ο προγραμματιστής μετατρέπει μια τιμή από έναν τύπο σε έναν άλλο στη C, όχι μόνο πρέπει ο μεταγλωττιστής να το επιτρέψει στο χρόνο μεταγλώττισης αλλά να το επιτρέψει και το ίδιο το σύστημα χρόνου εκτέλεσης. Αυτό μπορεί να έχει ως αποτέλεσμα μικρότερο και γρηγορότερο κώδικα C, αλλά δυσκολεύει την αποσφαλμάτωση.
Συστήματα με ασφαλείς και μη ασφαλείς τύπους
Ένας τρίτος τρόπος κατηγοριοποίησης του συστήματος τύπων μιας γλώσσας προγραμματισμού βασίζεται στην ασφάλεια των λειτουργιών με τύπους και των μετατροπών. Μια γλώσσα θεωρείται ότι έχει "ασφαλείς τύπους" ("type-safe") αν δεν επιτρέπει λειτουργίες ή μετατροπές που να οδηγούν σε εσφαλμένες καταστάσεις.
Άλλοι όροι που χρησιμοποιούνται είναι γλώσσα με ασφαλή μνήμη (memory-safe language) ή ασφαλής γλώσσα (safe language), που περιγράφουν γλώσσες που δεν επιτρέπουν μη ορισμένες λειτουργίες. Για παράδειγμα, μια γλώσσα αυτού του τύπου ελέγχει τα όρια των πινάκων ή εγγυάται με κάποιον άλλο τρόπο στατικά (π.χ. στη μεταγλώττιση) ότι η πρόσβαση εκτός ορίων ενός πίνακα θα προκαλέσει σφάλμα στο χρόνο μεταγλώττισης και ίσως και στο χρόνο εκτέλεσης.
Σε γλώσσες όπως η Visual Basic, η μεταβλητή z του παραδείγματος παίρνει την τιμή 42. Αν και ο προγραμματιστής μπορεί να μην ήθελε κάτι τέτοιο, το αποτέλεσμα ορίζεται στη γλώσσα και το πρόγραμμα δεν αποτυγχάνει, ούτε δίνει κάποια λάθος τιμή στη z. Υπό αυτό το πρίσμα, τέτοιες γλώσσες έχουν ασφαλείς τύπους - αν όμως η τιμή της y ήταν μια συμβολοσειρά που δε μπορεί να μετατραπεί σε αριθμό (π.χ. "γεια σου, κόσμε"), το αποτέλεσμα δε θα ήταν ορισμένο. Επομένως, αν και τέτοιες γλώσσες έχουν ασφαλείς τύπους (τα προγράμματά τους δεν αποτυγχάνουν), μπορούν εύκολα να παράγουν ανεπιθύμητα αποτελέσματα.
Έστω ο εξής κώδικας σε C:
int x = 5; char y[] = "37"; char* z = x + y;
Σε αυτό το παράδειγμα η z δείχνει σε μια διεύθυνση μνήμης 5 χαρακτήρες μετά την y, ισοδύναμα με τρεις χαρακτήρες μετά τον τερματικό χαρακτήρα μηδέν της συμβολοσειράς στην οποία δείχνει η y. Η διεύθυνση αυτής της θέσης μνήμης δεν ορίζεται και μπορεί να βρίσκεται εκτός της μνήμης που βλέπει το πρόγραμμα. Ακόμα και ο απλός υπολογισμός ενός τέτοιου δείκτη μπορεί να έχει ως αποτέλεσμα ακαθόριστη συμπεριφορά (ακόμα και κατάρρευση του προγράμματος) σύμφωνα με το πρότυπο της C, και στα πιο πολλά συστήματα η απλή χρήση της διεύθυνσης της z σε αυτό το σημείο θα προκαλούσε αστοχία του προγράμματος. Επομένως το πρόγραμμα έχει σωστούς τύπους αλλά δεν είναι ασφαλές ως προς τη μνήμη - κάτι τέτοιο δε θα συνέβαινε σε μια γλώσσα με ασφαλείς τύπους.
Duck typing
Στο "duck typing", μια εντολή που καλεί μια μέθοδο m ενός αντικειμένου δε βασίζεται στο δηλωμένο τύπο του αντικειμένου αλλά μόνο στο αν αυτό το αντικείμενο υλοποιεί τη μέθοδο που καλείται. Στα συστήματα με duck typing, ο τύπος ενός αντικειμένου μπορεί να θεωρηθεί ότι εξαρτάται από το ίδιο το αντικείμενο και καθορίζεται από το ποιες μεθόδους υλοποιεί, επομένως αυτά τα συστήματα έχουν εξ ορισμού ασφαλείς τύπους αφού μπορούν να κληθούν μόνο μέθοδοι που πραγματικά υλοποιεί ένα αντικείμενο. Μπορεί επίσης να θεωρηθεί ότι το αντικείμενο ανήκει σε πολλούς τύπους, οι οποίοι περιλαμβάνουν και τον τύπο που περιγράφει το γεγονός ότι "έχει μια μέθοδο m." Ο έλεγχος τύπων όμως συμβαίνει στο χρόνο εκτέλεσης, όταν ζητηθεί, κάθε φορά που μια μέθοδος m πρέπει να εκτελεστεί, και όχι στο χρόνο μεταγλώττισης ή φόρτωσης.
Το duck typing διαφέρει από τους δομικούς τύπους (structural typing) γιατί αν το τμήμα (όλης της δομής της μονάδας κώδικα) που χρειάζεται για ένα δεδομένο τοπικό υπολογισμό υπάρχει στο χρόνο εκτέλεσης, το σύστημα ικανοποιείται από την ανάλυση και την ταυτοποίηση τύπων. Από την άλλη πλευρά, ένα σύστημα δομικών τύπων θα απαιτούσε την ανάλυση όλης της δομής της μονάδας κώδικα στο χρόνο μεταγλώττισης για να καθορίσει την ταυτότητα τύπων ή τις μεταξύ τους εξαρτήσεις.
Το duck typing διαφέρει από ένα ονομαστικό σύστημα τύπων (nominal type system) από διάφορες απόψεις. Η κύρια είναι ότι καθορίζει την πληροφορία τύπων στο χρόνο εκτέλεσης (και όχι στο χρόνο μεταγλώττισης) και το όνομα ενός τύπου δεν έχει σημασία κατά την εύρεση της ταυτότητας ή των εξαρτήσεων τύπων - χρειάζεται μόνο μερική πληροφορία για τη δομή, σε κάθε στιγμή της εκτέλεσης του προγράμματος.
Ο όρος αρχικά προέκυψε από τον Alex Martelli, στα πλαίσια της κοινότητας της Python, με τη βασική αρχή του duck typing (όσον αφορά τις τιμές της γλώσσας) να είναι: "αν περπατάει σαν πάπια (σ.σ. duck) και κάνει σαν πάπια, τότε είναι πάπια".
Εξειδικευμένα συστήματα τύπων
Έχουν δημιουργηθεί πολλά συστήματα τύπων για χρήση σε συγκεκριμένα περιβάλλοντα, με ειδικούς τύπους δεδομένων ή για περαιτέρω στατική ανάλυση προγράμματος. Συχνά βασίζονται σε ιδέες της τυπικής θεωρίας τύπων και εμφανίζονται σε ερευνητικά συστήματα.
Εξαρτώμενοι τύποι
Οι εξαρτώμενοι τύποι (dependent types) βασίζονται στην ιδέα της χρήσης δεδομένων για την ακριβέστερη περιγραφή του τύπου κάποιων άλλων δεδομένων. Για παράδειγμα ο τύπος "matrix(3,3)" μπορεί να περιγράφει έναν 3×3 πίνακα. Τότε μπορούν να οριστούν κανόνες τυποποίησης όπως ο ακόλουθος του πολλαπλασιασμού πινάκων:
όπου k, m, n είναι αυθαίρετες ακέραιες τιμές. Μια παραλλαγή της ML, που ονομάζεται Dependent ML, βασίζεται σε αυτό το σύστημα τύπων, αλλά επειδή ο κλασικός έλεγχος των εξαρτώμενων τύπων είναι μη-υπολογίσιμο πρόβλημα, προγράμματα που τους χρησιμοποιούν δε μπορούν πάντα να ελεγχθούν ότι έχουν τους σωστούς τύπους χωρίς κάποιας μορφής περιορισμούς. Η Dependent ML περιορίζει τον τύπο της ισότητας που μπορεί να υπολογίσει στην αριθμητική Presburger. Άλλες γλώσσες όπως η Epigram έχουν υπολογίσιμους τύπους σε όλες τις εκφράσεις της γλώσσας, κάνοντας υπολογίσιμο και τον έλεγχο τύπων, ενώ επίσης μπορεί μια γλώσσα να είναι Τιούρινγκ-πλήρης (Turing complete) με το κόστος του μη-υπολογίσιμου ελέγχου τύπων, όπως στην Cayenne.
Γραμμικοί τύποι
Οι γραμμικοί τύποι (linear types), που βασίζονται στη θεωρία της γραμμικής λογικής (linear logic), και σχετίζονται με τους τύπους μοναδικότητας (uniqueness types), είναι τύποι αποδίδονται σε τιμές που έχουν την ιδιότητα να υπάρχει ακριβώς μια αναφορά σε αυτές σε κάθε χρονική στιγμή. Είναι σημαντικοί για την περιγραφή μεγάλων τιμών που δεν αλλάζουν (immutable values) όπως οι συμβολοσειρές ή τα αρχεία, γιατί κάθε λειτουργία που ταυτόχρονα καταστρέφει ένα γραμμικό αντικείμενο και ταυτόχρονα δημιουργεί ένα παρόμοιο αντικείμενο (όπως ο κώδικας ' ') μπορεί να βελτιστοποιηθεί σαν επιτόπου τροποποίηση (in-place mutation). Κανονικά κάτι τέτοιο δε θα ήταν δυνατό, γιατί τέτοιες αλλαγές μπορεί να προκαλούσαν παρενέργειες σε μέρη του προγράμματος που έχουν αναφορές προς το αντικείμενο, κατά παράβαση της διαφάνειας αναφοράς (referential transparency). Χρησιμοποιούνται επίσης στο λειτουργικό σύστημα Singularity για επικοινωνία μεταξύ των διεργασιών, βεβαιώνοντας στατικά ότι οι διαδικασίες δε μπορούν να μοιράζονται αντικείμενα σε κοινή μνήμη, ώστε να αποφεύγονται καταστάσεις απροσδιοριστίας (race conditions). Η γλώσσα Clean (που είναι παρόμοια με τη Haskell) χρησιμοποιεί ένα σχετικό σύστημα τύπων ώστε να έχει καλύτερη ταχύτητα εκτέλεσης, μένοντας ασφαλής.
Τύποι τομής
Οι τύποι τομής είναι χρήσιμοι για την περιγραφή υπερφορτωμένων (overloaded) τύπων συναρτήσεων: για παράδειγμα, αν ο τύπος των συναρτήσεων που δέχονται έναν ακέραιο και επιστρέφουν ακέραιο είναι "int → int", και ο τύπος των συναρτήσεων που δέχονται έναν αριθμό κινητής υποδιαστολής and επιστρέφουν αριθμό κινητής υποδιαστολής είναι "float → float", τότε η τομή αυτών των δύο τύπων μπορεί να χρησιμοποιηθεί για συναρτήσεις που κάνουν είτε το πρώτο είτε το δεύτερο, με βάση τον τύπο της παραμέτρου τους. Μια τέτοια συνάρτηση μπορεί να περαστεί σε κάποια άλλη συνάρτηση που περιμένει συνάρτηση τύπου "int → int" με ασφάλεια - απλά δε θα χρησιμοποιούσε τη λειτουργικότητα του τύπου "float → float".
Σε μια ιεραρχία με υποκλάσεις, η τομή ενός τύπου και ενός γονικού τύπου είναι ο τύπος χαμηλότερα στην ιεραρχία. Η τομή αδελφικών τύπων είναι ο κενός τύπος.
Η γλώσσα Forsythe περιλαμβάνει μια γενική υλοποίηση των τύπων τομής. Μια σχετική μορφή είναι οι refinement types.
Τύποι ένωσης
Σε μια ιεραρχία με υποκλάσεις, η ένωση ενός τύπου και ενός προγόνου του, είναι ο πρόγονος. Η ένωση δύο αδελφικών τύπων είναι υποτύπος του κοινού τους προγόνου (όλες οι λειτουργίες που επιτρέπονται στον κοινό πρόγονο επιτρέπονται και στον τύπο ένωσης, αλλά μπορεί επίσης να υπάρχουν και άλλες κοινές λειτουργίες).
Υπαρξιακοί τύποι
Οι υπαρξιακοί τύποι (existential types) χρησιμοποιούνται συχνά μαζί με τους τύπους εγγραφής (record types) στην αναπαράσταση μονάδων κώδικα (modules) και αφηρημένων δομών δεδομένων (abstract data types), λόγω της ικανότητάς τους να διαχωρίζουν μεταξύ υλοποίησης και διαπροσωπείας (interface). Για παράδειγμα, ο τύπος "T = ∃X { a: X; f: (X → int); }" περιγράφει τη διαπροσωπεία μιας μονάδας κώδικα που έχει ένα μέλος δεδομένων τύπου X και μια συνάρτηση που παίρνει μια παράμετρο του ίδιου τύπου X και επιστρέφει έναν ακέραιο. Αυτό μπορεί να υλοποιηθεί με διάφορους τρόπους, για παράδειγμα:
Οι παραπάνω τύποι είναι υποτύποι του γενικότερου υπαρξιακού τύπου T και αντιστοιχούν σε συμπαγείς τύπους της υλοποίησης, επομένως κάθε τιμή ενός από αυτούς τους τύπους είναι τιμή του τύπου T. Έστω μία τιμή "t" τύπου "T", τότε ξέρουμε ότι η "t.f(t.a)" έχει σωστό τύπο, όποιος και να είναι ο αφηρημένος τύπος X. Αυτό επιτρέπει ευελιξία στην επιλογή τύπων που να ταιριάζουν σε κάθε εφαρμογή, ενώ οι χρήστης του αφηρημένου τύπου χρησιμοποιούν μόνο τον τύπο της διαπροσωπείας—τον υπαρξιακό τύπο—και δεν έρχονται σε επαφή με αυτήν την επιλογή.
Γενικά ο ελεγκτής τύπων δε μπορεί να βρει αυτόματα σε ποιόν υπαρξιακό τύπο ανήκει μια μονάδα κώδικα. Στο παραπάνω παράδειγμα, ο intT { a: int; f: (int → int); } θα μπορούσε να έχει επίσης τύπο ∃X { a: X; f: (int → int); }. Η ευκολότερη λύση θα ήταν να σημειώνεται κάθε μονάδα κώδικα με τον τύπο που προορίζεται να έχει, π.χ.:
Αν και οι αφηρημένοι τύποι δεδομένων και οι μονάδες κώδικα είχαν υλοποιηθεί από παλιά στις γλώσσες προγραμματισμού, το 1988 εδραιώθηκε η τυπική θεωρία από τον John C. Mitchell και τον Gordon Plotkin, με το σύνθημα: "Οι αφηρημένοι τύποι δεδομένων έχουν υπαρξιακό τύπο" Η θεωρία είναι λ-λογισμός με τύπους δεύτερης τάξης με τύπους, όμοιος με το Σύστημα F, αλλά με υπαρξιακούς αντί για καθολικούς ποσοδείκτες.
Ρητή ή έμμεση δήλωση και εξαγωγή
Οι αριθμητικές σταθερές, οι σταθερές συμβολοσειρών και οι εκφράσεις στον κώδικα συνήθως υπονοούν ένα συγκεκριμένο περιβάλλον στο οποίο χρησιμοποιούνται. Για παράδειγμα, η έκφραση  θα μπορούσε να υπονοεί τον τύπο των αριθμών κινητής υποδιαστολής (floating-point), ενώ η   θα μπορούσε να υπονοεί μια λίστα από ακέραιους.
Η εξαγωγή τύπων γενικά μπορεί να γίνεται μόνο όταν είναι υπολογίσιμο πρόβλημα στη θεωρία τύπων που χρησιμοποιείται. Επιπλέον, ακόμα και αν η εξαγωγή γενικά δεν είναι υπολογίσιμη για μια δεδομένη θεωρία τύπων, η εξαγωγή συνήθως είναι δυνατή για ένα μεγάλο υποσύνολο προγραμμάτων στην πράξη. Το σύστημα τύπων της Haskell, παραλλαγή του Hindley-Milner, που είναι περιορισμός του Συστήματος Fω στους αποκαλούμενους πολυμορφικούς τύπους rank-1, στους οποίους η εξαγωγή τύπων είναι υπολογίσιμο πρόβλημα. Οι περισσότεροι μεταγλωττιστές της Haskell επιτρέπουν ως επέκταση, πολυμορφισμό για κάθε rank, κάτι που όμως κάνει την εξαγωγή τύπων μη υπολογίσιμη. (Ο έλεγχος τύπων όμως είναι υπολογίσιμος και τα προγράμματα rank-1 εξακολουθούν να έχουν εξαγωγή τύπων ενώ τα προγράμματα ανώτερου rank απορρίπτονται αν δε δοθούν ρητές σημειώσεις τύπων.)
Οι τύποι των τύπων
Ο τύπος τύπων είναι είδος (kind). Τα είδη εμφανίζονται στον προγραμματισμό με τύπους (typeful programming), όπως οι κατασκευαστές τύπων (type constructors) στη γλώσσα Haskell.
Οι τύποι έχουν πολλές κατηγορίες:
Συμβατότητα: ισοδυναμία και υποτύποι
Ο ελεγκτής τύπων για μια γλώσσα με στατικούς τύπους πρέπει να βεβαιώνει ότι ο τύπος κάθε έκφρασης συμφωνεί με τον τύπο που περιμένει το περιβάλλον στο οποίο αυτή εμφανίζεται. Για παράδειγμα, σε μια εντολή ανάθεσης της μορφής , ο τύπος που συνάγεται για την έκφραση e πρέπει να συμφωνεί με τον τύπο που δηλώθηκε ή βρέθηκε αυτόματα για τη μεταβλητή. Αυτή η συνέπεια ονομάζεται συμβατότητα (compatibility) και διαφέρει ανάμεσα στις γλώσσες προγραμματισμού.
Αν ο τύπος της e και ο τύπος της  είναι ο ίδιος και επιτρέπεται η ανάθεση για αυτόν, τότε πρόκειται για έγκυρη έκφραση. Σε απλά συστήματα τύπων, η ερώτηση αν δύο τύποι είναι συμβατοί ανάγεται στον αν είναι ίσοι ή ισοδύναμοι. Άλλες γλώσσες όμως έχουν άλλα κριτήρια για το πότε δύο εκφράσεις θεωρείται ότι σημαίνουν τιμές του ίδιου τύπου. Αυτές οι θεωρίες ισοδυναμίας (equational theories) γενικά διαφέρουν, με δύο ακραίες περιπτώσεις να είναι τα δομικά συστήματα τύπων (structural type systems), στα οποία δύο τύποι είναι ισοδύναμοι όταν περιγράφουν τιμές με την ίδια δομή, και τα ονομαστικά συστήματα τύπων (nominative type systems), στα οποία δύο συντακτικά ξεχωριστοί τύποι ποτέ δε σημαίνουν τον ίδιο τύπο (δηλαδή δύο τύποι πρέπει να έχουν το ίδιο "όνομα" για να είναι ίσοι).
Σε γλώσσες με υποτύπους (subtyping), η σχέση συμβατότητας είναι πιο πολύπλοκη. Ειδικότερα, αν ο A είναι υποτύπος του B, τότε μια τιμή τύπου A μπορεί να χρησιμοποιηθεί σε ένα περιβάλλον που απαιτείται μια τιμή τύπου B, ακόμα και αν το ανάποδο δεν ισχύει. Όπως στην ισοδυναμία, η σχέση υποτύπου ορίζεται διαφορετικά για κάθε γλώσσα προγραμματισμού, με πολλές δυνατές παραλλαγές. Η παρουσία παραμετρικού και περιστασιακού (ad hoc) πολυμορφισμού σε μια γλώσσα μπορεί επίσης να έχει επιπτώσεις στη συμβατότητα τύπων.
Τα αρχαία μνημεία των Αθηνών
Τα αρχαία μνημεία των Αθηνών (αγγλικά: The Antiquities of Athens) είναι ιστορική αρχαιολογική περιηγητική περιγραφή σε κείμενο, πίνακες και ακριβή σχέδια των Τζέιμς Στούαρτ και Νίκολας Ρεβέττ. Το βιβλίο φιλοξενείται στο Βρετανικό μουσείο με τον αριθμό καταλόγου PD 242.C5, αλλά και σε πολλές επίσημες βιβλιοθήκες, ενώ ψηφιακά αντίτυπα ιστορικών εκδόσεων διατίθενται στο διαδίκτυο.
Ιστορική αναδρομή
Οι Τζέημς Στιούαρτ και Νίκολας Ρεβέττ περιηγήθηκαν την Ελλάδα υπό την χορήγηση της Κοινωνίας των Ενθουσιωδών (Society of Dilettanti) από το 1751. Ο Στιούαρτ κατέγραψε τις εντυπώσεις του και ζωγράφισε αρκετούς πίνακες, τους οποίους μετά την επιστροφή του στην Μεγάλη Βρετανία, αποφάσισε να δημοσιεύσει. Το βιβλίο του κυκλοφόρησε σε τέσσερις τόμους από το 1762 ως το 1816 και έγινε δημοφιλέστατο.
Περιγραφή
Το βιβλίο κυκλοφόρησε σε τέσσερις τόμους. Ο πρώτος τόμος περιγράφει την Αθήνα και μερικά από τα μνημεία της. Την δωρική πύλη, τον ιωνικό ναό του Ιλισού, το μνημείο των Αέρηδων, το μνημείο του Λυσικράτη και την στοά του Ολυμπίου Διός. Ο δεύτερος τόμος ασχολείται εξ ολοκλήρου με την Ακρόπολη, τον Παρθενώνα, Ερέχθειο, το θέατρο του Διονύσου, το μνημείο του Θρασύλλου και τα Προπύλαια. Στον τρίτο τόμο περιγράφει διάφορα άλλα μέρη της Αττικής, τα Μέγαρα, το ναό του Θησέα, την πύλη του Αδριανού, το υδραγωγείο του Αδριανού, το μνημείο του Φιλοπάππου, τη γέφυρα του Ιλισού, το Παναθηναϊκό Στάδιο, και άλλα. Τέλος, στον τέταρτο τόμο περιγράφει διάφορα μυκηναϊκά μνημεία και μνημεία των νησιών.
Επιρροή
Το βιβλίο αυτό είναι από τα πρώτα που ξανάφεραν την Ελλάδα και τις αρχαιότητές της στην επικαιρότητα. Τα άριστα αρχιτεκτονικά χαρακτικά και οι ζωντανές περιγραφές ξύπνησαν το ενδιαφέρον των Ευρωπαίων για την αρχαία Ελλάδα και την ιστορία της, και την καθιέρωσαν στην επιστήμη του 18ου και 19ου αιώνα.
Στις εκδόσεις αυτές του 19ου αιώνα παρουσιάστηκαν κλασικά αρχιτεκτονικά μνημεία αποτυπωμένα με ακρίβεια, τόσο σημαντικά που έδιναν στους σχεδιαστές και τους αρχιτέκτονες του 19ου αιώνα σημείο αναφοράς για να βασίσουν σχέδιά τους για υλοποίηση παραγγελιών και διακοσμητικών στοιχείων Ελληνικής αρχιτεκτονικής. Η σειρά των βιβλίων «Τα αρχαία μνημεία των Αθηνών» είχαν σημαντική επίδραση στο κίνημα της Ελληνικής αναβίωσης (Greek Revival) στην Αγγλία.
Παραπομπές
Κατηγορία:Εκθέματα στο Βρετανικό Μουσείο Κατηγορία:Ιστορικά συγγράμματα Κατηγορία:Βιβλία εικονογραφημένα Κατηγορία:Ιστορία της Αθήνας
Αθανασία Πουρίδου
Η Αθανασία Πουρίδου (γενν. στις 22 Ιανουαρίου 1975) είναι Ελληνίδα παλαίμαχος ποδοσφαιρίστρια, η οποία αγωνιζόταν ως αμυντικός.
Ήταν μέλος της Εθνική Ελλάδας ποδοσφαίρου που πήρε μέρος στους θερινούς Ολυμπιακούς Αγώνες του 2004.
Σταδιοδρομία
Σε συλλογικό επίπεδο αγωνίστηκε στην ομάδα Α.Ο. Καβάλα 86.
Εξωτερικοί σύνδεσμοι
Κατηγορία:Ελληνίδες αθλήτριες Κατηγορία:Ελληνίδες ποδοσφαιρίστριες Κατηγορία:Ποδοσφαιριστές ολυμπιακής ομάδας Ελλάδας Κατηγορία:Ποδοσφαιριστές στους Θερινούς Ολυμπιακούς Αγώνες 2004 Κατηγορία:Ποδοσφαιρίστριες Εθνικής Ελλάδας
Συνθήκη του Σαφάρ
Η Συνθήκη του Σαφάρ έθεσε ένα επίσημο τέλος στην παρατεταμένη κατάρρευση της δυναστείας των Χαδανιδών. Υπογράφηκε τον Δεκέμβριο του 969 / Ιανουάριο 970 μεταξύ των Βυζαντινών στρατοπεδαρχών Πέτρου και του πρώην υπουργού των Χαμδανιδών και αντάρτη, Καρκούγια. Μετά το τέλος του Χαμδανίδη εμίρη Σέιφ αλ-Ντάουλα το 967, η εξέγερση τύλιξε γρήγορα τους Χαμδανίδες και η δυναστεία διαλύθηκε στο χάος και την αναταραχή. Οι Ρωμαίοι είδαν αυτό ως ευκαιρία να πάρουν τελικά τον έλεγχο του Χαλεπίου. Ο Πέτρος σύντομα έφθασε στο Χαλέπι, πιθανώς χωρίς εντολές από την Κωνσταντινούπολη, και κατέλαβε την πόλη τον Ιανουάριο του 970.
Όροι
Η συνθήκη υπογράφηκε κάποια στιγμή τον μήνα Σαφάρ το 359 έτος Εγίρας, σύμφωνα με το ισλαμικό ημερολόγιο (που αντιστοιχεί στις 14 Δεκεμβρίου 969-11 Ιανουαρίου 970 μ.Χ.) μεταξύ του Πέτρου και του Καρκούγια (Qarquya). Καθιέρωσε το εμιράτο του Χαλεπίου ως Ρωμαϊκό υποτελές κράτος. Στο πλαίσιο των όρων της συνθήκης, δημιουργήθηκε μία αμυντική συμμαχία μεταξύ Κωνσταντινούπολης και Χαλεπίου. Όσοι είχαν μεταστραφεί σε άλλη θρησκεία δεν θα διώκονταν από τις δύο πλευρές· στρατοί από άλλα μουσουλμανικά κράτη δεν θα επιτρέπονταν να διέρχονται από το Χαλέπιο· φόροι θα αποσταλούν στην Κωνσταντινούπολη· και ο Αυτοκράτορας θα διόριζε μελλοντικούς εμίρηδες. Η συνθήκη αποδείχθηκε ότι έχει μακροχρόνια επιρροή για ένα σχετικά μεγάλο χρονικό διάστημα.
Σύμφωνα με τους όρους της, το μεγαλύτερο μέρος της βόρειας Συρίας τέθηκε υπό Ρωμαϊκή κυριαρχία. Τα νέα σύνορα άρχιζαν βόρεια της Τρίπολης και της Άρκας (στο σύγχρονο Λίβανο), στη συνέχεια προχωρούσαν ανατολικά μέχρι τον ποταμό Ορόντη. Από εκεί ακολουθούσαν τη πορεία του προς τα βόρεια, αλλά προφανώς κάπως προς τα δυτικά του πραγματικού ποταμού, καθώς πόλεις όπως η Σαϊζάρ και η Ραφανίγια προφανώς δεν ήταν υπό Ρωμαϊκό έλεγχο. Κατά μήκος των συνόρων, οι Άραβες διατήρησαν τον έλεγχο των Χάμα, Γιουσιγιάχ, Σαμαμίγια, Απάμειας και Καφαρτάμπ. Στη συνέχεια τα σύνορα περνούσαν στα υψίπεδα ανατολικά του ποταμού Αφρίν, αφήνοντας την εύφορη κοιλάδα του στους Ρωμαίους. Οι Άραβες διατηρούσαν τον έλεγχο του ορεινού όγκου Γιαμπάλ αλ-Σουμάκ με τις πόλεις της Μααράτ αλ-Νουμάν και Μααράτ Μισρίν, τη Χαλκίδα της Συρίας, το ανατολικό τμήμα της Γιαμπάλ Χαλάκα και το μεγαλύτερο μέρος των Γιαμπάλ Σιμάν με το αλ-Αταρίμπ και το αλ-Μπαλάτ, το Αρχάμπ, το Μπασουφάν και το Κιμάρ. Το Γιαμπάλ αλ-Άλλα, το Γιαμπάλ Μπαρίσα, το δυτικό τμήμα της Γιαμπάλ Χαλάκα και το φρούριο-μοναστήρι Καλάτ Σιμάν, σχημάτιζαν τη Ρωμαϊκή πλευρά των συνόρων. Τα σύνορα στη συνέχεια ακολουθούσαν την άκρη της πεδιάδας, δυτικά των Γιαμπάλ Μπαρσάγια, Ουάμπι Αμπί Σουλαϋμάν, Αζάζ, και Κιλίς, μέχρι το πέρασμα του Σουνυάμπ, που βρίσκεται -κατά τον Ερνστ Χόνιγκμανν- στις πηγές του ποταμού Κουβάϋκ. Από εκεί τα σύνορα στρέφονταν ανατολικά, περνώντας βόρεια από τα Ναφούντα, Αγουάνα, και Ταλλ Καλίντ στον ποταμό Σαντζούρ, τον οποίο στη συνέχεια ακολουθούσαν μέχρι τη συμβολή του με τον Ευφράτη.
Ο Ρωμαίος Αυτοκράτορας θα αναγνώριζε τον Καρκούγια ως τον νόμιμο εμίρη και τον υποδιοικητή του Μπακιούρ ως διάδοχό του. Στη συνέχεια, ωστόσο, ο Αυτοκράτορας θα ονόμαζε τόσο τον εμίρη όσο και τον καδή από τους κατοίκους της πόλης. Ωστόσο σε αντάλλαγμα το Χαλέπιο και η επικράτειά του έγιναν υποτελή στους Ρωμαίους με το να πληρώνουν 700.000 αργυρά ντιρχάμ ετησίως, ή έναν κεφαλικό φόρο ενός χρυσού ντινάρ (ίσου με 16 ντιρχάμ). Επιπλέον, ένας αυτοκρατορικός αξιωματούχος εγκαταστάθηκε στην πόλη για να εισπράξει φόρο 10% για όλα τα εμπορεύματα, που εισάγονταν από τη Ρωμαϊκή επικράτεια και οι εμίρηδες του Χαλεπίου αναγκάστηκαν να απαγορεύσουν στους στρατούς από άλλα μουσουλμανικά κράτη να διέρχονται από την επικράτειά τους, να παρέχουν εμπιστευτικές πληροφορίες σχετικά με εκείνους τους στρατούς που κινούνταν εναντίον των Ρωμαίων και να παρέχουν στρατιωτική βοήθεια σε οποιονδήποτε Ρωμαϊκό στρατό επιχειρούσε στη Συρία. Η νομική κατάσταση των Χριστιανών στην επικράτεια του Χαλεπίου ήταν εγγυημένη και κάθε σκλάβος ή ληστής που έφευγε από το Ρωμαϊκό έδαφος έπρεπε να επιστραφεί, μαζί με κάθε μουσουλμάνο κατάσκοπο, που ερχόταν για να συλλέξει εμπιστευτικές πληροφορίες σχετικά με τους Ρωμαίους.
Συνέπειες
Με τη διασφάλιση του άμεσου ελέγχου επί του Χαλεπίου, οι Ρωμαίοι επωφελήθηκαν επίσης άμεσα από μια νέα εισροή εμπορίου στην περιοχή. Η άμυνα της Αντιόχειας ενισχύθηκε επίσης τώρα μεγάλως. Η συνθήκη τηρήθηκε γενικά από τους Χαμδανίδες και τους Ρωμαίους για τα επόμενα πενήντα χρόνια, παρά τις προσπάθειες του Φατιμιδικού Χαλιφάτου να καταλάβει το Χαλέπιο.
Δείτε επίσης
Κατηγορία:Αραβοβυζαντινοί Πόλεμοι Κατηγορία:Συνθήκες της Βυζαντινής Αυτοκρατορίας
Μέρα γιορτής (ταινία)
Η Μέρα γιορτής (Jour de fête) είναι γαλλικής κωμωδία του 1949 με πρωταγωνιστή τον Ζακ Τατί στο σκηνοθετικό του ντεμπούτο σε μεγάλου μήκους ταινία στον ρόλο ενός ανίκανου και αφηρημένου ταχυδρόμου σε ένα παραδοσιακό χωριό της Γαλλίας. Η ταινία είναι γυρισμένη κυρίως μέσα και γύρω από το Σεν-Σεβέρ-σιρ-Εντρ, όπου είχε ζήσει ο Τατί κατά τη διάρκεια της γερμανικής Κατοχής, ενώ οι περισσότεροι ηθοποιοί ήταν άγνωστοι και οι κάτοικοι του χωριού εμφανίστηκαν ως κομπάρσοι.
Πλοκή
Σε μια επίσημη αργία, ένα αγόρι παρακολουθεί μια πομπή να φτάνει στο χωριό του. Ανάμεσα στους ντόπιους είναι ο Φρανσουά, ο συμπαθής και ταραχώδης ταχυδρόμος, τον οποίο όλοι συμπαθούν, αλλά κανείς δεν παίρνει στα σοβαρά. Ο Μαρσέλ και ο Ροζέρ, οι δύο άντρες επικεφαλής της πομπής, τον μεθούν. Σε ένα αντίσκοινο, ο κόσμος παρακολουθεί ένα προπαγανδιστικό ντοκιμαντέρ που αντιπαραβάλλει την απίστευτη αποτελεσματικότητα των αμερικανικών ταχυδρομείων με τα απαρχαιωμένα γαλλικά ταχυδρομεία. Οι χωριανοί αποφασίζουν ότι πρέπει να ενημερωθεί ο Φρανσουά και, αν και διαθέτει μόνο ποδήλατο, πρέπει να αρχίσει να φτάνει σε υπερατλαντικές ταχύτητες στην παράδοση της αλληλογραφίας. Στο τέλος, εξουθενωμένος από τις ξέφρενες προσπάθειές του, σταματάει για να βοηθήσει μια οικογένεια να φορτώσει το φρεσκοκομμένο σανό της σε ένα κάρο, ενώ το αγόρι από την εναρκτήρια σκηνή ολοκληρώνει την παράδοση της αλληλογραφίας στη θέση του Φρανσουά.
Θέματα
Στο Μέρα γιορτής, αρκετά χαρακτηριστικά της δουλειάς του Τατί εμφανίζονται πρώτη φορά σε ταινία μεγάλου μήκους. Σε μεγάλο βαθμό, πρόκειται για μια κωμωδία στα χνάρια της βουβής παράδοσης, με διαλόγους που χρησιμοποιούνται κατά καιρούς για να αφηγηθούν μέρος της ιστορίας και μια ηλικιωμένη με μια κατσίκα να εμφανίζεται ενίοτε ως σιβυλλική σχολιάστρια. Η μουσική είναι ως επί το πλείστον μέρος της πληκής, αφού προέρχεται από το καρουζέλ, την μπάντα πνευστών του χωριού και την πιανόλα στο μπαρ. Τα ηχητικά εφέ είναι ζωτικής σημασίας, με ευφάνταστη χρήση φωνών και άλλων ήχων του περιβάλλοντος, ιδιαίτερα των πουλιών, που προσδίδουν ατμόσφαιρα και χιούμορ.
Ένας κρυφός παράγοντας σε αυτήν και τις επόμενες ταινίες είναι ότι ο παλιός κόσμος της αγροτικής Γαλλίας παρουσιάζεται με καμπύλες, στον χώρο και στον χρόνο, με τους ανθρώπους και τα ζώα τους να ακολουθούν ρευστά και χαλαρά προγράμματα, ενώ ο νέος κόσμος με πρότυπο τις ΗΠΑ και την αποτελεσματικότητα που προβάλλει, λειτουργεί σε ευθεία γραμμή μέσα σε άκαμπτα χρονικά πλαίσια, που συμβολίζονται από τον Φρανσουά που αγωνίζεται να επιταχύνει τη διαδρομή του.
Παραγωγή
Η ταινία γυρίστηκε αρχικά τόσο σε ασπρόμαυρο φιλμ όσο και σε Thomsoncolor, μια πειραματική τότε τεχνική έγχρωμης ταινίας. Ο Τατί χρησιμοποίησε και τις δύο μορφές, φοβούμενος ότι το Thomsoncolor μπορεί να μην είναι πρακτικό, μια ανησυχία που αποδείχτηκε βάσιμη όταν η εταιρεία δεν κατάφερε να ολοκληρώσει την επεξεργασία. Στη συνέχεια κυκλοφόρησε μια έγχρωμη έκδοση, με έναν πρόλογο που περιγράφει λεπτομερώς την αποτυχία της αρχικής έγχρωμης εγγραφής και υποστηρίζει ότι η νέα έκδοση είναι σύμφωνη με τις προθέσεις του σκηνοθέτη. Αυτή η έκδοση είναι στην πραγματικότητα έργο της Σοφί Τατισέφ, μοντέρ και κόρης του Ζακ Τατί, και του Φρανσουά Εντ, διευθυντή φωτογραφίας, οι οποίοι επιμελήθηκαν σχολαστικά και αποκατέστησαν την ταινία από το αρχικό αρνητικό που είχε διατηρηθεί και αποθηκευτεί επί χρόνια. Η συσκευή που επέτρεψε την επαναφορά των χρωμάτων αποκαταστάθηκε και επέτρεψε, περισσότερα από σαράντα χρόνια μετά τα γυρίσματα, να παραχθούν τα αρχικά χρώματα της ταινίας.
Live Scars
Το Live Scars είναι ζωντανά ηχογραφημένο άλμπουμ του αμερικανικού thrash metal συγκροτήματος Dark Angel, το οποίο κυκλοφόρησε σε μορφή βινυλίου το 1990 μέσω της δισκογραφικής εταιρείας "Combat Records" και επανεκδόθηκε σε μορφή CD στις 6 Μαρτίου του 2000 από την "Century Media".
Μέρα γιορτής (ταινία)
Παραγωγή
Βάση για την ταινία αποτέλεσε μια ταινία μικρού μήκους του Τατί με τίτλο«Σχολή ταχυδρόμων» (1947).
Κυκλοφορία
Πάνω από 7 εκατομμύρια εισιτήρια για την ταινία Μέρα γιορτής είχαν πουληθεί στους γαλλικούς κινηματογράφους μέχρι το 2015, καθιστώντας την μία από τις 40 πιο δημοφιλείς γαλλικές ταινίες όλων των εποχών.
Live Scars
Η ηχογράφηση του δίσκου έγινε στο "Country Club" της Ρεσέντα, στην Καλιφόρνια των Ηνωμένων Πολιτειών.
Στην έκδοση του CD περιλαμβάνεται και η διασκευή στο "I Don't Care About You" των Fear.
Μέρα γιορτής (ταινία)
Υποδοχή
Στον ιστότοπο Rotten Tomatoes, η ταινία έχει βαθμολογία αποδοχής 100% με βάση 21 κριτικές, με σταθμισμένη μέση βαθμολογία 8,3/10.
Live Scars
Αρχική Έκδοση βινυλίου
1. Leave Scars (Durkin, Hoglan) - 9:31
Μέρα γιορτής (ταινία)
Εξωτερικοί σύνδεσμοι
Κατηγορία:Γαλλικές ασπρόμαυρες ταινίες Κατηγορία:Γαλλικές κωμικές ταινίες Κατηγορία:Ταινίες του 1949 Κατηγορία:Γαλλικές ταινίες Κατηγορία:Γαλλόφωνες ταινίες Κατηγορία:Ταινίες γυρισμένες στη Γαλλία
Live Scars
Αρχική Έκδοση βινυλίου
2. The Burning of Sodom (Durkin, Hoglan, Doty, Meyer) - 3:32
3. Never to Rise Again (Durkin, Hoglan, Reinhart) - 4:09
4. The Promise of Agony (Durkin, Hoglan) - 8:50
5. We Have Arrived (Doty, Durkin, Meyer, Yahn, Schwarz) - 3:56
Bonus τραγούδια στην έκδοση του CD
6. Death is Certain (Life is not) (Durkin, Hoglan, Meyer, Yahn) - 3:53
7. The Death of Innocence (Durkin, Hoglan) - 5:36
8. I Don't Care About You (Ving) - 3:21
Τα μέλη του συγκροτήματος
Το "Live Scars" ηχογραφήθηκε από τους εξής μουσικούς:
Πηγές
Κατηγορία:Δισκογραφία των Dark Angel Κατηγορία:Άλμπουμ του 1990
Ευρωπαϊκό Πολιτιστικό Κέντρο Δελφών
Το Ευρωπαϊκό Πολιτιστικό Κέντρο Δελφών (Ε.Π.Κε.Δ) ιδρύθηκε το 1977, με έμπνευση και πρωτοβουλία του Κωνσταντίνου Καραμανλή, με στόχο την δημιουργία στους Δελφούς ενός ευρωπαϊκού και παγκόσμιου πνευματικού κέντρου.
Ιστορικό
Οι πρώτες σκέψεις και συζητήσεις ξεκινούν στη δεκαετία του 1930 όταν, στον απόηχο των Δελφικών Εορτών (1927 και 1930), ψηφίζεται από την τότε Βουλή και Γερουσία νόμος που προέβλεπε την ίδρυση και οργάνωση στους Δελφούς, Διεθνούς Κέντρου Πνευματικής Συνεργασίας των Λαών κατά μίμηση των "θησαυρών" των αρχαίων Ελληνικών πόλεων στους Δελφούς.
Κατά τον Μάρτιο του 1957 υποβάλλεται από ομάδα Ελλήνων βουλευτών πρόταση στο Συμβούλιο της Ευρώπης για ίδρυση Πνευματικού Κέντρου στους Δελφούς, η οποία και έγινε αποδεκτή. Το 1966 αρχίζουν οι εργασίες για την κατασκευή συνεδριακού κέντρου και ξενώνα. Το κόστος καλύπτεται από κρατικούς πόρους και με εφάπαξ οικονομική συμβολή από το Συμβούλιο της Ευρώπης.
Στις 22 Ιουλίου 1977, με νόμο της Βουλής των Ελλήνων ιδρύεται το Ευρωπαϊκό Πολιτιστικό Κέντρο Δελφών, ως Νομικό Πρόσωπο Ιδιωτικού Δικαίου, υπό την εποπτεία του Υπουργείου Πολιτισμού και υπό την αιγίδα του Συμβουλίου της Ευρώπης. Σύμφωνα με τον Ιδρυτικό νόμο, σκοπός του Ε.Π.Κε.Δ. είναι η «εξυπηρέτησις διεθνούς πολιτιστικού συμφέροντος» και «η ανάπτυξις των κοινών πολιτιστικών στοιχείων, τα οποία ενώνουν τους λαούς της Ευρώπης» με «σύνταξιν μελετών Ευρωπαϊκού Πολιτισμού, την διοργάνωσιν συναντήσεων και πάσης φύσεως δραστηριοτήτων πολιτιστικού περιεχομένου…».
Το Διοικητικό Συμβούλιο του Ε.Π.Κε.Δ. αποτελείται από 11 μέλη εκ των οποίων οι 7 είναι Έλληνες ενώ οι υπόλοιποι προέρχονται από άλλες χώρες του Συμβουλίου της Ευρώπης. Εξ αξιώματος περιλαμβάνονται ο Γενικός Γραμματέας του Συμβουλίου της Ευρώπης και εκπρόσωποι των Ελληνικών Υπουργείων Πολιτισμού και Εξωτερικών. Τα υπόλοιπα μέλη είναι προσωπικότητες των Γραμμάτων και των Τεχνών. Το Διοικητικό Συμβούλιο και ο Διευθυντής του Ε.Π.Κε.Δ. ορίζονται με απόφαση του Υπουργού Πολιτισμού με τριετή θητεία που μπορεί να ανανεώνεται ενώ ο τακτικός προϋπολογισμός του Ε.Π.Κε.Δ. προέρχεται από επιχορήγηση του Υπουργείου Πολιτισμού.
Δελφοί
Το Συνεδριακό Συγκρότημα του Ευρωπαϊκού Πολιτιστικού Κέντρου Δελφών βρίσκεται στη δυτική άκρη του σημερινού χωριού των Δελφών. Απλώνεται σε ιδιόκτητη δενδροφυτευμένη έκταση 100 στρεμμάτων και περιλαμβάνει Συνεδριακό Κέντρο, Ξενώνα και υπαίθριο Θέατρο.
Το Συνεδριακό Κέντρο και ο Ξενώνας χτίστηκαν στα μέσα της δεκαετίας του 1960, σε σχέδια των Κώστα Κιτσίκη και Αντώνη Λαμπάκη και αποτελούν τυπικό αρχιτεκτονικό δείγμα του Μοντέρνου Κινήματος. Τα κτίρια συνθέτουν ένα κομψό αρχιτεκτονικό σύνολο από αυτόνομους διακριτούς όγκους που ακολουθούν τις φυσικές κλίσεις του εδάφους, με μεγάλα ανοίγματα και αίθρια.
Το Συνεδριακό Κέντρο διαθέτει δύο κύριες και τέσσερις βοηθητικές αίθουσες συσκέψεων, βιβλιοθήκη και χώρους γραμματείας. Ο Ξενώνας είναι σύγχρονη ξενοδοχειακή μονάδα μεσαίου μεγέθους, με 46 συνολικά δωμάτια, βεράντες, μπαρ, χώρο εστιατορίου, σαλόνι και υποδοχή. Το 2005 προστέθηκε στην υποδομή του Κέντρου το υπαίθριο θέατρο Φρύνιχος, σε σχέδια των αρχιτεκτόνων Ελένης Χατζηνικολάου και Σόλωνα Ξενόπουλου, στο ύφος των αρχαίων θεάτρων, με επένδυση από πέτρα, χωρητικότητας 1.100 θέσεων. Διαθέτει ισόγεια αίθουσα πολλαπλών χρήσεων, κατάλληλη για εκθέσεις και σεμινάρια. Παράλληλα, στους κήπους και στους πευκώνες του Συνεδριακού Κέντρου, υπάρχει Πάρκο Γλυπτικής με σημαντικά έργα σύγχρονων Ελλήνων και ξένων καλλιτεχνών.
Αθήνα
Στην Αθήνα εδρεύει η κεντρική υπηρεσία του κέντρου, η οποία στεγάζεται σε ιδιόκτητο νεοκλασικό κτίριο του 19ου αιώνα στην περιοχή της Πλάκας, που αγοράστηκε το 1983. Στο εσωτερικό έγιναν οι ελάχιστες δυνατές παρεμβάσεις που επέβαλε η νέα του λειτουργία με γραφεία στο ισόγειο και στον όροφο ενώ το υπόγειο διαρρυθμίστηκε σε ενιαίο χώρο, όπου φιλοξενούνται κατά καιρούς μικρά εικαστικά γεγονότα, διαλέξεις, σεμινάρια κλπ.
Κεντρική εκδήλωση
Η κεντρική εκδήλωση του Ευρωπαϊκού Πολιτιστικού Κέντρου Δελφών οργανώνεται συνήθως κατά το πρώτο δεκαήμερο του Ιουλίου κάθε έτους και περιλαμβάνει διεθνές επιστημονικό συμπόσιο και καλλιτεχνικό πρόγραμμα (θέατρο, μουσική, εικαστικά, χορό, παραγωγή ντοκιμαντέρ κ.α.).Το γενικό θέμα αποφασίζεται σε ειδική συνεδρίαση του Δ.Σ. του Ε.Π.Κε.Δ. Ενδεικτικά αναφέρονται οι Διεθνείς Συναντήσεις Αρχαίου Δράματος, οι Διεθνείς Συναντήσεις Μουσικής και Μουσικολογίας, η Διεθνής Συνάντηση «Απόλλων», η Πολιτιστική Αμφικτυονία, κλπ.
Ειδική ενότητα αποτελούν οι εκδηλώσεις επετειακού χαρακτήρα, όπως το Αφιέρωμα Δελφικών Εορτών, κατά την εβδομηκοστή επέτειο των πρώτων Δελφικών Εορτών το 1997, το διεθνές συμπόσιο "Από το Διαφωτισμό στις Επαναστάσεις", κατά την 200ή επέτειο από τον θάνατο του Ρήγα Βελεστινλή,  το Έτος Σωκράτη, με την ευκαιρία της συμπλήρωσης 2.400 χρόνων από τον θάνατο του μεγάλου Αθηναίου φιλοσόφου, το " Έτος Περικλέους- Έτος Δημοκρατίας", με την ευκαιρία της συμπλήρωσης 2.500 χρόνων από τη γέννηση του μεγάλου Αθηναίου πολιτικού,  Έτος Μαραθώνα κατά την 2.500ή επέτειο από την ιστορική μάχη, το Έτος Καβάφη κ.α.