Προς το περιεχόμενο

Αρχάριος σε python. Τι τρέχει με την Py3K;


soturin

Προτεινόμενες αναρτήσεις

(σημ.: στο τσακ ήμουν να το postάρω στο forum του προγραμματισμό, αλλά μου κάθονταν ως πιο κατάλληλο εδώ. Εάν κριθεί έτσι, μετακινήστε το)

 

Για λόγους γενικής ενασχόλησης με προγραμματισμό, όχι σε κάποιο πρακτικό βάθος, αλλά ως γνώση που θα βοηθήσει σε πολλά πράγματα το σκέφτομαι καιρό για την περίπτωση της python (με παροτρύνσεις βέβαια και σεβαστού μέλους :P).

 

Θα ήθελα κάποιο σχόλιο, επισήμανση ή πρόταση (ίσως και σε υπάρχον θέμα που δεν βρήκα :o) για το ζήτημα.

Πιο συγκεκριμένα με την τρίτη non-combatible με 2.x έκδοση, αν και στη μάθησή της αμφιβάλλω αν έχει ουσιαστικές διαφορές, θα έπρεπε να προσέξω κάτι; Να αναζητήσω το βιβλίο που ήξερα ήδη;

 

Ευχαριστώ :-)

 

(φυσικά μόνο ωραίο θα είναι η κουβέντα να ανοίξει για την python και την py3k γενικότερα)

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Καλύτερα να πάει στο Προγραμματισμό.

 

Η Python 2.x θα συνεχίσει να χρησιμοποιείται για αρκετά χρονάκια ακόμα σε διανομές όπως η RHEL 4.χ-5.χ-6.χ (7 year life cycle omgwtfbbq), η Py3k λογικά σε 1-2-3 χρόνια θα αρχίσει να γίνεται δημοφιλής και να χρησιμοποιείται εβραίος(:P). Tutorial μπορείς να βρεις και από την επίσημη σελίδα της python http://docs.python.org/download.html για την 2.6.1, http://docs.python.org/3.0/download.html για την 3.0. Θα προτιμούσα να ασχοληθώ με την 3.0 αν άρχιζα για χόμπι.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

@soturin:

 

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

 

Αν και «μιλάω» αρκετές scripting γλώσσες (bash, perl, ruby και python), η python είναι αυτή που μακράν με έχει κερδίσει, για 4 κυρίως λόγους:

 

  1. Είναι πολύ compact ως γλώσσα. Μαθαίνεις όλη τη γραμματική της μέσα σε μια μέρα, άνετα.
  2. Είναι καλοσχεδιασμένη και συνεπής με τις αρχές της. Ο κώδικας ενός άλλου βγάζει σχεδόν πάντα νόημα, σε αντίθεση π.χ. με την perl, όπου δεν βγάζω νόημα από κώδικα που έχω γράψει ο ίδιος πριν 2 μήνες :P
  3. Έχει πολύ πλούσια και ποιοτική standard library με υποστήριξη για ό,τι χρειαστείς, ενώ και τα modules που βρίσκεις συνήθως είναι πολύ ποιοτικά.
  4. Το IPython, ένα interactive shell, το οποίο είναι απλά το καλύτερο interactive shell που έχω δει ποτέ σε γλώσσα. Στο συνηθισμένο setup μου, έχω ένα παράθυρο με ipython ανοιχτό, στο οποίο κάνω το prototyping του κώδικα, και έναν vim όπου γράφω τον τελικό κώδικα όπως τον θέλω. Η όλη διαδικασία είναι ταχύτατη και συνήθως τα προγράμματα παίζουν με την πρώτη (πράγμα που δε μου συμβαίνει με την perl).

 

Όσον αφορά στην Py3K, βγήκε μεν, αλλά θα περάσει αρκετός καιρός μέχρι να εκτοπίσει την 2.x. Υπάρχουν εκατοντάδες γραμμές κώδικα python 2.x στον κόσμο σε πολύ σοβαρά production συστήματα, οι οποίες πρέπει να συνεχίσουν να συντηρούνται. Επομένως, εγώ θα σου έλεγα να ξεκινήσεις με python 2.5 ή 2.6, όπου βρίσκεις ό,τι θες, απλά να κοιτάξεις να μάθεις τι αλλάζει από την 2 στην 3K, ώστε, όταν έρθει η ώρα, να μπορείς να γράψεις κώδικα και σε Py3K.

 

