आपने अब तक का सबसे अच्छा ओपन सोर्स कोड क्या देखा है? [बन्द है]


19

ओपन सोर्स के मूल्य का एक हिस्सा एक नए मंच या भाषा के साथ शुरू होने वाले लोगों को महान उदाहरण कोड प्रदान करना है।

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

जाहिर है कि यह एक ओपन एंडेड प्रश्न है, इसलिए मैं इस सवाल को कुछ समय के लिए खुला छोड़ दूंगा और देखूंगा कि हमें किस प्रकार के उत्तर मिलते हैं।

धन्यवाद!

EDIT: "सर्वश्रेष्ठ" के लिए मैं कोड के बारे में सोच रहा था जो दी गई भाषा या मंच में मुहावरों का अनुसरण करता है, साथ ही उन भागों को भी शामिल करता है जो कोड को "पेशेवर" बनाते हैं - अच्छा प्रलेखन, एक परीक्षण सूट, आदि कोड जो संक्षिप्त है, लेकिन बहुत चालाक नहीं है बहुत कविता या चैट कोड पसंद किया जाता है।


4
मन में "सर्वश्रेष्ठ" की कोई विशेष परिभाषा?

आपका प्रश्न थोड़ा व्यापक है। शायद आप इसे अधिक विशिष्ट होने के लिए संपादित कर सकते हैं और परिभाषित कर सकते हैं कि आपके लिए "सर्वश्रेष्ठ" क्या है। बेस्ट यूआई, बेस्ट डेस्कटॉप / वेब / फोन ऐप, बेस्ट कॉन्सुरेंसी, बेस्ट विज़ुअली अपीलिंग कोड?
वाल्टर

एक अच्छे प्रश्न के लिए +1। मेरा सुझाव है कि आप इसे कुछ विशिष्ट भाषा / प्रौद्योगिकी के लिए प्रून करें। डेटाबेस ड्राइवर के लिए लिनक्स बनाम जावा के लिए सी की तुलना करना स्पष्ट रूप से एक असंगत विचार है।
Fanatic23

यदि आप उस स्पष्टीकरण को संपादित करते हैं तो यह प्रश्न पढ़ने वाले अन्य लोगों के लिए बहुत उपयोगी होगा। :)
माइकल के

जवाबों:


14

मुझे कहना है कि वर्षों से खुले स्रोत कोड के बिट्स को देखा है, मैं बहुत ज्यादा सभी के साथ निराश हो गया हूं।

मेरे लिए मुख्य जलन यह है कि आमतौर पर बहुत कम टिप्पणियां होती हैं, अक्सर एकमात्र टिप्पणी कुछ लंबी और कानूनी कॉपीराइट नोटिस होती है।

लिनक्स कर्नेल एक उदाहरण है जहाँ फ़ाइलों में अक्सर यह भी टिप्पणी नहीं होती है कि वे किस उद्देश्य से सेवा करते हैं (उदाहरण के लिए XYZ के लिए ड्राइवर कम से कम मुझे बताएगा कि मैं लगभग सही जगह पर हूं)।

मैं वाणिज्यिक और रक्षा प्रोग्रामिंग से आया हूं, जहां कोडिंग मानकों को समझदार समझदार टिप्पणियों की आवश्यकता होती है न केवल यह कहने के लिए कि एक कोड इकाई क्या करती है, लेकिन कोड के माध्यम से उन टिप्पणियों के ब्लॉक होने चाहिए जो एल्गोरिदम, विधियों, विशिष्टताओं, हैक / चतुर चीजों का वर्णन करते हैं , सभी ताकि बाद में जो भी सामने आ सके और यह पता लगा सके कि वास्तविक कोड के माध्यम से श्रमसाध्य वैडिंग के बजाय क्या किया जा रहा है।

शायद नैतिक है: मुझे बताओ कि तुम क्या कर रहे हो, न मुझे यह पता लगाना।

मुझे ऐसा कोई भी ओपन सोर्स कोड नहीं मिला है जो ऐसा करता हो। जहाँ तक अच्छा सोर्सिंग अभ्यास सीखने के साधन के रूप में ओपन सोर्स देखने की बात है, मेरी पीलिया सलाह है: डोन्ट।


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

