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

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

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

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

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

एपीएल की तरह, आदिम कार्यों और ऑपरेटरों को एकल या दोहरे वर्णों द्वारा दर्शाया जाता है; हालाँकि, APL के विपरीत, K खुद को ASCII कैरेक्टर सेट तक सीमित रखता है (जैसा कि एक और APL वेरिएंट, J (प्रोग्रामिंग लैंग्वेज) करता है)। इसके लिए अनुमति देने के लिए, K के लिए आदिम कार्यों का सेट छोटा और भारी कार्य अधिभार है, जिसमें प्रत्येक ASCII प्रतीक दो या दो से अधिक विशिष्ट कार्यों या संचालन का प्रतिनिधित्व करता है। किसी दिए गए व्यंजक में, संदर्भित वास्तविक कार्य संदर्भ द्वारा निर्धारित किया जाता है। नतीजतन, K भाव अपारदर्शी हो सकते हैं और मनुष्यों के लिए पार्स करना मुश्किल हो सकता है। उदाहरण के लिए, निम्नलिखित काल्पनिक अभिव्यक्ति में विस्मयादिबोधक बिंदु  तीन अलग-अलग कार्यों को संदर्भित करता है: 2!!7!4 पहले दाएं से बाएं पढ़ना  मॉडुलो डिवीजन है जो 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 mod 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 वित्तीय उत्पादों के परिवार की नींव है। केडीबी + एक इन-मेमोरी, कॉलम-आधारित डेटाबेस है जिसमें संबंधपरक डेटाबेस प्रबंधन प्रणाली  के समान कार्य हैं। डेटाबेस SQL, SQL-92 और ksql का समर्थन करता है, SQL के समान सिंटैक्स के साथ एक क्वेरी भाषा और स्तंभ आधारित प्रश्नों और सरणी विश्लेषण के लिए डिज़ाइन किया गया है।

Kdb+ Solaris (ऑपरेटिंग सिस्टम), Linux, macOS, और Microsoft Windows (32-बिट या 64-बिट) सहित कई ऑपरेटिंग सिस्टम के लिए उपलब्ध है।

यह भी देखें

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

बाहरी संबंध

 * , Kx Systems
 * , kdb+
 * Overview of K (with a link to K reference card)
 * Dennis Shasha - K as a Prototyping Language
 * K by Arthur Whitney (2005)
 * oK REPL for a K clone
 * Kona an open-source K3 implementation