प्रोग्रामिंग के लिए पर्यावरण के रूप में उबंटू के विंडोज पर क्या फायदे हैं?


59

विंडोज पर विजुअल स्टूडियो की तरह आईडीई (एस) का उपयोग करने की तुलना में पाठ फ़ाइलों या टर्मिनल के माध्यम से एक बेहतर विकल्प (जैसा कि मैंने पढ़ा है) में एक कार्यक्रम क्यों लिख रहा है? क्या आईडीई द्वारा प्रदान की जाने वाली सुविधाएँ वहाँ मौजूद हैं (उदाहरण संकलन त्रुटियों को दिखाते हुए) या क्या यह एक मैनुअल प्रक्रिया है?


16
कुछ लोग लंबे समय से प्रोग्रामिंग कर रहे हैं, और वे एक पाठ-चालित कमांड प्रॉम्प्ट से जो करते हैं, उसे करने में अत्यधिक प्रभावी हो गए हैं। उन्हें vimअपनी पसंद के अनुसार संपादक भी मिल सकते हैं। यह एक बहुत व्यक्तिपरक क्षेत्र है! कई लोग लिनक्स पर आईडीई का उपयोग करते हैं, हालांकि, आप यहां कई चीजों का सामना कर रहे हैं।
वॉरेन पी

3
मेरा मानना ​​है कि आईडीई प्रश्न का मुख्य बिंदु नहीं है। कर रहे हैं बहुत सारे लिनक्स OSes के लिए IDEs की। उदाहरण के लिए, सभी JetBrains IDEs (IntelliJ / PyCharm आदि) लिनक्स पर काम करते हैं। ग्रहण लिनेक्स पर काम करता है। QtCreator linux पर काम करता है।
बाकुरीउ

12
इस साइट पर यह प्रश्न पुष्टिकरण पूर्वाग्रह से ग्रस्त होने वाला है
zzzzBov

5
मेटा-चर्चा के प्रश्न को साफ रखने के प्रयास में, मैंने विशेष रूप से इसे संबोधित करने के लिए एक अलग मेटा विषय खोला है
ओली

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

जवाबों:


87

इस तरह के काल्पनिक प्रोग्रामर्स पर बेहतर कर सकते हैं। क्योंकि यह यहाँ एक तरफा होने की संभावना है। उस ने कहा, मैं कुछ वर्षों के लिए .NET डेवलपर था और विजुअल स्टूडियो पर निर्भर था। यह आपके लिए बहुत कुछ करता है और हां, मुझे विशेष रूप से एकीकृत डिबगर पसंद है ... हालांकि, मुझे लगता है कि कुछ कारण हैं जो लोग लिनक्स चुनते हैं:

  • उबंटू आजाद है। विंडोज और वीएस बेहद महंगे हो सकते हैं।

  • उबंटू आजाद है । Windows और VS आपको बहुत कम नियंत्रण देते हैं कि आप उनका उपयोग कैसे करते हैं।

  • उबंटू सीधे बॉक्स से बाहर एक प्रोग्रामिंग वातावरण है। बैश की तरह उपकरण, , grep, ।sed awkविंडोज ऐतिहासिक रूप से स्क्रिप्ट के निचले हिस्से में एक बड़ा दर्द है। बैच फाइलें भयानक हैं और यहां तक ​​कि पावरशेल के साथ भी, बश और जीएनयू उपकरणों की तुलना में विंडोज पैलेस में कमांड-लाइन अनुभव नगण्य है। आप उसमें से कुछ को विंडोज में पोर्ट कर सकते हैं लेकिन यह वैसा अनुभव नहीं है।

  • जटिल सेटअप apt-get, कठपुतली , बावर्ची , जूजू , कपड़े और सरल स्क्रिप्टिंग जैसे उपकरणों के माध्यम से स्वचालित और पुनरावृत्ति करना आसान है ।

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

    यह कहना नहीं है कि अखंड आईडीई नहीं हैं। ग्रहण और नेटबींस। Monodevelop। KDevelop4 और qt निर्माता। उन सभी के पास अपने उपयोगकर्ता हैं जो उनके द्वारा शपथ लेते हैं।

क्या उबंटू आपके लिए बेहतर है ? कौन जाने। यह बहुत सक्षम और बहुत ही अनुकूलन योग्य प्रणाली है। यदि आप इसे एक मौका देते हैं और अपने वर्कफ़्लो को बदलकर इसे आपकी सहायता करने की अनुमति देते हैं, तो आपको इसे बनाने में सक्षम होना चाहिए।


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

14
+1 उद्देश्यपूर्ण बने रहने के लिए जब इतने सारे लोगों को घुटनों के बल चलना आसान लगता है "विंडोजेज़ सब कुछ" रवैया।
फिल