Συμπερασματικά: go for it, δε θα το μετανιώσεις :-)

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Αν και δεν έχω πολύ καλή γνώση της python θα συμφωνήσω κι εγώ με το να ασχοληθείς με το 2.x branch κυρίως γιατί θα βρείς άπειρες γραμμές κώδικα στο Internet για αυτή την έκδοση και πάρα πολύ κόσμο που να ασχολείται με αυτή άρα και πολλές πηγές για βοήθεια.

Επίσης σαν Object Oriented γλώσσα θα σε βάλει στο νόημα αυτής της κατηγορίας προγραμματισμού.

Στη θέση σου (με τις εμπειρίες που έχω πλέον) θα έμενα μακρυά από την Perl ακριβώς για το λόγο που είπε και ο apoikos (γνωστό τσιράκι της python βεβαίως βεβαίως). Στο μέλλον πάντως και αφού αποκτήσεις εμπιστοσύνη στις δυνάμεις σου ως developer θα σου έλεγα να ρίξεις μιά ματιά κι εκεί. Ruby (ruby-on-rails ή οποιοδήποτε άλλο flavor) δεν με ενθουσίασαν ποτέ.

Αν βέβαια έχεις κατά νου να περάσεις και σε προγραμματισμό "κανονικό" προτείνεται ανεπιφύλακτα η all time classic ANSI C είτε και η C++ τώρα που βγαίνει και η νέα έκδοσή της.

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

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

μείνε μακρυά από τη Java όχι για κανέναν άλλο λόγο αλλά γιατί δεν θα σου προσφέρει τίποτα ούτε σε γνώσεις ούτε σε χρησιμότητα.

 

Η java έχει πολλά θετικά στοιχεία και μπορεί εύκολα να σου προσφέρει γνώσεις (object oriented proggraming αλλά και γενικότερες τεχνικές προγραμματισμού).

Είναι αρκετά εύκολη στη μάθηση απο αρχάριο,με πολύ σαφές και δομημένο συντακτικό.Όσο για την χρησιμότητα , μπορείς να φτιάξεις απο απλά java applets μέχρι full featured εφαρμογές που δεν έχουν να ζηλέψουν τίποτα.

Να αναφέρω και το java RMI που μπορεί να προσφέρει ευέλικτα και πλήρως λειτουργικά κατανεμημένα συστήματα και τη δυνατότητα object serialization, η οποία αν δεν κάνω λάθος δεν υπάρχει σε καμμία άλλη γλώσσα(όχι οτι μας βγάζει απο κάποιο αδιέξοδο απλά συμμορφώνεται κατάλληλα με τον αντικειμενοστρεφή προγγραματισμό).Δεν θα αναλύσω άλλο, απλά θα ήθελα τη γνώμη σου γιατί με πλήγωσες με την αρνητική σου διάθεση απέναντι στην πολυαγαπημένη java.:lol:

Να προσθέσω επίσης το σημαντικότερο πλεονέκτημα της το οποίο θεώρησα αυτονόητο αλλά αξίζει να αναφερθεί γιατί δίνει πολλόυς πόντους σε χρησιμότητα.Την εικονική μηχανή (jvm) η οποία επιτρέπει τα προγράμματα γραμμένα σε java να τρεχουν ανεξαρτήτως λειτουργικού συστήματος και αρχιτεκτονικής cpu.

 

Όσο για την python θα συμφωνήσω και εγώ να ξεκινήσεις με 2.χ και αν κάποια στιγμή επιλέξεις να μεταβείς σε py3k δεν νομίζω οτι θα συναντήσεις δυσκολίες.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

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

 

