ولفرام (لغة برمجة)
ولفرام وبالانجليزية (Wolfram Language) (/ˈwʊlfrəm/ WUUL-frəm) هي عامة متعددة نموذج لغة البرمجة [1] التي وضعتها أبحاث ولفرام. وهي تؤكد على الحساب الرمزي والبرمجة الوظيفية والبرمجة القائمة على القواعد [2] ويمكنها استخدام الهياكل والبيانات التعسفية.[2] إنها لغة البرمجة الخاصة ببرنامج الحساب الرمزي الرياضي Mathematica .[3]
لغة وولفرام
|
التاريخ
كانت لغة ولفرام جزءًا من النسخة الأولية لماثيماتيكا في عام 1988.[4]
الجوانب الرمزية للمحرك تجعله نظام جبر حاسوبي. يمكن للغة إجراء التكامل والتفاضل ومعالجات المصفوفة وحل المعادلات التفاضلية باستخدام مجموعة من القواعد. أيضا في عام 1988 كان نموذج الكمبيوتر المحمول والقدرة على تضمين الصوت والصور، وفقا لبراءة اختراع ثيودور جراي. [5] تم إصدار واجهة على الإنترنت للغة، WolframAlpha ، في عام 2009. قام ولفرام بتنفيذ هذا الموقع من خلال ترجمة بيانات اللغة الطبيعية إلى استفسارات بلغة ولفرام ترتبط بقاعدة البيانات الخاصة به. العمل المؤدي إلى Wolfram Alpha يعني أيضًا أن تطبيق Wolfram للغة أصبح له الآن وصول مدمج إلى قاعدة المعرفة بالإضافة إلى وظائف معالجة اللغة الطبيعية.
أضاف Wolfram أيضًا ميزات لمهام أكثر تعقيدًا، مثل النمذجة ثلاثية الأبعاد.[6]
تم اعتماد اسم للغة أخيرًا في عام 2013، حيث قررت Wolfram Research إنشاء نسخة من محرك اللغة مجانًا لمستخدمي Raspberry Pi ، وكانوا بحاجة إلى ابتكار اسم لها.[7] تم تضمينه في حزمة البرامج الموصى بها التي توفرها مؤسسة Raspberry Pi للمبتدئين، مما تسبب في بعض الجدل بسبب طبيعة ملكية لغة Wolfram. [8] تم الإعلان عن خطط نقل لغة Wolfram إلى Intel Edison بعد تقديم المجلس في CES 2014 ولكن لم يتم إصدارها مطلقًا.[9] في عام 2019، تمت إضافة رابط لجعل مكتبات Wolfram متوافقة مع محرك ألعاب Unity ، مما يتيح لمطوري الألعاب الوصول إلى وظائف اللغة عالية المستوى.[10][11]
بناء الجملة
يشبه تركيب لغة Wolfram بشكل عام تعبير M في الستينيات من القرن الماضي LISP ، مع دعم مشغلي infix واستدعاءات دالة «تدوين الوظائف».
الأساسيات
تكتب لغة Wolfram التعبيرات الحسابية الأساسية باستخدام عوامل infix
(* This is a comment. *)
4 + 3
(* = 7 *)
1 + 2 * (3 + 4)
(* = 15 *)
(* Note that Multiplication can be omitted: 1 + 2 (3 + 4) *)
(* Divisions return rational numbers: *)
3 / 2
(* = 3/2 *)
يتم الإشارة إلى استدعاءات الوظائف بأقواس مربعة:
Sin[Pi]
(* = 0 *)
(* This is the function to convert rationals to floating point: *)
N[3 / 2]
(* = 1.5 *)
القوائم محاطة بأقواس متعرجة:
Oddlist={1,3,5}
(* = {1,3,5} *)
السكر النحوي
قد تنحرف اللغة عن نموذج التعبير M عندما تتوفر طريقة بديلة أكثر صداقة للإنسان لإظهار التعبير:
- يتم استخدام عدد من قواعد التنسيق في هذه اللغة، بما في ذلك
TeXForm
التنضيد وInputForm
لإدخال اللغة. - يمكن أيضًا تطبيق الدوال باستخدام تعبير البادئة
@
والتعبير postfix//
. - المشتقات يمكن الرمز مع الفاصلة العليا
'
. - يعتبر مشغلو infix أنفسهم «سكر» لنظام تدوين الوظائف.
FullForm
منسق FullForm بإصلاح الإدخال:[12]
FullForm[1+2]
(* = Plus[1, 2] *)
البرمجة الوظيفية
نمط مطابقة
الوظائف في لغة Wolfram هي في الأساس حالة من أنماط الاستبدال البسيطة:
F[x_] := x ^ 0
:=
هو «عامل تشغيل SetDelayed»، بحيث لا يتم البحث عن x على الفور. x_ هو السكر x_
<nowiki>Pattern[x, Blank[]]</nowiki>
، أي «فارغ» لأي قيمة لتحل محل x في بقية التقييم.
يتم التعبير عن تكرار فرز الفقاعة على النحو التالي:
sortRule := {x___,y_,z_,k___} /; y>z -> {x,z,y,k}
(* Rule[Condition[List[PatternSequence[x, BlankNullSequence[]], Pattern[y, Blank[]], Pattern[z, Blank[]], PatternSequence[k, BlankNullSequence[]]], Greater[y, z]], List[x, z, y, k]] *)
/;
عامل التشغيل هو "condition"، بحيث تنطبق القاعدة فقط عندما y>z
. الشرطات السفلية الثلاثة عبارة عن بناء جملة لـ BlankNullSequence[]
، لتسلسل يمكن أن يكون فارغًا.
استبدال مكرر //.
يمكن استخدام عامل التشغيل لتطبيق هذه القاعدة بشكل متكرر، حتى لا يحدث المزيد من التغيير:
{ 9, 5, 3, 1, 2, 4 } //. sortRule
(* = ReplaceRepeated[{ 9, 5, 3, 1, 2, 4 }, sortRule] *)
(* = {1, 2, 3, 4, 5, 9} *)
يؤدي نظام مطابقة الأنماط أيضًا بسهولة إلى تكامل واشتقاق قائم على القواعد. فيما يلي مقتطفات من حزمة قواعد روبي:[13]
(* Reciprocal rule *)
Int[1/x_,x_Symbol] :=
Log[x]؛
(* Power rule *)
Int[x_^m_.,x_Symbol] :=
x^(m+1)/(m+1) /;
FreeQ[m,x] && NeQ[m,-1]
تطبيقات
يكمن التنفيذ الرسمي والمرجعي للغة ولفرام في الرياضيات والخدمات المرتبطة بها عبر الإنترنت. هذه مصادر مغلقة.[14] ومع ذلك، فقد أصدرت Wolfram Research محلل C ++ للغة بموجب ترخيص MIT مفتوح المصدر.[15] الكتاب المرجعي مفتوح الوصول.[16]
في ظل وجود لغة Wolfram لأكثر من ثلاثة عقود، تم أيضًا تطوير عدد من تطبيقات الطرف الثالث مفتوحة المصدر. يعتبر فيلم MockMMA لريتشارد فاتمان من عام 1991 ذا أهمية تاريخية، سواء لكونه أول إعادة تطبيق ولأنه حصل على وقف وكف من Wolfram. الحديثة لا تزال قيد الصيانة اعتبارًا من أبريل 2020 تشمل Symja في Java ، و expreduce في Golang ، و Mathics المستندة إلى SymPy .[17] تركز هذه التطبيقات على اللغة الأساسية ونظام الجبر الحاسوبي الذي تتضمنه، وليس على ميزات «قاعدة المعرفة» عبر الإنترنت في Wolfram.
في عام 2019، [18] أصدرت شركة Wolfram Research برنامجًا مجانيًا لمحرك Wolfram ، لاستخدامه كمكتبة برمجة في البرامج غير التجارية.[19]
التسمية
تم تسمية اللغة رسميًا في يونيو 2013، على الرغم من كونها الواجهة الخلفية لنظام الحوسبة Mathematica ، فقد تم استخدامها في أشكال مختلفة لأكثر من 30 عامًا منذ الإصدار الأولي لـ Mathematica.[3][20]
المراجع
- "Notes for Programming Language Experts about Wolfram Language"، Wolfram.com، مؤرشف من الأصل في 9 نوفمبر 2021، اطلع عليه بتاريخ 05 نوفمبر 2015.
- "What Should We Call the Language of Mathematica?—Stephen Wolfram Blog"، Blog.stephenwolfram.com، 12 فبراير 2013، مؤرشف من الأصل في 24 يونيو 2021، اطلع عليه بتاريخ 05 نوفمبر 2015.
- "Celebrating Mathematica's First Quarter Century—Wolfram Blog"، Blog.wolfram.com، مؤرشف من الأصل في 27 يونيو 2021، اطلع عليه بتاريخ 05 نوفمبر 2015.
- Wolfram (1988).
- Hayes, Brian (01 يناير 1990)، "Thoughts on Mathematica" (PDF)، Pixel، مؤرشف من الأصل (PDF) في 28 فبراير 2021.
- "Wolfram Language & System Documentation Center"، Reference.wolfram.com، مؤرشف من الأصل في 8 نوفمبر 2021، اطلع عليه بتاريخ 05 نوفمبر 2015.
- "Putting the Wolfram Language (and Mathematica) on Every Raspberry Pi—Wolfram Blog"، Blog.wolfram.com، مؤرشف من الأصل في 30 يونيو 2021، اطلع عليه بتاريخ 05 نوفمبر 2015.
- Sherr, Ian (22 نوفمبر 2013)، "Premium Mathematica software free on budget Raspberry Pi - CNET"، News.cnet.com، مؤرشف من الأصل في 28 أكتوبر 2021، اطلع عليه بتاريخ 05 نوفمبر 2015.
- Daniel AJ Sokolov (22 نوفمبر 2014)، "Intels Edison: Pentium-System im Format einer SD-Karte | heise online"، Heise.de، مؤرشف من الأصل في 28 يونيو 2021، اطلع عليه بتاريخ 05 نوفمبر 2015.
- "The Wolfram Language will soon be integrated into Unity"، Gamasutra، 10 مارس 2014، مؤرشف من الأصل في 29 يونيو 2021، اطلع عليه بتاريخ 05 نوفمبر 2015.
- "Is there a way to use Wolfram Language in Unity3D?"، Wolfram، 2017، مؤرشف من الأصل في 19 يوليو 2017، اطلع عليه بتاريخ 11 أبريل 2017.
- "FullForm"، Wolfram Language Documentation، مؤرشف من الأصل في 31 أكتوبر 2021.
- "Welcome to Rubi, the Rule-based Integrator"، Rule-based Integration، مؤرشف من الأصل في 3 أكتوبر 2021.
- McLoone, J، "Why Wolfram Tech Isn't Open Source—A Dozen Reasons—Wolfram Blog" (باللغة الإنجليزية)، مؤرشف من الأصل في 14 أبريل 2021.
- "codeparser: Parse Wolfram Language source code as abstract syntax trees (ASTs) or concrete syntax trees (CSTs)"، GitHub، Wolfram Research, Inc.، 13 أبريل 2020، مؤرشف من الأصل في 20 يناير 2021.
- "Open Materials from Wolfram: Open Code, Open Source, Open Data, Open Resources"، www.wolfram.com (باللغة الإنجليزية)، مؤرشف من الأصل في 26 أكتوبر 2021.
- Simon، "Is there an open source implementation of Mathematica-the-language?"، Mathematica Stack Exchange، مؤرشف من الأصل في 10 أغسطس 2019.
- Wolfram, Steven، "Launching Today: Free Wolfram Engine for Developers—Stephen Wolfram Writings" (باللغة الإنجليزية)، مؤرشف من الأصل في 19 يوليو 2021.
- "Free Wolfram Engine for Developers"، www.wolfram.com (باللغة الإنجليزية)، مؤرشف من الأصل في 8 نوفمبر 2021، اطلع عليه بتاريخ 19 يناير 2021.
- "Stephen Wolfram Says He Has An Algorithm For Everything — Literally"، Readwrite.com، مؤرشف من الأصل في 5 ديسمبر 2020، اطلع عليه بتاريخ 05 نوفمبر 2015.