2
एक बात जिस पर ध्यान दिया जाना चाहिए, वह दृश्य स्टूडियो जितना उपयोग किया जाता है, उससे कहीं अधिक मुक्त है, इसने कुछ समय के लिए MAKE फ़ाइलों का समर्थन किया है और प्लगइन्स आपको पूरी तरह से Visual Studio के अंदर साइबर अनुप्रयोगों को लिखने और डीबग करने देते हैं
स्कॉट चैंबरलेन

6
even PowerShell scripts lack the power of Bash- मेरा तर्क है कि आप पीएस को अच्छी तरह से नहीं जानते हैं; यह बहुत शक्तिशाली है और मैं कुछ भी नहीं मिला है जो आप बैश में कर सकते हैं जो आप पीएस में नहीं कर सकते
मार्क हेंडरसन

4
@MarkHenderson हाँ, यह निश्चित रूप से पर्याप्त रूप से इसका उपयोग नहीं करने के माध्यम से है। इसे वैसे ही पेश किया गया था जैसे मैं विंडोज और .NET को पीछे छोड़ रहा था। मुझे लगता है कि बैश (और "बैश" से मेरा वास्तव में मतलब है कि GNU) मेरे साथ हो गया क्योंकि आप इसका इस्तेमाल हर जगह और हर चीज के लिए करते हैं । पुनश्च की आवश्यकता है ताकि ज्यादा हर बार Googling सब कुछ था, क्योंकि सिर्फ हमेशा सुपर विशेष। बैश के साथ इतने लंबे समय के बाद कहना मुश्किल है।
ओली

37

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

तो आपने हास्केल नामक एक फैंसी भाषा के बारे में सुना है :

sudo apt-get install ghc
nano hello.hs
<copy-paste hello world example>
ghc -o hello hello.hs
./hello
Hello World!

ओह, आपने हास्केल के लिए एक फैंसी संपादक सुना है:

sudo apt-get install <fancy-editor-for-haskell>

के साथ एक ही सी / सी ++ पुस्तकालयों, तो आप सिर्फ apt-get installउन्हें और बाइनरी और हेडर सही फ़ोल्डरों पर जाएँ, और आप कर सकते हैं बस #includeअपनी स्रोत फ़ाइल में उन्हें भी वे कहाँ रखा जाए जाँच करने के लिए की जरूरत के बिना!

संक्षेप में, यह इस बारे में नहीं है कि आप अपने दिन-प्रतिदिन के काम के माहौल को कितनी तेजी से स्थापित कर सकते हैं। यह इस बारे में भी है कि आप एक प्रायोगिक वातावरण को कैसे सेटअप कर सकते हैं। मेरा मानना ​​है कि लिनक्स के तहत सीखने के अनुभव को तेज करता है।


36
apt-get, और मानसिकता कि सब कुछ इस तरह से स्थापित होना चाहिए, शायद लिनक्स के बारे में सबसे अच्छी बात है। यहां न तो OSX और न ही विंडोज की तुलना की जाती है।
नाथन लोंग

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

2
@NathanLong मैंने Macports का उपयोग करके ठीक यही काम किया: sudo port ghc स्थापित करें। स्रोतों से नए सिरे से संकलित। The MacPorts Project currently distributes 17699 ports। एक अंतर यह है कि यह हमेशा संकलन करता है।
एलेकेल

2
@karadeniz: और है कि उल्लेख करने के लिए नहीं कर रहा है yum, pacman, emerge, petget, pkgadd...
Aesin

2
मुझे MacPorts पसंद है (और वहां और Homebrew पर कुछ पैकेज बनाए रखें), लेकिन यह वास्तव में डेबियन से तुलना नहीं कर सकता। इन छोटी परियोजनाओं में एक ही मानक के लिए एक बड़े भंडार को बनाए रखने के लिए व्यक्ति-शक्ति नहीं है। वही विंडोज की तरफ साइबरविन और कोप्प के लिए जाता है। मुख्य अंतर सांस्कृतिक है, मुझे लगता है, लिनक्स पैकेज मैनेजर सिस्टम का हिस्सा हैं और हर किसी के लिए सब कुछ के लिए उपयोग किया जाता है, वे ऐड-ऑन के थोड़े से उपेक्षित बैकवाटर नहीं हैं।
8

20

यहां मुख्य रूप से Microsoft प्लेटफ़ॉर्म डेवलपर से एक राय ली गई है। यदि आप .NET पारिस्थितिकी तंत्र को लक्षित नहीं कर रहे हैं, तो मैं तर्क दूंगा कि आपका सबसे अच्छा विकल्प उबंटू है। यदि आप विंडोज के बजाय उबंटू में हैं, तो आपको लगभग हर दूसरे प्लेटफॉर्म / भाषा पर उपकरण प्राप्त करने, कॉन्फ़िगर करने और उपयोग करने में बहुत आसान समय होगा।

