2010-03-19 11 views
8

मैं एक शौकिया प्रोग्रामर हूं (केवल पहले टीआई-बेसिक में), और बहुत से, मेरे साथ बहुत बहस करने के बाद, मैंने पायथन सीखने का फैसला किया है। मेरे पास सौ भाषाएं सिखाने के लिए मेरे पास मुफ्त समय नहीं है और मैं जो प्रोग्रामिंग करता हूं वह निजी इस्तेमाल के लिए होगा या उन लोगों को वितरित करने के लिए होगा, जिन्हें मैंने जरूरत है, इसलिए मैंने फैसला किया कि मुझे एक अच्छी, मजबूत भाषा की आवश्यकता है । मेरे प्रश्न:एक शौकिया प्रोग्रामर के लिए पायथन (कुछ प्रश्न)

  1. क्या पाइथन उन चीजों को संभालने के लिए पर्याप्त शक्तिशाली है जो एक सामान्य प्रोग्रामर अपने ऑफ-टाइम में कर सकता है? मेरे पास टेबलटॉप गेम के लिए उपयोगकर्ता इनपुट के आधार पर जटिल स्टेट जेनरेटर जैसी चीजें हैं, छोटे गेम बनाना, स्वचालित प्रक्रियाएं स्वचालित करना, और इंटरैक्टिव वेबसाइट बनाना, लेकिन संभवतः उन पंक्तियों के साथ सौ सौ चीजें

  2. क्या पाइथन नेटवर्किंग कार्यों को काफी अच्छी तरह से संभालता है ?

  3. क्या पाइथन स्रोत obfuscated हो सकता है, या यह प्रकृति द्वारा खुले स्रोत होने जा रहा है? कारण मैं यह पूछता हूं क्योंकि अगर मैं कुछ शांत और वितरित करता हूं, तो मैं कुछ बेवकूफ स्क्रिप्ट किड्डी को अपना नाम संपादित करने के लिए नहीं चाहता और कहता हूं कि उसने इसे लिखा है

  4. और अन्य की तुलना में अजगर कितना लोकप्रिय है भाषाओं। आदर्श रूप में, मेरी भाषा बहुत मुश्किल और बिना किसी कठिनाई के ऑनलाइन सहायता के साथ उपयोगी होगी, लेकिन इतना आम नहीं है कि कंप्यूटर के साथ हर बेवकूफ अजगर जानता है। मुझे थोड़ी अस्पष्ट भाषा जानने का विचार पसंद है।

धन्यवाद जो भी आप प्रदान कर सकते हैं उसके लिए एक टन।

+2

यह # 3 को छोड़कर आपकी आवश्यकताओं को पूरी तरह से फिट करता है। –

+4

और यदि आप कुछ भी शानदार बनाते हैं, तो इसकी अव्यवस्थित होने की गारंटी है इससे कोई फर्क नहीं पड़ता कि यह किस भाषा में है ... –

+7

पुन: 3: आप इसे रोक नहीं सकते। एक obfuscated बाइनरी के लेखकत्व का दावा करने से कुछ भी नहीं रोक देगा। बस अपने काम पर एक अच्छा लाइसेंस थप्पड़ मारो और इसे बाहर रखो और जनता इसकी सराहना करेंगे। डूफ आपको साझा करने से रोकें मत! – mwcz

उत्तर

14

क्या पाइथन को संभालने के लिए पर्याप्त शक्तिशाली है?

हां। अवधि। अधिक जानकारी के लिए EveOnline खेल का अध्ययन करें। pygame ढांचे को देखें। अधिक जानने के लिए Google का उपयोग करने के लिए निशुल्क।

क्या पाइथन नेटवर्किंग कार्यों को संभालता है काफी अच्छी तरह से?

हां। पाइथन वेब ढांचे की संख्या और Twisted framework की संख्या देखें। पाइथन नेटवर्किंग की खोज के लिए Google का उपयोग करने के लिए स्वतंत्र महसूस करें।

क्या पाइथन स्रोत को खराब किया जा सकता है?

उपयोगी नहीं है। यह सी

नहीं है और कैसे लोकप्रिय अन्य भाषाओं की तुलना में अजगर है?

TIOBE index पर देखें।

+4