@ pierre303 - मैंने NoRMproject.org की स्थापना की और बनाए रखा, एक मुख्य चीज जो मैं करता हूं वह है जब मैं कोड लिखता हूं, तो टिप्पणी लिखना होता है और इससे मदद मिलती है। मुझे लगता है कि योगदानकर्ता उन हिस्सों पर काम करेंगे जिन्हें नेता जोर देते हैं। NoRM के मामले में, यह टेस्ट, टिप्पणियाँ, और मुहावरेदार (सी # #) कोड था। मुझे लगता है कि हमारे पास इसके कारण एक बहुत ही पेशेवर, बनाए रखने योग्य कोडबेस है।
एंड्रयू थेकेन

मैं सहमत हूं कि टिप्पणियों को लिखा जाना चाहिए क्योंकि कोड लिखा जा रहा है। (मैं यह सब अपने स्वयं के कोड में भी करता हूं, मुख्यतः क्योंकि मैं स्वार्थी हूं और यह मुझे कोड के ब्लॉक से पहले एक कथा लिखने में मदद करता है - यह मेरे खुद के मन में स्पष्ट करता है कि मुझे वास्तव में ऐसा करने से पहले मुझे क्या करने की आवश्यकता है।)
जल्दी_नौज

मुझे इस अजीब उद्धरण की याद दिलाता है जिसे मैंने एक बार टकराया था: "अगर मेरे पास इसे लिखने में कठिन समय था, तो उन्हें इसे पढ़ने का कठिन समय होना चाहिए।"
डेनिस डे बर्नार्डी

+1, @quickly_now - आपको लगता है कि कोड को अच्छी तरह से योजनाबद्ध, अच्छी तरह से परीक्षण किया जाना चाहिए और अब अच्छी तरह से टिप्पणी की जानी चाहिए ! आप किस तरह के पागल ग्रह पर रह रहे हैं?

5

मैंने स्क्लाइट कोडबेस के बारे में बहुत अच्छी बातें सुनी हैं ।

छोटे से मैंने इसमें देखा था, यह बहुत साफ दिखता है।


5
इसमें एक व्यापक परीक्षण सूट है , जो इसे सॉफ्टवेयर परीक्षण के लिए एक अध्ययन मॉडल बनाता है।
रॉबर्ट हार्वे

मैं केवल यह चाहता हूं कि इसमें 12 ++ पर C ++ इंटरफ़ेस: /
Matthieu M.

5

डोनाल्ड नुथ ने अपने प्रकाशक से बेहतर अपनी किताबों में अपने गणितीय सूत्रों को टाइप करने में मदद करने के लिए दो कार्यक्रम लिखे।

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

  • "कंप्यूटर और टाइपिंग, वॉल्यूम बी: टीएक्स: द प्रोग्राम"
  • "कंप्यूटर और टाइपिंग, वॉल्यूम डी: मेटाफ़ॉन्ट: द प्रोग्राम"

वे ऑनलाइन पढ़ने के लिए उपलब्ध नहीं हैं, लेकिन अमेज़ॅन आपको http://www.amazon.com/Computers-Typesetting-D-Metafont-Program/dp/0201134381/ पर Metafont पुस्तक "अंदर देखो" की अनुमति देता है

चेतावनी: यह भारी सामान है, जिसके कारण प्रत्येक पुस्तक 600 पृष्ठों पर चलती है।


1
नोट: यह टाइपसेट संस्करण है जो ऑनलाइन उपलब्ध नहीं है। स्रोत पूरी तरह से उपलब्ध है, और मुद्रित संस्करण को उत्पन्न करने के लिए एक छोटे से प्रयास के साथ उपयोग किया जा सकता है।

4

किताब ब्यूटीफुल कोड इस सवाल का जवाब देने की कोशिश करता है कि योगदानकर्ताओं को खुले स्रोत की परियोजनाओं से सुंदर कोड के उदाहरण क्या हैं।
वैकल्पिक शब्द


4
क्या पुस्तक जांचने लायक है?
ओलिवर वीलर

यह किसी भी मायने में "वास्तविक दुनिया" ओपन-सोर्स कोड नहीं है। यह उत्तर धोखा है! : पी
नोल्डोरिन

1
मैं इसका मालिक हूं, प्रभावित नहीं हुआ। अधिकांश अध्याय उबाऊ हैं, लेकिन इसमें कुछ हाइलाइट्स हैं - अगर मुझे सही तरीके से याद है तो मैप / कम समझाया गया है।
मार्टिन विकमैन

4

CodeIgniter

कुछ सबसे अच्छे, सबसे अच्छे डॉक्यूमेंटेड सोर्स कोड जो मैंने OS प्रोजेक्ट से देखे हैं।


1
php और सबसे साफ?
कुगेल

1
@Kugel: दोनों के लिए हाँ।
जोश के

कोडिएग्निटर के स्रोत पर बस एक नज़र थी, और यह वास्तव में बहुत अच्छी तरह से संरचित और साफ लगता है। मुझे लगता है कि आप php में जितनी खूबसूरत हो सकती हैं। :) और मैं हमेशा स्रोत कोड में हास्य पसंद किया है: "// कोई DB अभी तक निर्दिष्ट मारो उन्हें बेहोश ... अगर (isset ($ पैरामीटर [ 'dbdriver']) ...?!"
Bjarke Freund-हैनसेन

