K (प्रोग्रामिंग भाषा): Difference between revisions
Line 31: | Line 31: | ||
K, एपीएल के साथ मुख्य विशेषताएं साझा करता है। वे दोनों [[व्याख्या की गई भाषा]] हैं, [[अन्तरक्रियाशीलता]] भाषाएं संक्षिप्त और अभिव्यंजक वाक्य-रचना के लिए विख्यात हैं। उनके पास दाएं से बाएं मूल्यांकन के आधार पर पूर्वता के सरल नियम हैं। भाषाओं में प्रसंस्करण सरणियों के लिए डिज़ाइन किए गए आदिम कार्यों का एक समृद्ध सेट होता है। इन आदिम कार्यों में गणितीय संचालन शामिल हैं जो संपूर्ण डेटा ऑब्जेक्ट के रूप में ऐरे पर काम करते हैं, और ऐरे संचालन, जैसे किसी सरणी के क्रम को छांटना या उलटना। इसके अलावा, भाषा में विशेष ऑपरेटर होते हैं जो पुनरावृत्ति और पुनरावर्तन के प्रकारों को करने के लिए आदिम कार्यों के साथ संयोजन करते हैं। नतीजतन, डेटासेट के जटिल और विस्तारित परिवर्तनों को उप-अभिव्यक्तियों की एक श्रृंखला के रूप में व्यक्त किया जा सकता है, जिसमें प्रत्येक लिंक गणना के एक खंड का प्रदर्शन करता है और परिणामों को श्रृंखला में अगले लिंक पर भेजता है। | K, एपीएल के साथ मुख्य विशेषताएं साझा करता है। वे दोनों [[व्याख्या की गई भाषा]] हैं, [[अन्तरक्रियाशीलता]] भाषाएं संक्षिप्त और अभिव्यंजक वाक्य-रचना के लिए विख्यात हैं। उनके पास दाएं से बाएं मूल्यांकन के आधार पर पूर्वता के सरल नियम हैं। भाषाओं में प्रसंस्करण सरणियों के लिए डिज़ाइन किए गए आदिम कार्यों का एक समृद्ध सेट होता है। इन आदिम कार्यों में गणितीय संचालन शामिल हैं जो संपूर्ण डेटा ऑब्जेक्ट के रूप में ऐरे पर काम करते हैं, और ऐरे संचालन, जैसे किसी सरणी के क्रम को छांटना या उलटना। इसके अलावा, भाषा में विशेष ऑपरेटर होते हैं जो पुनरावृत्ति और पुनरावर्तन के प्रकारों को करने के लिए आदिम कार्यों के साथ संयोजन करते हैं। नतीजतन, डेटासेट के जटिल और विस्तारित परिवर्तनों को उप-अभिव्यक्तियों की एक श्रृंखला के रूप में व्यक्त किया जा सकता है, जिसमें प्रत्येक लिंक गणना के एक खंड का प्रदर्शन करता है और परिणामों को श्रृंखला में अगले लिंक पर भेजता है। | ||
एपीएल की तरह, आदिम कार्यों और ऑपरेटरों को एकल या दोहरे वर्णों द्वारा दर्शाया जाता है; हालाँकि, APL के विपरीत, K | एपीएल की तरह, आदिम कार्यों और ऑपरेटरों को एकल या दोहरे वर्णों द्वारा दर्शाया जाता है; हालाँकि, APL के विपरीत, K स्वयं को ASCII वर्ण सेट तक सीमित रखता है (जैसा कि अन्य APL संस्करण, J करता है)। इसके लिए अनुमति देने के लिए, के के लिए आदिम कार्यों का सेट छोटा और भारी अधिभारित होता है, जिसमें प्रत्येक एएससीआईआई प्रतीक दो या दो से अधिक विशिष्ट कार्यों या संचालन का प्रतिनिधित्व करते हैं। किसी दिए गए व्यंजक में, संदर्भित वास्तविक कार्य संदर्भ द्वारा निर्धारित किया जाता है। नतीजतन, K भाव अपारदर्शी हो सकते हैं और मनुष्यों के लिए पार्स करना मुश्किल हो सकता है। उदाहरण के लिए, निम्नलिखित काल्पनिक अभिव्यक्ति में [[विस्मयादिबोधक बिंदु]] <code>!</code> तीन अलग-अलग कार्यों को संदर्भित करता है: | ||
<प्री>2!!7!4</प्री> | <प्री>2!!7!4</प्री> | ||
K का दूसरा मुख्य अंतर यह है कि कार्य [[प्रथम श्रेणी की वस्तु]] | पहले दाएं से बाएं पढ़ना <code>!</code> मॉडुलो डिवीजन है जो 7 और 4 पर किया जाता है जिसके परिणामस्वरूप 3 होता है। अगला <code>!</code> गणना है और 3 से कम पूर्णांकों को सूचीबद्ध करता है, जिसके परिणामस्वरूप सूची 0 1 2 है। अंतिम <code>!</code> घुमाव है जहां दाईं ओर की सूची को दो बार बाईं ओर घुमाया जाता है जिससे 2 0 1 का अंतिम परिणाम मिलता है। | ||
K का दूसरा मुख्य अंतर यह है कि कार्य [[प्रथम श्रेणी की वस्तु|श्रेणी की वस्तुएँ]] हैं, एक अवधारणा जो योजना (प्रोग्रामिंग भाषा) से उधार ली गई है। प्रथम श्रेणी के कार्यों का उपयोग उसी संदर्भ में किया जा सकता है जहां डेटा मान का उपयोग किया जा सकता है। कार्यों को अज्ञात अभिव्यक्तियों के रूप में निर्दिष्ट किया जा सकता है और सीधे अन्य अभिव्यक्तियों के साथ उपयोग किया जा सकता है। कार्य अभिव्यक्ति को K में [[ धनु धनुकोष्ठक |कर्ली ब्रैकेट्स]] का उपयोग करके निर्दिष्ट किया गया है। उदाहरण के लिए, निम्नलिखित अभिव्यक्ति में एक द्विघात अभिव्यक्ति को एक फ़ंक्शन के रूप में परिभाषित किया गया है और 0 1 2 और 3 मानों पर लागू किया गया है: | |||
<syntaxhighlight lang="k">{(3*x^2)+(2*x)+1}'!4</syntaxhighlight> | <syntaxhighlight lang="k">{(3*x^2)+(2*x)+1}'!4</syntaxhighlight> | ||
K में, नामित फ़ंक्शंस केवल फ़ंक्शन एक्सप्रेशन हैं जो एक चर में संग्रहीत होते हैं उसी तरह किसी भी डेटा मान को एक चर में संग्रहीत किया जाता है। | K में, नामित फ़ंक्शंस केवल फ़ंक्शन एक्सप्रेशन हैं जो एक चर में संग्रहीत होते हैं उसी तरह किसी भी डेटा मान को एक चर में संग्रहीत किया जाता है। |
Revision as of 16:40, 21 May 2023
This article needs additional citations for verification. (August 2011) (Learn how and when to remove this template message) |
Paradigm | array, functional |
---|---|
द्वारा डिज़ाइन किया गया | Arthur Whitney |
Developer | Kx Systems |
पहली प्रस्तुति | 1993 |
टाइपिंग अनुशासन | dynamic, strong |
वेबसाइट | kx |
Influenced by | |
A+, APL, Scheme | |
Influenced | |
Q, Shakti |
K, आर्थर व्हिटनी (कंप्यूटर वैज्ञानिक) द्वारा विकसित और Kx सिस्टम्स ( KX एक डेटा विश्लेषण सॉफ़्टवेयर डेवलपर और विक्रेता है।) द्वारा व्यावसायीकृत एक मालिकाना ऐरे प्रसंस्करण प्रोग्रामिंग भाषा है। भाषा केडीबी+, एक इन-मेमोरी, कॉलम-आधारित डेटाबेस और अन्य संबंधित वित्तीय उत्पादों के लिए नींव के रूप में कार्य करती है।[1] मूल रूप से 1993 में विकसित भाषा, एपीएल (प्रोग्रामिंग भाषा) का एक प्रकार है और इसमें योजना (प्रोग्रामिंग भाषा) के तत्व शामिल हैं। भाषा के पक्षसमर्थक इसकी गति, ऐरे को संभालने में सुविधा और अर्थपूर्ण वाक्य-रचना पर जोर देते हैं।[2]
इतिहास
के को विकसित करने से पहले, आर्थर व्हिटनी ने एपीएल के साथ बड़े पैमाने पर काम किया था, पहले केनेथ ई. इवरसन और रोजर हुई के साथ आईपी शार्प एसोसिएट्स में, और बाद में मॉर्गन स्टेनली में वित्तीय अनुप्रयोगों का विकास किया। मॉर्गन स्टेनली में, व्हिटनी ने आईबीएम मेनफ़्रेम कंप्यूटर से एपीएल अनुप्रयोगों को सन कार्य केंद्र के नेटवर्क की ओर पलायन करने की सुविधा के लिए एपीएल के एक संस्करण ए+ को विकसित करने में मदद की। ए+ में आदिम कार्यों का एक छोटा सेट था और इसे गति के लिए और समय श्रृंखला डेटा के बड़े सेट को संभालने के लिए अभिकल्पित किया गया था।[3]
1993 में, व्हिटनी ने मॉर्गन स्टेनली को छोड़ दिया और K भाषा का पहला संस्करण विकसित किया। उसी समय उन्होंने उत्पाद का व्यावसायीकरण करने के लिए केएक्स सिस्टम्स का गठन किया और यूनियन बैंक ऑफ स्विट्जरलैंड (यूबीएस) के साथ एक विशेष अनुबंध पर हस्ताक्षर किए। अगले चार वर्षों के लिए उन्होंने यूबीएस के लिए के का उपयोग करते हुए विभिन्न वित्तीय और व्यापारिक अनुप्रयोगों का विकास किया।
अनुबंध 1997 में समाप्त हो गया जब UBS का स्विस बैंक कॉर्पोरेशन में विलय हो गया। 1998 में, Kx प्रणाली ने kdb+ जारी किया, K. kdb पर निर्मित एक डेटाबेस एक इन-मेमोरी, कॉलम-ओरिएंटेड डेटाबेस था और इसमें SQL-जैसे सिंटैक्स के साथ एक क्वेरी भाषा, ksql शामिल थी। तब से, K और KDB+ के साथ कई वित्तीय उत्पाद विकसित किए गए हैं। केडीबी+/टिक और केडीबी+/टीएक्यू को 2001 में विकसित किया गया था। केडीबी+, केडीबी+ का 64-बिट संस्करण 2003 में जारी किया गया था और केडीबी+/टिक और केडीबी+/टीएक्यू 2004 में जारी किया गया था। केडीबी+ में Q (क्यू सरणी प्रसंस्करण के लिए एक प्रोग्रामिंग भाषा है) शामिल है, एक भाषा जो आधारभूत K भाषा और केएसक्यूएल के कार्यों को मिलाती है।[4]
व्हिटनी ने 2018 में शक्ति नामक K का एक व्युत्पन्न जारी किया।[5]
सिंहावलोकन
K, एपीएल के साथ मुख्य विशेषताएं साझा करता है। वे दोनों व्याख्या की गई भाषा हैं, अन्तरक्रियाशीलता भाषाएं संक्षिप्त और अभिव्यंजक वाक्य-रचना के लिए विख्यात हैं। उनके पास दाएं से बाएं मूल्यांकन के आधार पर पूर्वता के सरल नियम हैं। भाषाओं में प्रसंस्करण सरणियों के लिए डिज़ाइन किए गए आदिम कार्यों का एक समृद्ध सेट होता है। इन आदिम कार्यों में गणितीय संचालन शामिल हैं जो संपूर्ण डेटा ऑब्जेक्ट के रूप में ऐरे पर काम करते हैं, और ऐरे संचालन, जैसे किसी सरणी के क्रम को छांटना या उलटना। इसके अलावा, भाषा में विशेष ऑपरेटर होते हैं जो पुनरावृत्ति और पुनरावर्तन के प्रकारों को करने के लिए आदिम कार्यों के साथ संयोजन करते हैं। नतीजतन, डेटासेट के जटिल और विस्तारित परिवर्तनों को उप-अभिव्यक्तियों की एक श्रृंखला के रूप में व्यक्त किया जा सकता है, जिसमें प्रत्येक लिंक गणना के एक खंड का प्रदर्शन करता है और परिणामों को श्रृंखला में अगले लिंक पर भेजता है।
एपीएल की तरह, आदिम कार्यों और ऑपरेटरों को एकल या दोहरे वर्णों द्वारा दर्शाया जाता है; हालाँकि, APL के विपरीत, K स्वयं को ASCII वर्ण सेट तक सीमित रखता है (जैसा कि अन्य APL संस्करण, J करता है)। इसके लिए अनुमति देने के लिए, के के लिए आदिम कार्यों का सेट छोटा और भारी अधिभारित होता है, जिसमें प्रत्येक एएससीआईआई प्रतीक दो या दो से अधिक विशिष्ट कार्यों या संचालन का प्रतिनिधित्व करते हैं। किसी दिए गए व्यंजक में, संदर्भित वास्तविक कार्य संदर्भ द्वारा निर्धारित किया जाता है। नतीजतन, K भाव अपारदर्शी हो सकते हैं और मनुष्यों के लिए पार्स करना मुश्किल हो सकता है। उदाहरण के लिए, निम्नलिखित काल्पनिक अभिव्यक्ति में विस्मयादिबोधक बिंदु !
तीन अलग-अलग कार्यों को संदर्भित करता है:
<प्री>2!!7!4</प्री>
पहले दाएं से बाएं पढ़ना !
मॉडुलो डिवीजन है जो 7 और 4 पर किया जाता है जिसके परिणामस्वरूप 3 होता है। अगला !
गणना है और 3 से कम पूर्णांकों को सूचीबद्ध करता है, जिसके परिणामस्वरूप सूची 0 1 2 है। अंतिम !
घुमाव है जहां दाईं ओर की सूची को दो बार बाईं ओर घुमाया जाता है जिससे 2 0 1 का अंतिम परिणाम मिलता है।
K का दूसरा मुख्य अंतर यह है कि कार्य श्रेणी की वस्तुएँ हैं, एक अवधारणा जो योजना (प्रोग्रामिंग भाषा) से उधार ली गई है। प्रथम श्रेणी के कार्यों का उपयोग उसी संदर्भ में किया जा सकता है जहां डेटा मान का उपयोग किया जा सकता है। कार्यों को अज्ञात अभिव्यक्तियों के रूप में निर्दिष्ट किया जा सकता है और सीधे अन्य अभिव्यक्तियों के साथ उपयोग किया जा सकता है। कार्य अभिव्यक्ति को K में कर्ली ब्रैकेट्स का उपयोग करके निर्दिष्ट किया गया है। उदाहरण के लिए, निम्नलिखित अभिव्यक्ति में एक द्विघात अभिव्यक्ति को एक फ़ंक्शन के रूप में परिभाषित किया गया है और 0 1 2 और 3 मानों पर लागू किया गया है:
{(3*x^2)+(2*x)+1}'!4
K में, नामित फ़ंक्शंस केवल फ़ंक्शन एक्सप्रेशन हैं जो एक चर में संग्रहीत होते हैं उसी तरह किसी भी डेटा मान को एक चर में संग्रहीत किया जाता है।
a:25
f:{(x^2)-1}
फ़ंक्शंस को किसी अन्य फ़ंक्शन के तर्क के रूप में पारित किया जा सकता है या फ़ंक्शन से परिणाम के रूप में लौटाया जा सकता है।
उदाहरण
K एक व्याख्या की गई भाषा है जहाँ हर कथन का मूल्यांकन किया जाता है और उसके परिणाम तुरंत प्रदर्शित होते हैं। तार जैसे शाब्दिक भाव स्वयं का मूल्यांकन करते हैं। नतीजतन, हैलो वर्ल्ड-प्रोग्राम छोटा है: <पूर्व>
हैलो वर्ल्ड!
</पूर्व> निम्न व्यंजक स्ट्रिंग्स की उनकी लंबाई के अनुसार सूची को सॉर्ट करता है:
x@>#:'x
अभिव्यक्ति का मूल्यांकन दाएं से बाएं इस प्रकार किया जाता है:
- #:'x सूची x में प्रत्येक शब्द की लंबाई लौटाता है।
- > उन सूचकांकों को लौटाता है जो मूल्यों की सूची को अवरोही क्रम में क्रमबद्ध करेंगे।
- @ स्ट्रिंग्स की मूल सूची में अनुक्रमणिका के दाईं ओर पूर्णांक मानों का उपयोग करता है।
यह निर्धारित करने के लिए कि क्या कोई संख्या अभाज्य है, एक फ़ंक्शन को इस प्रकार लिखा जा सकता है:
{&/x!/:2_!x}
समारोह का मूल्यांकन दाएं से बाएं से किया जाता है:
- !x x से कम धनात्मक पूर्णांकों की गणना करें।
- 2_ गणना के पहले दो तत्वों (0 और 1) को हटा देता है।
- x!/: मूल पूर्णांक और काटे गए सूची में प्रत्येक मान के बीच सापेक्ष विभाजन करता है।
- &/ सापेक्ष परिणाम की सूची का न्यूनतम मान ज्ञात करें।
यदि x अभाज्य नहीं है, तो मॉडुलो ऑपरेशन द्वारा लौटाए गए मानों में से एक 0 होगा और इसके परिणामस्वरूप सूची का न्यूनतम मान होगा। यदि x अभाज्य है तो न्यूनतम मान 1 होगा, क्योंकि x mod 2 2 से अधिक किसी भी अभाज्य के लिए 1 है।
नीचे दिए गए फ़ंक्शन का उपयोग 1 और R के बीच सभी अभाज्य संख्याओं को सूचीबद्ध करने के लिए किया जा सकता है:
2_&{&/x!/:2_!x}'!R
अभिव्यक्ति का मूल्यांकन दाएं से बाएं किया जाता है
- !R, R से कम पूर्णांकों की गणना करें।
- ' गणना के प्रत्येक मान को बाईं ओर अभाज्य संख्या फ़ंक्शन पर लागू करें। यह 0 और 1 की सूची लौटाएगा।
- और उस सूची के सूचकांक लौटाएं जहां मान 1 है।
- 2_ गणना के पहले दो तत्वों को छोड़ दें (0 और 1)
के वित्तीय उत्पाद
K वित्तीय उत्पादों के परिवार की नींव है। केडीबी+ एक इन-मेमोरी, कॉलम-आधारित डेटाबेस है जिसमेंसंबंधपरक डेटाबेस प्रबंधन प्रणाली के समान कार्य हैं। डेटाबेस एसक्यूएल, एसक्यूएल-92 और केएसक्यूएल का समर्थन करता है, एसक्यूएल के समान सिंटैक्स के साथ एक क्वेरी भाषा और स्तंभ आधारित प्रश्नों और ऐरे विश्लेषण के लिए अभिकल्पित किया गया है।
केडीबी+ सोलारिस (ऑपरेटिंग सिस्टम), लिनक्स, मैक ओएस, और माइक्रोसॉफ़्ट विंडोज़ (32-बिट या 64-बिट) सहित कई ऑपरेटिंग सिस्टम के लिए उपलब्ध है।
यह भी देखें
- जे (प्रोग्रामिंग भाषा), एक अन्य एपीएल-प्रेरित भाषा
- क्यू (केएक्स सिस्टम्स से प्रोग्रामिंग भाषा), केडीबी+ की भाषा और के और केएसक्यूएल का एक नया विलयित किया गया संस्करण।
संदर्भ
- ↑ "Kx Systems".
- ↑ Iverson, Kenneth. "विचार के एक उपकरण के रूप में संकेतन". Archived from the original on 2013-09-20. Retrieved 2015-02-23.
- ↑ "आर्थर जैव और साक्षात्कार".
- ↑ Garland, Simon (December 28, 2004), Q Language Widening the Appeal of Vectors, Vector UK, archived from the original on January 1, 2007
- ↑ "Shakti".
बाहरी संबंध
- Official website,केएक्स सिस्टम्स
- Official website, kdb+
- K का अवलोकन (K संदर्भ कार्ड के लिंक के साथ)
- डेनिस शाशा - के एक प्रोटोटाइप भाषा के रूप में
- के आर्थर व्हिटनी द्वारा (2005)
- ठीक आरईपीएल K क्लोन के लिए
- कोना एक खुला-स्रोत K3 कार्यान्वयन