Microsoft के टूलचिन का मूल्य यह है कि यह अत्यधिक एकीकृत है। आईडीई से लेकर सोर्स कंट्रोल, प्रोजेक्ट मैनेजमेंट, बिल्ड, डिप्लॉयमेंट, डेटाबेस, क्लाउड इन्फ्रास्ट्रक्चर, ऐड नोजम । यदि आप अपने प्लेटफ़ॉर्म से पूर्ण बोर हो रहे हैं तो Microsoft इसे बहुत आसान बनाता है।

जैसा कि कुछ ने उल्लेख किया है, माइक्रोसॉफ्ट वे से भटकना एक दर्द हो सकता है। अपने डेटाबेस के लिए अपने कोड और ओरेकल के लिए .NET का उपयोग करना ... एक दर्द होने वाला है।

एक .NET वेब एप्लिकेशन बनाना चाहते हैं और इसे अमेज़न वेब सेवाओं पर लागू करना चाहते हैं ... बहुत सीधे आगे नहीं।

लेकिन अगर आप Microsoft इकोसिस्टम के भीतर रहते हैं ... तो वह बच्चा आपके लिए मॉकिंग बर्ड की तरह गाएगा। एक सक्षम सॉफ़्टवेयर डेवलपर के हाथों में, Microsoft प्लेटफ़ॉर्म एक प्रतिभाशाली एथलीट के लिए PEDs की तरह है। यह अगले फेसबुक बनाने के लिए एक शौकिया प्रोग्रामर को सक्षम करने वाला नहीं है। लेकिन यह एक प्रतिभाशाली डेवलपर को बढ़त देगा जो समझता है कि टुकड़े एक साथ कैसे फिट होते हैं।

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

कहा जा रहा है, यदि आप नई भाषाओं और प्लेटफ़ॉर्म का पता लगाना और सीखना चाहते हैं, तो आपको उबंटू पर आरंभ करने के लिए बेहतर उपकरण मिलेंगे और यदि आप Microsoft पारिस्थितिकी तंत्र के बाहर काम की तलाश कर रहे हैं, तो आपको परिचित होने की आवश्यकता है उबंटू के साथ।


7
हां, मैं सहमत हूं। लिनक्स वातावरण पर थोड़ी देर के लिए निम्न-स्तरीय सी / यूनिक्स कोड लिखने के बाद, मैंने एक ब्रेक लेने और कुछ सी # ग्राफिक्स विकास करने का फैसला किया, नए वीएस को निकाल दिया, और, ठीक है, यह कम से कम कहने के लिए, मुक्त हो रहा था। यह उतना लचीला नहीं है, लेकिन यह सुनिश्चित करता है कि अगर आप अपनी आत्मा को माइकर को बेचने का मन नहीं बनाते हैं, तो यह आसान है। उह, मेरा मतलब है, अपने क्षितिज का विस्तार करना!
थॉमस

3
आधे-सूचित एंटी-स्निपिंग के लिए स्वागत योग्य एंटीडोट के लिए हाँ +1।
एलन बी

15

मैं प्रोग्राम लिखने के लिए C ommand- L ine I nterface ( CLI के रूप में उल्लिखित ) के साथ दोनों टूल्स, IDEs और टेक्स्ट-एडिटर का उपयोग करता हूं ।

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

IDEs

  • जब बहुत सारी विशेषताओं को एकीकृत करने और उन्हें ग्राफ़िकल GUI में प्रस्तुत करने की बात आती है तो IDE बहुत अच्छे होते हैं।
  • नकारात्मक पक्ष यह है कि यह किसी को नया कर सकता है। अब आपके पास सीखने के लिए दो चीजें होंगी : IDE और प्रोग्रामिंग भाषा।

पाठ संपादक और सीएलआई उपकरण

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

मैं अक्सर टेक्स्ट-आधारित टूल के साथ अपना प्रोटोटाइप बनाता हूं। बाद में, जब प्रबंधित करने के लिए अधिक फाइलें होती हैं, तो मैं एक आइएई की पेशकश करने वाले रीफैक्टरिंग टूल को महत्व देता हूं।


8
भविष्य के संदर्भ के लिए, CLI कमांड लाइन इंटरफेस के लिए एक संक्षिप्त नाम है। सीएलआई आम तौर पर एक इंटरफेस की तरह होता है जो एप्टीट्यूड की तरह होता है जो जीयूआई के समान होता है, लेकिन टेक्स्ट में। विम एक CLI संपादक grepहोगा , लेकिन CLI नहीं होगा, इसका कोई इंटरफ़ेस नहीं है (यह सिर्फ एक कमांड लाइन टूल होगा)
kiri

वियोग अच्छा है। विंडोज प्रोग्रामिंग बैकग्राउंड से आने वाला CLI कॉमन लैंग्वेज इंफ्रास्ट्रक्चर के लिए खड़ा हो सकता है ।
13