(sorry αλλά τόση ώρα δεν απαντούσα γιατί δεν είχα σύνδεση λόγω... @$@$#$rthnet :mad: )

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Δεν θα αναλύσω άλλο, απλά θα ήθελα τη γνώμη σου γιατί με πλήγωσες με την αρνητική σου διάθεση απέναντι στην πολυαγαπημένη java.:lol:

 

Έχω περάσει ένα αρκετά σημαντικό κομμάτι της φοιτητικής και επαγγελματικής μου ζωής γράφοντας Java θα παρατηρήσω 2-3 πραγματάκια:

1. Ο garbage collector της VM είναι ΑΠΑΡΑΔΕΚΤΟΣ. Επειδή ακριβώς δεν ξέρει πότε πρέπει να καθαρίσει objects από την μνήμη, δεν καθαρίζει κανένα. Και ξαφνικά βλέπεις ότι το καταπληκτικό p2p που έχεις γράψει μετά από 4-5 ώρες λειτουργίας έχει φάει καμμιά 200mb μνήμη. Φυσικά μπορείς να τον καλέσεις και on demand, αλλά αφ' ενός δεν κάνει και τίποτα αφ' εταίρου να υπενθυμίσω το new και το delete[] της C++; Και σε αυτή την περίπτωση ξέρεις και τι σβήνει.

2. Ναι είναι υπερβολικά εύκολο να γράψεις σε Java σου δίνει τα πάντα στο πιάτο π.χ. έτοιμα Objects για να φτιάξεις TCP sockets ή ολόκληρο API για αναπαραγωγή multimedia αλλά μέσα σε όλα αυτά, ένα μικρό πραγματάκι που λέγεται multiple inheritance δεν το σκέφτηκε κανένας; Υπάρχουν τα interfaces αλλά δεν είναι το ίδιο, ή είμαστε Object Oriented ή δεν είμαστε :-)

3. Όσον αφορά το RMI δεν είναι άσχημο αλλά σε περιορίζει στο να χρησιμοποιήσεις παντού Java σε όλο το σύστημα. Και για quick and dirty λύσεις σε συστήματα τα οποία δεν σε πολυνοιάζει το scalability είναι καλή λύση αλλά το να το χρησιμοποιείς στη θέση ενός π.χ. CORBA framework όπως είχα δει στο παρελθόν επανειλημμένως είναι ηλίθιο. Και στο κάτω κάτω, μάθε το IDL, διάλεξε και κάποιο CORBA framework που να είναι γραμμένο σε Java και χρησιμοποίησε το, each tool for it's job! Σημείωση εδώ οτι και η CORBA φυτοζωεί αλλά τουλάχιστον σαν framework είναι σαφώς ανώτερο για large scale systems από το RMI και ας πλασάρονται και τα δύο σαν distributed computing "solutions"

 

Και ένα τελευταίο αστειάκι για την Java γιατί δεν μπορώ να κρατηθώ: ξέρει κανείς γιατί το σήμα της είναι η κούπα του καφέ; Γιατί όταν πας να φορτώσεις τη VM λες "ας πάω τώρα να φτιάξω και έναν καφέ". Τις περισσότερες φορές δε, όταν επιστρέψεις ακόμα δεν έχει φορτώσει :-) (lame joke, το ξέρω)

 

Τέλος πάντων, developer (ουσιαστικά) δεν είμαι και να πω την αλήθεια, έχω αρκετό καιρό να γράψω Java, περίπου 2 χρόνια. Αλλά την έζησα από την έκδοση 1.2 και σε αυτήν έκανα τα πρώτα μου σοβαρά βήματα ως προγραμματιστής. Παρ' όλα αυτά όταν πέρασε η πρώτη χαρά μετά είδα ότι δεν είναι και τόσο τρελό εργαλείο.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Επειδή η Python μου έχει κινήσει το ενδιαφέρον, όπως και ο προγραμματισμός στο linux γενικά, θα ήθελα να ρωτήσω τα εξής:

Στη συγκεκριμμένη γλώσσα, μπορεί να γραφτεί κώδικας που να μπορεί να γίνει compile ή είναι μόνο διερμηνευτική γλώσσα; Μπορούν να φτιαχούν binaries;