2
मेरे पास स्रोत कोड पर एक झलक थी और मुझे यह स्वीकार करना चाहिए कि इसे अच्छी तरह से प्रलेखित किया गया था और इसका पालन करना आसान था , और मुझे ओएस ओएस से इसकी उम्मीद नहीं थी।
OnesimusUnbound

2
एक और बेहतरीन OS PHP फ्रेमवर्क है , जो कि ( दस्तावेज ) भी है, जिसे साफ-सुथरा रखा गया है और नामकरण सम्मेलनों का उपयोग किया जाता है, जो आपके बालों को बाहर नहीं खींचते हैं। यह साबित करता है कि स्पेगेटी कोड के लिए दोष देना PHP नहीं है, यह आमतौर पर कोड लिखने वाले लोग हैं।
माइकल जेवी

3

मैंने 2 परियोजनाएं देखी हैं जो बहुत अच्छी तरह से संरचित हैं:

  1. Django
  2. क्रोमियम परियोजना

विशेष रूप से, दूसरा कुछ चीजों के आधार पर बहुत दिलचस्प है:

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

यह भी मैंने सुना है कि पोस्टग्रे को साफ लिखा गया है (जैसा कि MySql के विपरीत), लेकिन मैंने इसे खुद नहीं पढ़ा है।


1
PostgreSQL कोड के लिए +1। यह बेहद साफ और पठनीय है।
डेनिस डे बर्नार्डी

2

कुछ लोग कहते हैं कि लिनक्स कर्नेल के लिए C कोड बहुत अच्छा है।

(ऐसा नहीं है कि मुझे बात समझ में आ रही है! यह संभवतः सबसे अच्छा लिखा हुआ ओपन-सोर्स सी प्रोजेक्ट है।)


1
अनुकूलित कोड के लिए यह बहुत अच्छा है। मेरे अनुभव में पठनीयता इतनी अच्छी नहीं है। बेशक, मैंने कोई लिखा नहीं है , बस इसे पढ़ें ...
माइकल के

1
हाँ सच है। दुर्भाग्य से सवाल वास्तव में "सर्वश्रेष्ठ" को परिभाषित नहीं करता था, इसलिए मैं अपनी परिभाषा ले रहा हूं। :)
नोल्डोरिन

2

मुझे LLVM स्रोत कोड बहुत पठनीय लगा है। मुझे पूरा यकीन है कि यह सबसे साफ सी ++ है जिसे मैंने देखा है। यदि आप इससे परिचित नहीं हैं, तो यह मूल रूप से एक कंपाइलर निर्माण टूलकिट है।

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

हालांकि यह एक बहुत बड़ी परियोजना है, इसलिए जल्दी से ठीक से समझने की उम्मीद नहीं है कि सब कुछ कैसे काम करता है। लेकिन एक उच्च-स्तरीय अवलोकन प्राप्त करना बहुत आसान होना चाहिए।


