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

From Vigyanwiki
No edit summary
 
(18 intermediate revisions by 3 users not shown)
Line 1: Line 1:
{{Distinguish|Q (समतुल्य प्रोग्रामिंग भाषा) के साथ भ्रमित न हों।}}
{{Infobox programming language
{{Infobox programming language
|name = q
|name = क्यू
|logo =
|logo =
|paradigm = [[Array programming|Array]], [[Functional programming|functional]]
|paradigm = [[ऐरे प्रोग्रामिंग|ऐरे]], [[कार्यात्मक प्रोग्रामिंग|कार्यात्मक]]
|year = 2003<ref name="vector">{{cite web
|year = 2003<ref name='वेक्टर'>{{उद्धरण वेब
  |url=http://vector.org.uk/weblog/archive/000036.html
  |url=http://vector.org.uk/weblog/archive/000036.html
  |title=Q Language Widening the Appeal of Vectors
  |शीर्षक=Q भाषा वेक्टरों की अपील को व्यापक बना रही है
  |access-date=June 1, 2016
  |पहुँच-तिथि=1 जून 2016
  |url-status=unfit
  |यूआरएल-स्थिति=अयोग्य
|archive-url=https://web.archive.org/web/20070101213150/http://vector.org.uk/weblog/archive/000036.html
|संग्रह-यूआरएल=https://web.archive.org/web/20070101213150/http://vector.org.uk/weblog/archive/000036.html
  |archive-date=January 1, 2007
  |संग्रह-दिनांक=1 जनवरी 2007
}}</ref>
}}</ref>
|designer = [[Arthur Whitney (computer scientist)|Arthur Whitney]]
|designer = [[आर्थर व्हिटनी (कंप्यूटर वैज्ञानिक)|आर्थर व्हिटनी]]
|developer = Kx Systems
|developer = केएक्स सिस्टम
|latest release version = 4.0
|latest release version = 4.0
|latest release date = {{Start date and age|2020|03|17}}<ref>{{cite press release |author=<!--Staff writer(s); no by-line.-->|title=Changes in 4.0 |url=https://code.kx.com/q/ref/releases/ChangesIn4.0/ |location=Palo Alto |publisher=Kx Systems |date=Mar 17, 2020 |access-date=Apr 15, 2020}}</ref>
|latest release date = {{प्रारंभ तिथि और आयु|2020|03|17}}<ref>{{प्रेस विज्ञप्ति उद्धृत करें |लेखक=<!--कर्मचारी लेखक); कोई बाय-लाइन नहीं।-->|शीर्षक=4.0 में परिवर्तन |url=https://code.kx.com/q/ref/releases/ChangesIn4.0/ |location=Palo Alto |publisher=Kx Systems |date= 17 मार्च, 2020 |पहुँच-तिथि=15 अप्रैल, 2020}}</ref>
|typing = [[Type system|Dynamic]], [[Strong and weak typing|strong]]
|typing = [[टाइप सिस्टम|डायनामिक]], [[मजबूत और कमजोर टाइपिंग|मजबूत]]
|website = {{URL|code.kx.com}}
|website = {{URL|code.kx.com}}
|implementations =
|implementations =
|dialects =
|dialects =
|influenced by = [[A+ (programming language)|A+]], [[APL (programming language)|APL]], [[Scheme (programming language)|Scheme]], [[k (programming language)|k]]
|influenced by = [[+ (प्रोग्रामिंग भाषा)|+]], [[एपीएल (प्रोग्रामिंग भाषा)|एपीएल]], [[स्कीम (प्रोग्रामिंग भाषा)|स्कीम]], [[के (प्रोग्रामिंग भाषा)|के]]
}}
}}


Q ऐरे डेटा संरचना प्रसंस्करण के लिए एक [[प्रोग्रामिंग भाषा]] है, जिसे [[आर्थर व्हिटनी (कंप्यूटर वैज्ञानिक)]] द्वारा विकसित किया गया है। यह [[मालिकाना सॉफ्टवेयर]] है, जिसका व्यवसायीकरण [[Kx Systems]] द्वारा किया गया है। Q [[kdb+]] के लिए क्वेरी भाषा के रूप में कार्य करता है, जो एक डिस्क आधारित और इन-मेमोरी [[डेटाबेस]]|इन-मेमोरी, कॉलम-ओरिएंटेड डीबीएमएस |कॉलम-आधारित डेटाबेस है। Kdb+ भाषा [[k (प्रोग्रामिंग भाषा)]] पर आधारित है, जो भाषा एपीएल (प्रोग्रामिंग भाषा) का संक्षिप्त रूप है। Q, k के चारों ओर एक पतला आवरण है, जो अधिक पठनीय, अंग्रेजी जैसा इंटरफ़ेस प्रदान करता है। उपयोग के मामलों में से एक वित्तीय समय श्रृंखला विश्लेषण है, क्योंकि कोई सटीक समय मिलान नहीं कर सकता है। एक उदाहरण बोली और उससे पहले पूछे जाने वाले प्रश्न का मिलान करना है। दोनों टाइमस्टैम्प थोड़े अलग हैं और वैसे भी मेल खाते हैं।<ref>{{Cite web|url=https://code.kx.com/q/ref/|title=क्यू संदर्भ कार्ड|postscript=|access-date=15 April 2020}}</ref>
Q, आर्थर व्हिटनी द्वारा विकसित सरणी प्रसंस्करण के लिए एक कार्यक्रम निर्माण लैंग्वेज है। यह [[मालिकाना सॉफ्टवेयर|अमुक्त स्रोत सॉफ्टवेयर]] है, जिसका व्यवसायीकरण केएक्स सिस्टम द्वारा किया गया है। Q, [[kdb+|केडीबी+]] के लिए क्वेरी लैंग्वेज के रूप में कार्य करता है, जो एक डिस्क आधारित और इन-मेमोरी [[डेटाबेस|अकड़ाआधार]], कॉलम-उन्मुखी डीबीएमएस कॉलम-आधारित अकड़ा-आधार है। केडीबी+ लैंग्वेज,  [[k (प्रोग्रामिंग भाषा)|के (कार्यक्रम निर्माण लैंग्वेज)]] पर आधारित है, जो लैंग्वेज एपीएल (कार्यक्रम निर्माण लैंग्वेज) का संक्षिप्त रूप है। Q, "K" के चारों ओर एक पतला आवरण है, जो अधिक पठनीय, अंग्रेजी जैसा अंतराफलक प्रदान करता है। उपयोग के घटनाओं में से एक वित्तीय समय श्रृंखला विश्लेषण है, क्योंकि कोई सटीक समय मिलान नहीं कर सकता है। एक उदाहरण बोली और उससे पहले पूछे जाने वाले प्रश्न का मिलान करना है। दोनों टाइमस्टैम्प थोड़े अलग हैं और वैसे भी मेल खाते हैं।<ref>{{Cite web|url=https://code.kx.com/q/ref/|title=क्यू संदर्भ कार्ड|postscript=|access-date=15 April 2020}}</ref>
=='''अवलोकन'''==
=='''अवलोकन'''==
q के मूलभूत निर्माण खंड परमाणु, सूचियाँ और कार्य हैं। परमाणु [[ अदिश (कंप्यूटिंग) ]] हैं और इसमें [[डेटा प्रकार]] संख्यात्मक, वर्ण, दिनांक और समय सम्मिलित हैं। [[सूची (कंप्यूटिंग)]] परमाणुओं (या अन्य सूचियों) का क्रमबद्ध संग्रह है, जिस पर उच्च स्तरीय डेटा संरचनाएं [[सहयोगी सरणी]] और [[तालिका (डेटाबेस)]] आंतरिक रूप से निर्मित होती हैं। शब्दकोश मानों की सूची की कुंजियों की सूची का एक मानचित्र है। एक तालिका प्रतीक कुंजियों और मानों के रूप में समान लंबाई वाली सूचियों (स्तंभों) का एक ट्रांसपोज़्ड शब्दकोश है। एक कुंजीयुक्त तालिका, उस तालिका के समान होती है जिस पर एक अद्वितीय कुंजी रखी होती है, एक शब्दकोश है जहां कुंजी और मान दो तालिकाओं के रूप में व्यवस्थित होते हैं।
क्यू के मूलभूत निर्माण खंड परमाणु, सूचियाँ और कार्य हैं। परमाणु[[ अदिश (कंप्यूटिंग) ]] होते हैं और इसमें [[डेटा प्रकार|अकड़ा प्रकार]] संख्यात्मक, वर्ण, दिनांक और समय सम्मिलित हैं। [[सूची (कंप्यूटिंग)]] परमाणुओं (या अन्य सूचियों) का क्रमबद्ध संग्रह होती है, जिस पर उच्च स्तरीय अकड़ा संरचनाएं [[सहयोगी सरणी]] और [[तालिका (डेटाबेस)|तालिका अकड़ाआधार )]] आंतरिक रूप से निर्मित होती हैं। शब्दकोश मानों की सूची की कुंजियो  की सूची का एक मानचित्र है। एक तालिका प्रतीक कुंजियो और मानों के रूप में समान लंबाई वाली सूचियों (स्तंभों) का एक पक्षांतरित शब्दकोश है। एक की युक्त तालिका, उस तालिका के समान होती है जिस पर एक अद्वितीय कुंजी रखी होती है, एक शब्दकोश है जहां कुंजी और मान दो तालिकाओं के रूप में व्यवस्थित होते हैं।


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


<syntaxhighlight lang="q">
<syntaxhighlight lang="q">
Line 60: Line 59:
jack| 60
jack| 60
</syntaxhighlight>
</syntaxhighlight>
इन संस्थाओं को फ़ंक्शंस के माध्यम से हेरफेर किया जाता है, जिसमें Q के साथ आने वाले अंतर्निहित फ़ंक्शंस (जिन्हें K (प्रोग्रामिंग भाषा) मैक्रोज़ के रूप में परिभाषित किया गया है) और उपयोगकर्ता-परिभाषित फ़ंक्शंस सम्मिलित हैं। फ़ंक्शंस एक डेटा प्रकार हैं, और इन्हें सूचियों, शब्दकोशों और तालिकाओं में रखा जा सकता है, या पैरामीटर के रूप में अन्य फ़ंक्शंस में पास किया जा सकता है।
इन संस्थाओं को फ़ंक्शंस के माध्यम से हेरफेर किया जाता है, जिसमें Q के साथ आने वाले अंतर्निहित फ़ंक्शंस (जिन्हें के (कार्यक्रम निर्माण लैंग्वेज) मैक्रोज़ के रूप में परिभाषित किया गया है) और उपयोगकर्ता-परिभाषित फ़ंक्शंस सम्मिलित हैं। फ़ंक्शंस एक अकड़ा  प्रकार हैं, और इन्हें सूचियों, शब्दकोशों और तालिकाओं में रखा जा सकता है, या पैरामीटर के रूप में अन्य फ़ंक्शंस में पास किया जा सकता है।
 
 
 
 
 
 
 
 
 
 
 


==उदाहरण==
==उदाहरण==
Line 77: Line 87:


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


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


<syntaxhighlight lang="q">
<syntaxhighlight lang="q">
Line 90: Line 100:
{$[x=0;1;x*.z.s[x-1]]}
{$[x=0;1;x*.z.s[x-1]]}
</syntaxhighlight>
</syntaxhighlight>
ध्यान दें कि दोनों ही मामलों में फ़ंक्शन अंतर्निहित रूप से x नामक एक एकल तर्क लेता है - सामान्य तौर पर x, y और z नामक तीन अंतर्निहित तर्कों का उपयोग करना संभव है, या स्थानीय चर बाइंडिंग को स्पष्ट रूप से तर्क देना संभव है।
ध्यान दें कि दोनों ही घटनाओ में कार्य अंतर्निहित रूप से x नामक एक एकल तर्क लेता है - सामान्य तौर पर x, y और z नामक तीन अंतर्निहित तर्कों का उपयोग करना संभव है, या स्थानीय चर बाइंडिंग को स्पष्ट रूप से तर्क देना संभव है।


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


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


जब x 2 से बड़ा पूर्णांक है, तो निम्न फ़ंक्शन 1 लौटाएगा यदि यह अभाज्य है, अन्यथा 0:
जब x 2 से बड़ा पूर्णांक है, तो निम्न कार्य 1 लौटाएगा यदि यह अभाज्य है, अन्यथा 0:
<syntaxhighlight lang="q">
<syntaxhighlight lang="q">
{min x mod 2_til x}
{min x mod 2_til x}
</syntaxhighlight>
</syntaxhighlight>
फ़ंक्शन का मूल्यांकन दाएं से बाएं ओर किया जाता है:
कार्य का मूल्यांकन दाएं से बाएं ओर किया जाता है:


# x तक x से कम गैर-नकारात्मक पूर्णांकों की गणना करें।
# x तक x से कम गैर-नकारात्मक पूर्णांकों की गणना करें।
Line 107: Line 117:
# न्यूनतम मॉड्यूलो परिणाम की सूची का न्यूनतम मान ज्ञात करें।
# न्यूनतम मॉड्यूलो परिणाम की सूची का न्यूनतम मान ज्ञात करें।


क्यू प्रोग्रामिंग भाषा में अपना स्वयं का टेबल क्वेरी सिंटैक्स होता है जिसे [https://code.kx.com/q/basics/qsql/ qSQL] कहा जाता है, जो पारंपरिक [[एसक्यूएल]] जैसा दिखता है लेकिन इसमें महत्वपूर्ण अंतर हैं, मुख्य रूप से इस तथ्य के कारण कि अंतर्निहित टेबल पंक्ति के बजाय कॉलम द्वारा उन्मुख होते हैं।
Q कार्यक्रम निर्माण लैंग्वेज में अपना स्वयं का टेबल क्वेरी सिंटैक्स होता है जिसे [https://code.kx.com/q/basics/qsql/ qSQL] कहा जाता है, जो पारंपरिक [[एसक्यूएल]] जैसा दिखता है लेकिन इसमें महत्वपूर्ण अंतर हैं, मुख्य रूप से इस तथ्य के कारण कि अंतर्निहित टेबल पंक्ति के की जगह कॉलम द्वारा उन्मुख होते हैं।


<syntaxhighlight lang="q">
<syntaxhighlight lang="q">
Line 137: Line 147:
*{{cite book|last=पसरिस|first=निक|title=क्यू युक्तियाँ: तेज़, स्केलेबल और रखरखाव योग्य केडीबी+|isbn=978-9-8813-8990-9}}
*{{cite book|last=पसरिस|first=निक|title=क्यू युक्तियाँ: तेज़, स्केलेबल और रखरखाव योग्य केडीबी+|isbn=978-9-8813-8990-9}}
==बाहरी संबंध==
==बाहरी संबंध==
* {{Official website|kx.com}}, Kx Systems
* {{Official website|kx.com}}, केएक्स प्रणाली
* {{Official website|kx.com/solutions}}, kdb+  
* {{Official website|kx.com/solutions}}, केडीबी+
* [https://code.kx.com/ Online documentation and developer site]
* [https://code.kx.com/ ऑनलाइन दस्तावेज़ीकरण और डेवलपर साइट]
* [http://www.timestored.com/kdb-guides/ Online kdb Tutorials]
* [http://www.timestored.com/kdb-guides/ ऑनलाइन केडीबी ट्यूटोरियल]
* [http://www.timestored.com/qstudio qStudio an IDE with timeseries charting for kdb ]
* [http://www.timestored.com/qstudio क्यूस्टूडियो केडीबी के लिए टाइमसीरीज़ चार्टिंग के साथ एक आईडीई है]
* [https://code.kx.com/developer/ Kx Developer, an IDE for kdb+ ]
* [https://code.kx.com/developer/ केएक्स डेवलपर, केडीबी+ के लिए एक आईडीई]
* [http://kxsystems.github.io/ kdb+ repositories on GitHub]
* [http://kxsystems.github.io/ गिटहब पर केडीबी+ रिपॉजिटरी]
* [https://code.kx.com/q4m3/ Free online version of ''Q for Mortals'']
* [https://code.kx.com/q4m3/ मॉर्टल्स के लिए क्यू का निःशुल्क ऑनलाइन संस्करण]
* [https://www.youtube.com/watch?v=8eoysfqO3UY ''Q for All'' video tutorials]
* [https://www.youtube.com/watch?v=8eoysfqO3UY सभी वीडियो ट्यूटोरियल के लिए प्रश्न]
* [https://code.kx.com/q/wp/ Technical Whitepapers]
* [https://code.kx.com/q/wp/ तकनीकी श्वेतपत्र]
* [https://github.com/timestored/jq jq, an implementation of q on the JVM]
* [https://github.com/timestored/jq जेजेक्यू, जेवीएम पर क्यू का कार्यान्वयन]


{{APL programming language}}
{{APL programming language}}
[[Category: एपीएल प्रोग्रामिंग भाषा परिवार]] [[Category: ऐरे प्रोग्रामिंग भाषाएँ]] [[Category: डेटा-केंद्रित प्रोग्रामिंग भाषाएँ]] [[Category: गतिशील प्रोग्रामिंग भाषाएँ]] [[Category: फ़ंक्शन-स्तरीय भाषाएँ]] [[Category: मालिकाना डेटाबेस प्रबंधन प्रणाली]]


[[Category: Machine Translated Page]]
[[Category:Articles with hatnote templates targeting a nonexistent page]]
[[Category:CS1 maint]]
[[Category:Collapse templates]]
[[Category:Created On 24/07/2023]]
[[Category:Created On 24/07/2023]]
[[Category:Machine Translated Page]]
[[Category:Navigational boxes| ]]
[[Category:Navigational boxes without horizontal lists]]
[[Category:Official website not in Wikidata]]
[[Category:Pages with script errors]]
[[Category:Pages with syntax highlighting errors]]
[[Category:Vigyan Ready]]

Latest revision as of 22:01, 10 October 2023

क्यू
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.

बाहरी संबंध