Υπάρχει κάποιο βιβλίο που θα μου προτείνατε; Επισκόπησα το "Python In A Nutshell" εν τάχει, δεν είμαι σίγουρος όμως ότι είναι αυτό που χρειάζομαι.

Είναι η python κατάλληλη για τη δημιουργία εφαρμογών με γραφικό περιβάλλον; Με ενδιαφέρουν τα στοιχειώδη τουλάχιστον: Παράθυρα, buttons, combo-boxes, forms κλπ.

Προέρχομαι από την προ-windows εποχή προγραμματισμού σε DOS (Basic, COBOL, Pascal, dBase κλπ) και η επαφή μου με προγραμματισμό στην εποχή των windows αφορά κυρίως Visual Basic (και μερικές προσπάθειες σε Delphi). Υπάρχει στο linux κάτι ανάλογο με τη Visual Basic; Η πληθώρα των ActiveX και ο προγραμματισμός δια μέσου του γραφικού περιβάλλοντός της με είχαν ξενίσει στην αρχή αλλά μου φάνηκαν πολύ ενδιαφέροντα στη συνέχεια.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Επειδή η Python μου έχει κινήσει το ενδιαφέρον, όπως και ο προγραμματισμός στο linux γενικά, θα ήθελα να ρωτήσω τα εξής:

 

1. Στη συγκεκριμμένη γλώσσα, μπορεί να γραφτεί κώδικας που να μπορεί να γίνει compile ή είναι μόνο διερμηνευτική γλώσσα; Μπορούν να φτιαχούν binaries;

http://effbot.org/zone/python-compile.htm

 

2. Υπάρχει κάποιο βιβλίο που θα μου προτείνατε; Επισκόπησα το "Python In A Nutshell" εν τάχει, δεν είμαι σίγουρος όμως ότι είναι αυτό που χρειάζομαι.

 

http://www.python.org/doc/2.5.2/tut/tut.html

http://docs.python.org/tutorial/

 

 

3. Είναι η python κατάλληλη για τη δημιουργία εφαρμογών με γραφικό περιβάλλον; Με ενδιαφέρουν τα στοιχειώδη τουλάχιστον: Παράθυρα, buttons, combo-boxes, forms κλπ.

ναί

http://en.wikipedia.org/wiki/Tkinter

http://en.wikipedia.org/wiki/WxWidgets

 

Προέρχομαι από την προ-windows εποχή προγραμματισμού σε DOS (Basic, COBOL, Pascal, dBase κλπ) και η επαφή μου με προγραμματισμό στην εποχή των windows αφορά κυρίως Visual Basic (και μερικές προσπάθειες σε Delphi).

 

4. Υπάρχει στο linux κάτι ανάλογο με τη Visual Basic;

ναί

http://gambas.sourceforge.net/

 

KBasic Brings BASIC to Qt World

http://dot.kde.org/1232499049/

 

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

 

http://thancad.sourceforge.net/

http://www.pythoncad.org/

http://wiki.python.org/moin/GuiProgramming

 

 

δεν είμαι του "χώρου"

απλώς χαζεύω απο 'δώ κι' απο 'κεί

 

καλή συνέχεια

.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Δεν ξέρω αν υπάρχει κάποιος τρόπος για να φτιαχτούν binaries γραμμένα σε python αλλά αν υπάρχει θα είναι κάτι παρόμοιο με τον "compiler" για bash scripts που συζητήθηκε στο insomnia πριν λίγο καιρό. Όσον αφορά βιβλία αρχικά ξεκινάω να γράφω κάτι που έχω στο μυαλό μου μέσω man pages και ψάχνοντας στο google. Όταν φτάσω σε κάποιο σημείο που χρειάζεται να χρησιμοποιήσω τεχνικές της γλώσσας που δέν έχω ξανασυναντήσει τότε πάλι μέσω google βρίσκω σελίδες που να εξηγούν σε βάθος αυτό που θέλω να χρησιμοποιήσω. Άρα ούτε εδώ μπορώ να βοηθήσω ιδιαίτερα. Η python έχει αρκετές βιβλιοθήκες για να γράφεις GUI (ενδεικτικά tkinter) οπότε ναι, μπορείς να το κάνεις με ευκολία και σε σχετικά γρήγορο χρονικό διάστημα.

