जे (प्रोग्रामिंग भाषा): Difference between revisions

From Vigyanwiki
No edit summary
No edit summary
 
(4 intermediate revisions by 3 users not shown)
Line 1: Line 1:
{{Short description|Programming language}}
{{Short description|Programming language}}
1990 के आरम्भ में केनेथ ई. इवेर्सन एंड [[रॉजर हुई]] द्वारा विकसित जे [[प्रोग्रामिंग भाषा]] के रूप थी,[5][6] [[सरणी प्रोग्रामिंग]] भाषा, जो मुख्य रूप से [[एपीएल (प्रोग्रामिंग भाषा)|एपीएल प्रोग्रामिंग भाषा]] आईवेर्सन पर आधारित है।
1990 के आरम्भ में केनेथ ई. इवेर्सन एंड [[रॉजर हुई]] द्वारा विकसित जावा [[प्रोग्रामिंग भाषा]],[5][6] एक [[सरणी प्रोग्रामिंग]] भाषा है, जो मुख्य रूप से [[एपीएल (प्रोग्रामिंग भाषा)|एपीएल प्रोग्रामिंग भाषा]] आईवेर्सन पर आधारित है।


एपीएल विशेष वर्ण विषय को दोहराने से बचने के लिए J केवल मूल [[एएससीआईआई]] वर्ण समूह का उपयोग करता है, डॉट और कोलन के उपयोग को इंफ्लेक्शन के रूप में उपयोग करता है<ref>[http://code.jsoftware.com/wiki/Vocabulary/Words J NuVoc Words]</ref> डिग्राफ (कंप्यूटिंग) के समान छोटे शब्द बनाने के लिए प्रयोग किये जाते है। इस तरह के अधिकांश मौलिक या प्राचीन शब्द गणितीय प्रतीकों के रूप में काम करते हैं, जिसमें डॉट या कोलन मूल वर्णों के अर्थ का विस्तार करते हैं। इसके अतिरिक्त, कई अक्षर जो अन्य भाषाओं में अधिकांशतः जोड़े जाते है जैसे कि <code>[] {} "" ``</code> or <code><></code>) J द्वारा अकेले खड़े शब्दों के रूप में मान लिया जाता है या जब इसे बहु-वर्ण शब्दों के एकल वर्ण मूल के रूप में रखा जाता है।  
एपीएल विशेष वर्ण विषय को दोहराने से बचने के लिए जावा केवल मूल [[एएससीआईआई]] वर्ण समूह का उपयोग करता है, डॉट और कोलन के उपयोग को इंफ्लेक्शन के रूप में उपयोग करता है<ref>[http://code.jsoftware.com/wiki/Vocabulary/Words J NuVoc Words]</ref> डिग्राफ (कंप्यूटिंग) के समान छोटे शब्द बनाने के लिए प्रयोग किये जाते है। इस तरह के अधिकांश मौलिक या प्राचीन शब्द गणितीय प्रतीकों के रूप में काम करते हैं, जिसमें डॉट या कोलन मूल वर्णों के अर्थ का विस्तार करते हैं। इसके अतिरिक्त, कई अक्षर जो अन्य भाषाओं में अधिकांशतः जोड़े जाते है जैसे कि <code>[] {} "" ``</code> or <code><></code>) जावा द्वारा अकेले खड़े शब्दों के रूप में मान लिया जाता है या जब इसे बहु-वर्ण शब्दों के एकल वर्ण मूल के रूप में रखा जाता है।  


जे बहुत ही संक्षिप्त [[चरम कार्यक्रम|सरणी प्रोग्रामिंग]] भाषा है और जो [[गणितीय]] और [[सांख्यिकीय]] प्रोग्रामिंग के लिए सबसे उपयुक्त होती है, विशेष रूप से जब [[मैट्रिक्स (गणित)]] पर संक्रियाओं का निष्पादन होता हैं। इसका उपयोग चरम प्रोग्रामिंग में भी किया जाता है<ref>{{Citation |contribution= Software Development as a Collaborative Writing Project |series= Extreme programming and agile processes in software engineering |place= Oulu, Finland |year= 2006 |first1= Brian |last1= Bussell |first2= Stephen |last2= Taylor |pages= 21–31 |publisher= [[Springer Science+Business Media|Springer]] |isbn= 978-3-540-35094-1}}</ref> और [[नेटवर्क प्रदर्शन]] के विश्लेषण में उपयोग किया जाता है।<ref>{{Citation |first= Alan |last= Holt |title= Network Performance Analysis: Using the J Programming Language |isbn= 978-1-84628-822-7 |year= 2007 |publisher= [[Springer Science+Business Media|Springer]]}}</ref>
जावा बहुत ही संक्षिप्त [[चरम कार्यक्रम|सरणी प्रोग्रामिंग]] भाषा है और जो [[गणितीय]] और [[सांख्यिकीय]] प्रोग्रामिंग के लिए सबसे उपयुक्त होती है, विशेष रूप से जब [[मैट्रिक्स (गणित)]] पर संक्रियाओं का निष्पादन होता हैं। इसका उपयोग चरम प्रोग्रामिंग में भी किया जाता है<ref>{{Citation |contribution= Software Development as a Collaborative Writing Project |series= Extreme programming and agile processes in software engineering |place= Oulu, Finland |year= 2006 |first1= Brian |last1= Bussell |first2= Stephen |last2= Taylor |pages= 21–31 |publisher= [[Springer Science+Business Media|Springer]] |isbn= 978-3-540-35094-1}}</ref> और [[नेटवर्क प्रदर्शन]] के विश्लेषण में उपयोग किया जाता है।<ref>{{Citation |first= Alan |last= Holt |title= Network Performance Analysis: Using the J Programming Language |isbn= 978-1-84628-822-7 |year= 2007 |publisher= [[Springer Science+Business Media|Springer]]}}</ref>


[[जॉन बैकस]] की लैंग्वेज [[एफपी (प्रोग्रामिंग भाषा)|एफपी]] और [[एफएल (प्रोग्रामिंग भाषा)|एफएल प्रोग्रामिंग भाषा]] की तरह, जे अपने कार्यात्मक स्तर के [[प्रोग्रामिंग]] फीचर्स के माध्यम से [[फंक्शन-लेवल प्रोग्रामिंग]] को सपोर्ट करता है।
[[जॉन बैकस]] की लैंग्वेज [[एफपी (प्रोग्रामिंग भाषा)|एफपी]] और [[एफएल (प्रोग्रामिंग भाषा)|एफएल प्रोग्रामिंग भाषा]] की तरह, जावा अपने कार्यात्मक स्तर के [[प्रोग्रामिंग]] फीचर्स के माध्यम से [[फंक्शन-लेवल प्रोग्रामिंग]] को सपोर्ट करता है।


[[ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग]] का समर्थन करने वाली अधिकांश भाषाओं के विपरीत, जे की लचीली श्रेणीबद्ध [[नाम स्थान|नेमस्पेस]] योजना, जहाँ एक विशिष्ट लोकेल में प्रत्येक नाम विद्यमान रहता है तथा [[वर्ग और प्रोटोटाइप]] आधारित ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग के लिए एक रूपरेखा के रूप में प्रभावी ढंग से उपयोग की जाती है।
[[ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग|ऑब्जावा क्ट ओरिएंटेड प्रोग्रामिंग]] का समर्थन करने वाली अधिकांश भाषाओं के विपरीत, जावा की लचीली श्रेणीबद्ध [[नाम स्थान|नेमस्पेस]] योजना, जहाँ एक विशिष्ट लोकेल में प्रत्येक नाम विद्यमान रहता है तथा [[वर्ग और प्रोटोटाइप]] आधारित ऑब्जावा क्ट ओरिएंटेड प्रोग्रामिंग के लिए एक रूपरेखा के रूप में प्रभावी ढंग से उपयोग की जाती है।


मार्च 2011 से [[जीएनयू जनरल पब्लिक लाइसेंस]] संस्करण 3 जी एल वी 3 के अनुसार [[स्वतंत्र और ओपन सोर्स सॉफ्टवेयर]] के रूप में होते है।<ref name="j source download">[https://www.jsoftware.com/#/source Jsoftware's source download page]</ref><ref name="j_gpl">{{cite web |url= http://thread.gmane.org/gmane.comp.lang.j.programming/20882 |title= जे स्रोत जीपीएल|date= 1 March 2011 |author= Eric Iverson |work= J programming mailing list}}</रेफरी><nowiki><ref></nowiki>{{github|openj/core|openj}}</ref> तथा बातचीत के माध्यम से लाइसेंस स्रोत को खरीदा जाता है।<ref name="j_source">[https://www.jsoftware.com/#/source Jsoftware की सोर्सिंग नीति]</ref>
मार्च 2011 से [[जीएनयू जनरल पब्लिक लाइसेंस]] संस्करण 3 जी एल वी 3 के अनुसार [[स्वतंत्र और ओपन सोर्स सॉफ्टवेयर]] के रूप में होते है।<ref name="j source download">[https://www.jsoftware.com/#/source Jsoftware's source download page]</ref><ref name="j_gpl">{{cite web |url= http://thread.gmane.org/gmane.comp.lang.j.programming/20882 |title= जे स्रोत जीपीएल|date= 1 March 2011 |author= Eric Iverson |work= J programming mailing list}}</रेफरी><nowiki><ref></nowiki>{{github|openj/core|openj}}</ref> तथा बातचीत के माध्यम से लाइसेंस स्रोत को खरीदा जाता है।<ref name="j_source">[https://www.jsoftware.com/#/source Jsoftware की सोर्सिंग नीति]</ref>


== उदाहरण ==
== उदाहरण ==
J, पॉइंट फ्री स्टाइल और फंक्शन कंपोज़िशन की अनुमति देता है। इस प्रकार इसके प्रोग्राम बहुत संक्षिप्त हो जाते हैं और कुछ प्रोग्रामरों द्वारा इसे [[पढ़ना मुश्किल]] माना जाता है।
जावा , पॉइंट फ्री स्टाइल और फंक्शन कंपोज़िशन की अनुमति देता है। इस प्रकार इसके प्रोग्राम बहुत संक्षिप्त हो जाते हैं और कुछ प्रोग्रामरों द्वारा इसे [[पढ़ना मुश्किल]] माना जाता है।


हैलो वर्ल्ड जे में प्रोग्राम है
हैलो वर्ल्ड जावा में प्रोग्राम है


'Hello, World!'
'Hello, World!'


हैलो वर्ल्ड का यह एक्सिक्यूसन दर्शाता है कि जे प्रोग्रामो के पारंपरिक उपयोग को जे इंटरप्रेटर सत्र में दर्ज किया जाता है और अभिव्यक्तियों के परिणाम प्रदर्शित किए जाते हैं। जे स्क्रिप्ट को स्टैंडअलोन प्रोग्राम के रूप में निष्पादित करने की व्यवस्था करना संभव होता है। यहां बताया गया है कि यह [[यूनिक्स]] प्रणाली पर कैसा दिख सकता है।
हैलो वर्ल्ड का यह एक्सिक्यूसन दर्शाता है कि जावा प्रोग्रामो के पारंपरिक उपयोग को जावा इंटरप्रेटर सत्र में दर्ज किया जाता है और अभिव्यक्तियों के परिणाम प्रदर्शित किए जाते हैं। जावा स्क्रिप्ट को स्टैंडअलोन प्रोग्राम के रूप में निष्पादित करने की व्यवस्था करना संभव होता है। यहां बताया गया है कि यह [[यूनिक्स]] प्रणाली पर कैसा दिख सकता है।


<nowiki>#</nowiki>!/bin/jc
<nowiki>#</nowiki>!/bin/ जावा c


echo 'Hello, world!'
echo 'Hello, world!'
Line 27: Line 27:
exit  
exit  


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


ऐतिहासिक रूप से एपल ने गुना इंगित करने के लिए<code>+/1 2 3</code> के बराबर था <code>1+2+3</code>. इस बीच, विभाजन का प्रतिनिधित्व गणितीय [[विभाजन चिन्ह]] (÷) के द्वारा किया जाता है।
ऐतिहासिक रूप से एपल ने गुना इंगित करने के लिए<code>+/1 2 3</code> के बराबर था <code>1+2+3</code>. इस बीच, विभाजन का प्रतिनिधित्व गणितीय [[विभाजन चिन्ह]] (÷) के द्वारा किया जाता है।


क्योंकि एएससी आईआई में विभाजन प्रतीक प्रति के रूप में सम्मलित नहीं है, जे दृश्य सन्निकटन या अनुस्मारक के रूप में विभाजन का प्रतिनिधित्व करने के लिए% का उपयोग करता है। यह जे के टोकन के स्मरक करैक्टर के बारे में कुछ दिखाता है और एएससीआईआई के उपयोग से लगाए गए कुछ प्रश्नों को दर्शाता है।
क्योंकि एएससी आईआई में विभाजन प्रतीक प्रति के रूप में सम्मलित नहीं है, जावा दृश्य सन्निकटन या अनुस्मारक के रूप में विभाजन का प्रतिनिधित्व करने के लिए% का उपयोग करता है। यह जावा के टोकन के स्मरक करैक्टर के बारे में कुछ दिखाता है और एएससीआईआई के उपयोग से लगाए गए कुछ प्रश्नों को दर्शाता है।


संख्याओं की सूची के औसत की गणना करने के लिए एवीजी नाम के एक J फ़ंक्शन को परिभाषित करने के लिए उपयोग होता है
संख्याओं की सूची के औसत की गणना करने के लिए एवीजी नाम के एक जावा फ़ंक्शन को परिभाषित करने के लिए उपयोग होता है


{{code|2=j|1=avg=: +/ % #}}
{{code|2=j|1=avg=: +/ % #}}
Line 46: Line 46:
<span style="color:sienna;">2.5</span>
<span style="color:sienna;">2.5</span>


ऊपर, औसत को तीन क्रियाओं की ट्रेन का उपयोग करके परिभाषित किया गया है (<code>+/</code>, <code>%</code>, और <code>#</code>) विशेष रूप से विभाजित होता है,<code>(V0 V1 V2) Ny</code> वैसा ही जैसा कि <code>(V0(Ny)) V1 (V2(Ny))</code> जो J की कुछ शक्ति को दर्शाता है। यहाँ V0, V1, और V2 क्रियाओं को दर्शाता है और Ny संज्ञा को दर्शाता है।
ऊपर, औसत को तीन क्रियाओं की ट्रेन का उपयोग करके परिभाषित किया गया है (<code>+/</code>, <code>%</code>, और <code>#</code>) विशेष रूप से विभाजित होता है,<code>(V0 V1 V2) Ny</code> वैसा ही जैसा कि <code>(V0(Ny)) V1 (V2(Ny))</code> जो जावा की कुछ शक्ति को दर्शाता है। यहाँ V0, V1, और V2 क्रियाओं को दर्शाता है और Ny संज्ञा को दर्शाता है।


उपयोग करने के कुछ उदाहरण <code>avg</code>:   
उपयोग करने के कुछ उदाहरण <code>avg</code>:   
Line 75: Line 75:
  <span style= color:sienna; >17.2 22 21.2 26.4</span>
  <span style= color:sienna; >17.2 22 21.2 26.4</span>


[[जे में रैंक]] एक महत्वपूर्ण अवधारणा के रूप में होता है। जे में इसका महत्व [[एसक्यूएल]] में चयन के महत्व के समान है और [[सी (प्रोग्रामिंग भाषा)|सी प्रोग्रामिंग भाषा]] में है।
[[जे में रैंक|जावा में रैंक]] एक महत्वपूर्ण अवधारणा के रूप में होता है। जावा में इसका महत्व [[एसक्यूएल]] में चयन के महत्व के समान है और [[सी (प्रोग्रामिंग भाषा)|सी प्रोग्रामिंग भाषा]] में है।


जे डिक्शनरी पैदावार से क्विकॉर्ट को लागू करता है।
जावा डिक्शनरी पैदावार से क्विकॉर्ट को लागू करता है।


   sel=: adverb def 'u # ['
   sel=: adverb def 'u # ['
Line 89: Line 89:
   )
   )


निम्नलिखित टैसिट प्रोग्रामिंग को प्रदर्शित करने वाले क्विकसॉर्ट का कार्यान्वयन के रूप में होता है। उत्तरार्द्ध में एक साथ कार्यों की रचना करना और स्पष्ट रूप से किसी भी चर का उल्लेख नहीं करना सम्मलित है। कांटे और हुक के लिए J का समर्थन नियमों को निर्धारित करता है कि इस फ़ंक्शन पर लागू होने वाले कारण,को इसके घटक फ़ंक्शंस पर कैसे लागू किया जाता है।
निम्नलिखित टैसिट प्रोग्रामिंग को प्रदर्शित करने वाले क्विकसॉर्ट का कार्यान्वयन के रूप में होता है। उत्तरार्द्ध में एक साथ कार्यों की रचना करना और स्पष्ट रूप से किसी भी चर का उल्लेख नहीं करना सम्मलित है। कांटे और हुक के लिए जावा का समर्थन नियमों को निर्धारित करता है कि इस फ़ंक्शन पर लागू होने वाले कारण,को इसके घटक फ़ंक्शंस पर कैसे लागू किया जाता है।
   Quicksort=: (($:@(<#[), (=#[), $:@(>#[)) ({~ ?@#)) ^: (1<#)
   Quicksort=: (($:@(<#[), (=#[), $:@(>#[)) ({~ ?@#)) ^: (1<#)






जे में छंटनी सामान्यतः अंतर्निहित (प्राचीन ) क्रियाओं का उपयोग करके पूरी की जाती है <code>/:</code> (क्रमबद्ध करें) और <code>\:</code> (क्रमबद्ध करें)। उपरोक्त उपयोक्ता-परिभाषित प्रकार, जैसे त्वरित प्रकार, सामान्यतः केवल चित्रण के लिए हैं।
जावा में छंटनी सामान्यतः अंतर्निहित (प्राचीन ) क्रियाओं का उपयोग करके पूरी की जाती है <code>/:</code> (क्रमबद्ध करें) और <code>\:</code> (क्रमबद्ध करें)। उपरोक्त उपयोक्ता-परिभाषित प्रकार, जैसे त्वरित प्रकार, सामान्यतः केवल चित्रण के लिए हैं।


जे में सॉर्टिंग सामान्यतः अंतर्निहित (आदिम) क्रियाओं /: (सॉर्ट अप) और \: (सॉर्ट डाउन) का उपयोग करके पूरा किया जाता है। उपरोक्त उपयोक्ता परिभाषित प्रकार, जैसे त्वरित प्रकार, सामान्यतः केवल चित्रण के लिएउपयोग होता है।
जावा में सॉर्टिंग सामान्यतः अंतर्निहित (आदिम) क्रियाओं /: (सॉर्ट अप) और \: (सॉर्ट डाउन) का उपयोग करके पूरा किया जाता है। उपरोक्त उपयोक्ता परिभाषित प्रकार, जैसे त्वरित प्रकार, सामान्यतः केवल चित्रण के लिएउपयोग होता है।


निम्न उदाहरण संदर्भ क्रिया<code>$:</code> के उपयोग को पुनरावर्ती रूप से फाइबोनैचि संख्याओं की गणना करने के लिए प्रदर्शित करता है।
निम्न उदाहरण संदर्भ क्रिया<code>$:</code> के उपयोग को पुनरावर्ती रूप से फाइबोनैचि संख्याओं की गणना करने के लिए प्रदर्शित करता है।
Line 106: Line 106:
फाइबोनैचि =:1:`(फाइबोनैचि @-&2+फाइबोनैचि @<:)@.(>&2)
फाइबोनैचि =:1:`(फाइबोनैचि @-&2+फाइबोनैचि @<:)@.(>&2)


निम्नलिखित व्यंजक पाई को n अंकों के साथ प्रदर्शित करता है और J की विस्तारित सटीक क्षमताओं को प्रदर्शित करता है:   
निम्नलिखित व्यंजक पाई को n अंकों के साथ प्रदर्शित करता है और जावा की विस्तारित सटीक क्षमताओं को प्रदर्शित करता है:   


<code>n=: 50</code> एनबी ने आवश्यक अंकों की संख्या के रूप में एन समूह किया
<code>n=: 50</code> एनबी ने आवश्यक अंकों की संख्या के रूप में एन समूह किया
Line 114: Line 114:


== क्रिया और संशोधक ==
== क्रिया और संशोधक ==
एक प्रोग्राम या रूटीन जो डेटा को इनपुट के रूप में लेता है और डेटा को आउटपुट के रूप में उत्पन्न करता है, जो एक क्रिया कहलाता है। जे के पास पूर्वनिर्धारित क्रियाओं का एक समृद्ध समूह होता है, जो सभी स्वचालित रूप से एकाधिक डेटा प्रकारों पर काम करते हैं उदाहरण के लिए क्रिया i मिलान प्रणाली के लिए किसी भी आकार की सरणियों में खोज करता है।
एक प्रोग्राम या रूटीन जो डेटा को इनपुट के रूप में लेता है और डेटा को आउटपुट के रूप में उत्पन्न करता है, जो एक क्रिया कहलाता है। जावा के पास पूर्वनिर्धारित क्रियाओं का एक समृद्ध समूह होता है, जो सभी स्वचालित रूप से एकाधिक डेटा प्रकारों पर काम करते हैं उदाहरण के लिए क्रिया i मिलान प्रणाली के लिए किसी भी आकार की सरणियों में खोज करता है।


   3 1 4 1 5 9 मैं। 3 1 एनबी 3 और 1 की पहली घटना का सूचकांक खोजें
   3 1 4 1 5 9 मैं। 3 1 एनबी 3 और 1 की पहली घटना का सूचकांक खोजावा ं
0 1
0 1
   3 1 4 1 5 9 मैं: 3 1 एनबी 3 और 1 की अंतिम घटना का सूचकांक ज्ञात करें
   3 1 4 1 5 9 मैं: 3 1 एनबी 3 और 1 की अंतिम घटना का सूचकांक ज्ञात करें
Line 123: Line 123:
उपयोक्ता प्रोग्रामों को नामित किया जाता है और जहां कहीं प्राचीन की अनुमति होती है वहां उनका उपयोग किया जाता है।
उपयोक्ता प्रोग्रामों को नामित किया जाता है और जहां कहीं प्राचीन की अनुमति होती है वहां उनका उपयोग किया जाता है।


J की शक्ति पर्याप्त हद तक इसके संशोधक से आती है: प्रतीक जो संज्ञा 'और क्रिया' को ऑपरेंड के रूप में लेते हैं और ऑपरेंड को निर्दिष्ट विधि से लागू करते हैं। उदाहरण के लिए, संशोधक {{mono|/}} ऑपरेंड, क्रिया को उसके बाईं ओर ले जाता है, और क्रिया उत्पन्न करता है जो उस क्रिया को उसके तर्क के प्रत्येक आइटम के बीच लागू करता है। वह है, {{mono|+/}} क्रिया है, जिसे 'लागू करें' के रूप में परिभाषित किया गया है {{mono|+}} आपके तर्क की वस्तुओं के बीच' इस प्रकार, वाक्य
जावा की शक्ति पर्याप्त हद तक इसके संशोधक से आती है: प्रतीक जो संज्ञा 'और क्रिया' को ऑपरेंड के रूप में लेते हैं और ऑपरेंड को निर्दिष्ट विधि से लागू करते हैं। उदाहरण के लिए, संशोधक {{mono|/}} ऑपरेंड, क्रिया को उसके बाईं ओर ले जाता है, और क्रिया उत्पन्न करता है जो उस क्रिया को उसके तर्क के प्रत्येक आइटम के बीच लागू करता है। वह है, {{mono|+/}} क्रिया है, जिसे 'लागू करें' के रूप में परिभाषित किया गया है {{mono|+}} आपके तर्क की वस्तुओं के बीच' इस प्रकार, वाक्य


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


   +/ 1 2 3 4 5
   +/ 1 2 3 4 5
Line 136: Line 136:
15
15


J के पास इनमें से लगभग दो दर्जन संशोधक हैं। वे सभी किसी भी क्रिया पर लागू हो सकते हैं, यहाँ तक कि एक उपयोगकर्ता लिखित क्रिया पर भी और उपयोगकर्ता अपने स्वयं के संशोधक लिख सकते हैं। जबकि संशोधक व्यक्तिगत रूप से अनुमति देने वाले शक्तिशाली होते हैं।
जावा के पास इनमें से लगभग दो दर्जन संशोधक हैं। वे सभी किसी भी क्रिया पर लागू हो सकते हैं, यहाँ तक कि एक उपयोगकर्ता लिखित क्रिया पर भी और उपयोगकर्ता अपने स्वयं के संशोधक लिख सकते हैं। जबकि संशोधक व्यक्तिगत रूप से अनुमति देने वाले शक्तिशाली होते हैं।
* बार-बार निष्पादन, उदाहरण डु व्हाइल लूप
* बार-बार निष्पादन, उदाहरण डु व्हाइल लूप
* सशर्त निष्पादन, उदाहरण इफ
* सशर्त निष्पादन, उदाहरण इफ
Line 143: Line 143:


== डेटा प्रकार और संरचनाएं ==
== डेटा प्रकार और संरचनाएं ==
J तीन सरल प्रकारों का समर्थन करता है
जावा तीन सरल प्रकारों का समर्थन करता है


* संख्यात्मक
* संख्यात्मक
Line 151: Line 151:
इनमें से न्यूमेरिक के सबसे ज्यादा वैरिएंट होते है।
इनमें से न्यूमेरिक के सबसे ज्यादा वैरिएंट होते है।


J का एक सांख्यिक प्रकार बिट होती है। दो बिट का मान हैं 0 और 1 बिट्स को सूचियों में बनाया जाता है। उदाहरण के लिए, 1 0 1 0 1 1 0 0 आठ बिट्स की एक सूची के रूप में होती है । वाक्यात्मक रूप से जे पार्सर इसे एक शब्द के रूप में मानता है। रिक्त विशेष्ता को शब्द बनाने वाले करैक्टर के रूप में पहचाना जाता है जो अन्य संख्यात्मक शब्द होते है। यादृच्छिक लंबाई की सूची समर्थित होते है।
जावा का एक सांख्यिक प्रकार बिट होती है। दो बिट का मान हैं 0 और 1 बिट्स को सूचियों में बनाया जाता है। उदाहरण के लिए, 1 0 1 0 1 1 0 0 आठ बिट्स की एक सूची के रूप में होती है । वाक्यात्मक रूप से जावा पार्सर इसे एक शब्द के रूप में मानता है। रिक्त विशेष्ता को शब्द बनाने वाले करैक्टर के रूप में पहचाना जाता है जो अन्य संख्यात्मक शब्द होते है। यादृच्छिक लंबाई की सूची समर्थित होते है।


इसके अतिरिक्त, जे इन सूचियों पर सभी सामान्य बाइनरी ऑपरेशंस का समर्थन करता है, उदाहरण के लिए, जैसे कि एक्सक्लूसिव या रोटेट शिफ्ट नॉट आदि
इसके अतिरिक्त, जावा इन सूचियों पर सभी सामान्य बाइनरी ऑपरेशंस का समर्थन करता है, उदाहरण के लिए, जैसे कि एक्सक्लूसिव या रोटेट शिफ्ट नॉट आदि


   1 0 0 1 0 0 1 0 +। 0 1 0 1 1 0 1 0 <span style= color:धूसर >NB. या</span>
   1 0 0 1 0 0 1 0 +। 0 1 0 1 1 0 1 0 <span style= color:धूसर >NB. या</span>
Line 161: Line 161:
  <span style= color:sienna >1 0 0 1 1 1 1 1 1 1 0 1</span>
  <span style= color:sienna >1 0 0 1 1 1 1 1 1 1 0 1</span>


जे बिट्स के उच्च क्रम सरणियों का भी समर्थन करता है। उन्हें द्वि-आयामी, त्रि-आयामी, आदि सरणियों में बनाया जाता है। उपरोक्त ऑपरेशन इन सरणियों पर समान रूप से अच्छा प्रदर्शन करते हैं।
जावा बिट्स के उच्च क्रम सरणियों का भी समर्थन करता है। उन्हें द्वि-आयामी, त्रि-आयामी, आदि सरणियों में बनाया जाता है। उपरोक्त ऑपरेशन इन सरणियों पर समान रूप से अच्छा प्रदर्शन करते हैं।


अन्य संख्यात्मक प्रकारों में पूर्णांक सम्मलित हैं, उदाहरण 3 42 फ्लोटिंग पॉइंट 3.14, 8.8e22, जटिल 0j1, 2.5j3e88, विस्तारित सटीक पूर्णांक 12345678901234567890x और विस्तारित सटीक तर्कसंगत अंश (1r2, 3r4)। बिट्स के साथ इन्हें सूचियों या यादृच्छिक ढंग से आयामित सरणियों में बनाया जाता है। बिट्स की तरह, ऐरे में सभी नंबरों पर ऑपरेशन किए जाते हैं।
अन्य संख्यात्मक प्रकारों में पूर्णांक सम्मलित हैं, उदाहरण 3 42 फ्लोटिंग पॉइंट 3.14, 8.8e22, जटिल 0 जावा 1, 2.5 जावा 3e88, विस्तारित सटीक पूर्णांक 12345678901234567890x और विस्तारित सटीक तर्कसंगत अंश (1r2, 3r4)। बिट्स के साथ इन्हें सूचियों या यादृच्छिक ढंग से आयामित सरणियों में बनाया जाता है। बिट्स की तरह, ऐरे में सभी नंबरों पर ऑपरेशन किए जाते हैं।


बिट्स की सूची को का उपयोग करके पूर्णांक में परिवर्तित किया जाता है <code>हैश</code> क्रिया का उपयोग करके पूर्णांकों को बिट्स की सूचियों में परिवर्तित किया जाता है,<code>हैश</code>क्रिया जे को पार्स करते समय, J अवधि और कोलन शब्द बनाने वाले अक्षर के रूप में होते है। वे कभी भी अकेले टोकन नहीं होते हैं, जब तक कि सफेद स्थान वर्ण नहीं होते हैं।
बिट्स की सूची को का उपयोग करके पूर्णांक में परिवर्तित किया जाता है <code>हैश</code> क्रिया का उपयोग करके पूर्णांकों को बिट्स की सूचियों में परिवर्तित किया जाता है,<code>हैश</code>क्रिया जावा को पार्स करते समय, जावा अवधि और कोलन शब्द बनाने वाले अक्षर के रूप में होते है। वे कभी भी अकेले टोकन नहीं होते हैं, जब तक कि सफेद स्थान वर्ण नहीं होते हैं।


जे शाब्दिक (करैक्टर ) प्रकार का भी समर्थन करता होता है। साहित्य उद्धरणों में संलग्न हैं, उदाहरण के लिए, <code>'a'</code> या <code>'b'</code>. उद्धरणों में एकाधिक वर्ण डालने के सामान्य सम्मेलन का उपयोग करके अक्षर की सूची भी समर्थित है, जैसे <code>'abcdefg'</code>. सामान्यतः भिन्न -भिन्न शाब्दिक 8-बिट चौड़े एएससी आईआई के रूप में होते हैं, लेकिन J अन्य शाब्दिक [[यूनिकोड]] का भी समर्थन करता है। संख्यात्मक और बूलियन संचालन शाब्दिक पर समर्थित नहीं होता है।, लेकिन संग्रह उन्मुख संचालन जैसे घुमाएँ समर्थित होती है।
जावा शाब्दिक (करैक्टर ) प्रकार का भी समर्थन करता होता है। साहित्य उद्धरणों में संलग्न हैं, उदाहरण के लिए, <code>'a'</code> या <code>'b'</code>. उद्धरणों में एकाधिक वर्ण डालने के सामान्य सम्मेलन का उपयोग करके अक्षर की सूची भी समर्थित है, जैसे <code>'abcdefg'</code>. सामान्यतः भिन्न -भिन्न शाब्दिक 8-बिट चौड़े एएससी आईआई के रूप में होते हैं, लेकिन जावा अन्य शाब्दिक [[यूनिकोड]] का भी समर्थन करता है। संख्यात्मक और बूलियन संचालन शाब्दिक पर समर्थित नहीं होता है।, लेकिन संग्रह उन्मुख संचालन जैसे घुमाएँ समर्थित होती है।


अंत में, एक बॉक्सिंग डेटा प्रकार होता है। सामान्यतः डेटा को < ऑपरेशन का उपयोग करके बिना किसी तर्क के एक बॉक्स में रखा जाता है, यदि कोई बाएं कारण है तो यह संक्रिया से कम होता है। यह C & ऑपरेशन के अनुरूप है जिसमें कोई बायाँ तर्क नहीं है। चूंकि, जहाँ C & के परिणाम में संदर्भ शब्दार्थ के रूप में है, J के < के परिणाम में मूल्य शब्दार्थ है। दूसरे शब्दों में < एक फलन है और यह एक परिणाम उत्पन्न करता है। निहित डेटा की संरचना पर ध्यान दिए बिना परिणाम में 0 आयाम के रूप में होते है। जे प्रोग्रामर के दृष्टिकोण से < डेटा को एक बॉक्स में रखता है और बॉक्स की एक सरणी के साथ काम करने की अनुमति देता है जिसे अन्य बॉक्स के साथ इकट्ठा किया जाता है और/या अधिक प्रतियां बॉक्स से बनाई जा सकती हैं।
अंत में, एक बॉक्सिंग डेटा प्रकार होता है। सामान्यतः डेटा को < ऑपरेशन का उपयोग करके बिना किसी तर्क के एक बॉक्स में रखा जाता है, यदि कोई बाएं कारण है तो यह संक्रिया से कम होता है। यह C & ऑपरेशन के अनुरूप है जिसमें कोई बायाँ तर्क नहीं है। चूंकि, जहाँ C & के परिणाम में संदर्भ शब्दार्थ के रूप में है, जावा के < के परिणाम में मूल्य शब्दार्थ है। दूसरे शब्दों में < एक फलन है और यह एक परिणाम उत्पन्न करता है। निहित डेटा की संरचना पर ध्यान दिए बिना परिणाम में 0 आयाम के रूप में होते है। जावा प्रोग्रामर के दृष्टिकोण से < डेटा को एक बॉक्स में रखता है और बॉक्स की एक सरणी के साथ काम करने की अनुमति देता है जिसे अन्य बॉक्स के साथ इकट्ठा किया जाता है और/या अधिक प्रतियां बॉक्स से बनाई जा सकती हैं।


   <1 0 0 1 0
   <1 0 0 1 0
Line 176: Line 176:
   +---------+</span>
   +---------+</span>


जे द्वारा प्रस्तावित एकमात्र संग्रह प्रकार यादृच्छिक ढंग से आयामी सरणी के रूप में होता है। इन सरणियों पर संचालन का उपयोग करके अधिकांश कलन विधि को बहुत ही संक्षिप्त रूप से व्यक्त किया जाता है।
जावा द्वारा प्रस्तावित एकमात्र संग्रह प्रकार यादृच्छिक ढंग से आयामी सरणी के रूप में होता है। इन सरणियों पर संचालन का उपयोग करके अधिकांश कलन विधि को बहुत ही संक्षिप्त रूप से व्यक्त किया जाता है।


जे के सरणी सजातीय रूप से टाइप किए गए हैं, उदाहरण के लिए सूची <code>1 2 3</code> के होने पर पूर्णांकों की सूची <code>1</code> है। अधिकांश भाग के लिए, इस प्रकार के विषय प्रोग्रामर के लिए पारदर्शी होते हैं। केवल कुछ विशिष्ट ऑपरेशन ही प्रकार में अंतर प्रकट करते हैं। उदाहरण के लिए, सूची <code>1.0 0.0 1.0 0.0</code> सूची के रूप में, अधिकांश परिचालनों द्वारा बिल्कुल वही व्यवहार किया जाएगा <code>1 0 1 0 </code>.
जावा के सरणी सजातीय रूप से टाइप किए गए हैं, उदाहरण के लिए सूची <code>1 2 3</code> के होने पर पूर्णांकों की सूची <code>1</code> है। अधिकांश भाग के लिए, इस प्रकार के विषय प्रोग्रामर के लिए पारदर्शी होते हैं। केवल कुछ विशिष्ट ऑपरेशन ही प्रकार में अंतर प्रकट करते हैं। उदाहरण के लिए, सूची <code>1.0 0.0 1.0 0.0</code> सूची के रूप में, अधिकांश परिचालनों द्वारा बिल्कुल वही व्यवहार किया जाएगा <code>1 0 1 0 </code>.


जे भी विरल संख्यात्मक सरणियों का समर्थन करता है जहां गैर-शून्य मान उनके सूचकांकों के साथ संग्रहीत होते हैं। यह कुशल तंत्र है जहां अपेक्षाकृत कुछ मान गैर-शून्य होते हैं।
जावा भी विरल संख्यात्मक सरणियों का समर्थन करता है जहां गैर-शून्य मान उनके सूचकांकों के साथ संग्रहीत होते हैं। यह कुशल तंत्र है जहां अपेक्षाकृत कुछ मान गैर-शून्य होते हैं।


जे भी वस्तुओं और वर्गों का समर्थन करता है,<ref>[http://www.jsoftware.com/help/learning/25.htm Chapter 25: Object-Oriented Programming]</ref> लेकिन ये चीजों के नाम के विधि का आर्टिफैक्ट हैं, और डेटा प्रकार नहीं हैं। इसके अतिरिक्त, बॉक्सिंग शाब्दिक वस्तुओं और कक्षाओं को संदर्भित करने के लिए उपयोग किया जाता है। J डेटा में मूल्य शब्दार्थ के रूप में होते है, लेकिन वस्तुओं और वर्गों को संदर्भ शब्दार्थ की आवश्यकता होती है।{{Citation needed|date=March 2017}}
जावा भी वस्तुओं और वर्गों का समर्थन करता है,<ref>[http://www.jsoftware.com/help/learning/25.htm Chapter 25: Object-Oriented Programming]</ref> लेकिन ये चीजों के नाम के विधि का आर्टिफैक्ट हैं, और डेटा प्रकार नहीं हैं। इसके अतिरिक्त, बॉक्सिंग शाब्दिक वस्तुओं और कक्षाओं को संदर्भित करने के लिए उपयोग किया जाता है। जावा डेटा में मूल्य शब्दार्थ के रूप में होते है, लेकिन वस्तुओं और वर्गों को संदर्भ शब्दार्थ की आवश्यकता होती है।{{Citation needed|date=March 2017}}


एक अन्य छद्म प्रकार-मान के अतिरिक्त नाम से जुड़ा हुआ है-मेमोरी मैप की गई फ़ाइल के रूप में होती है ।
एक अन्य छद्म प्रकार-मान के अतिरिक्त नाम से जुड़ा हुआ है-मेमोरी मैप की गई फ़ाइल के रूप में होती है ।


== डिबगिंग ==
== डिबगिंग ==
[[File:Dissect example Collatz.png|thumb|Collatz अनुक्रम को 6 से प्रारंभ करके विदारक बनाना]]जे में त्रुटि पर या क्रियाओं के भीतर निर्दिष्ट स्थानों पर रुकने की सामान्य सुविधा होती है। इसमें अद्वितीय विज़ुअल डीबगर भी होते है, जिसे [http://code.jsoftware.com/wiki/Vocabulary/Dissect Dissect] कहा जाता है, जो J वाक्य के निष्पादन का 2-डी इंटरैक्टिव डिस्प्ले देता है। चूँकि J का वाक्य निचले स्तर की भाषाओं में पूरे उप नेम के रूप में अधिक संगणना करता है, जो दृश्य प्रदर्शन पर्याप्त मददगार होता है।
[[File:Dissect example Collatz.png|thumb|Collatz अनुक्रम को 6 से प्रारंभ करके विदारक बनाना]]जावा में त्रुटि पर या क्रियाओं के भीतर निर्दिष्ट स्थानों पर रुकने की सामान्य सुविधा होती है। इसमें अद्वितीय विज़ुअल डीबगर भी होते है, जिसे [http://code.jsoftware.com/wiki/Vocabulary/Dissect Dissect] कहा जाता है, जो जावा वाक्य के निष्पादन का 2-डी इंटरैक्टिव डिस्प्ले देता है। चूँकि जावा का वाक्य निचले स्तर की भाषाओं में पूरे उप नेम के रूप में अधिक संगणना करता है, जो दृश्य प्रदर्शन पर्याप्त मददगार होता है।


== दस्तावेज़ीकरण ==
== दस्तावेज़ीकरण ==
J के दस्तावेज़ीकरण में J शब्दों के साथ एक शब्दकोश सम्मलित होता है। जिसे संज्ञा, क्रिया संशोधक आदि के रूप में पहचाना जाता है। प्राथमिक शब्दों को शब्दावली में सूचीबद्ध किया गया है जिसमें मार्कअप का उपयोग करके उनके भाषण के संबंधित भागों को इंगित किया गया है। ध्यान दें कि क्रियाओं के दो रूप होते हैं केवल [[दाहिनी]] ओर मोनडिक तर्क और बाईं ओर और दाईं ओर द्वैत तर्क के रूप में होते है। उदाहरण के लिए, -1 में हाइफ़न एक मोनाडिक क्रिया होती है और '3-2' में हाइफ़न डाइएडिक क्रिया के रूप में होती है। मोनैडिक परिभाषा ज्यादातर डायाडिक परिभाषा से स्वतंत्र है, भले ही क्रिया एक प्राचीन है या एक व्युत्पन्न क्रिया है।
जावा के दस्तावेज़ीकरण में जावा शब्दों के साथ एक शब्दकोश सम्मलित होता है। जिसे संज्ञा, क्रिया संशोधक आदि के रूप में पहचाना जाता है। प्राथमिक शब्दों को शब्दावली में सूचीबद्ध किया गया है जिसमें मार्कअप का उपयोग करके उनके भाषण के संबंधित भागों को इंगित किया गया है। ध्यान दें कि क्रियाओं के दो रूप होते हैं केवल [[दाहिनी]] ओर मोनडिक तर्क और बाईं ओर और दाईं ओर द्वैत तर्क के रूप में होते है। उदाहरण के लिए, -1 में हाइफ़न एक मोनाडिक क्रिया होती है और '3-2' में हाइफ़न डाइएडिक क्रिया के रूप में होती है। मोनैडिक परिभाषा ज्यादातर डायाडिक परिभाषा से स्वतंत्र है, भले ही क्रिया एक प्राचीन है या एक व्युत्पन्न क्रिया है।


== नियंत्रण संरचनाएं ==
== नियंत्रण संरचनाएं ==
जे अन्य प्रक्रियात्मक भाषाओं के समान नियंत्रण संरचनाएं प्रदान करता है [http://jsoftware.com/help/dictionary/ctrl.htm (विवरण यहां)]। प्रमुख नियंत्रण शब्द प्रत्येक श्रेणी में सम्मलित हैं:
जावा अन्य प्रक्रियात्मक भाषाओं के समान नियंत्रण संरचनाएं प्रदान करता है [http://jsoftware.com/help/dictionary/ctrl.htm (विवरण यहां)]। प्रमुख नियंत्रण शब्द प्रत्येक श्रेणी में सम्मलित हैं:
* <code>जोर देना</code>
* <code>जोर देना</code>
* <code>ब्रेक</code>
* <code>ब्रेक</code>
Line 216: Line 216:


==बाहरी संबंध==
==बाहरी संबंध==
* {{Official website|www.jsoftware.com}} – JSoftware, creators of J
* {{Official website|www.jsoftware.com}} – जावा Software, creators of जावा
* {{GitHub|jsoftware/jsource}} – Repository of source
* {{GitHub|jsoftware/jsource}} – Repository of source
* [https://code.jsoftware.com/wiki/Main_Page J Wiki]
* [https://code.jsoftware.com/wiki/Main_Page जावा Wiki]
* [http://www.jsoftware.com/help/learning/contents.htm Learning J] – An Introduction to the J Programming Language by Roger Stokes
* [http://www.jsoftware.com/help/learning/contents.htm Learning जावा] – An Introduction to the जावा Programming Language by Roger Stokes


{{Use dmy dates|date=April 2020}}
{{Use dmy dates|date=April 2020}}
Line 227: Line 227:
{{Authority control}}
{{Authority control}}


{{DEFAULTSORT:J (Programming Language)}}[[Category: एपीएल प्रोग्रामिंग भाषा परिवार]] [[Category: ऐरे प्रोग्रामिंग भाषाएँ]] [[Category: कक्षा-आधारित प्रोग्रामिंग भाषाएँ]] [[Category: गतिशील रूप से टाइप की गई प्रोग्रामिंग भाषाएँ]] [[Category: कार्य-स्तर की भाषाएँ]] [[Category: कार्यात्मक भाषाएँ]] [[Category: बहु-प्रतिमान प्रोग्रामिंग भाषाएं]] [[Category: संख्यात्मक प्रोग्रामिंग भाषाएँ]] [[Category: वस्तु-उन्मुख प्रोग्रामिंग भाषाएँ]]
{{DEFAULTSORT:J (Programming Language)}}


 
[[Category:All articles with unsourced statements|J (Programming Language)]]
 
[[Category:Articles with unsourced statements from March 2017|J (Programming Language)]]
[[Category: Machine Translated Page]]
[[Category:CS1 errors]]
[[Category:Created On 03/02/2023]]
[[Category:Collapse templates|J (Programming Language)]]
[[Category:Created On 03/02/2023|J (Programming Language)]]
[[Category:Lua-based templates|J (Programming Language)]]
[[Category:Machine Translated Page|J (Programming Language)]]
[[Category:Navigational boxes| ]]
[[Category:Navigational boxes without horizontal lists|J (Programming Language)]]
[[Category:Official website not in Wikidata|J (Programming Language)]]
[[Category:Pages with script errors|J (Programming Language)]]
[[Category:Short description with empty Wikidata description|J (Programming Language)]]
[[Category:Sidebars with styles needing conversion|J (Programming Language)]]
[[Category:Template documentation pages|Documentation/doc]]
[[Category:Templates Vigyan Ready|J (Programming Language)]]
[[Category:Templates generating microformats|J (Programming Language)]]
[[Category:Templates that add a tracking category|J (Programming Language)]]
[[Category:Templates that are not mobile friendly|J (Programming Language)]]
[[Category:Templates that generate short descriptions|J (Programming Language)]]
[[Category:Templates using TemplateData|J (Programming Language)]]
[[Category:Use dmy dates from April 2020|J (Programming Language)]]
[[Category:Wikipedia metatemplates|J (Programming Language)]]
[[Category:एपीएल प्रोग्रामिंग भाषा परिवार|J (Programming Language)]]
[[Category:ऐरे प्रोग्रामिंग भाषाएँ|J (Programming Language)]]
[[Category:कक्षा-आधारित प्रोग्रामिंग भाषाएँ|J (Programming Language)]]
[[Category:कार्य-स्तर की भाषाएँ|J (Programming Language)]]
[[Category:कार्यात्मक भाषाएँ|J (Programming Language)]]
[[Category:गतिशील रूप से टाइप की गई प्रोग्रामिंग भाषाएँ|J (Programming Language)]]
[[Category:बहु-प्रतिमान प्रोग्रामिंग भाषाएं|J (Programming Language)]]
[[Category:वस्तु-उन्मुख प्रोग्रामिंग भाषाएँ|J (Programming Language)]]
[[Category:संख्यात्मक प्रोग्रामिंग भाषाएँ|J (Programming Language)]]

Latest revision as of 11:46, 14 February 2023

1990 के आरम्भ में केनेथ ई. इवेर्सन एंड रॉजर हुई द्वारा विकसित जावा प्रोग्रामिंग भाषा,[5][6] एक सरणी प्रोग्रामिंग भाषा है, जो मुख्य रूप से एपीएल प्रोग्रामिंग भाषा आईवेर्सन पर आधारित है।

एपीएल विशेष वर्ण विषय को दोहराने से बचने के लिए जावा केवल मूल एएससीआईआई वर्ण समूह का उपयोग करता है, डॉट और कोलन के उपयोग को इंफ्लेक्शन के रूप में उपयोग करता है[1] डिग्राफ (कंप्यूटिंग) के समान छोटे शब्द बनाने के लिए प्रयोग किये जाते है। इस तरह के अधिकांश मौलिक या प्राचीन शब्द गणितीय प्रतीकों के रूप में काम करते हैं, जिसमें डॉट या कोलन मूल वर्णों के अर्थ का विस्तार करते हैं। इसके अतिरिक्त, कई अक्षर जो अन्य भाषाओं में अधिकांशतः जोड़े जाते है जैसे कि [] {} "" `` or <>) जावा द्वारा अकेले खड़े शब्दों के रूप में मान लिया जाता है या जब इसे बहु-वर्ण शब्दों के एकल वर्ण मूल के रूप में रखा जाता है।

जावा बहुत ही संक्षिप्त सरणी प्रोग्रामिंग भाषा है और जो गणितीय और सांख्यिकीय प्रोग्रामिंग के लिए सबसे उपयुक्त होती है, विशेष रूप से जब मैट्रिक्स (गणित) पर संक्रियाओं का निष्पादन होता हैं। इसका उपयोग चरम प्रोग्रामिंग में भी किया जाता है[2] और नेटवर्क प्रदर्शन के विश्लेषण में उपयोग किया जाता है।[3]

जॉन बैकस की लैंग्वेज एफपी और एफएल प्रोग्रामिंग भाषा की तरह, जावा अपने कार्यात्मक स्तर के प्रोग्रामिंग फीचर्स के माध्यम से फंक्शन-लेवल प्रोग्रामिंग को सपोर्ट करता है।

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

मार्च 2011 से जीएनयू जनरल पब्लिक लाइसेंस संस्करण 3 जी एल वी 3 के अनुसार स्वतंत्र और ओपन सोर्स सॉफ्टवेयर के रूप में होते है।[4][5] तथा बातचीत के माध्यम से लाइसेंस स्रोत को खरीदा जाता है।[6]

उदाहरण

जावा , पॉइंट फ्री स्टाइल और फंक्शन कंपोज़िशन की अनुमति देता है। इस प्रकार इसके प्रोग्राम बहुत संक्षिप्त हो जाते हैं और कुछ प्रोग्रामरों द्वारा इसे पढ़ना मुश्किल माना जाता है।

हैलो वर्ल्ड जावा में प्रोग्राम है

'Hello, World!'

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

#!/bin/ जावा c

echo 'Hello, world!'

exit

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

ऐतिहासिक रूप से एपल ने गुना इंगित करने के लिए+/1 2 3 के बराबर था 1+2+3. इस बीच, विभाजन का प्रतिनिधित्व गणितीय विभाजन चिन्ह (÷) के द्वारा किया जाता है।

क्योंकि एएससी आईआई में विभाजन प्रतीक प्रति के रूप में सम्मलित नहीं है, जावा दृश्य सन्निकटन या अनुस्मारक के रूप में विभाजन का प्रतिनिधित्व करने के लिए% का उपयोग करता है। यह जावा के टोकन के स्मरक करैक्टर के बारे में कुछ दिखाता है और एएससीआईआई के उपयोग से लगाए गए कुछ प्रश्नों को दर्शाता है।

संख्याओं की सूची के औसत की गणना करने के लिए एवीजी नाम के एक जावा फ़ंक्शन को परिभाषित करने के लिए उपयोग होता है

avg=: +/ % #

  • +/ सरणी की संख्या का योग करती है।
  • # सरणी में वस्तुओं की संख्या की गणना करती है।
  •  % वस्तुओं की संख्या से विभाजित करता है।

यह फ़ंक्शन का परीक्षण निष्पादन है।

avg 1 2 3 4

2.5

ऊपर, औसत को तीन क्रियाओं की ट्रेन का उपयोग करके परिभाषित किया गया है (+/, %, और #) विशेष रूप से विभाजित होता है,(V0 V1 V2) Ny वैसा ही जैसा कि (V0(Ny)) V1 (V2(Ny)) जो जावा की कुछ शक्ति को दर्शाता है। यहाँ V0, V1, और V2 क्रियाओं को दर्शाता है और Ny संज्ञा को दर्शाता है।

उपयोग करने के कुछ उदाहरण avg:

v=: ?. 20 $100 NB. a random vector

v

46 55 79 52 54 39 60 57 60 94 46 78 13 18 51 92 78 60 90 62

avg v

59.2

4 avg\ v NB. moving average on periods of size 4

 58 60 56 51.25 52.5 54 67.75 64.25 69.5 57.75 38.75 40 43.5 59.75 70.25 80 72.5 

m=: ?. 4 5 $50 NB. a random matrix

m

46 5 29 2 4

39 10 7 10 44
46 28 13 18 1
42 28 10 40 12 

avg"1 m NB. apply avg to each rank 1 subarray (each row) of m

17.2 22 21.2 26.4

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

जावा डिक्शनरी पैदावार से क्विकॉर्ट को लागू करता है।

 sel=: adverb def 'u # ['


 quicksort=: verb define
 if. 1 >: #y do. y
 else.
 (quicksort y <sel e),(y =sel e),quicksort y >sel e=.y{~?#y
 end.
 )

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

 Quicksort=: (($:@(<#[), (=#[), $:@(>#[)) ({~ ?@#)) ^: (1<#)


जावा में छंटनी सामान्यतः अंतर्निहित (प्राचीन ) क्रियाओं का उपयोग करके पूरी की जाती है /: (क्रमबद्ध करें) और \: (क्रमबद्ध करें)। उपरोक्त उपयोक्ता-परिभाषित प्रकार, जैसे त्वरित प्रकार, सामान्यतः केवल चित्रण के लिए हैं।

जावा में सॉर्टिंग सामान्यतः अंतर्निहित (आदिम) क्रियाओं /: (सॉर्ट अप) और \: (सॉर्ट डाउन) का उपयोग करके पूरा किया जाता है। उपरोक्त उपयोक्ता परिभाषित प्रकार, जैसे त्वरित प्रकार, सामान्यतः केवल चित्रण के लिएउपयोग होता है।

निम्न उदाहरण संदर्भ क्रिया$: के उपयोग को पुनरावर्ती रूप से फाइबोनैचि संख्याओं की गणना करने के लिए प्रदर्शित करता है।

1:`($:@-&2+$:@<:)@.(>&2)

यह पुनरावर्तन क्रिया को नाम से संदर्भित करके भी पूरा किया जाता है, चूंकि यह निश्चित रूप से तभी संभव है जब क्रिया का नाम दिया गया हो

फाइबोनैचि =:1:`(फाइबोनैचि @-&2+फाइबोनैचि @<:)@.(>&2)

निम्नलिखित व्यंजक पाई को n अंकों के साथ प्रदर्शित करता है और जावा की विस्तारित सटीक क्षमताओं को प्रदर्शित करता है:

n=: 50 एनबी ने आवश्यक अंकों की संख्या के रूप में एन समूह किया

<.@o. 10x^n एनबी ने सटीकता 10 को nवें * p तक बढ़ाया जाता है

314159265358979323846264338327950288419716939937510

क्रिया और संशोधक

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

 3 1 4 1 5 9 मैं। 3 1 एनबी 3 और 1 की पहली घटना का सूचकांक खोजावा ं 

0 1

 3 1 4 1 5 9 मैं: 3 1 एनबी 3 और 1 की अंतिम घटना का सूचकांक ज्ञात करें

0 3

उपयोक्ता प्रोग्रामों को नामित किया जाता है और जहां कहीं प्राचीन की अनुमति होती है वहां उनका उपयोग किया जाता है।

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

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

 +/ 1 2 3 4 5


का प्रभाव उत्पन्न करता है

 1 + 2 + 3 + 4 + 5
 +/ 1 2 3 4 5 

15

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

  • बार-बार निष्पादन, उदाहरण डु व्हाइल लूप
  • सशर्त निष्पादन, उदाहरण इफ
  • तर्कों के नियमित या अनियमित सबसेट का निष्पादन होता है।

कुछ संशोधक उस क्रम को नियंत्रित करते हैं जिसमें घटकों को निष्पादित किया जाता है, संशोधक को व्यावहारिक प्रोग्रामिंग के लिए आवश्यक असीमित विविधता के संचालन के लिए किसी भी क्रम में संयोजित करने की अनुमति देता है।

डेटा प्रकार और संरचनाएं

जावा तीन सरल प्रकारों का समर्थन करता है

  • संख्यात्मक
  • शाब्दिक (करैक्टर )
  • बॉक्स्ड

इनमें से न्यूमेरिक के सबसे ज्यादा वैरिएंट होते है।

जावा का एक सांख्यिक प्रकार बिट होती है। दो बिट का मान हैं 0 और 1 बिट्स को सूचियों में बनाया जाता है। उदाहरण के लिए, 1 0 1 0 1 1 0 0 आठ बिट्स की एक सूची के रूप में होती है । वाक्यात्मक रूप से जावा पार्सर इसे एक शब्द के रूप में मानता है। रिक्त विशेष्ता को शब्द बनाने वाले करैक्टर के रूप में पहचाना जाता है जो अन्य संख्यात्मक शब्द होते है। यादृच्छिक लंबाई की सूची समर्थित होते है।

इसके अतिरिक्त, जावा इन सूचियों पर सभी सामान्य बाइनरी ऑपरेशंस का समर्थन करता है, उदाहरण के लिए, जैसे कि एक्सक्लूसिव या रोटेट शिफ्ट नॉट आदि

 1 0 0 1 0 0 1 0 +। 0 1 0 1 1 0 1 0 NB. या
1 1 0 1 1 0 1 0
 3 |. 1 0 1 1 0 0 1 1 1 1 1 NB. घुमाएँ
1 0 0 1 1 1 1 1 1 1 0 1

जावा बिट्स के उच्च क्रम सरणियों का भी समर्थन करता है। उन्हें द्वि-आयामी, त्रि-आयामी, आदि सरणियों में बनाया जाता है। उपरोक्त ऑपरेशन इन सरणियों पर समान रूप से अच्छा प्रदर्शन करते हैं।

अन्य संख्यात्मक प्रकारों में पूर्णांक सम्मलित हैं, उदाहरण 3 42 फ्लोटिंग पॉइंट 3.14, 8.8e22, जटिल 0 जावा 1, 2.5 जावा 3e88, विस्तारित सटीक पूर्णांक 12345678901234567890x और विस्तारित सटीक तर्कसंगत अंश (1r2, 3r4)। बिट्स के साथ इन्हें सूचियों या यादृच्छिक ढंग से आयामित सरणियों में बनाया जाता है। बिट्स की तरह, ऐरे में सभी नंबरों पर ऑपरेशन किए जाते हैं।

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

जावा शाब्दिक (करैक्टर ) प्रकार का भी समर्थन करता होता है। साहित्य उद्धरणों में संलग्न हैं, उदाहरण के लिए, 'a' या 'b'. उद्धरणों में एकाधिक वर्ण डालने के सामान्य सम्मेलन का उपयोग करके अक्षर की सूची भी समर्थित है, जैसे 'abcdefg'. सामान्यतः भिन्न -भिन्न शाब्दिक 8-बिट चौड़े एएससी आईआई के रूप में होते हैं, लेकिन जावा अन्य शाब्दिक यूनिकोड का भी समर्थन करता है। संख्यात्मक और बूलियन संचालन शाब्दिक पर समर्थित नहीं होता है।, लेकिन संग्रह उन्मुख संचालन जैसे घुमाएँ समर्थित होती है।

अंत में, एक बॉक्सिंग डेटा प्रकार होता है। सामान्यतः डेटा को < ऑपरेशन का उपयोग करके बिना किसी तर्क के एक बॉक्स में रखा जाता है, यदि कोई बाएं कारण है तो यह संक्रिया से कम होता है। यह C & ऑपरेशन के अनुरूप है जिसमें कोई बायाँ तर्क नहीं है। चूंकि, जहाँ C & के परिणाम में संदर्भ शब्दार्थ के रूप में है, जावा के < के परिणाम में मूल्य शब्दार्थ है। दूसरे शब्दों में < एक फलन है और यह एक परिणाम उत्पन्न करता है। निहित डेटा की संरचना पर ध्यान दिए बिना परिणाम में 0 आयाम के रूप में होते है। जावा प्रोग्रामर के दृष्टिकोण से < डेटा को एक बॉक्स में रखता है और बॉक्स की एक सरणी के साथ काम करने की अनुमति देता है जिसे अन्य बॉक्स के साथ इकट्ठा किया जाता है और/या अधिक प्रतियां बॉक्स से बनाई जा सकती हैं।

 <1 0 0 1 0
+---------+
 |1 0 0 1 0|
 +---------+

जावा द्वारा प्रस्तावित एकमात्र संग्रह प्रकार यादृच्छिक ढंग से आयामी सरणी के रूप में होता है। इन सरणियों पर संचालन का उपयोग करके अधिकांश कलन विधि को बहुत ही संक्षिप्त रूप से व्यक्त किया जाता है।

जावा के सरणी सजातीय रूप से टाइप किए गए हैं, उदाहरण के लिए सूची 1 2 3 के होने पर पूर्णांकों की सूची 1 है। अधिकांश भाग के लिए, इस प्रकार के विषय प्रोग्रामर के लिए पारदर्शी होते हैं। केवल कुछ विशिष्ट ऑपरेशन ही प्रकार में अंतर प्रकट करते हैं। उदाहरण के लिए, सूची 1.0 0.0 1.0 0.0 सूची के रूप में, अधिकांश परिचालनों द्वारा बिल्कुल वही व्यवहार किया जाएगा 1 0 1 0 .

जावा भी विरल संख्यात्मक सरणियों का समर्थन करता है जहां गैर-शून्य मान उनके सूचकांकों के साथ संग्रहीत होते हैं। यह कुशल तंत्र है जहां अपेक्षाकृत कुछ मान गैर-शून्य होते हैं।

जावा भी वस्तुओं और वर्गों का समर्थन करता है,[7] लेकिन ये चीजों के नाम के विधि का आर्टिफैक्ट हैं, और डेटा प्रकार नहीं हैं। इसके अतिरिक्त, बॉक्सिंग शाब्दिक वस्तुओं और कक्षाओं को संदर्भित करने के लिए उपयोग किया जाता है। जावा डेटा में मूल्य शब्दार्थ के रूप में होते है, लेकिन वस्तुओं और वर्गों को संदर्भ शब्दार्थ की आवश्यकता होती है।[citation needed]

एक अन्य छद्म प्रकार-मान के अतिरिक्त नाम से जुड़ा हुआ है-मेमोरी मैप की गई फ़ाइल के रूप में होती है ।

डिबगिंग

Collatz अनुक्रम को 6 से प्रारंभ करके विदारक बनाना

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

दस्तावेज़ीकरण

जावा के दस्तावेज़ीकरण में जावा शब्दों के साथ एक शब्दकोश सम्मलित होता है। जिसे संज्ञा, क्रिया संशोधक आदि के रूप में पहचाना जाता है। प्राथमिक शब्दों को शब्दावली में सूचीबद्ध किया गया है जिसमें मार्कअप का उपयोग करके उनके भाषण के संबंधित भागों को इंगित किया गया है। ध्यान दें कि क्रियाओं के दो रूप होते हैं केवल दाहिनी ओर मोनडिक तर्क और बाईं ओर और दाईं ओर द्वैत तर्क के रूप में होते है। उदाहरण के लिए, -1 में हाइफ़न एक मोनाडिक क्रिया होती है और '3-2' में हाइफ़न डाइएडिक क्रिया के रूप में होती है। मोनैडिक परिभाषा ज्यादातर डायाडिक परिभाषा से स्वतंत्र है, भले ही क्रिया एक प्राचीन है या एक व्युत्पन्न क्रिया है।

नियंत्रण संरचनाएं

जावा अन्य प्रक्रियात्मक भाषाओं के समान नियंत्रण संरचनाएं प्रदान करता है (विवरण यहां)। प्रमुख नियंत्रण शब्द प्रत्येक श्रेणी में सम्मलित हैं:

  • जोर देना
  • ब्रेक
  • कंटिन्यू
  • फॉर
  • गोटू-लेबल.
  • इफ, एल्स, एलसीफ
  • रीटर्न
  • सेलेक्ट केस
  • थ्रो
  • टॉय कैच
  • व्हिल व्हिल्स्ट


यह भी देखें

संदर्भ

  1. J NuVoc Words
  2. Bussell, Brian; Taylor, Stephen (2006), "Software Development as a Collaborative Writing Project", Extreme programming and agile processes in software engineering, Oulu, Finland: Springer, pp. 21–31, ISBN 978-3-540-35094-1 {{citation}}: Missing or empty |title= (help)
  3. Holt, Alan (2007), Network Performance Analysis: Using the J Programming Language, Springer, ISBN 978-1-84628-822-7
  4. Jsoftware's source download page
  5. Eric Iverson (1 March 2011). "जे स्रोत जीपीएल". J programming mailing list.</रेफरी><ref>openj on GitHub
  6. Jsoftware की सोर्सिंग नीति
  7. Chapter 25: Object-Oriented Programming


बाहरी संबंध