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

From Vigyanwiki
क्यू
Paradigmऐरे, कार्यात्मक
द्वारा डिज़ाइन किया गयाआर्थर व्हिटनी
Developerकेएक्स सिस्टम
पहली प्रस्तुति2003[1]
Stable release
4.0 / [2]
टाइपिंग अनुशासनडायनामिक, मजबूत
वेबसाइटcode.kx.com
Influenced by
ए+, एपीएल, स्कीम, के

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

अवलोकन

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

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

q)`john / an atom of type symbol
`john
q)50    / an atom of type integer
50

q)`john`jack / a list of symbols
`john`jack
q)50 60 / a list of integers
50 60

q)`john`jack!50 60 / a list of symbols and a list of integers combined to form a dictionary
john| 50
jack| 60

q)`name`age!(`john`jack;50 60) / an arrangement termed a column dictionary
name| john jack
age | 50   60

q)flip `name`age!(`john`jack;50 60) / when transposed via the function "flip", the column dictionary becomes a table
name age
--------
john 50
jack 60

q)(flip (enlist `name)!enlist `john`jack)!flip (enlist `age)!enlist 50 60  / two equal length tables combined as a dictionary become a keyed table
name| age
----| ---
john| 50
jack| 60

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







उदाहरण

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

q)"Hello world!"
"Hello world!"

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

x@idesc count each x

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

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

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

{prd 1+til x}

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

{$[x=0;1;x*.z.s[x-1]]}

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

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

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

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

{min x mod 2_til x}

कार्य का मूल्यांकन दाएं से बाएं ओर किया जाता है:

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

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

q)show t:([] name:`john`jack`jill`jane; age: 50 60 50 20) / define a simple table and assign to "t"
name age
--------
john 50
jack 60
jill 50
jane 20
 q)select from t where name like "ja*",age>50
 name age
 --------
 jack 60
 
 q)select rows:count i by age from t
 age| rows
 ---| ----
 20 | 1
 50 | 2
 60 | 1

संदर्भ

  1. Template:उद्धरण वेब
  2. Template:प्रेस विज्ञप्ति उद्धृत करें
  3. "क्यू संदर्भ कार्ड". Retrieved 15 April 2020.

अग्रिम पठन

  • उधारकर्ता, जेफरी ए. क्यू फॉर मॉर्टल्स: क्यू प्रोग्रामिंग में एक ट्यूटोरियल. ISBN 978-1-4348-2901-6.
  • पसरिस, निक. क्यू युक्तियाँ: तेज़, स्केलेबल और रखरखाव योग्य केडीबी+. ISBN 978-9-8813-8990-9.

बाहरी संबंध