Visual Basic στο Linux απ' όσο ξέρω δεν υπάρχει και αν θες τη γνώμη μου, ευτυχώς. Οι γλώσσες προγραμματισμού έχουν εξελιχθεί πάρα πολύ από εκείνη την εποχή που περιγράφεις και θα δεις ότι ακόμη και για rapid software development υπάρχουν δεκάδες καλύτερες γλώσσες από την VB (στην προ .NET εποχή).

Γενικώς στο development υπάρχει η τάση πλέον να γράφονται όλο και περισσότερα πράγματα σε scripting γλώσσες ή στις παλιές και δοκιμασμένες C/C++ αλλά και σε .NET για win32 binaries. Και όχι άδικα αν σκεφτεί κανείς ότι πλέον οι υπολογιστές είναι τόσο ισχυροί που το overhead του interpreter αντί για native executable είναι αμελητέο. Γλυτώνεις τη χρονοβόρα πολλές φορές διαδικασία του compile και έχεις "ευκολίες" όπως τα Objects σε strongly typed scripting γλώσσες προγραμματισμού.

 

EDIT: καλησπέρα gtroza! Εκτός από το ότι με πρόλαβες, με διόρθωσες κιόλας :P

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Cntrl+X,

Η python δεν μπορεί να βγάλει compiled binaries, αλλά μόνο ενδιάμεσο κώδικα. Αυτός μάλιστα ποικίλει, αναλόγως την υλοποίηση που επιλέγεις, για παράδειγμα, πέρα από την CPython (επίσημη υλοποίηση) που βγάζει τον δικό της bytecode, η Jython βγάζει κώδικα για JVM, και η IronPython για το CLR. Υπάρχουν βέβαια και μερικά πιο εξειδικευμένα projects, όπως το psyco που κάνει Just In Time compilation μερικών ρουτινών, και το πολύ ενδιαφέρον PyPy. Θυμάμαι και ένα project που μετέφραζε ένα υποσύνολο της Python σε C++ νομίζω, αλλά μάλλον έχει εγκαταλειφθεί.

 

Γενικά αν αναρωτιέσαι επειδή θες να γράψεις `κλειστό` κώδικα, θα απογοητευτείς, αν και υπάρχουν κάποια εργαλεία για bytecode obfuscation. Απ' την άλλη αν σε απασχολεί μόνο η διανομή ενός `αυτόνομου` εκτελέσιμου, υπάρχουν εργαλεία που κάνουν package όλο το project σε κάποιο self-extracting binary μαζί με το διερμηνέα της python.

 

Σχετικά με γραφικά προγράμματα, πιστεύω ότι ο προγραμματισμός τους σε python είναι αρκετά εύκολος, ειδικά σε σύγκριση με άλλες γλώσσες όπως η C/C++/Java (μη λαμβάνοντας υπόψιν code generation tools). Δεν έχω ιδέα (ευτυχώς θα έλεγα) από Delphi/Visual Basic οπότε δεν ξέρω πως συγκρίνεται με αυτές. Προσωπικά, όταν θέλω κάποιο γραφικό προγραμματάκι (μη φανταστείς τίποτα φοβερό), στρέφομαι σε pygtk (δεν έχω ασχοληθεί σοβαρά με κάποιο άλλο από τα πολυάριθμα toolkits για τα οποία έχει bindings η Python).

 

Γενικά βρίσκω την python εξαιρετική σαν εργαλείο, εύκολη και γρήγορη για τις περισσότερες δουλειές. Σαν γλώσσα δεν είναι τόσο κομψή από άποψη εκφραστικότητας όσο κάποιες συναρτησιακές γλώσσες με τις οποίες έχει τύχει να ασχοληθώ, αλλά κερδίζει σίγουρα από πλευρά πρακτικότητας (και έχει δανειστεί αρκετά στοιχεία συναρτησιακού προγραμματισμού). Σίγουρα δεν είναι ιδανική για κάθε είδους πράγραμμα, αλλά τελικά τα περισσότερα πράγματα τα γράφω (ή τα κάνω prototype) σε python. Επιπλέον είναι το πρώτο πράγμα που θα σκεφτώ όταν ο συνδυασμός bash/zsh + sed + awk δε φαίνεται να μου προσφέρει αυτό που θέλω (ομολογώ βέβαια ότι δεν έχω κοιτάξει ποτέ την perl, αλλά τη βρίσκω απωθητική).

 

