K (प्रोग्रामिंग भाषा)

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

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

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

अनुबंध 1997 में समाप्त हो गया जब UBS का स्विस बैंक कॉर्पोरेशन में विलय हो गया। 1998 में, Kx प्रणाली ने kdb+ जारी किया, K. kdb पर निर्मित एक डेटाबेस एक इन-मेमोरी, कॉलम-ओरिएंटेड डेटाबेस था और इसमें SQL-जैसे सिंटैक्स के साथ एक क्वेरी भाषा, ksql सम्मलित थी। तब से, K और KDB+ के साथ कई वित्तीय उत्पाद विकसित किए गए हैं। केडीबी+/टिक और केडीबी+/टीएक्यू को 2001 में विकसित किया गया था। केडीबी+, केडीबी+ का 64-बिट संस्करण 2003 में जारी किया गया था और केडीबी+/टिक और केडीबी+/टीएक्यू 2004 में जारी किया गया था। केडीबी+ में Q (क्यू सरणी प्रसंस्करण के लिए एक प्रोग्रामिंग भाषा है) सम्मलित है, एक भाषा जो आधारभूत K भाषा और केएसक्यूएल के कार्यों को मिलाती है।

व्हिटनी ने 2018 में शक्ति नामक K का एक व्युत्पन्न जारी किया।

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

एपीएल की तरह, आदिम कार्यों और ऑपरेटरों को एकल या दोहरे वर्णों द्वारा दर्शाया जाता है; हालाँकि, APL के विपरीत, K स्वयं को ASCII वर्ण सेट तक सीमित रखता है (जैसा कि अन्य APL संस्करण, J करता है)। इसके लिए अनुमति देने के लिए, के के लिए आदिम कार्यों का सेट छोटा और भारी अधिभारित होता है, जिसमें प्रत्येक एएससीआईआई प्रतीक दो या दो से अधिक विशिष्ट कार्यों या संचालन का प्रतिनिधित्व करते हैं। किसी दिए गए व्यंजक में, संदर्भित वास्तविक कार्य संदर्भ द्वारा निर्धारित किया जाता है। परिणामस्वरूप, K भाव अपारदर्शी हो सकते हैं और मनुष्यों के लिए पार्स करना मुश्किल हो सकता है। उदाहरण के लिए, निम्नलिखित काल्पनिक अभिव्यक्ति में विस्मयादिबोधक बिंदु  तीन अलग-अलग कार्यों को संदर्भित करता है: पहले दाएं से बाएं पढ़ना   मॉडुलो डिवीजन है जो 7 और 4 पर किया जाता है जिसके परिणामस्वरूप 3 होता है। अगला   गणना है और 3 से कम पूर्णांकों को सूचीबद्ध करता है, जिसके परिणामस्वरूप सूची 0 1 2 है। अंतिम   घुमाव है जहां दाईं ओर की सूची को दो बार बाईं ओर घुमाया जाता है जिससे 2 0 1 का अंतिम परिणाम मिलता है।

K का दूसरा मुख्य अंतर यह है कि कार्य श्रेणी की वस्तुएँ हैं, एक अवधारणा जो योजना (प्रोग्रामिंग भाषा) से उधार ली गई है। प्रथम श्रेणी के कार्यों का उपयोग उसी संदर्भ में किया जा सकता है जहां डेटा मान का उपयोग किया जा सकता है। कार्यों को अज्ञात अभिव्यक्तियों के रूप में निर्दिष्ट किया जा सकता है और सीधे अन्य अभिव्यक्तियों के साथ उपयोग किया जा सकता है। कार्य अभिव्यक्ति को K में कर्ली ब्रैकेट्स का उपयोग करके निर्दिष्ट किया गया है। उदाहरण के लिए, निम्नलिखित अभिव्यक्ति में एक द्विघात अभिव्यक्ति को एक फ़ंक्शन के रूप में परिभाषित किया गया है और 0 1 2 और 3 मानों पर लागू किया गया है: K में, नामित फ़ंक्शंस केवल फ़ंक्शन एक्सप्रेशन हैं जो एक चर में संग्रहीत होते हैं उसी तरह किसी भी डेटा मान को एक चर में संग्रहीत किया जाता है। फ़ंक्शंस को किसी अन्य फ़ंक्शन के तर्क के रूप में पारित किया जा सकता है या फ़ंक्शन से परिणाम के रूप में लौटाया जा सकता है।

