mikeXx Δημοσ. 27 Ιανουαρίου 2009 Share Δημοσ. 27 Ιανουαρίου 2009 Cntrl+X, Η python δεν φημίζεται για την ταχύτητα της (ακόμα και ανάμεσα στις interpreted γλώσσες). Πρακτικά όμως, όπως και σε κάθε γλώσσα, τα περισσότερα προβλήματα ταχύτητας/απόδοσης έχουν να κάνουν με λάθη του προγραμματιστή (είτε στην επιλογή αλγορίθμου, είτε στην επιλογή ακατάλληλων δομών δεδομένων, κλπ), και όχι με το performance penalty της ίδιας της Python (που τυπικά κυμαίνεται στο 10x σε σχέση με τη C). Με άλλα λόγια αν ακολουθήσεις κάποια γενικότερα ή ειδικότερα tips, δεν θα έχεις πρόβλημα. Αν πάλι για κάποιο λόγο χρειάζεσαι κάτι γρηγορότερο, η Python διαθέτει ένα κατάλληλο interface ώστε να γράφεις κομμάτια κώδικα (modules για την ακρίβεια) σε C/C++, και κατόπιν να τα χρησιμοποιείς από το python πρόγραμμα σου. Επιπλέον υπάρχει και το psyco που προανέφερα, που κάνει just in time compilation. Για να φτιάχνεις αυτόνομα εκτελέσιμα πρέπει να υπάρχουν κάποια projects, αλλά δεν το έχω ψάξει (π.χ. το py2exe βγάζει εκτελέσιμα για Windows, αλλά όχι ένα). Ο ενδιάμεσος κώδικας (bytecode), είναι μια ενδιάμεση γλώσσα που συνήθως χρησιμοποιείται από compilers ή interpreters. Για παράδειγμα, σε έναν compiler, πολύ συχνά είναι ευκολότερο να κάνεις βελτιστοποίηση (optimization) σε μια ειδικά σχεδιασμένη ενδιάμεση γλώσσα, απ' ότι στην αρχική. Αντίστοιχα, μπορείς να μεταφράζεις πολλές διαφορετικές γλώσσες σε μια κοινή ενδιάμεση, και έτσι να μοιράζεσαι ένα κοινό backend - το μέρος του compiler που κάνει τις βελτιστοποιήσεις και παράγει τον τελικό κώδικα (binary). Αυτό κάνει αρκετά επιτυχώς ο GCC. Ένας interpreter πάλι χρησιμοποιεί τον ενδιάμεσο κώδικα για τους ίδιους λόγους, αλλά τον εκτελεί κατευθείαν αντί να τον μεταγλωττίζει σε τελικό κώδικα, με μια εικονική μηχανή (virtual machine), ένα "νοητό" επεξεργαστή του οποίου οι εντολές είναι οι εντολές της ενδιάμεσης αυτής γλώσσας. Η εικονική μηχανή δεν ξέρει (ούτε τη νοιάζει) από που προήλθε ο ενδιάμεσος κώδικας, γι αυτό μπορείς π.χ. να μεταφράζεις την Python (ή μια άλλη γλώσσα) στην ενδιάμεση γλώσσα της Java (java bytecode) και να εκτελείται στο JVM. Αντίστοιχα με το CLR. Για περισσότερα, http://docs.python.org/glossary.html#term-bytecode και http://en.wikipedia.org/wiki/Bytecode. Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
soturin Δημοσ. 28 Ιανουαρίου 2009 Μέλος Share Δημοσ. 28 Ιανουαρίου 2009 noob's άγνωστη λέξη, tuple Έχω καταλάβει τι κάνει (τουλάχιστον όσα λέει ) αλλά θέλω να το αντιστοιχίσω με μια ελληνική λέξη για να το έχω πιο καλά στο μυαλό μου. (φιλότιμο μέλος του insomnia, το ερμήνευσε ως "δομή" από τα συμφραζόμενα) Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
soturin Δημοσ. 28 Ιανουαρίου 2009 Μέλος Share Δημοσ. 28 Ιανουαρίου 2009 noob's άγνωστη λέξη, tuple Έχω καταλάβει τι κάνει (τουλάχιστον όσα λέει ) αλλά θέλω να το αντιστοιχίσω με μια ελληνική λέξη για να το έχω πιο καλά στο μυαλό μου. (φιλότιμο μέλος του insomnia, το ερμήνευσε ως "δομή" από τα συμφραζόμενα) Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
parsifal Δημοσ. 28 Ιανουαρίου 2009 Share Δημοσ. 28 Ιανουαρίου 2009 Ο ορισμός από το "Dive Into Python" είναι αρκετά καλός: "Immutable lists", δηλαδή λίστες που δε μπορείς να μεταβάλλεις τα περιεχόμενά τους. Αυτά από τη σκοπιά των δομών δεδομένων. Για τον αυστηρά μαθηματικό ορισμό, δες το αντίστοιχο λήμμα σε Wikipedia. Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
parsifal Δημοσ. 28 Ιανουαρίου 2009 Share Δημοσ. 28 Ιανουαρίου 2009 Ο ορισμός από το "Dive Into Python" είναι αρκετά καλός: "Immutable lists", δηλαδή λίστες που δε μπορείς να μεταβάλλεις τα περιεχόμενά τους. Αυτά από τη σκοπιά των δομών δεδομένων. Για τον αυστηρά μαθηματικό ορισμό, δες το αντίστοιχο λήμμα σε Wikipedia. Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
mikeXx Δημοσ. 28 Ιανουαρίου 2009 Share Δημοσ. 28 Ιανουαρίου 2009 soturin, στην ελληνική βιβλιογραφία συναντάται ως "πλειάδα". Για τις ανάγκες της Python μπορείς να το βλέπεις απλά ως immutable list όπως αναφέρει ο parsifal, μιας και αυτή είναι η κύρια χρησιμότητα του (π.χ. αν θες να βάλεις μια λίστα σαν key σε ένα dictionary, πρέπει να την κάνεις tuple πρώτα). Είναι αρκετά χρησιμότερο σε συναρτησιακές γλώσσες, ιδιαίτερα γλώσσες με αυστηρό σύστημα τύπων, όπου για παράδειγμα δεν μπορείς να έχεις μια λίστα από αντικείμενα διαφορετικού τύπου, αλλά μπορείς να έχεις ένα tuple. Σε κάποιες άλλες (π.χ. prolog, erlang) χρησιμεύει και σαν το ισοδύναμο μιας "δομής" που λες, στην ουσία κάτι αντίστοιχο με το struct της C ή το record της Pascal, αλλά χωρίς τα στοιχεία να έχουν κάποιο όνομα, αλλά να προσδιορίζονται μόνο από τη θέση τους. Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
mikeXx Δημοσ. 28 Ιανουαρίου 2009 Share Δημοσ. 28 Ιανουαρίου 2009 soturin, στην ελληνική βιβλιογραφία συναντάται ως "πλειάδα". Για τις ανάγκες της Python μπορείς να το βλέπεις απλά ως immutable list όπως αναφέρει ο parsifal, μιας και αυτή είναι η κύρια χρησιμότητα του (π.χ. αν θες να βάλεις μια λίστα σαν key σε ένα dictionary, πρέπει να την κάνεις tuple πρώτα). Είναι αρκετά χρησιμότερο σε συναρτησιακές γλώσσες, ιδιαίτερα γλώσσες με αυστηρό σύστημα τύπων, όπου για παράδειγμα δεν μπορείς να έχεις μια λίστα από αντικείμενα διαφορετικού τύπου, αλλά μπορείς να έχεις ένα tuple. Σε κάποιες άλλες (π.χ. prolog, erlang) χρησιμεύει και σαν το ισοδύναμο μιας "δομής" που λες, στην ουσία κάτι αντίστοιχο με το struct της C ή το record της Pascal, αλλά χωρίς τα στοιχεία να έχουν κάποιο όνομα, αλλά να προσδιορίζονται μόνο από τη θέση τους. Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
soturin Δημοσ. 28 Ιανουαρίου 2009 Μέλος Share Δημοσ. 28 Ιανουαρίου 2009 Νομίζω κατάλαβα. Το immutable list κομμάτι το χω καταλάβει, τώρα για τον παραλληλισμό με δομή σε άλλες γλώσσες είναι λίγο περίεργο. Πάλι καταλαβαίνω τι λες απλά δεν έχω ασχοληθεί με άλλες γλώσσες ώστε να το αντιλαμβάνομαι πρακτικά. Η απορία πάντως λύθηκε, ευχαριστώ Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
soturin Δημοσ. 28 Ιανουαρίου 2009 Μέλος Share Δημοσ. 28 Ιανουαρίου 2009 Νομίζω κατάλαβα. Το immutable list κομμάτι το χω καταλάβει, τώρα για τον παραλληλισμό με δομή σε άλλες γλώσσες είναι λίγο περίεργο. Πάλι καταλαβαίνω τι λες απλά δεν έχω ασχοληθεί με άλλες γλώσσες ώστε να το αντιλαμβάνομαι πρακτικά. Η απορία πάντως λύθηκε, ευχαριστώ Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.