soturin,

Οι διαφορές της python 3k με την 2.x δεν είναι τόσο σημαντικές, τουλάχιστον σε ό,τι αφορά την εκμάθηση της γλώσσας. Δεδομένου ότι η πληθώρα των βιβλίων που έχουν εκδοθεί, αλλά και των online tutorial είναι για 2.χ δεν έχεις και πολλές επιλογές. Ξεκίνα λοιπόν με το dive into python (ή το επίσημο tutorial) και πιστεύω θα είσαι μια χαρά. Όπως αναφέρθηκε, η 2.χ θα υποστηρίζεται για αρκετό καιρό ακόμα.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

gtroza, NullScan, mikeXx,

Ευχαριστώ. Ο λόγος που με ενδιαφέρουν τα binaries δεν είναι ο κλειστός κώδικας αλλά η ταχύτητα εκτέλεσης του προγράμματος. Παρέλειψα να αναφέρω ότι δεν ενδιαφέρομαι για οποιαδήποτε άλλη εκδοχή εκτός από την CPython.

Σε σχέση με Basic, Delphi, από τα ελάχιστα που έχω αντιληφθεί, είναι ότι η Python, είναι Very High Level Programming Language και μολονότι ο κώδικας της θεωρείται αξιοσημείωτα ευανάγνωστος, με ξένισαν οι διάφορες νέες δομές που εισάγει (Iterables, Dictionaries, Tupples), αλλά την εξοικείωση με αυτές τα θεωρώ θέμα χρόνου και οπωσδήποτε δευτερεύον θέμα σε σχέση με το compilation. Επί την ευκαιρία mikeXx, τι εννοείς ενδιάμεσο κώδικα;

Ένα από τα πράγματα που είχα εκτιμήσει στην Delphi, ήταν η δυνατότητα να ενσωματώνει κανείς στον κώδικα επιμέρους βιβλιοθήκες, έτσι ώστε να μπορεί να παράγει ένα μεγάλο αλλά αυτόνομο εκτελέσιμο (αντί πολλών μικρών και σκόρπιων, όπως συχνά συνέβαινε στην VBasic όπου μαζί με το πρόγραμμα έπρεπε να διανέμεις και τα διάφορα ActiveX τα οποία ενδεχομένως είχες χρησιμοποιήσει). Αναρωτιέμαι αν αυτό είναι δυνατό και στην Python, ώστε να δίνεται η δυνατότητα εκτέλεσης ενός προγράμματος χωρίς να απαιτείται η εγκατάσταση των ανάλογων βιβλιοθηκών στο σύστημα (π.χ. tcl).

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

http://docs.activestate.com/tdk/4.1/TclApp.html

Tcl Dev Kit's TclApp can greatly simplify the process of distributing an application that you write in Tcl. TclApp is a tool that collects all of the files needed to run a Tcl application--such as Tcl scripts, graphics and other data files, Tcl extensions, a Tcl interpreter, and the standard Tcl and Tk libraries--into a single executable file. A user can then install this file anywhere on their system and execute it without installing any other packages or otherwise configuring their system.

 

υπάρχει και για Python

ψάξ' το

http://www.activestate.com/activepython/

 

μη ξεχνάς, είμαι άσχετος !

.

Αναρωτιέμαι αν αυτό είναι δυνατό και στην Python, ώστε να δίνεται η δυνατότητα εκτέλεσης ενός προγράμματος χωρίς να απαιτείται η εγκατάσταση των ανάλογων βιβλιοθηκών στο σύστημα (π.χ. tcl).

οι βιβλιοθήκες, είναι κώδικας που χρειάζεται

με κάποιο τρόπο πρέπει να υπάρχει στο "μαγαζί" μας ή δανεικός απο του "γείτονα"

.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

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.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...