ولفرام (لغة برمجة)
التصنيف | القائمة ... |
---|---|
التنميط | القائمة ... |
ظهرت في | |
صممها | |
نظام التشغيل | |
الرخصة |
المطور | |
---|---|
الإصدار الأول | |
الإصدار الأخير |
متأثرة بـ |
---|
امتدادات الملفات | |
---|---|
موقع الويب |
ولفرام وبالانجليزية (Wolfram Language) (/ˈwʊlfrəm/ WUUL-frəm) هي عامة متعددة نموذج لغة البرمجة [2] التي وضعتها أبحاث ولفرام. وهي تؤكد على الحساب الرمزي والبرمجة الوظيفية والبرمجة القائمة على القواعد [3] ويمكنها استخدام الهياكل والبيانات التعسفية.[3] إنها لغة البرمجة الخاصة ببرنامج الحساب الرمزي الرياضي Mathematica .[4]
التاريخ
[عدل]كانت لغة ولفرام جزءًا من النسخة الأولية لماثيماتيكا في عام 1988.[5]
الجوانب الرمزية للمحرك تجعله نظام جبر حاسوبي. يمكن للغة إجراء التكامل والتفاضل ومعالجات المصفوفة وحل المعادلات التفاضلية باستخدام مجموعة من القواعد. أيضا في عام 1988 كان نموذج الكمبيوتر المحمول والقدرة على تضمين الصوت والصور، وفقا لبراءة اختراع ثيودور جراي. [6] تم إصدار واجهة على الإنترنت للغة، WolframAlpha ، في عام 2009. قام ولفرام بتنفيذ هذا الموقع من خلال ترجمة بيانات اللغة الطبيعية إلى استفسارات بلغة ولفرام ترتبط بقاعدة البيانات الخاصة به. العمل المؤدي إلى Wolfram Alpha يعني أيضًا أن تطبيق Wolfram للغة أصبح له الآن وصول مدمج إلى قاعدة المعرفة بالإضافة إلى وظائف معالجة اللغة الطبيعية.
أضاف Wolfram أيضًا ميزات لمهام أكثر تعقيدًا، مثل النمذجة ثلاثية الأبعاد.[7]
تم اعتماد اسم للغة أخيرًا في عام 2013، حيث قررت Wolfram Research إنشاء نسخة من محرك اللغة مجانًا لمستخدمي Raspberry Pi ، وكانوا بحاجة إلى ابتكار اسم لها.[8] تم تضمينه في حزمة البرامج الموصى بها التي توفرها مؤسسة Raspberry Pi للمبتدئين، مما تسبب في بعض الجدل بسبب طبيعة ملكية لغة Wolfram. [9] تم الإعلان عن خطط نقل لغة Wolfram إلى Intel Edison بعد تقديم المجلس في CES 2014 ولكن لم يتم إصدارها مطلقًا.[10] في عام 2019، تمت إضافة رابط لجعل مكتبات Wolfram متوافقة مع محرك ألعاب Unity ، مما يتيح لمطوري الألعاب الوصول إلى وظائف اللغة عالية المستوى.[11][12]
بناء الجملة
[عدل]يشبه تركيب لغة 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 بإصلاح الإدخال:[13]
FullForm[1+2]
(* = Plus[1, 2] *)
البرمجة الوظيفية
[عدل]نمط مطابقة
[عدل]الوظائف في لغة Wolfram هي في الأساس حالة من أنماط الاستبدال البسيطة:
F[x_] := x ^ 0
:=
هو «عامل تشغيل SetDelayed»، بحيث لا يتم البحث عن x على الفور. x_ هو السكر x_
Pattern[x, Blank[]]
، أي «فارغ» لأي قيمة لتحل محل 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} *)
يؤدي نظام مطابقة الأنماط أيضًا بسهولة إلى تكامل واشتقاق قائم على القواعد. فيما يلي مقتطفات من حزمة قواعد روبي:[14]
(* 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]
تطبيقات
[عدل]يكمن التنفيذ الرسمي والمرجعي للغة ولفرام في الرياضيات والخدمات المرتبطة بها عبر الإنترنت. هذه مصادر مغلقة.[15] ومع ذلك، فقد أصدرت Wolfram Research محلل C ++ للغة بموجب ترخيص MIT مفتوح المصدر.[16] الكتاب المرجعي مفتوح الوصول.[17]
في ظل وجود لغة Wolfram لأكثر من ثلاثة عقود، تم أيضًا تطوير عدد من تطبيقات الطرف الثالث مفتوحة المصدر. يعتبر فيلم MockMMA لريتشارد فاتمان من عام 1991 ذا أهمية تاريخية، سواء لكونه أول إعادة تطبيق ولأنه حصل على وقف وكف من Wolfram. الحديثة لا تزال قيد الصيانة اعتبارًا من أبريل 2020[تحديث] تشمل Symja في Java ، و expreduce في Golang ، و Mathics المستندة إلى SymPy .[18] تركز هذه التطبيقات على اللغة الأساسية ونظام الجبر الحاسوبي الذي تتضمنه، وليس على ميزات «قاعدة المعرفة» عبر الإنترنت في Wolfram.
في عام 2019، [19] أصدرت شركة Wolfram Research برنامجًا مجانيًا لمحرك Wolfram ، لاستخدامه كمكتبة برمجة في البرامج غير التجارية.[20]
التسمية
[عدل]تم تسمية اللغة رسميًا في يونيو 2013، على الرغم من كونها الواجهة الخلفية لنظام الحوسبة Mathematica ، فقد تم استخدامها في أشكال مختلفة لأكثر من 30 عامًا منذ الإصدار الأولي لـ Mathematica.[4][21]
انظر أيضًا
[عدل]المراجع
[عدل]- ^ ا ب "The Story Continues: Announcing Version 14 of Wolfram Language and Mathematica" (بالإنجليزية). 9 Jan 2024. Retrieved 2024-01-10.
{{استشهاد ويب}}
: صيانة الاستشهاد: لغة غير مدعومة (link) - ^ "Notes for Programming Language Experts about Wolfram Language". Wolfram.com. مؤرشف من الأصل في 2021-11-09. اطلع عليه بتاريخ 2015-11-05.
- ^ ا ب "What Should We Call the Language of Mathematica?—Stephen Wolfram Blog". Blog.stephenwolfram.com. 12 فبراير 2013. مؤرشف من الأصل في 2021-06-24. اطلع عليه بتاريخ 2015-11-05.
- ^ ا ب "Celebrating Mathematica's First Quarter Century—Wolfram Blog". Blog.wolfram.com. مؤرشف من الأصل في 2021-06-27. اطلع عليه بتاريخ 2015-11-05.
- ^ Wolfram (1988).
- ^ Hayes، Brian (1 يناير 1990). "Thoughts on Mathematica" (PDF). Pixel. مؤرشف من الأصل (PDF) في 2021-02-28.
- ^ "Wolfram Language & System Documentation Center". Reference.wolfram.com. مؤرشف من الأصل في 2021-11-08. اطلع عليه بتاريخ 2015-11-05.
- ^ "Putting the Wolfram Language (and Mathematica) on Every Raspberry Pi—Wolfram Blog". Blog.wolfram.com. مؤرشف من الأصل في 2021-06-30. اطلع عليه بتاريخ 2015-11-05.
- ^ Sherr، Ian (22 نوفمبر 2013). "Premium Mathematica software free on budget Raspberry Pi - CNET". News.cnet.com. مؤرشف من الأصل في 2021-10-28. اطلع عليه بتاريخ 2015-11-05.
- ^ Daniel AJ Sokolov (22 نوفمبر 2014). "Intels Edison: Pentium-System im Format einer SD-Karte | heise online". Heise.de. مؤرشف من الأصل في 2021-06-28. اطلع عليه بتاريخ 2015-11-05.
- ^ "The Wolfram Language will soon be integrated into Unity". Gamasutra. 10 مارس 2014. مؤرشف من الأصل في 2021-06-29. اطلع عليه بتاريخ 2015-11-05.
- ^ "Is there a way to use Wolfram Language in Unity3D?". Wolfram. 2017. مؤرشف من الأصل في 2017-07-19. اطلع عليه بتاريخ 2017-04-11.
- ^ "FullForm". Wolfram Language Documentation. مؤرشف من الأصل في 2021-10-31.
- ^ "Welcome to Rubi, the Rule-based Integrator". Rule-based Integration. مؤرشف من الأصل في 2021-10-03.
- ^ McLoone, J. "Why Wolfram Tech Isn't Open Source—A Dozen Reasons—Wolfram Blog" (بالإنجليزية). Archived from the original on 2021-04-14.
- ^ "codeparser: Parse Wolfram Language source code as abstract syntax trees (ASTs) or concrete syntax trees (CSTs)". GitHub. Wolfram Research, Inc. 13 أبريل 2020. مؤرشف من الأصل في 2021-01-20.
- ^ "Open Materials from Wolfram: Open Code, Open Source, Open Data, Open Resources". www.wolfram.com (بالإنجليزية). Archived from the original on 2021-10-26.
- ^ Simon. "Is there an open source implementation of Mathematica-the-language?". Mathematica Stack Exchange. مؤرشف من الأصل في 2019-08-10.
- ^ Wolfram, Steven. "Launching Today: Free Wolfram Engine for Developers—Stephen Wolfram Writings" (بالإنجليزية). Archived from the original on 2021-07-19.
- ^ "Free Wolfram Engine for Developers". www.wolfram.com (بالإنجليزية). Archived from the original on 2021-11-08. Retrieved 2021-01-19.
- ^ "Stephen Wolfram Says He Has An Algorithm For Everything — Literally". Readwrite.com. مؤرشف من الأصل في 2020-12-05. اطلع عليه بتاريخ 2015-11-05.