उदाहरण
K एक व्याख्या की गई भाषा है जहाँ हर कथन का मूल्यांकन किया जाता है और उसके परिणाम तुरंत प्रदर्शित होते हैं। स्ट्रिंग जैसे शाब्दिक भाव स्वयं का मूल्यांकन करते हैं। परिणामस्वरूप, हैलो वर्ल्ड-प्रोग्राम छोटा है: हैलो वर्ल्ड! निम्न व्यंजक स्ट्रिंग्स की उनकी लंबाई के अनुसार सूची को सॉर्ट करता है: अभिव्यक्ति का मूल्यांकन दाएं से बाएं इस प्रकार किया जाता है:
 * #:'x सूची x में प्रत्येक शब्द की लंबाई लौटाता है।
 * 1) > उन सूचकांकों को लौटाता है जो मूल्यों की सूची को अवरोही क्रम में क्रमबद्ध करेंगे।
 * 2) @ स्ट्रिंग्स की मूल सूची में अनुक्रमणिका के दाईं ओर पूर्णांक मानों का उपयोग करता है।

यह निर्धारित करने के लिए कि क्या कोई संख्या अभाज्य है, एक फ़ंक्शन को इस प्रकार लिखा जा सकता है: फ़ंक्शन का मूल्यांकन दाएं से बाएं तक किया जाता है: यदि x अभाज्य नहीं है, तो मॉडुलो संचालन द्वारा लौटाए गए मानों में से एक 0 होगा और इसके परिणामस्वरूप सूची का न्यूनतम मान होगा। यदि x अभाज्य है तो न्यूनतम मान 1 होगा, क्योंकि x मोड 2 2 से अधिक किसी भी अभाज्य के लिए 1 है।
 * 1) !x x से कम धनात्मक पूर्णांकों की गणना करें।
 * 2) 2_ गणना के पहले दो तत्वों (0 और 1) को हटा देता है।
 * 3) x!/: मूल पूर्णांक और काटे गए सूची में प्रत्येक मान के बीच सापेक्ष विभाजन करता है।
 * 4) &/ मॉड्यूलो परिणाम की सूची का न्यूनतम मान ज्ञात करें।

नीचे दिए गए फ़ंक्शन का उपयोग 1 और R के बीच सभी अभाज्य संख्याओं को सूचीबद्ध करने के लिए किया जा सकता है: अभिव्यक्ति का मूल्यांकन दाएं से बाएं किया जाता है
 * !R, R से कम पूर्णांकों की गणना करें।
 * 1) ' गणना के प्रत्येक मान को बाईं ओर अभाज्य संख्या फ़ंक्शन पर लागू करें। यह 0 और 1 की सूची लौटाएगा।
 * 2) & और उस सूची के सूचकांक लौटाएं जहां मान 1 है।
 * 3) 2_ गणना के पहले दो तत्वों को छोड़ दें (0 और 1)

के वित्तीय उत्पाद
K वित्तीय उत्पादों के परिवार की नींव है। केडीबी+ एक इन-मेमोरी, कॉलम-आधारित डेटाबेस है जिसमें संबंधपरक डेटाबेस प्रबंधन प्रणाली के समान कार्य हैं। डेटाबेस एसक्यूएल, एसक्यूएल-92 और केएसक्यूएल का समर्थन करता है, एसक्यूएल के समान सिंटैक्स के साथ एक क्वेरी भाषा और स्तंभ आधारित प्रश्नों और ऐरे विश्लेषण के लिए अभिकल्पित किया गया है।

केडीबी+ सोलारिस (ऑपरेटिंग सिस्टम), लिनक्स, मैक ओएस, और माइक्रोसॉफ़्ट विंडोज़ (32-बिट या 64-बिट) सहित कई ऑपरेटिंग सिस्टम के लिए उपलब्ध है।

यह भी देखें

 * जे (प्रोग्रामिंग भाषा), एक अन्य एपीएल-प्रेरित भाषा
 * क्यू (केएक्स सिस्टम्स से प्रोग्रामिंग भाषा), केडीबी+ की भाषा और के और केएसक्यूएल का एक नया विलयित किया गया संस्करण।

बाहरी संबंध

 * ,केएक्स सिस्टम्स
 * , kdb+
 * K का अवलोकन (K संदर्भ कार्ड के लिंक के साथ)
 * डेनिस शाशा - के एक प्रोटोटाइप भाषा के रूप में
 * के आर्थर व्हिटनी द्वारा (2005)
 * ठीक आरईपीएल K क्लोन के लिए
 * कोना एक विवृत-स्रोत K3 कार्यान्वयन