obfuscated नहीं किया जा सकता है? इस चैट सर्वर को देखें http://paste.pocoo.org/show/94512/ (http://stackoverflow.com/users/10999/ द्वारा लिखित)! (निश्चित रूप से, सवाल यह है कि ऐप को चोरी होने से रोकने के लिए स्रोत कोड को छिपाने की कोशिश करने के बारे में पता चलता है कि किसी भी भाषा में कोड को गलत तरीके से लिया जाने के बारे में ज्ञान की कमी दिखाई देती है।) –

6

मुझे लगता है कि पाइथन बहुत सी चीजें करने के लिए बहुत शक्तिशाली है, लेकिन जावा और सी ++ की तरह, यह अक्सर अच्छी तृतीय-पक्ष पुस्तकालयों पर निर्भर करता है। मैं जावा पृष्ठभूमि से आया हूं लेकिन कई चीजों के लिए पायथन का उपयोग करता हूं, और यह एक मजेदार सवारी है। मैंने आंकड़ों, और स्वचालन जैसी चीजें की हैं, यूआई के बारे में निश्चित नहीं है, हालांकि यह अक्सर भाषा से अधिक टूलकिट पर निर्भर करता है।

पायथन नेटवर्किंग अच्छी तरह से काम करता है। मुझे नहीं पता कि मैं इसका उपयोग तेजी से एल्गोरिदमिक ट्रेडिंग सिस्टम या वीओआईपी एप्लीकेशन बनाने के लिए करूँगा, लेकिन ज्यादातर इरादों और उद्देश्यों के लिए, खासकर अमूर्तता के उच्च स्तर पर, यह ठीक और उपयोग करने में आसान है। एसएसएच या एफ़टीपी जैसी चीजों के लिए आपको बाहरी पुस्तकालयों की आवश्यकता होगी।

पायथन काफी लोकप्रिय है और इसमें बहुत अच्छा ऑनलाइन समर्थन, सक्रिय समुदाय और प्रमुख निगम (जैसे Google) है जो इसका उपयोग करता है। मुझे आधिकारिक ऑनलाइन ट्यूटोरियल और उत्कृष्ट होने का संदर्भ मिला।

मुझे यह कहना है कि मैं "कंप्यूटर के साथ हर बेवकूफ" रेखा से असहमत हूं। एक भाषा जानने और इसे सही तरीके से उपयोग करने के बीच एक अंतर है, और यह हर भाषा, यहां तक ​​कि प्राकृतिक लोगों के बारे में भी सच है :) पायथन में बहुत से कार्यात्मक तत्व हैं जो प्रक्रियात्मक पृष्ठभूमि से आने वाले लोगों के लिए उपयोग करने के लिए तुच्छ नहीं हैं, इसलिए हमेशा विकास के लिए कमरा।

सी और जावा जैसी भाषाओं की तुलना में पाइथन के साथ एक समस्या यह है कि यह स्थिर रूप से टाइप नहीं किया गया है। यह कोड लिखने के लिए बहुत तेज बनाता है, लेकिन यह भी गलतियों को करने के लिए बहुत गंदा बनाने के लिए * बहुत आसान बनाता है)। उदाहरण के लिए, एक ही चर में किसी बिंदु पर एक स्ट्रिंग संदर्भ हो सकता है, और किसी अन्य बिंदु पर तारों की सूची का संदर्भ हो सकता है।

+0

+1 "बेवकूफ़ों के लिए पाइथन की रक्षा के लिए +1 "प्रोग्रामर। हास्केल के प्रेमी के रूप में (थोड़ा अस्पष्ट भाषा के लिए मैट के मानदंडों को फिट करना) मैं अभी भी कई कार्यों के लिए पाइथन पर जाता हूं; यह किसी भी तरह से "नीचे" नहीं है। –

2
  1. शायद हां। हो सकता है कि स्टेट क्रंचिंग चीज थोड़ी धीमी हो, और शायद एक गेम किस प्रकार के गेम के आधार पर हो, लेकिन आम तौर पर प्रदर्शन काफी अच्छा होता है, और आप वास्तविक प्रोग्रामिंग पर बहुत समय बचाते हैं। आप वास्तव में प्रदर्शन की जरूरत है, तो आप .. सी में एक मॉड्यूल बना सकते हैं, लेकिन आम तौर पर वहाँ एक पुस्तकालय है कि तुम क्या चाहते हो के लिए लिखा है

  2. मैं इसे इस्तेमाल नहीं किया है, लेकिन वहाँ एक रूपरेखा Twisted कहा जाता है कि हो रहा है है काफी अच्छा।

  3. नहीं। बाइटकोड आसानी से डिकंपल किया जा सकता है, और यह केवल पायथन के विशिष्ट संस्करण पर काम करता है, इसलिए आपका कोड पोर्टेबल नहीं है।

  4. पायथन बहुत लोकप्रिय है, और Python Package Index में तीसरे पक्ष के पुस्तकालयों की एक बड़ी सूची है। यह जावा के रूप में व्यापक नहीं है, लेकिन बहुत से लोग इसका उपयोग करते हैं और आप शायद जो चाहते हैं उसके लिए जवाब प्राप्त कर सकते हैं।

