2012-06-05 15 views
20

प्रकटीकरणका उपयोग कर जम्मू प्रोग्रामिंग भाषा

यह एक "सामान्य" सवाल यह है कि शायद एक विशिष्ट जवाब के बिना एक बड़ी परियोजना लेखन, लेकिन यह नहीं एक लौ युद्ध के रूप में इरादा है। मेरी परियोजना शुरू करने से पहले मुझे कुछ जानकारी वाकई पसंद आएगी।

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

मैं बड़े वाणिज्यिक या ओपन सोर्स प्रोजेक्ट्स में जे के उपयोग के बारे में कुछ जानकारी खोजने की कोशिश कर रहा हूं, लेकिन मैं आगे बढ़ने के अपने निर्णय को आधार देने के लिए कोई जानकारी नहीं ढूंढ पा रहा हूं। मेरे पास है:

  • Google Trends की खोज की, लेकिन निम्नलिखित प्रतिक्रिया प्राप्त हुई: "आपकी शर्तें - जे प्रोग्रामिंग भाषा - ग्राफ़ दिखाने के लिए पर्याप्त खोज मात्रा नहीं है।"
  • पर मुक्त (कोड) खोजे गए, और जम्मू का उपयोग कर एक परियोजना नहीं मिला
  • Sourceforge पर खोजे गए, और जम्मू
  • लैम्ब्डा परम पर खोजे गए का उपयोग कर एक परियोजना नहीं मिला है, और केवल following discussion कि तिरछे संदर्भ मिले एपीएल
  • गूगल और बिंग पर आम तौर पर खोजे गए, और कहा कि का उपयोग जम्मू

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

क्या कोई मुझे कृपया जे (या किसी भी अस्पष्ट भाषा) का उपयोग करने में कुछ कमी बता सकता है महत्वपूर्ण परियोजनाएं? क्या यह पर्याप्त प्रदर्शन नहीं है? क्या इसमें पुस्तकालय नहीं हैं? और कुछ जो मुझे पता होना चाहिए?

आपके प्रतिक्रियाओं के लिए अग्रिम धन्यवाद।

+6

शायद ** ** ** ** परियोजना में एक अस्पष्ट भाषा का मुख्य दोष यह है कि उस भाषा में अनुभव के साथ ** ** ** डेवलपर्स को ढूंढना मुश्किल है। –

+0

जे में मौजूद प्रमुख डेटा संरचनाएं और सार तत्व कार्यात्मक भाषाओं में मौजूद नहीं हैं? –

+0

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

उत्तर

16

मुझे लगता है कि जे बड़ी, महत्वपूर्ण परियोजनाओं पर महत्वपूर्ण उपयोग के लिए उपयुक्त है। लेकिन मुझे यह भी लगता है कि इस तरह के एक परियोजना के लिए जे एक बहुत ही साहसी पसंद (पढ़ना: उच्च जोखिम) होगा।

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

वहाँ अन्य बड़ी सॉफ्टवेयर प्रणाली है कि जम्मू पर भरोसा किया जा सकता है, लेकिन मैं उन्हें पहचान नहीं है (और मैं वर्षों के लिए मेरी आँखों को बाहर रखने की है।)

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

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

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

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

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

+0

विस्तृत उत्तर के लिए धन्यवाद। और एक्सएमएल पुस्तकालयों के लिंक के लिए बोनस अंक। और हाँ, "मजेदार" मेरा शुरुआती बिंदु है। परियोजना के कई हिस्सों अभी भी नियोजन चरण में हैं, इसलिए मुझे परियोजना के लिए कोड लिखने की आवश्यकता होने से कम से कम चार या पांच सप्ताह पहले हैं। – Shredderroy

11