1

यह एक बहुत बड़ी परियोजना नहीं है, लेकिन सबसोनिक ओआरएम मेरे लिए हैक करना बेहद आसान था। यह पहली वास्तविक ओपन सोर्स परियोजना थी जिसे मैं ठीक-ठीक संशोधित कर सकता था कि मुझे किस तरह की आवश्यकता है। दूसरों के अधिकांश मैं स्रोत को देख रहा था और एक दीवार पर अपना सिर पीट रहा था। मैंने इसे आंशिक रूप से कुछ घंटों के भीतर PostgreSQL (SQL सर्वर प्रदाता चीज पर आधारित) का समर्थन किया था। यह सबसे अच्छी तरह से व्यवस्थित परियोजना है जिसे मैंने अभी तक देखा है ... हालांकि यह कहने के लिए नहीं कि मैंने बहुत सारे खुले स्रोत परियोजनाओं को देखा है।


0

पहला सरल उदाहरण: ईवेंट हैंडलिंग सिस्टम zope.event के लिए कोड। मैं अन्य ईवेंट सिस्टम का उपयोग करता था, जो विभिन्न ईवेंट श्रोताओं को ईवेंट भेजते थे। जब मैंने zope.event कोड देखा, तो यह फेसपालम टाइम था, जब मैंने महसूस किया कि कुछ चीजें कितनी सरल हो सकती हैं।

यह पायथन में लिखा गया है, और यहाँ यह संपूर्णता में कोड है:

subscribers = []

def notify(event):
    """ Notify all subscribers of ``event``.
    """
    for subscriber in subscribers:
        subscriber(event)

एक सब्सक्राइबर जोड़ने के लिए आप ऐसा करते हैं:

from zope.event import subscribers
subscribers.add(MySubscriber())

KISS का सबसे अच्छा उदाहरण मैंने देखा है।

फिर एक अधिक जटिल उदाहरण: मार्टियन कोड आधार बहुत अच्छा है और पढ़ने में आसान है, भले ही यह कुछ चतुर पायथन हैक्स का उपयोग कर रहा हो। वही ग्रॉक के अधिकांश कोड के लिए जाता है, जिसे मार्टियन का उपयोग करके बनाया गया है।


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

क्या आपने अन्य इवेंट सिस्टम के साथ इसकी तुलना की है? सादगी के लिए एक और पायथन उदाहरण लें: pypi.python.org/pypi/pyjon.events/1.1.1
Lennart Regebro

1
सुंदर - मैंने वास्तव में जावास्क्रिप्ट में बहुत कुछ लिखा है। मुझे लगता है कि मैं स्मार्ट हूँ? ;)
माइकल के

सिर्फ इसलिए कि वहाँ घटना प्रणाली है कि अब तक बदतर हैं, इसका मतलब यह नहीं है कि यह महान कोड है। मैंने इस कोड को बिल्कुल भाषाओं के टन में देखा। और इससे भी महत्वपूर्ण बात यह है कि मैंने सुरक्षित कार्यान्वयन को देखा।
बैक 2 डोस

@ back2dos: यह सुरक्षित प्रकार है।
लेन्नर्ट रेग्रोब

0

इस पुस्तक को द सोर्स ऑफ ओपन सोर्स एप्लिकेशन पढ़ने पर विचार करें । यह आपको इस बात की आलोचना करना चाहिए कि पुस्तक में जिन परियोजनाओं पर चर्चा की गई है, उनके लिए डिजाइन के निर्णय क्यों और कैसे किए गए।

सर्वश्रेष्ठ की तलाश करने के बजाय, जो आपको लंबे समय तक हटा सकता है, कोशिश करें और कुछ परियोजनाओं के डिजाइन की सराहना करें, शायद किताब के दायरे से परे। इससे आपको अपनी गलतियों को दोहराने के बजाय इन परियोजनाओं की सफलताओं के निर्माण में मदद मिल सकती है (या, जैसा कि लोकप्रिय कहा जाता है, पहिया को सुदृढ़ करना)।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.