+0

पायथन में कुछ महत्वपूर्ण प्रदर्शन, संख्यात्मक, सांख्यिकीय इत्यादि के लिए साइपी और न्यूमपी जैसे पुस्तकालय हैं। छवि प्रसंस्करण का लघु (जिसे पीआईएल (पायथन इमेजिंग लाइब्रेरी) द्वारा उचित रूप से अच्छी तरह से संभाला जाता है) या गहन ग्राफिक्स सामान, मैं कुछ भी नहीं सोच सकता पाइथन का उपयोग करने के साथ प्रदर्शन के मुद्दों में था। –

+1

सीपीथन बाइटकोड काफी आसानी से खराब, पठनीय कोड (यदि कोड के साथ शुरू करना था) के लिए काफी आसानी से decompiled है। इसमें कई सीमाएं भी हैं, जिनमें एक पायथन संस्करण पर चलने के लिए सीमित है और पायथन के वैकल्पिक कार्यान्वयन के साथ काम नहीं कर रहा है। किसी को आपके कोड का गलत तरीके से उपयोग करने से आपको क्या बचाता है यह कानून और तथ्य यह है कि ज्यादातर लोग झटके नहीं हैं। –

+0

इनपुट के लिए धन्यवाद, मैंने जवाब संशोधित कर दिया है। यह नहीं कि इस चरण में यह बहुत मायने रखता है। – Javier

4
  1. बिल्कुल।
  2. किस प्रकार का नेटवर्किंग? इसमें सॉकेट, http, xml, smtp/pop, telnet, और बहुत कुछ बनाया गया है।
  3. पायथन obfuscation लगभग संकलित भाषा के रूप में उतना ही अच्छा नहीं होगा। आमतौर पर यह कोई समस्या नहीं है।
  4. यह 9th most popular tag on stackoverflow है, इसलिए बहुत सारी सहायता उपलब्ध है।
3

अजगर पर्याप्त शक्तिशाली सबसे चीजें हैं जो एक विशिष्ट प्रोग्रामर उसकी ऑफ समय में क्या हो सकता है संभाल करने के लिए है? मैं जटिल स्टेट टेबलटॉप खेल के लिए उपयोगकर्ता इनपुट के आधार पर जनरेटर, छोटे खेल बनाने की तरह मन बातों में है, प्रक्रियाओं को स्थापित स्वचालित, और इंटरेक्टिव वेबसाइट का निर्माण, लेकिन उन पंक्तियों

निश्चित रूप से साथ में शायद एक सौ बातें। पाइथन उन सभी के लिए एक अच्छा टूल है जो स्वचालित प्रक्रियाओं को स्वचालित करते हुए छोड़ते हैं, जहां यह सही टूल हो सकता है लेकिन अधिक संभावना है कि सही उपकरण का निर्धारण निश्चित रूप से किया जा रहा है कि आप विशेष रूप से स्वचालित कर रहे हैं।

क्या पाइथन नेटवर्किंग कार्यों को काफी अच्छी तरह से संभालता है?

हां। आप Twisted में देखना चाहते हैं।

क्या पाइथन स्रोत obfuscated हो सकता है, या यह प्रकृति द्वारा खुले स्रोत होने जा रहा है? कारण मैं इस पूछना है क्योंकि अगर मैं कुछ शांत बनाने के लिए और इसे वितरित, मैं कुछ मूर्ख स्क्रिप्ट किडी में अपने ही नाम संपादित करना चाहते हैं और कहते हैं कि वह इसे