मैं GUI विकसित करने के लिए GUI का उपयोग करता हूं, और CLI या पाठ-आधारित कार्यक्रमों / सामग्री को विकसित करने के लिए एक पाठ संपादक। मैं कभी भी विम-विज़ व्यापार अनुप्रयोग को विम में लिखने की कोशिश नहीं करूंगा, विजुअल सी # ऐसी चीजों को सरल बनाने के लिए प्रोटोटाइप बनाता है। इसी तरह, मैं विंडोज पर एक आईडीई में वेब विकास (PHP / HTML / CSS / JS आदि) कभी नहीं करूंगा, क्योंकि मेरे वेब सर्वर पर विम में ऐसा करना असीम रूप से अधिक कुशल और सुविधाजनक है।
दान

@ minerz029 CLI एक समय में grep- शैली के कार्यक्रम (एक कमांड [लाइन]) है। आप "कंसोल एप्लिकेशन" के बारे में सोच रहे हैं, जो एप्टीट्यूड / विम-स्टाइल है।
इजाकाता

4
@ minerz029 के लिए इंटरफ़ेस grepतर्क, स्टडिन और स्टडआउट है - शब्द कुछ भी ग्राफिकल या छद्म ग्राफिकल नहीं करता है। अन्य प्रकार के इंटरफेस में वेब एपीआई, सीरियल प्रोटोकॉल, और इसी तरह शामिल हैं।
इजाकाता

12

मैं अपना उत्तर रिंग में फेंक दूंगा (हालांकि मेरा मानना ​​है कि ये सभी अच्छे भी हैं)।

सबसे बुनियादी जवाब जो आपको मिल सकता है, वह है दर्शनशास्त्र।


माइक्रोसॉफ्ट की दुनिया में, यह थोड़ा धार्मिक है - आपके पास माउंट पर देवता हैं। यदि आप कुछ भी लागू करना चाहते हैं तो रेडमंड को याचिका दायर करनी चाहिए। कभी-कभी वे सुनते हैं, अन्य बार आपके बलिदान और दलीले बहरे कानों पर पड़ेंगी। शायद वे शिकार कर रहे थे। माइक्रोसॉफ्ट पूरे पारिस्थितिकी तंत्र को नियंत्रित करता है - वे ओएस के मालिक हैं, वे आईडीई के मालिक हैं, और वे उन्हें एक साथ उन तरीकों से जोड़ते हैं जो शायद एसई नेटवर्क पर बात करने के लिए अनुपयुक्त हैं। यहां तक ​​कि आईडीई के टुकड़ों को कसकर युग्मित किया जाता है - इसे एकीकृत कहा जा सकता हैलेकिन मुझे लगता है कि युग्मित अधिक सटीक है। यदि आप चीजों को थोड़ा बदलना चाहते हैं, तो गेट्स ने मना किया है कि आप कुछ इस तरह से बदलना चाहेंगे कि या तो विंडोज या विजुअल स्टूडियो के डिजाइनरों ने स्पष्ट रूप से अनुमति नहीं दी। और फिर IE, और IIS, Microsoft सर्वर, और MS SQL सर्वर, और ऑफिस ... जैसी तकनीकों में फेंक दो और एक अच्छा बड़ा खुशहाल परिवार है। लेकिन अगर आपको परिवार का हिस्सा छोड़ना चाहिए? कंपकंपी !


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

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

न केवल उन्हें गठबंधन करना आसान है, बल्कि उन्हें अलग करना भी बहुत आसान है - अगर मैं तय करता हूं कि मुझे अब एक स्ट्रीम संपादित करने की आवश्यकता नहीं है, लेकिन मैं अपने पाठ को sedपास करने के बजाय परिणामों को फ़िल्टर करना चाहता हूं, तो मैं पास हो सकता हूं इसके grepबजाय।

अब, यह एक लिनक्स वातावरण में विकास के पीछे मौलिक दर्शन है - इसलिए यहां तक ​​कि अगर आप वहां से ऊपर जाते हैं, तो कई उपकरण समान प्रकार के इंटरफेस प्रदान करते हैं। वे आपको उन्हें कमांड लाइन या पोर्ट्स या एचटीटीपी के माध्यम से भागों, या इंटरफ़ेस में विघटित करने की अनुमति देते हैं।

