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


Εκτός από τις παραστάσεις (ένα πρόβλημα που θα μπορούσε μερικές φορές να λυθεί χάρη στην ευκολία της διασύνδεσης Python με μονάδες C), νομίζετε ότι είναι σωστή για χρήση παραγωγής στην ανάπτυξη της stand-alone σύνθετες εφαρμογές (σκεφτείτε για παράδειγμα σε έναν επεξεργαστή κειμένου ή ένα γραφικό εργαλείο);


Τι IDE θα προτείνατε; Το IDLE παρέχεται με την Python δεν είναι αρκετή ακόμα και για μικρά έργα κατά τη γνώμη μου.

 
Είναι Python καλό για τα μεγάλα έργα λογισμικού (όχι web based);
================================================================



Έχουμε χρησιμοποιήσει IronPython να χτίσει εφαρμογή λογιστικών φύλλων μας ναυαρχίδα (κωδικός παραγωγής 40kloc - και αυτό είναι Python, που σημαίνει ΙΜΟ loc ανά χαρακτηριστικό είναι χαμηλή) σε [αναλυτή συστημάτων](http://www.resolversystems.com/) , οπότε θα ήθελα σίγουρα να πω ότι είναι έτοιμο για χρήση στην παραγωγή σύνθετων εφαρμογών.


Υπάρχουν δύο τρόποι με τους οποίους αυτή μπορεί να μην είναι μια χρήσιμη απάντηση για να σας :-)


1. Είμαστε χρησιμοποιώντας IronPython, δεν είναι η πιο συνηθισμένη CPython. Αυτό μας δίνει το τεράστιο πλεονέκτημα να είναι σε θέση να χρησιμοποιούν τις βιβλιοθήκες .NET τάξη. Θα μπορεί να τη εαυτό μου για φλεγόμενα εδώ, αλλά θα ήθελα να πω ότι ποτέ δεν έχω δει πραγματικά μια εφαρμογή CPython που έμοιαζε «επαγγελματική» - έτσι ώστε να έχουν πρόσβαση στις WinForms widget που ήταν μια τεράστια νίκη για εμάς. IronPython μας δίνει επίσης το πλεονέκτημα ότι είναι σε θέση να ρίξει εύκολα σε C #, αν χρειαζόμαστε μια αύξηση της απόδοσης. (Αν και για να είμαι ειλικρινής έχουμε *ποτέ δεν* χρειάζεται να το κάνουμε αυτό. Όλα τα προβλήματα απόδοσης μας μέχρι σήμερα ήταν γιατί εμείς επιλέξαμε χαζή αλγόριθμους και όχι επειδή η γλώσσα ήταν αργή.) Χρησιμοποιώντας C # από IP είναι πολύ πιο εύκολο από ό, τι γράφει ένα Παράταση C για CPython .
2. Είμαστε μια Προγραμματισμός κατάστημα Extreme, έτσι γράφουμε δοκιμές πριν γράφουμε κώδικα. Δεν θα γράψω κώδικα παραγωγής σε μια δυναμική γλώσσα, χωρίς να γράψετε τις δοκιμές πρώτα? η έλλειψη ενός βήματος μεταγλώττισης θα πρέπει να καλύπτονται από κάτι, και όπως οι άλλοι άνθρωποι έχουν επισημάνει, refactoring χωρίς να μπορεί να είναι δύσκολο. (Απάντηση Greg Hewgill υποδηλώνει ο ίδιος είχε το ίδιο πρόβλημα Από την άλλη πλευρά, δεν νομίζω ότι θα ήθελα να γράψω -. Ή ειδικά refactor - κωδικός παραγωγής σε *οποιαδήποτε* γλώσσα αυτές τις μέρες, χωρίς να γράψετε τις δοκιμές πρώτα - αλλά YMMV.)