"मुक्त स्रोत" लिखा लाइसेंस को संदर्भित करता है आपके कोड का, इसके स्रोत कोड की दृश्यता नहीं। पाइथन स्रोत कोड छिपाना विशेष रूप से संभव नहीं है, और पाइथन बाइटकोड को अपनाने के नतीजे सी जैसी भाषाओं में समकक्ष उपकरणों की तुलना में अधिक पढ़ने योग्य कोड के परिणामस्वरूप इस बारे में चिंता न करें! यदि आप कानून तोड़ने के इच्छुक हैं, तो आप लोगों को अपनी कार या अपने कंप्यूटर को चोरी करने से नहीं रोक सकते हैं, और आप किसी भी भाषा में अपने कोड के लिए ऐसा नहीं कर सकते हैं।

और अन्य भाषाओं की तुलना में पाइथन कितना लोकप्रिय है। आदर्श रूप में, मेरी भाषा बहुत मुश्किल और बिना किसी कठिनाई के ऑनलाइन सहायता के साथ उपयोगी होगी, लेकिन इतना आम नहीं है कि कंप्यूटर के साथ हर बेवकूफ अजगर जानता है। मुझे थोड़ी अस्पष्ट भाषा जानने का विचार पसंद है।

यह एक असंभव सवाल है। Google आपको विभिन्न मीट्रिक के साथ कई विवादित परिणाम देगा, उनमें से अधिकतर उपयोगी हैं। तुम भी थोड़ा पागल जा रहा है कर रहे हैं,)


जहां तक ​​अधिगम सामग्री जाओ, मैं How to Think Like a Computer Scientist, जो एक अच्छा पाठ है कि किसी भी मौजूदा प्रोग्रामिंग ज्ञान अनुमान नहीं है सलाह देते हैं। यह मुफ्त ऑनलाइन उपलब्ध है, या यदि आप चाहें तो प्रिंट प्रिंट खरीद सकते हैं। (अभी तक 3.x सीखना परेशान मत करो। बहुत उपयोगी चीजें करने के लिए पर्याप्त पुस्तकालय समर्थन नहीं है जैसे आप करना चाहते हैं, और जब इसे उठाया जाता है तो यह हवा होगी; यह 2.5/6/7 से बहुत अलग नहीं है ।)

+0

ओह, मुड़ना शुरू करने के लिए एक अच्छी जगह नहीं है। यह नेटवर्किंग के लिए एक शानदार उपकरण है, लेकिन एक शौकिया के लिए दिमागी बेंडर का थोड़ा सा हिस्सा है। ओह। यह पेशेवरों के लिए एक दिमाग बेंडर है। मानक पुस्तकालयों में अधिक सरल नेटवर्किंग मॉड्यूल के साथ शुरू करें। जब urllib और urllib2 बोझिल महसूस करना शुरू करते हैं, तो अधिक जटिल उपयोगों के लिए httplib2 डाउनलोड करें, जो वास्तव में http सही हो जाता है। – jcdyer

+0

@jcd, ट्विस्ट वास्तव में क्लिक करने के लिए कुछ प्रयास कर सकते हैं। हालांकि, पाइथन में अपने नेटवर्क ऐप्स पर कई लोगों के पहले प्रयासों को देखते हुए, मुझे लगता है कि यह इसके लायक है। –

0

अंक 1 और 2: हेल यहाह।

प्वाइंट 4: तरह का। पाइथन कुछ नेटवर्क सामान पर अच्छा है। यह जावा या सी ++ नहीं है। बस सब कुछ के लिए zlib (ज़िप लाइब्रेरी) और अचार (क्रमबद्धता) का उपयोग करें, और यदि आपको आईपीसी की आवश्यकता है तो xmlrpclib को देखें।

प्वाइंट 3: नहीं। हालांकि, आप अपने कोड के सी मॉड्यूल (प्रदर्शन के लिए महत्वपूर्ण और हार्ड-टू-कॉपी) भागों को लिख सकते हैं, और इससे रिवर्स-इंजीनियर के लिए यह गैर-तुच्छ हो जाएगा।

0

अजगर 1, 2 और 4

के लिए काम (और बेहतर) पर निर्भर है कि तुम क्या वर्णन शायद अपने कार्यक्रमों वास्तव में जीपीएल या बीएसडी तरह से खुला स्रोत बनाने के लिए किया जाएगा से 3 के लिए सबसे अच्छा समाधान लाइसेंस। इस तरह लोग आपके सुपर-कूल स्रोतों को संपादित करेंगे (लेकिन अक्सर अनुभवी प्रोग्रामर, न केवल स्क्रिप्ट किड्स) और फिर उस पर निर्माण करते हैं लेकिन पोस्टरिटी के लिए अपना नाम छोड़ देते हैं।

संबंधित मुद्दे