और यहां तक ​​कि अगर यह मामला नहीं था, तो आपके पास ओपन सोर्स सॉफ़्टवेयर भी है। लिनक्स प्लेटफ़ॉर्म पर अधिकांश (यदि सभी नहीं) सॉफ़्टवेयर खुला स्रोत है। इसलिए यदि आपको यह पसंद नहीं है कि यह कैसे लिखा जाता है तो आप पूरी तरह से, पूरी तरह से, सॉफ्टवेयर को स्वयं बदलने में सक्षम हैं। यह अविश्वसनीय रूप से सशक्त है। जिस तरह से आप चाहते हैं उस आईडीई को अलग नहीं कर सकते? या तो परिवर्तन करें और उन्हें वापस ऊपर की ओर जमा करें, या परियोजना को कांटा करें। यकीन नहीं होता कि कुछ ऐसा क्यों करता है? स्रोत का उपयोग करें, ल्यूक! कमांड लाइन के माध्यम से कुछ को स्वचालित करने में सक्षम होने की आवश्यकता है? प्रोजेक्ट पर हैक करें और अपने परिवर्तनों को स्टिक करें। एक बग, या एक सुरक्षा मुद्दे पर आएं। अरे लगता है कि क्या - आप इसे ठीक कर सकते हैं, आपको बाहर आने के लिए SP3.432vb89234.startdate1eQ की प्रतीक्षा करने की आवश्यकता नहीं है।

आप उन उपकरणों को जोड़ सकते हैं जिन्हें आप चाहते हैं और जिनकी आपको आवश्यकता है। और अगर वहाँ कुछ है जो आपके रास्ते में है, तो आप उस परिवर्तन को प्राप्त करने में 100% सक्षम हैं। यहां तक ​​कि अगर आपके पास क्षमता नहीं है, तो आप निश्चित रूप से किसी को उस परिवर्तन को विकसित करने के लिए भुगतान कर सकते हैं - या किसी और को भी सुझाव दे सकते हैं जिसके पास पता है कि कैसे।

यह प्रोग्रामिंग के लिए बेहतर है, क्योंकि जब आप घर्षण में आते हैं , तो आप इसे अपने वर्कफ़्लो से समाप्त कर सकते हैं। क्योंकि विकास कठिन है , एक सफल प्रोग्रामर बनने के लिए बहुत सी चीजें हैं जिनके बारे में आपको सोचना है, और जितना अधिक आपको अन्य चीजों के बारे में सोचना है उतना ही कठिन है

घर्षण को खत्म करना महत्वपूर्ण है।

इसलिए यदि Microsoft पारिस्थितिक तंत्र धर्म वह है जहाँ आप घर पर महसूस करते हैं, और आप साधनों का इतना आनंद लेते हैं कि यह आपको बहुत अधिक / कोई भी घर्षण प्रदान नहीं करता है ... ठीक है, यह शायद तब ठीक है।

लेकिन अगर आप Microsoft ढालना (tm), पेटेंट लंबित नहीं रखते हैं, तो आप घर्षण में भाग जाएंगे। विकास को दर्द होगा। हर बार जब आप चाहते हैं कि आप कुछ कर सकते हैं, लेकिन ऐसा नहीं कर सकते हैं, जो कीमती संज्ञानात्मक संसाधनों को खत्म कर देगा। और अगर ऐसा है, तो लिनक्स विकास का माहौल शायद आपके लिए है।


1
मैंने वास्तव में आपके द्वारा जुड़े निबंधों का आनंद लिया, धन्यवाद।
गैरेथ डेविडसन

3
बामर की प्रशंसा करें, और उसके सभी पैरीट बिट्स को सही ढंग से सेट किया जा सकता है। एसीके। एसीके। एसीके।
वॉरेन पी।

9

मैं प्रश्न के लिए अपने और अधिक सामान्य विचार प्रदान करना चाहता हूं:

"प्रोग्रामिंग के लिए लिनक्स बेहतर वातावरण क्यों है?"

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


2
अच्छी बात। ओपन सोर्स उन सभी डेवलपर्स के लिए एक प्राकृतिक लाभ है जिनके पास किसी भी प्रकार की जिज्ञासा है। खिड़कियों पर, यह नीचे सभी तरह से कछुए है!
वॉरेन पी

ये एक अच्छा बिंदु है। आपके पास एक सॉफ्टवेयर के इंटर्नल्स में अंतर्दृष्टि है
अनवर 5

विंडोज डेवलपर्स के बहुत सारे विंडोज प्लेटफॉर्म पर अपने पूरे कामकाजी जीवन को काम करेंगे, एक एपीआई के खिलाफ प्रोग्रामिंग वे इसके दूसरे पक्ष को कभी नहीं देखेंगे। मन के लिए जेल की तरह, क्या आपको नहीं लगता?
वॉरेन पी।

@ArrenP यदि किसी API को ठीक से प्रलेखित किया जाता है, तो आप स्रोत कोड को देखकर इसके बारे में अधिक जानने वाले नहीं हैं। (हालांकि मैं मानता हूं कि कई एपीआई पूरी तरह से दोनों दुनिया में प्रलेखित नहीं हैं।)
svick

8

क्यों प्रोग्रामिंग के लिए लिनक्स बेहतर है

IDEs

