K (لغة برمجة)
لغة K هي لغة برمجة خاصة بمعالجة المصفوفات ، طوّرها آرثر ويتني وسوّقتها شركة KX Systems . تُشكّل هذه اللغة أساسًا لقاعدة بيانات kdb+ ، وهي قاعدة بيانات عمودية تعمل في الذاكرة، بالإضافة إلى منتجات مالية أخرى ذات صلة. [ 1 ] طُوّرت هذه اللغة في الأصل عام 1993، وهي مشتقة من لغة APL وتحتوي على عناصر من لغة Scheme . يُشيد مؤيدو هذه اللغة بسرعتها وسهولة استخدامها في معالجة المصفوفات وبنيتها التعبيرية. [ 2 ]
تاريخ
قبل تطوير لغة K، عمل آرثر ويتني بشكل مكثف مع لغة APL، بدايةً في شركة IP Sharp Associates مع كين إيفرسون وروجر هوي ، ولاحقًا في مورغان ستانلي لتطوير تطبيقات مالية. في مورغان ستانلي، ساهم ويتني في تطوير لغة A+ ، وهي نسخة معدلة من APL، لتسهيل نقل تطبيقات APL من حواسيب IBM المركزية إلى شبكة من محطات عمل Sun. تميزت لغة A+ بمجموعة أصغر من الدوال الأساسية، وصُممت لتحقيق السرعة ومعالجة مجموعات كبيرة من بيانات السلاسل الزمنية. [ 3 ]
في عام ١٩٩٣، ترك ويتني مورغان ستانلي وطوّر النسخة الأولى من لغة البرمجة K. وفي الوقت نفسه، أسس شركة KX Systems لتسويق المنتج، ووقّع عقدًا حصريًا مع بنك الاتحاد السويسري (UBS). وعلى مدى السنوات الأربع التالية، طوّر ويتني تطبيقات مالية وتجارية متنوعة باستخدام لغة K لصالح بنك الاتحاد السويسري.
انتهى العقد عام ١٩٩٧ باندماج بنك يو بي إس مع البنك السويسري . وفي عام ١٩٩٨، أصدرت شركة كي إكس سيستمز قاعدة البيانات kdb+، المبنية على لغة K. كانت kdb قاعدة بيانات عمودية تعمل في الذاكرة ، وتضمنت لغة الاستعلام ksql ذات بنية مشابهة للغة SQL . ومنذ ذلك الحين، طُوّرت العديد من المنتجات المالية باستخدام K و kdb+. طُوّرت kdb+/tick و kdb+/taq عام ٢٠٠١. وفي عام ٢٠٠٣، أُصدرت kdb+، وهي نسخة ٦٤ بت من kdb+، بينما أُصدرت kdb+/tick و kdb+/taq عام ٢٠٠٤. تضمنت kdb+ لغة Q ، التي دمجت وظائف لغة K الأساسية مع ksql. [ ٤ ]
أصدرت ويتني نسخة مشتقة من أغنية K تسمى Shakti في عام 2018. [ 5 ]
ملخص
تتشابه لغة K مع لغة APL في بعض الخصائص الرئيسية . فكلتاهما لغتان تفسيريتان تفاعليتان تتميزان ببنية نحوية موجزة ومعبرة. وتعتمدان على قواعد أسبقية بسيطة من اليمين إلى اليسار. تحتوي اللغتان على مجموعة غنية من الدوال الأساسية المصممة لمعالجة المصفوفات. تشمل هذه الدوال عمليات حسابية تُجرى على المصفوفات ككائنات بيانات كاملة، بالإضافة إلى عمليات المصفوفات، مثل فرز عناصر المصفوفة أو عكس ترتيبها. كما تحتوي اللغة على عوامل خاصة تتكامل مع الدوال الأساسية لتنفيذ أنواع مختلفة من التكرار والاستدعاء الذاتي. وبالتالي، يمكن التعبير عن التحويلات المعقدة والممتدة لمجموعة بيانات كسلسلة من التعبيرات الفرعية، حيث يقوم كل رابط بتنفيذ جزء من الحساب وتمرير النتائج إلى الرابط التالي في السلسلة.
على غرار لغة APL، تُمثَّل الدوال والمعاملات الأساسية بأحرف مفردة أو مزدوجة؛ إلا أن لغة K، على عكس APL، تقتصر على مجموعة أحرف ASCII (كما هو الحال في متغير آخر من APL، وهو J ). وللسماح بذلك، فإن مجموعة الدوال الأساسية في K أصغر حجمًا وأكثر تعقيدًا ، حيث يُمثِّل كل رمز من رموز ASCII دالتين أو أكثر من الدوال أو العمليات المختلفة. في أي تعبير، تُحدَّد الدالة المُشار إليها فعليًا من خلال السياق. لذلك، قد تكون تعبيرات K غامضة ويصعب على البشر فهمها. على سبيل المثال، في التعبير المُصطنع التالي، تُشير علامة التعجب! إلى ثلاث دوال مختلفة:
2!!7!4
عند القراءة من اليمين إلى اليسار، تبدأ العملية الأولى !بالقسمة على باقي القسمة، حيث يتم تطبيقها على 7 و4، والنتيجة هي 3. تليها !عملية العد، حيث يتم سرد الأعداد الصحيحة الأقل من 3، والنتيجة هي القائمة 0 1 2. أما العملية الأخيرة !فهي التدوير، حيث يتم تدوير القائمة الموجودة على اليمين مرتين إلى اليسار، والنتيجة النهائية هي 2 0 1.
يتمثل الاختلاف الجوهري الثاني في لغة K في أن الدوال تُعتبر كائنات من الدرجة الأولى ، وهو مفهوم مُستعار من لغة Scheme . يمكن استخدام الدوال من الدرجة الأولى في نفس السياقات التي تُستخدم فيها قيمة البيانات. يمكن تحديد الدوال كتعبيرات مجهولة واستخدامها مباشرةً مع تعبيرات أخرى. تُحدد تعبيرات الدوال في لغة K باستخدام الأقواس المعقوفة . على سبيل المثال، في التعبير التالي، يُعرَّف التعبير التربيعي كدالة ويُطبَّق على القيم 0 و1 و2 و3:
{( 3 * x ^ 2 ) + ( 2 * x ) + 1 } '! 4في لغة K، الدوال المسماة هي ببساطة تعبيرات دوال مخزنة في متغير بنفس الطريقة التي يتم بها تخزين أي قيمة بيانات في متغير.
أ : 25 و : {( س ^ 2 ) - 1 }يمكن تمرير الدوال كوسيط إلى دالة أخرى أو إرجاعها كنتيجة من دالة.
أمثلة
لغة K هي لغة تفسيرية، حيث يتم تقييم كل عبارة وعرض نتائجها فورًا. أما التعبيرات الحرفية، مثل السلاسل النصية، فتُقيّم إلى نفسها. لذلك، فإن برنامج "Hello, World!" بسيط للغاية.
"مرحبا بالعالم!"
يقوم التعبير التالي بترتيب قائمة من السلاسل النصية حسب أطوالها:
x @>#:' xيتم تقييم التعبير من اليمين إلى اليسار على النحو التالي:
- #:'x تُرجع طول كل كلمة في القائمة x.
- > تُرجع الفهارس التي من شأنها فرز قائمة من القيم بترتيب تنازلي.
- يستخدم الرمز @ القيم العددية الموجودة على اليمين للفهرسة في القائمة الأصلية للسلاسل النصية.
يمكن كتابة دالة لتحديد ما إذا كان العدد أوليًا على النحو التالي:
{ &/ x !/: 2 _! x }يتم تقييم الدالة من اليمين إلى اليسار:
- !x عدد الأعداد الصحيحة الموجبة الأقل من x.
- 2_ يحذف أول عنصرين من التعداد (0 و 1).
- x!/: يقوم بإجراء القسمة المعيارية بين العدد الصحيح الأصلي وكل قيمة في القائمة المقتطعة.
- &/ إيجاد القيمة الدنيا لقائمة نتائج باقي القسمة.
إذا لم يكن x عددًا أوليًا، فإن إحدى القيم التي تُرجعها عملية باقي القسمة ستكون 0، وبالتالي ستكون أصغر قيمة في القائمة. أما إذا كان x عددًا أوليًا، فإن أصغر قيمة ستكون 1، لأن باقي قسمة x على 2 يساوي 1 لأي عدد أولي أكبر من 2.
يمكن استخدام الدالة أدناه لعرض جميع الأعداد الأولية بين 1 و R باستخدام:
2 _& { &/ x !/: 2 _! x } '! Rيتم تقييم التعبير من اليمين إلى اليسار
- !R عدد الأعداد الصحيحة الأقل من R.
- قم بتطبيق كل قيمة من قيم التعداد على دالة الأعداد الأولية الموجودة على اليسار. سيعيد هذا قائمة من الأصفار والآحاد.
- & أعد مؤشرات القائمة حيث تكون القيمة 1.
- 2- حذف أول عنصرين من التعداد (0 و1)
منتجات كي المالية
تُشكّل K أساسًا لمجموعة من المنتجات المالية. Kdb+ هي قاعدة بيانات عمودية تعمل في الذاكرة، وتتمتع بمعظم وظائف نظام إدارة قواعد البيانات العلائقية . تدعم قاعدة البيانات لغات SQL و SQL-92 وksql، وهي لغة استعلام ذات بنية مشابهة لـ SQL ومصممة للاستعلامات العمودية وتحليل المصفوفات.
يتوفر Kdb+ للعديد من أنظمة التشغيل ، بما في ذلك Solaris و Linux و macOS و Windows (32 بت أو 64 بت).
انظر أيضاً
مراجع
- ↑ "أنظمة KX" .
- ↑ إيفرسون، كينيث . "التدوين كأداة للفكر" . مؤرشف من الأصل بتاريخ 20-09-2013 . تم الاطلاع عليه بتاريخ 23-02-2015 .
- ↑ "سيرة آرثر ومقابلة" .
- ↑ جارلاند، سيمون (28 ديسمبر 2004)، لغة Q: توسيع جاذبية المتجهات ، فيكتور المملكة المتحدة، مؤرشف من الأصل في 1 يناير 2007
- ↑ "شاكتي" .
روابط خارجية
- الموقع الرسمي لشركة KX Systems
- الموقع الرسمي ، kdb+
- نظرة عامة على برنامج K (مع رابط لبطاقة مرجعية خاصة ببرنامج K)
- دينيس شاشا - لغة K كلغة للنماذج الأولية
- K من تأليف آرثر ويتني (2005)
- موافق REPL لاستنساخ K
- كونا، تطبيق مفتوح المصدر لـ K3
- عائلة لغات البرمجة APL
- لغات برمجة المصفوفات
- لغات البرمجة التي تركز على البيانات
- لغات البرمجة الديناميكية
- لغات مستوى الوظائف
- أنظمة إدارة قواعد البيانات الاحتكارية
- لغات البرمجة
- لغات البرمجة ذات الكتابة الديناميكية
- لغات البرمجة عالية المستوى
- برنامج عام 1993
- لغات البرمجة التي تم إنشاؤها في عام 1993