Re: το IDE - ήμασταν λίγο πολύ καλά με κάθε άτομο που χρησιμοποιεί το αγαπημένο πρόγραμμα επεξεργασίας κειμένου τους? αν προτιμάτε κάτι πιο βαρύ τότε [WingIDE](http://www.wingware.com/products) είναι αρκετά καλά-θεωρείται.

 

Κατά τη γνώμη μου python είναι πανέτοιμη για την ανάπτυξη πολύπλοκων εφαρμογών. Βλέπω πύθωνες δύναμη πάνω στην πλευρά του διακομιστή από το γράψιμο γραφικών πελάτες. Αλλά ρίξτε μια ματιά στο <http://www.resolversystems.com/> . Αναπτύσσουν ένα ολόκληρο υπολογιστικό φύλλο σε python χρησιμοποιώντας τη θύρα .net IronPython.


Αν είστε εξοικειωμένοι με την έκλειψη ρίξτε μια ματιά στο [pydev](http://pydev.sourceforge.net/) η οποία παρέχει αυτόματη συμπλήρωση και τον εντοπισμό σφαλμάτων υποστήριξη για python με όλα τα άλλα καλούδια έκλειψη όπως υποστήριξη svn. Ο τύπος ανάπτυξη έχει μόλις αγοράσει από [Aptana](http://aptana.com/blog/pcolton/pydev_news) , οπότε αυτό θα είναι σταθερή επιλογή για το μέλλον.


@Marcin



> 
> Μειονεκτήματα: ως μια δυναμική γλώσσα, έχει τον τρόπο χειρότερα υποστήριξη IDE (ορθή συμπλήρωση σύνταξη απαιτεί στατική πληκτρολόγηση, είτε ρητή σε Java ή συνάγεται το ΟΕΙΜ),
> 
> 
> 


Έχετε δίκιο, ότι η στατική ανάλυση δεν μπορεί να παράσχει πλήρη ολοκλήρωση σύνταξη για δυναμικές γλώσσες, αλλά κάτι pydev κάνει τη δουλειά του πολύ καλά. Ακόμη περισσότερο έχω ένα διαφορετικό στυλ ανάπτυξης, όταν προγραμματισμού Python. Έχω πάντα μια συνεδρία IPython ανοιχτό και με ένα F5 εγώ δεν πάρει μόνο την τέλεια ολοκλήρωση από IPython, αλλά αντιρρήσεις ενδοσκόπηση και τη χειραγώγηση, καθώς και.



> 
> Αλλά αν θέλετε να γράψετε δεύτερη Google ή το Yahoo, θα είναι πολύ καλύτερα με C # ή Java.
> 
> 
> 


[Η Google ξαναέγραψε ακριβώς Jaiku](http://www.jaiku.com/blog/2008/08/18/from-the-dev-corner-an-under-the-hood-preview-of-our-new-engine/) να εργαστούν στην κορυφή του App Engine, όλα σε python. Και όσο ξέρω ότι χρησιμοποιούν πολύ πύθωνα μέσα στο google πάρα πολύ.

 

Μου αρέσει python, είναι συνήθως γλώσσα της επιλογής μου αυτές τις μέρες για τις μικρές (μη-gui) πράγματα που κάνω μόνος μου.


Ωστόσο, για ορισμένα μεγάλα έργα Python που έχω αντιμετωπίσει, βρίσκω ότι δεν είναι ακριβώς το ίδιο με τον προγραμματισμό σε ας πούμε, C ++. Δούλευα σε μια γλώσσα parser, και έπρεπε να αντιπροσωπεύουν μια AST στην Python. Αυτό είναι σίγουρα εντός του πεδίου εφαρμογής του τι μπορεί να κάνει Python, αλλά είχα ένα κομμάτι του προβλήματος με κάποια refactoring. Θα άλλαζε την εκπροσώπηση της AST μου και την αλλαγή μεθόδους και τις κατηγορίες γύρω από μια παρτίδα, και βρήκα έχασα την ισχυρή πληκτρολόγησης που θα ήταν στη διάθεσή μου σε διάλυμα C ++. Πάπια πληκτρολογώντας Python ήταν σχεδόν *πάρα πολύ* ευέλικτο και βρήκα τον εαυτό μου προσθέτοντας πολλά `assert`κώδικα για να προσπαθήσει να ελέγξει τα είδη μου ως το πρόγραμμα έτρεξε. Και τότε εγώ δεν θα μπορούσε πραγματικά να είστε σίγουροι ότι όλα ήταν σωστά πληκτρολογήσει αν είχα 100 δοκιμή% κάλυψη κώδικα (που δεν είχα εκείνη την εποχή).


Στην πραγματικότητα, αυτό είναι ένα άλλο πράγμα που μου λείπει μερικές φορές. Είναι δυνατό να γράψει συντακτικά σωστό κώδικα σε Python ότι απλά δεν θα τρέξει. Ο συντάκτης δεν είναι σε θέση να σας πω γι 'αυτό μέχρι να εκτελεί στην πραγματικότητα τον κώδικα, έτσι ώστε σε σπάνια χρησιμοποιούνται κώδικα μονοπάτια όπως χειριστές σφαλμάτων μπορείτε εύκολα να έχετε αόρατο σφάλματα κρύβονται γύρω. Ακόμη και κώδικα που είναι τόσο απλό όσο η εκτύπωση ένα μήνυμα σφάλματος με ένα string format% μπορεί να αποτύχει κατά το χρόνο εκτέλεσης λόγω μη προσαρμοσμένων τύπων.


Δεν έχω χρησιμοποιήσει Python για κάθε ουσία GUI έτσι δεν μπορώ να σχολιάσω αυτό το θέμα.

 

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


Με δεδομένο αυτό, οι περισσότεροι Python (CPython) προγραμματιστές αποδίδουν στην «πρόωρη βελτιστοποίηση είναι η ρίζα όλων των κακών» φιλοσοφία. Με το γράψιμο υψηλού επιπέδου (και σημαντικά πιο αργή) κώδικα Python, μπορεί κανείς να βελτιστοποιήσουν τα σημεία συμφόρησης με τη χρήση C / C ++ δέστρες όταν η εφαρμογή σας έχει σχεδόν ολοκληρωθεί. Στο σημείο αυτό γίνεται όλο και πιο σαφές τι αλγόριθμοι υψηλής έντασης επεξεργαστή σας είναι μέσω της σωστής προφίλ. Με αυτό τον τρόπο, μπορείτε να γράψετε το μεγαλύτερο μέρος του κώδικα σε μια πολύ ευανάγνωστη και διατηρήσιμη τρόπο, επιτρέποντας ταυτόχρονα για επιταχύνσεις κάτω από το δρόμο. Θα δείτε πολλές ενότητες βιβλιοθήκη Python γραμμένη σε C για αυτόν ακριβώς τον λόγο.


Οι περισσότερες βιβλιοθήκες γραφικών σε Python (δηλαδή wxPython) είναι μόνο Python περιτυλίγματα γύρω C ++ βιβλιοθήκες έτσι, είστε λίγο πολύ το γράψιμο σε C ++ backend.


Για να αντιμετωπίσει το ζήτημα IDE, [SPE](http://pythonide.blogspot.com/) (Στάνη της Python Εκδότης) είναι ένα καλό IDE που έχω χρησιμοποιήσει και [Eclipse](http://www.eclipse.org/) με [PyDev](http://pydev.sourceforge.net/) κάνει τη δουλειά του, καθώς και. Και οι δύο είναι OSS, έτσι ώστε να είναι ελεύθεροι να δοκιμάσετε!


[Επεξεργασία] @Marcin: Είχατε εμπειρία γραφής> 30k LOC στην Python; Είναι επίσης αστείο ότι θα πρέπει να αναφέρουμε την επεκτασιμότητα ανησυχίες της Google, δεδομένου ότι είναι η μεγαλύτερη υποστηρικτές της Python! Επίσης, μια μικρή οργάνωση που ονομάζεται NASA χρησιμοποιεί επίσης Python συχνά?) Δείτε [«Ένας προγραμματιστής και 17.000 γραμμές κώδικα αργότερα»](http://www.python.org/about/success/usa/) .

 

Θα βρείτε κυρίως δύο απαντήσεις σε αυτό - το θρησκευτικές ένα και το άλλο θρησκευτικό (εσείς gotta να Πλάκα μου κάνεις Python Όχι ... δεν είναι αρκετά ώριμοι!;) (Ναι, φυσικά, είναι η καλύτερη γλώσσα ποτέ!!!). Θα παραλείψετε ίσως το τελευταίο της θρησκείας (Python ?! χρήση Ruby!). Η αλήθεια, όπως πάντα, είναι κάθε άλλο παρά προφανής.


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


**Μειονεκτήματα** : ως μια δυναμική γλώσσα, έχει τον τρόπο χειρότερα υποστήριξη IDE (ορθή συμπλήρωση σύνταξη **απαιτεί** στατική πληκτρολόγηση, είτε ρητή σε Java ή συνάγεται το ΟΕΙΜ), σύστημα το αντικείμενό της είναι πολύ από το τέλειο (διασυνδέσεις, κανείς;) και είναι εύκολο να καταλήξει με βρώμικο κώδικα που έχει μεθόδους που επιστρέφουν είτε int ή boolean ή αντικείμενο ή κάποιο είδος υπό άγνωστες συνθήκες.


Να μου - μου αρέσει Python για scripting, αυτοματισμοί, μικρό webapps και άλλα απλά καλά καθορισμένα καθήκοντα. Κατά τη γνώμη μου, αυτό είναι μακράν **το καλύτερο** δυναμική γλώσσα στον πλανήτη. Τούτου λεχθέντος, θα ήθελα **ποτέ** να το χρησιμοποιήσετε **οποιαδήποτε** δυναμικά δακτυλογραφημένες γλώσσα για να αναπτύξει μια εφαρμογή του σημαντικού μεγέθους.


Πες - θα ήταν ωραία να το χρησιμοποιήσετε για υπερχείλιση στοίβας, το οποίο έχει τρεις προγραμματιστές και υποθέτω όχι περισσότερο από 30k γραμμές κώδικα. Για μεγαλύτερα πράγματα - την πρώτη ανάπτυξη σας θα είναι πολύ γρήγορο, και στη συνέχεια μία φορά την ομάδα και βάση κώδικα μεγαλώνουν τα πράγματα επιβραδύνουν περισσότερο από ό, τι θα κάνατε με Java ή C #. Θα πρέπει να αντισταθμίσει την έλλειψη ελέγχων χρόνο σύνταξης γράφοντας πιο unittests, refactorings πάρει όλο αιτία ποτέ δεν ξέρεις τι έσπασε refacoring σας μέχρι να τελειώσουν όλα τα τεστ ή ακόμα και ολόκληρο το μεγάλο app, κ.λπ.


Τώρα - να αποφασίσει σχετικά με το πόσο μεγάλη ομάδα σας πρόκειται να είναι και πόσο μεγάλη είναι η εφαρμογή υποτίθεται ότι είναι μια φορά γίνεται. Αν έχετε 5 ή λιγότερα άτομα και το μέγεθος του στόχου είναι περίπου Υπερχείλιση στοίβας, να προχωρήσει, γράφουν στην Python. Θα τελειώσει σε χρόνο μηδέν και να είναι ευχαριστημένοι με καλή βάση κώδικα. Αλλά αν θέλετε να γράψετε δεύτερη Google ή το Yahoo, θα είναι πολύ καλύτερα με C # ή Java.


Side-σημείωμα για C / C ++ που αναφέρατε: αν δεν είστε γραπτώς την απόδοση κρίσιμες λογισμικού (δηλαδή μαζική παράλληλη raytracer που θα διαρκέσει για τρεις μήνες καθιστά μια ταινία) ή μια πολύ κρίσιμες συστήματος (δηλαδή του Άρη Lander που θα πετάξει τριών χρόνων κατ 'ευθείαν και έχει μόνο μια πιθανότητα να προσγειωθεί σωστά ή θα χάσετε $ 400mln) δεν το χρησιμοποιούν. Για τις εφαρμογές web, οι περισσότερες εφαρμογές desktop, οι περισσότερες εφαρμογές σε γενικές γραμμές δεν είναι μια καλή επιλογή. Θα πεθάνουν δείκτες εντοπισμού σφαλμάτων και την κατανομή μνήμης στη σύνθετη επιχειρηματική λογική.

 

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


Αν έχετε μια ισχυρή ομάδα, τότε κατά πάσα πιθανότητα δεν είναι ένα ζήτημα, αν είστε εξοικειωμένοι. Αλλά αν έχετε ανθρώπους που είναι πιο 9 έως 5'rs που δεν είναι εξοικειωμένοι με την τεχνολογία, θα χρειαστούν περισσότερη στήριξη και που θα πρέπει να κάνει μια κλήση, εάν τα κέρδη παραγωγικότητας που αξίζουν ό, τι το κόστος αυτής της υποστήριξης είναι.

 

Refactoring είναι αναπόφευκτη σε μεγαλύτερα codebases και η έλλειψη στατική πληκτρολόγηση κάνει αυτό πολύ πιο δύσκολο σε python σε σχέση με στατικούς τύπους γλώσσες.

 

Ένας τρόπος για να κρίνουμε τι python χρησιμοποιείται για να δούμε τι προϊόντα χρησιμοποιούν python αυτή τη στιγμή. Αυτή η [σελίδα της wikipedia](http://en.wikipedia.org/wiki/Python_software) έχει ένα μακρύ κατάλογο, συμπεριλαμβανομένων των διαφόρων πλαισίων web, συστήματα διαχείρισης περιεχομένου, συστήματα ελέγχου εκδόσεων, εφαρμογές γραφείου και IDEs.


Όπως λέει [εδώ](http://en.wikipedia.org/wiki/Python_%28programming_language%29#Usage) -. «Μερικά από τα μεγαλύτερα έργα που χρησιμοποιούν Python είναι ο server Zope εφαρμογή, το YouTube και το αρχικό πελάτη BitTorrent Μεγάλες οργανώσεις που κάνουν χρήση της Python περιλαμβάνουν το Google, το Yahoo !, το CERN και η NASA ITA χρησιμοποιεί Python για ορισμένους. από τα συστατικά του.»


Έτσι, με λίγα λόγια, ναι, είναι «κατάλληλη για χρήση παραγωγής στην ανάπτυξη των αυτόνομων σύνθετες εφαρμογές». Έτσι, είναι πολλές άλλες γλώσσες, με διάφορα πλεονεκτήματα και τα μειονεκτήματα. Ποια είναι η καλύτερη γλώσσα για τη συγκεκριμένη περίπτωση χρήσης σας είναι πολύ υποκειμενική για να απαντήσει, γι 'αυτό δεν θα προσπαθήσουμε, αλλά συχνά η απάντηση θα είναι «ο ένας στους προγραμματιστές σας γνωρίζουν καλύτερα».

 

Δεν έχει τίποτα να προσθέσει στις άλλες απαντήσεις, *εκτός από* ότι αν επιλέξετε python θα **πρέπει να** χρησιμοποιήσετε κάτι σαν [pylint](http://pypi.python.org/pypi/pylint) που κανείς δεν αναφέρθηκε μέχρι τώρα.

 

Είχα μόνο μια εμπειρία python, σκουπίδια-cli το έργο μου.


Ξέρω ότι ίσως κάποια ή όλα τα προβλήματα εξαρτάται από την απειρία μου με πύθωνα.


Βρήκα απογοητευτικό αυτά τα πράγματα: 


1. το δύσκολο να βρει μια καλή IDE για την ελεύθερη
2. η περιορισμένη υποστήριξη για την αυτόματη refactoring


Εξάλλου:


3. η ανάγκη της εισαγάγει δύο επίπεδα των πακέτων ομαδοποίηση και ενότητες με μπερδεύει.
4. μου φαίνεται ότι δεν υπάρχει ευρέως υιοθετηθεί σύμβαση ονομασίας κώδικα
5. μου φαίνεται ότι υπάρχουν κάποια πρότυπη βιβλιοθήκη APIs έγγραφα που είναι ελλιπείς
6. το γεγονός ότι ορισμένες τυποποιημένες βιβλιοθήκες δεν είναι πλήρως αντικειμενοστρεφής με ενοχλεί


Παρά το γεγονός ότι ορισμένοι προγραμματιστές python μου λένε ότι δεν έχουν αυτά τα προβλήματα, ή να λένε αυτά δεν είναι προβλήματα.

 


> 
> Και όσο ξέρω ότι χρησιμοποιούν πολύ πύθωνα μέσα στο google πάρα πολύ.
> 
> 
> 


Λοιπόν θα ήθελα να ελπίζω, ο δημιουργός της python εξακολουθεί να λειτουργεί στο google αν δεν κάνω λάθος; 


Όσον αφορά τη χρήση της Python, νομίζω ότι είναι μια μεγάλη γλώσσα για stand-alone εφαρμογές. Είναι που χρησιμοποιούνται σε μεγάλο βαθμό σε πολλά προγράμματα Linux, και υπάρχουν μερικά σύνολα ωραίο widget εκεί έξω για να βοηθήσουν στην ανάπτυξη του GUI του.

 

Η Python είναι μια απόλαυση στη χρήση. Το χρησιμοποιώ τακτικά και επίσης να γράψετε πολλά κώδικα για εργασία σε C #. Υπάρχουν δύο μειονεκτήματα για τη σύνταξη κώδικα UI σε Python. είναι ότι δεν υπάρχει ένα ενιαίο ui πλαίσιο που είναι αποδεκτή από την πλειοψηφία της κοινότητας. όταν γράφετε στο γ # οι βιβλιοθήκες .NET runtime και τάξη όλα γραφτό να εργαστούν από κοινού. Με Python κάθε βιβλιοθήκη UI έχει στη δική σημασιολογία που είναι συχνά σε αντίθεση με την pythonic νοοτροπία με την οποία προσπαθείτε να γράψετε το πρόγραμμά σας. Δεν κατηγορούμε τους συγγραφείς της βιβλιοθήκης. Έχω δοκιμάσει αρκετές βιβλιοθήκες (wxWidgets, PythonWin [περιτύλιγμα γύρω από MFC], Tkinter), όταν κάνουν συχνά την αίσθηση ότι έγραφα κώδικα σε γλώσσα άλλη από την Python (παρά το γεγονός ότι ήταν πύθωνας), επειδή οι βιβλιοθήκες aren» t ακριβώς pythonic είναι ένα λιμάνι από άλλη γλώσσα είτε πρόκειται για C, C ++, tk.


Έτσι, για μένα θα γράψω κώδικα UI στην ΝΕΤ (για μένα C #), λόγω του IDE και της συνέπειας των βιβλιοθηκών. Αλλά όταν μπορώ να γράψω επιχειρηματική λογική σε python, διότι είναι πιο σαφής και πιο διασκεδαστικό.

 

Δοκιμάστε Django ή Πυλώνες, να γράψει ένα απλό app με τους δύο και στη συνέχεια να αποφασίσει ποιο σας ταιριάζει καλύτερα. Υπάρχουν άλλοι (όπως Turbogears ή Werkzeug), αλλά αυτά είναι η πλέον χρησιμοποιούμενη.

 