विजुअल स्टूडियो और Xcode के अलावा , जो अपने विशिष्ट उद्देश्यों की सेवा करते हैं, सबसे लोकप्रिय IDE मल्टीप्लाट रिकॉर्डर हैं। ऐसा प्रतीत हो सकता है कि दर्जनों भाषाओं के लिए गज़िलियन आईडीई हैं, लेकिन अंत में उनमें से ज्यादातर या तो ग्रहण , इंटेलीज आईडीईए या नेटबीन्स पर आधारित हैं । उनके पास जो कुछ भी है वह यह है कि वे सभी जावा-आधारित हैं। जावा एक ही हार्डवेयर पर किसी भी अन्य ओएस की तुलना में लिनक्स पर अधिक कुशलता से काम करता है। वास्तव में, जावा एक ही हार्डवेयर पर OS X की तुलना में लिनक्स पर 20% अधिक तेज है। इनमें से कई IDE उबंटू सॉफ्टवेयर सेंटर में एक क्लिक के साथ इंस्टॉल होने के लिए तैयार हैं।

संकलक

जीसीसी बहुत अधिक उद्योग मानक बन गया है। किसी भी संदेह से परे इसका प्राथमिक मंच लिनक्स है, जहां यह सबसे अच्छा समर्थित है। और यह स्वतंत्र और रॉयल्टी-मुक्त है।

अतिरिक्त उपकरण

Linux अन्य प्लेटफ़ॉर्म पर उपलब्ध नहीं है, उदाहरण के लिए Valgrind (मेमोरी डीबगिंग के लिए एक उपकरण, मेमोरी लीक का पता लगाने और मुनाफाखोरी) के लिए अद्वितीय उपकरण प्रदान करता है । लिनक्स डिबगिंग टूल जैसे स्ट्रेस और लेट्रेस के साथ भी आता है , जिसका उपयोग उत्पादन कोड को डीबग करने के लिए भी किया जा सकता है (यानी डिबगिंग प्रतीकों के साथ संकलित नहीं)। विंडोज के लिए समतुल्य उपकरण या तो गैर-मौजूद हैं या बहुत महंगे हैं और समान कार्यक्षमता प्रदान नहीं करते हैं।

OSS स्थापित करने में आसानी

उबंटू में एक उत्कृष्ट पैकेज प्रबंधक है। ज्यादातर मामलों में सॉफ़्टवेयर स्थापित करना सिर्फ apt-get install package-name(आप इसे GUI के साथ भी कर सकते हैं, या तो Ubuntu Software Center या Synaptic)। एक बार स्थापित होने के बाद, वे सिस्टम द्वारा बगफिक्स रिलीज के साथ स्वचालित रूप से अपडेट हो जाते हैं। पैकेज सिस्टम भी स्वचालित रूप से निर्भरता का ट्रैक रखता है, इसलिए आपको आवश्यक अन्य पैकेजों के बारे में चिंता करने की ज़रूरत नहीं है; वे स्वचालित रूप से स्थापित हो जाएंगे।

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

उत्पादन मशीनों के लिनक्स होने की बहुत संभावना है

यदि आप बैक-एंड, वेब के लिए, क्लाउड के लिए, आदि के लिए किसी भी प्रकार की प्रोग्रामिंग कर रहे हैं, तो यह बहुत संभावना है कि आपकी लक्ष्य मशीनें लिनक्स हैं। जब आप अपने लक्ष्य मशीन के रूप में एक ही प्रकार के ओएस पर विकसित कर रहे हैं तो बहुत कम आश्चर्य की बात है।

बेशक, आप विंडोज के लिए एक डेस्कटॉप एप्लिकेशन विकसित कर रहे होंगे, लेकिन आजकल यह प्रोग्रामर के लिए एक आला जॉब मार्केट है।


विंडोज के लिए डेस्कटॉप ऐप एक आला बाजार हैं? Wha?
एलन बी

2
@AlanB: नहीं, डेस्कटॉप के प्रोग्रामर विंडोज़ ऐप के आला हैं। अनुमानित 90-95% प्रोग्रामर इन-हाउस डेवलपमेंट कर रहे हैं, और ये ज्यादातर डेस्कटॉप ऐप नहीं हैं। इसके अलावा, बस इसके बारे में सोचें, जब आपने आखिरी बार खरीदा था (जैसा कि वास्तविक भुगतान के लिए भुगतान किया गया है) एक विंडोज एप्लिकेशन, यह एक गेम नहीं था (और न ही Adobe इस मामले के लिए उत्पाद)?
वॉरटेक

जहाँ तक मैं देख सकता हूँ कि व्यापार के क्षेत्र में लगभग सब कुछ अभी भी डेस्कटॉप आधारित है और इसके लिए भुगतान किया जाता है, इसके बावजूद क्लाउड-केंद्रित कंपनियां लगातार दावा करती हैं।
एलन बी