मैं पहले ही स्वीकृत उत्तर के बावजूद इसका उत्तर दे रहा हूं।

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

  • आईडीई: मेरे लिए, बड़ी परियोजना को विश्वसनीय आईडीई के साथ हाथ में जाना चाहिए। जे एक पाठ संपादक है।

  • पुस्तकालय: कई जे पुस्तकालय हैं, लेकिन जम्मू के रूप में जाना जाता है, कई भाषाओं में मौजूद हैं जिनमें अधिक समृद्ध पुस्तकालय और ढांचे हैं।

  • कोड संरचना: यह पूरी तरह से आप पर निर्भर है, और वास्तव में जे जे के खिलाफ एक बिंदु स्पष्ट रूप से या किसी अन्य भाषा के रूप में obfuscated के रूप में लिखा जा सकता है। मानक प्रोग्रामिंग प्रथाएं लागू होती हैं, और किसी को हमेशा यथासंभव स्पष्ट रूप से दस्तावेज़ और वर्णन करना चाहिए। यह जम्मू में दोगुना है यदि आपको पता चलता है कि "सेंसर किए गए कसम शब्दों" का एक निश्चित सेट दूसरे से बेहतर काम करता है।

  • अंत में, अगर आपको इसकी कुछ क्षमताओं के लिए जम्मू की आवश्यकता है, तो आप जे को घटक के रूप में उपयोग कर सकते हैं। दुर्भाग्य से जेई 7 में .NET एकीकरण को जाने दिया गया है (और विशेष रूप से इसके 64-बिट स्वाद में भी जे 6 में 100% संगत नहीं था), लेकिन बाहरी दुनिया के साथ संवाद करने के तरीके हैं। उदाहरण के लिए KDB के, जे के विवाहित भाई पर आधारित है, और मूल रूप से मैप की गई फ़ाइलों को तेजी से एक्सेस करने के लिए लपेटता है, एक सुविधा जे भी है।

+2

प्रतिक्रिया के लिए बहुत बहुत धन्यवाद। मैं उस बिंदु के बहुत करीब हूं जहां मुझे कोड लिखना शुरू करना है। अब तक, मैं जे और एफ # में कम या समान समानांतर परीक्षण कर रहा हूं। इस तरह, अगर किसी एक भाषा को परियोजना को पूरा करने के लिए बहुत परेशानी होनी चाहिए, तो मैं हमेशा दूसरे पर वापस आ सकता हूं। (मैं दोनों को प्यार करता हूं: एफ # की अभिव्यक्ति और दोनों की "नीरसता" में उनका आकर्षण है।) – Shredderroy

+2

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

1

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

उदाहरण के लिए, एक नोडजेस वेबैप में, jconsole.exe को कॉल करने के लिए एक child_process का उपयोग किया जा सकता है और कमांड लाइन इंटरफ़ेस के माध्यम से पैरामीटर पास कर सकता है।

पूरे कार्यक्रम को विंडोज़ एज़ूर प्लेटफॉर्म पर तैनात किया जा सकता है, साथ ही बिना किसी अतिरिक्त स्थापना के स्थानीय मशीन पर भी चलाया जा सकता है (यानी node.exe और jconsole.exe एक ही फ़ोल्डर में शामिल हैं)।

2

किसी कृपया मुझे महत्वपूर्ण परियोजनाओं के लिए जम्मू (या किसी भी अस्पष्ट भाषा) का उपयोग कर के कुछ कमियां बता सकते हैं?

अधिक अस्पष्ट भाषा मिशन के लिए एक प्रबंधक या परियोजना नेतृत्व की भूमिका में किसी के लिए महत्वपूर्ण परियोजनाओं का उपयोग कर के लिए सबसे बड़ा दोष यह सभी लोगों और कौशल के बारे में कर रहे हैं।

  1. हम भाषा में संभावित टीम सदस्य कौशल और क्षमताओं का आकलन और आकलन कैसे करते हैं?
  2. यदि कोई व्यक्ति मुझे ज्ञान में अंतराल को भरने में कितना समय लगेगा?
  3. जब हमें अतिरिक्त सहायता की आवश्यकता होती है तो क्या हम विकास टीम को पर्याप्त तेज़ी से स्केल कर सकते हैं?

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

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