Q (Kx Systems से प्रोग्रामिंग भाषा)

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

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

निम्नलिखित कोड अकड़ा संरचनाओं के संबंधों को प्रदर्शित करता है। मूल्यांकन करने के लिए अभिव्यक्तियाँ  के साथ उपसर्ग दिखाई देती हैं  मूल्यांकन के आउटपुट के साथ नीचे दिखाए गए है :

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

उदाहरण
K की तरह, Q की व्याख्या की जाती है और किसी अभिव्यक्ति के मूल्यांकन का परिणाम तुरंत प्रदर्शित किया जाता है, जब तक कि अर्ध-विराम के साथ समाप्त न किया जाए। हैलो वर्ल्ड  कार्यक्रम इस प्रकार तुच्छ है:

निम्नलिखित अभिव्यक्ति वेरिएबल x में संग्रहीत स्ट्रिंग्स की सूची को उनकी लंबाई के आधार पर क्रमबद्ध करती है:

अभिव्यक्ति का मूल्यांकन दाएं से बाएं इस प्रकार किया जाता है:


 * 1) प्रत्येक x की गणना करें, सूची x में प्रत्येक शब्द की लंबाई लौटाएं।
 * 2) इडेस्क सूचकांक लौटाता है जो मानों की सूची को घटते क्रम में क्रमबद्ध करेगा।
 * 3) @ स्ट्रिंग्स की मूल सूची में अनुक्रमणिका के दाईं ओर पूर्णांक मानों का उपयोग करें।

भाज्य कार्य को सीधे Q रूप में कार्यान्वित किया जा सकता है

या पुनरावर्ती रूप में

ध्यान दें कि दोनों ही घटनाओ में कार्य अंतर्निहित रूप से x नामक एक एकल तर्क लेता है - सामान्य तौर पर x, y और z नामक तीन अंतर्निहित तर्कों का उपयोग करना संभव है, या स्थानीय चर बाइंडिंग को स्पष्ट रूप से तर्क देना संभव है।

प्रत्यक्ष कार्यान्वयन में, अभिव्यक्ति "x" तक, 0 से x-1 तक पूर्णांकों की गणना करता है, 1+ सूची के प्रत्येक तत्व में 1 जोड़ता है और पीआरडी सूची का उत्पाद लौटाता है।

पुनरावर्ती कार्यान्वयन में, सिंटैक्स $[स्थिति; परीक्षण1; परीक्षण2] एक टर्नरी सशर्त है - यदि शर्त सत्य है तो परीक्षण1 वापस कर दिया जाता है; अन्यथा परीक्षण2 लौटा दिया जाता है। अभिव्यक्ति .z.s जावा में 'यह' या पायथन में 'स्वयं' के बराबर है - यह युक्त वस्तु का एक संदर्भ है, और क्यू में कार्य को स्वयं को कॉल करने में सक्षम बनाता है।

जब x 2 से बड़ा पूर्णांक है, तो निम्न कार्य 1 लौटाएगा यदि यह अभाज्य है, अन्यथा 0: कार्य का मूल्यांकन दाएं से बाएं ओर किया जाता है:


 * 1) x तक x से कम गैर-नकारात्मक पूर्णांकों की गणना करें।
 * 2) 2_ गणना के पहले दो तत्वों (0 और 1) को हटा देता है।
 * 3) x मॉड मूल पूर्णांक और काटी गई सूची में प्रत्येक मान के बीच मॉड्यूलो विभाजन करता है।
 * 4) न्यूनतम मॉड्यूलो परिणाम की सूची का न्यूनतम मान ज्ञात करें।

Q कार्यक्रम निर्माण लैंग्वेज में अपना स्वयं का टेबल क्वेरी सिंटैक्स होता है जिसे qSQL कहा जाता है, जो पारंपरिक एसक्यूएल जैसा दिखता है लेकिन इसमें महत्वपूर्ण अंतर हैं, मुख्य रूप से इस तथ्य के कारण कि अंतर्निहित टेबल पंक्ति के की जगह कॉलम द्वारा उन्मुख होते हैं।

बाहरी संबंध

 * , केएक्स प्रणाली
 * , केडीबी+
 * ऑनलाइन दस्तावेज़ीकरण और डेवलपर साइट
 * ऑनलाइन केडीबी ट्यूटोरियल
 * क्यूस्टूडियो केडीबी के लिए टाइमसीरीज़ चार्टिंग के साथ एक आईडीई है
 * केएक्स डेवलपर, केडीबी+ के लिए एक आईडीई
 * गिटहब पर केडीबी+ रिपॉजिटरी
 * मॉर्टल्स के लिए क्यू का निःशुल्क ऑनलाइन संस्करण
 * सभी वीडियो ट्यूटोरियल के लिए प्रश्न
 * तकनीकी श्वेतपत्र
 * जेजेक्यू, जेवीएम पर क्यू का कार्यान्वयन