4
@AlanB: फिर, मैं अंत उपयोगकर्ताओं के बाजार के बारे में बात नहीं कर रहा हूँ। मैं प्रोग्रामर के लिए जॉब मार्केट की बात कर रहा हूं । उदाहरण के लिए आप जिन अनुप्रयोगों के बारे में बात कर रहे हैं उनमें से एक एमएस ऑफिस है। फिर भी एमएस में पूरी ऑफिस टीम केवल 2,500 प्रोग्रामर के बारे में है, और उनमें से कई डेस्कटॉप संस्करण पर भी काम नहीं कर रहे हैं।
वार्टेक

7

विंडोज पर विजुअल स्टूडियो की तरह आईडीई (एस) का उपयोग करने की तुलना में पाठ फ़ाइलों या टर्मिनल के माध्यम से एक बेहतर विकल्प (जैसा कि मैंने पढ़ा है) में एक कार्यक्रम क्यों लिख रहा है?

यह नहीं है, मैं तर्क दे सकता हूं कि यह बिल्कुल विपरीत है। आम तौर पर हालांकि, लोग उन उपकरणों को प्राथमिकता देते हैं जो वे बेहतर हैं। आपके द्वारा उपयोग किए जाने वाले टूल के प्रकार से प्रोग्राम लिखने में आसानी हो सकती है। इसलिए, उदाहरण के लिए, मैं जावा प्रोग्राम्स को सिर्फ vim के साथ ठीक लिख सकता हूं, लेकिन यह वास्तव में उत्पादक है जैसा कि पूर्ण पूर्ण IDE जैसे कि Eclipse या IntelliJ के विपरीत है। जॉन स्कीट ने इस सवाल का शानदार जवाब दिया कि एक आईडीई का उपयोग क्यों करें

अपने मूल प्रश्न पर वापस, केवल एक चीज लिनक्स पर बेहतर है सी प्रोग्रामिंग। बाकी सब कुछ आप लिनक्स पर कर सकते हैं और आप विंडोज पर भी कर सकते हैं। सी प्रोग्रामिंग ऐतिहासिक कारणों से लिनक्स पर बेहतर है, यह टूल का एक शानदार सेट प्रदान करता है (जिसे आप विंडोज बीटीडब्ल्यू पर प्राप्त कर सकते हैं लेकिन इसके लिए लिनक्स स्थापित करना बहुत आसान है)। इसी तरह, यदि आप C # और जैसे .NET लिख रहे हैं तो स्पष्ट कारणों के लिए विंडोज एक बेहतर विकल्प है। बाकी सब कुछ पूरी तरह से व्यक्तिपरक है और आप दोनों पक्षों के पेशेवरों और विपक्षों को सुनेंगे।


5
कृपया, Windows में MS के यहाँ> पर्यावरण को छोड़कर <एक और प्रोग्रामिंग भाषा सेट करने का प्रयास करें, यह देखने देता है कि यह कितनी दूर तक जाता है।
Braiam

1
@ ब्रियम मैंने किया, जावा: पी।
डैनियल

6
लिनक्स यूनिक्स जैसे कुछ भी चलाने में बेहतर है। जीसीसी टूलकिन (जिसमें सी और सी ++ कंपाइलर और अन्य सामान शामिल हैं) में एक लंबी यूनिक्स / पॉज़िक्स विरासत है। लेकिन, अगर आपको लगता है कि सभी यूनिक्स जैसी प्रोग्रामिंग सी प्रोग्रामिंग है, तो आप यूनिक्स / पॉज़िक्स / लिनक्स हेरिटेज और टूल्स की समृद्ध विविधता के लिए दुखी हैं।
वॉरेन पी

2
जावा एक विशेष मामला है, क्योंकि आप जल्दी से नेस्टेड फोल्डर और कई फाइलें उत्पन्न करते हैं। और जैसे ही आप वर्गों या संकुल का नाम बदलते हैं, आपको क्रमशः फ़ाइलनाम या फ़ोल्डर को सिंक करने की आवश्यकता होती है। मौज मस्ती मज़ा :)
MadMike

1
मुझे नहीं पता कि क्या C प्रोग्रामिंग के लिए लिनक्स और CLI जरूरी बेहतर हैं (VS C ++ में बढ़िया है लेकिन C99 सपोर्ट की कमी है, Posix Win32 से थोड़ा साफ हो सकता है)। लेकिन apt-getमहान है जब यह सी विकास की बात आती है। आप जल्दी से उदाहरण के लिए उपकरण, पुस्तकालयों और डिबग प्रतीकों प्राप्त कर सकते हैं sudo apt-get install libcurl4-openssl-dev, sudo apt-get install valgrind, sudo apt-get install libz-dbgऔर आसानी से बातें की कोशिश।
एलेक्स जैस्मीन

6

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

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

