كي (لغة برمجة)

K هي لغة برمجة معالجة تعتمد على المصفوفات. وضعتها آرثر ويتني وتسويقها بواسطة Kx Systems. تُستخدم اللغة كأساس لـ kdb + ، وقاعدة بيانات في الذاكرة وقائمة على العمود في قواعد البيانات. وضعت أصلا في عام 1993، كبديل عن APL وتحتوي على عناصر من المخطط. يؤكد المدافعون عن اللغة على سرعتها، ومرفقها في معالجة المصفوفات، وبناء الكود البرمجي.

التاريخ 

قبل تطوير K ، عمل آرثر ويتني بشكل مكثف مع APL ، أولاً في I. P. Sharp Associates إلى جانب Ken Iverson و Roger Hui ، وفي وقت لاحق في Morgan Stanley قام بتطوير التطبيقات المالية. في Morgan Stanley ، ساعد Whitney في تطوير A+ ، وهو متغير من أي بي أل APL ، لتسهيل ترحيل تطِّبيقات APL من أجهزة الكمبيوتر المركزية من IBM إلى شبكة من محطات عمل Sun. كان لدى A + مجموعة أصغر من الوظائف البدائية وتم تصميمها للسرعة والتعامل مع مجموعات كبيرة من بيانات السلاسل الزمنية.
في عام 1993، غادر ويتني مورغان ستانلي وطور النسخة الأولى من اللغة K. في الوقت نفسه، قام بتكوين Kx Systems لتسويق المنتج وتوقيع عقد حصري مع (Union Bank of Switzerland (UBS. طور خلال السنوات الأربع التالية العديد من التطبيقات المالية والتجارية باستخدام K لـ UBS.

انتهى العقد في عام 1997 عندما اندمجت UBS مع Swiss Bank. في عام 1998، أصدرت Kx Systems kdb + ، وكانت قاعدة البيانات المبنية على K.kdb قاعدة بيانات في الذاكرة موجهة نحو العمود وشملت ksql ، وهي لغة استعلام مع بناء جملة يشبه SQL. منذ ذلك الحين، تم تطوير العديد من المنتجات المالية باستخدام K و kdb +. تم تطوير kdb + / tick و kdb + / taq في عام 2001. تم إصدار kdb + ، إصدار 64 بت من kdb + في عام 2003 وتم إصدار kdb + / tick و kdb + / taq في عام 2004. kdb + تضمن Q ، وهي لغة دمجت وظائف لغة K الأساسية و ksql.

أصدر ويتني مشتقًا من K يسمى Shakti في عام 2018.

نظرة عامة 

تشارك K الميزات الرئيسية مع APL. كلاهما يتم تفسيرهما، واللغات التفاعلية معروفة بناء جملة موجزة ومعبرة. لديهم قواعد الأسبقية البسيطة بناءً على التقييم من اليمين إلى اليسار. تحتوي اللغات على مجموعة غنية من الوظائف البدائية المصممة لمعالجة المصفوفات. تتضمن هذه الوظائف البدائية عمليات رياضية، مثل الفرز أو عكس ترتيب المصفوفة. بالإضافة إلى ذلك، تحتوي اللغة على عوامل تشغيل خاصة تتحد مع الوظائف البدائية لأداء أنواع من التكرار والإعادة. ونتيجة لذلك، يمكن التعبير عن التحويلات المعقدة والممتدة لمجموعة البيانات كسلسلة من التعبيرات الفرعية، حيث يؤدي كل رابط جزءًا من الحساب ويمرر النتائج إلى الرابط التالي (الكود التالي) في السلسلة.

مثل APL ، يتم تمثيل الوظائف الأولية والمشغلين بأحرف مفردة أو مزدوجة. ومع ذلك، بخلاف APL ، يقيد K نفسه إلى مجموعة أحرف ASCII) لتكون مجموعة الوظائف البدائية لـ K أصغر وأثقل (أفضل) في خاصية إفراط التحميل، حيث يمثل كل من رموز ASCII وظيفتين أو أكثر من العمليات أو العمليات المميزة. في تعبير محدد، يتم تحديد الوظيفة الفعلية المشار إليها بواسطة السياق. نتيجة لذلك، يمكن أن تكون تعبيرات K مبهمة ويصعب تحليلها للبشر. على سبيل المثال، في التعبير التالي، علامة التعجب! تشير إلى ثلاث وظائف مختلفه:

2!!7!4
قراءة من اليمين إلى اليسار
 "!" يشير إلى تقسيم مودولو الذي يتم تنفيذه في 7 و 4 مما يؤدي إلى 3.
 "!" يشير إلى التعداد وقائمة الأعداد الصحيحة أقل من 3 وهي 02.
 "!" هو التناوب حيث يتم تدوير القائمة على اليمين مرتين إلى اليسار مما يؤدي إلى النتيجة النهائية لل 2 0 1.

التمييز الأساسي الثاني لـ K هو أن الدوال تمثل كائنات من الدرجة الأولى. يمكن استخدام وظائف الدرجة الأولى في نفس السياق حيث يمكن استخدام قيمة البيانات ويمكن تحديد الوظائف كتعبيرات مجهولة وتستخدم مباشرة مع تعبيرات أخرى. يتم تحديد تعبيرات الوظائف في K باستخدام حاصرتين. على سبيل المثال، في التعبير التالي، يتم تعريف الجذر كدالة ويتم تطبيقه على القيمتين 0 1 2 و 3:
{(3*x^2)+(2*x)+1}'!4في K ، يتم تسمية الوظائف تطبيقية (functions) بالطريقة نفسها التي يتم بها تخزين أي لمتغير.
 a:25f
:{(x^2)-1}

أمثلة 

K هي لغة مفسرة حيث يتم تفسير كل عبارة ويتم عرض نتائجها على الفور باستخدام مفسر. التعبيرات مثل الاحرف تظهر مباشرتاً. على سيبيل المثال برنامج أهلا بالعالم:
"Hello World"

البرنامج التالي يقوم بعرض سلاسل ويرتبها على حسب طول السلسلة:
x@>#:'x
الكود من اليمين إلى اليسار:

 "x" تُرجع طول كل كلمة في القائمة x.
 ">" تُرجع المؤشرات التي ستفرز قائمة القيم بترتيب تنازلي.
 "@" استخدم القيم الصحيحة على اليمين الفهرسة إلى قائمة السلاسل الأصلية.
دالة لتحديد ما إذا كان الرقم أوليًا كما يلي:

{&/x!/:2_!x}

الكود من اليمين إلى اليسار:

 "x!" الأعداد الصحيحة الموجبة الأقل من x.
 "_2" يحذف أول عنصرين (رقمين) من التعداد (0 و 1).
 "/!x/:" ينفذ عملية حساب المعامل (الباقي) بين العدد الصحيح الأصلي وكل قيمة في القائمة.
 "&" العثور على الحد الأدنى لقيمة المعامل.
إذا لم يكن x عدد أولي، فستكون إحدى القيم التي يتم إرجاعها بواسطة عملية إيجاد المعامل أو الباقي هي 0 وبالتالي تكون القيمة الأقل للقائمة. إذا كانت قيمة x أولية، فستكون القيمة الدنيا 1، لأن (x mod 2) هي 1 لأي قيمة أولية أكبر من 2.
الوظيفة أدناه لسرد جميع الأعداد الأولية بين 1 و R :
2_&{&/x!/:2_!x}'!R

يتم تقييم التعبير من اليمين إلى اليسار

 "R" تعداد الأعداد الصحيحة أقل من R.
قم بتطبيق كل قيمة من التعداد على خاصية الرقم الأولي. هذا سيعيد قائمة من 0 و 1.وإرجاع مؤشرات القائمة حيث القيمة هي 1.
"2_" حذف أول عنصرين من التعداد (0 و 1)

المنتجات المالية 

K هي الأساس لعائلة من المنتجات المالية. Kdb + عبارة عن قاعدة بيانات في الذاكرة ود تحتوي على الكثير من الوظائف ذاتها لنظام إدارة قواعد البيانات العلائقية. تدعم قاعدة البيانات SQL و SQL-92 و ksql ، وهي لغة استعلام ذات بناء جملة مشابه لـ SQL ومصممة للاستعلامات المستندة إلى العمود (في الجدول) وتحليل المصفوفة.

انظر أيضا 

 أس كيو أل لايت
 قاعدت بيانات

مراجع

روابط خارجية 

 , Kx Systems
 , kdb+
 Michael Schidlowsky - Screencast comparing solutions of a specific problem in K vs. جافا (لغة برمجة)

برمجيات 1993
لغات برمجة
لغات برمجة أنشئت في 1993
لغات برمجة ديناميكية
لغات برمجة ديناميكية النمط
لغات برمجة عالية المستوى