मेरा व्यक्तिगत अनुभव यह है, कि उबंटू ओएस विंडोज की तुलना में विकास के लिए बहुत तेज और आसान है। मुझे लगता है, यह इसलिए है क्योंकि मेरे द्वारा उपयोग किए जाने वाले अधिकांश उपकरण और प्रोग्राम लिनक्स पर निर्मित हैं और क्योंकि मुझे अपने पसंदीदा कार्यक्रमों के डाउनलोड लिंक के लिए इंटरनेट पर खोज करने की आवश्यकता नहीं है। यह सिर्फ एक 'apt-get install program1 program2 program3' है। तुलना में: मुझे प्रोग्रामिंग के लिए आवश्यक सभी चीजों के साथ एक ताजा विंडोज इंस्टॉल और कॉन्फ़िगर करने के लिए 3 कार्य दिवसों की आवश्यकता है (कंपनी, निजी नहीं, जो कि तेज होगी), लेकिन यह उबंटू में समान कार्य के लिए सिर्फ एक दिन है।

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

आशा है कि मेरी "blafasel" थोड़ी मदद करती है ...


1

मैं तर्क था कि एक लिनक्स वितरण है एक IDE।

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

एक आईडीई अधिक एकीकृत है, इस अर्थ में कि आईडीई जीसीसी, गिट और वीआई (उदाहरण के लिए) का उपयोग करने की तुलना में अधिक कसकर युग्मित हैं । चुस्त युग्मन `intellisense 'जैसी चीजों को बेहतर काम करने की अनुमति देता है। लेकिन दूसरी ओर, ढीली युग्मन के कई फायदे हैं (जैसे लचीलापन, विनिमयशीलता, लॉक-इन की कमी)।

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


तो, मूल रूप से आप कह रहे हैं कि लिनक्स एक एकीकृत विकास पर्यावरण है जो वास्तव में एकीकृत नहीं है? :-)
svick

1

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

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

हालाँकि, मैं विवाद नहीं करता कि विंडोज पर कुछ बहुत अच्छे प्रोग्रामिंग वातावरण हैं। कॉर्पोरेट वातावरण में प्रोग्रामिंग के लिए, ये अक्सर हावी होते हैं।


0

गति क्रमबद्ध उत्तर है।

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

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

त्रुटियों को कमांड लाइन इंटरफ़ेस के साथ अधिक क्रियात्मक तरीके से प्रस्तुत किया जाता है, जिसे मैं पसंद करता हूं, और यह संकलन के दौरान प्रतिक्रिया भी देता है। एक बात जो मुझे Visual Studio से नफरत है, वह यह है कि डिफ़ॉल्ट एक छोटा सा आइकन है जो इसके संकलन को इंगित करता है, फिर आपको एक त्रुटि सूची मिलती है।

एक संकीर्ण दृश्य के साथ आप 80 कॉलम की चौड़ाई को बनाए रखेंगे जो पठनीयता में मदद करता है, मैंने कोड देखा है जो 200 कॉलम की चौड़ाई तक फैला है। 80 कॉलम पर कोड फिटिंग के साथ आप एक बार में 4/5 विंडो खोल सकते हैं।

सीएलआई संपादक के साथ आप दूरस्थ रूप से कोड कर सकते हैं, पाठ की तुलना में धीमी (पाठ की तुलना में) आरडीपी सत्र की कोई आवश्यकता नहीं है। आप एक जीएसएम लिंक पर कोड कर सकते हैं।

दृश्य प्रकार विकास बेकार है। एक GUI IDE पर एक फायदा यह हो सकता है कि आप अपनी स्क्रीन और उसके तेज को खींच सकते हैं। हालांकि मेरे अनुभव में एक प्रोटोटाइप के लिए इसका ठीक है लेकिन अक्सर आपको कोड में मैन्युअल रूप से करने के साथ बेहतर परिणाम मिलते हैं। VS2012 कोड एनालाइज़र ने आज सुबह ही मुझे 200+ समस्याओं के बारे में चेतावनी दी जो कोड के साथ विजुअल स्क्रीन द्वारा स्वतः उत्पन्न की गई थी?!?!?


0

मुझे लगता है कि आपका असली सवाल हो सकता है, "क्या कोई विज़ुअल स्टूडियो विकल्प हैं जो उबंटू पर चलेंगे, क्योंकि यह नहीं होगा?"

Monodevelop।

यह व्यावहारिक है, लेकिन यदि आप वीएस और सभी सुविधाओं के लिए उपयोग किए जाते हैं, तो आप इसे नफरत करेंगे।

टेक्स्ट एडिटर का उपयोग करने का कोई फायदा नहीं है। याद है वो अच्छी बात जिसे Intellisense कहा जाता है? नहीं हो रहा है (लेकिन मोनोडेवलप में कुछ ऐसा है)। उम्मीद है की यह मदद करेगा।

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