مستودع وظائف Wolfram: منصة وصول مفتوحة لامتدادات لغة Wolfram

مرحبًا حبر! أقدم انتباهكم إلى ترجمة مشاركة ستيفن ولفرام "مستودع وظائف Wolfram: إطلاق منصة مفتوحة لتوسيع لغة Wolfram".

مستودع وظائف Wolfram: منصة وصول مفتوحة لامتدادات لغة Wolfram

المتطلبات الأساسية لاتساق لغة Wolfram

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

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

على سبيل المثال، يحتوي مستودع وظائف Wolfram بالفعل على 532 ميزة جديدة مقسمة إلى 26 فئة موضوعية:

مستودع وظائف Wolfram: منصة وصول مفتوحة لامتدادات لغة Wolfram

وكذلك أكثر من 6000 وظيفة قياسية، المضمنة في لغة Wolfram، تحتوي كل وظيفة من المستودع على صفحة توثيق تحتوي على وصف تفصيلي لها وأمثلة للعمل:

مستودع وظائف Wolfram: منصة وصول مفتوحة لامتدادات لغة Wolfram

للوصول إلى الصفحة، انسخ الكائن أعلاه (وظيفة BLOB)، والصقه في سطر الإدخال ثم قم بتشغيل الوظيفة - فهي مدمجة بالفعل في لغة Wolfram ومدعومة افتراضيًا بدءًا من الإصدار 12.0:

مستودع وظائف Wolfram: منصة وصول مفتوحة لامتدادات لغة Wolfram

وتجدر الإشارة هنا إلى أنه عند المعالجة شعارQRرمز لا تحتاج، على سبيل المثال، إلى إنشاء "مكتبة معالجة الصور" - نظرًا لأننا قمنا بالفعل بتنفيذ طريقة خوارزمية متسقة وعناية في لغة Wolfram معالجة الصورة، والتي يمكن معالجتها على الفور من خلال وظائف اللغة الرسومية المختلفة:

مستودع وظائف Wolfram: منصة وصول مفتوحة لامتدادات لغة Wolfram

أتمنى ذلك مع الدعم مجتمع رائع وموهوب، والتي كانت تنمو وتتوسع (استنادًا إلى لغة Wolfram) على مدار العقود العديدة الماضية. سيسمح مستودع وظائف Wolfram في المستقبل المنظور بتوسيع نطاق الوظائف (التي قد تكون مهمة ومتخصصة في مختلف مجالات العلوم والتكنولوجيا) المتوفرة باللغة بشكل كبير. وبالتالي، يصبح من الممكن استخدام محتوى اللغة (وظائفها المضمنة) و مبادئ التنمية، والتي يتم تنفيذها على أساس اللغة. (تجدر الإشارة هنا إلى أن لغة Wolfram لديها بالفعل أكثر من تاريخ 30 عامًا من التطور والنمو المستقر).
قد تحتوي وظائف المستودع على أجزاء صغيرة أو كبيرة من التعليمات البرمجية المكتوبة بلغة Wolfram. على سبيل المثال، قد تكون هذه مكالمات واجهات برمجة التطبيقات والخدمات الخارجية أو المكتبات الخارجية بلغات أخرى. الميزة الفريدة لهذا النهج هي أنه عند الانتقال إلى الوظائف على مستوى المستخدم، لن يكون هناك أي تناقضات محتملة لأن النهج مبني على البنية المتسقة للغة Wolfram - وستعمل كل وظيفة تلقائيًا بشكل صحيح - تمامًا كما هو الحال المقصود.ينبغي لها.
تم تصميم الغلاف وبنية البرمجة الخاصة بـ Wolfram Features Repository بحيث يتمكن الجميع من المساهمة في القضية المشتركة بأكثر الطرق بساطة وملاءمة بالنسبة لهم - في الواقع، فقط عن طريق ملء الملف النصي للمفكرة (بامتداد nb) WL. تتيح لك الوظائف التلقائية المضمنة التحقق من الوظائف الجديدة المضافة إلى المستودع لضمان دمجها في اللغة. تراهن شركتنا على مجموعة واسعة من المستخدمين الذين يمكنهم دمج وظائفهم في اللغة، بدلاً من التعقيد الكبير للوظائف الجديدة - وعلى الرغم من وجود عملية مراجعة، إلا أننا لا نصر على أي شيء مثل تحليل التصميم المضني أو معايير صارمة لاكتمال وموثوقية ميزات المستخدم الجديدة، بدلاً من الاختبار الأكثر صرامة للميزات المضمنة في اللغة الأساسية التي نستخدمها.

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

زيادة الكفاءة مع خفض التكاليف

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

لأكثر من 30 عامًا، عملت شركتنا بجد للحفاظ على سلامة بنية لغة Wolfram، وهذا أمر بالغ الأهمية لضمان أن لغة Wolfram لن تصبح مجرد لغة برمجة، بل أيضًا لغة حاسوبية كاملة. وبالتالي، فإن جوهر النهج المتبع في تنفيذ مستودع وظائف Wolfram هو استخدام نهج موحد للبرمجة وتطوير وظائف جديدة تتم إضافتها بشكل تسلسلي وتناسب إطار اللغة حتى تتمكن من التطور والتطور المشترك.

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

يعد إنشاء مستودع يعمل بشكل جيد بالفعل مهمة برمجية وصفية مثيرة للاهتمام. على سبيل المثال، لن تسمح القيود الزائدة في البرنامج بالحصول على التوحيد المطلوب وعالمية الخوارزمية. كما هو الحال مع العدد غير الكافي من القيود الوظيفية، لن تتمكن من تنفيذ تسلسل صحيح بما فيه الكفاية لتنفيذ الخوارزمية. العديد من الأمثلة السابقة لتنفيذ حل وسط لهذه الأساليب، التي نفذتها شركتنا، عملت بشكل مستقر تمامًا - وهي: مظاهرات مشروع التنغستن، تم إطلاقه في عام 2007 ويعمل الآن عبر الإنترنت مع أكثر من 12000 عرض توضيحي تفاعلي للمستخدم. في قاعدة بيانات ولفرام هناك أكثر من 600 قاعدة بيانات جاهزة يمكن استخدامها في لغة Wolfram، و تخزين الشبكة العصبية Wolfram يتم تجديدها بشبكات عصبية جديدة كل أسبوع تقريبًا (توجد بالفعل 118 منها الآن) ويتم توصيلها على الفور من خلال الوظيفة NetModel في لغة ولفرام.

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

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

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

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

المساعدة في إضافة وظائف مخصصة إلى مستودع الوظائف

لقد بذل فريقنا قصارى جهده ليسهل على المستخدمين المساهمة في ميزات مستودع Wolfram. على سطح المكتب (بالفعل في الإصدار 12.0)، يمكنك ببساطة تصفح علامات تبويب القائمة الرئيسية بالتسلسل: ملف > جديد > عنصر المستودع > عنصر مستودع الوظائف وستحصل على "دفتر تعريف" (برمجيًا داخل طاولة العمل. يمكنك أيضًا استخدام الوظيفة التناظرية - إنشاء دفتر ملاحظات["مصدر الوظيفة"]):

مستودع وظائف Wolfram: منصة وصول مفتوحة لامتدادات لغة Wolfram

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

مستودع وظائف Wolfram: منصة وصول مفتوحة لامتدادات لغة Wolfram

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

مستودع وظائف Wolfram: منصة وصول مفتوحة لامتدادات لغة Wolfram

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

مستودع وظائف Wolfram: منصة وصول مفتوحة لامتدادات لغة Wolfram

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

لنفترض أنك تريد إرسال وظيفتك فعليًا إلى قاعدة معارف وظيفة Wolfram. للقيام بذلك، انقر فوق الزر "إرسال" إلى المستودع. إذن ما الذي يحدث في الوقت الحالي؟ يتم وضع طلبك على الفور في قائمة الانتظار للمراجعة والموافقة من قبل فريق القيمين المخصص لدينا.

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

ماذا يجب أن يكون في المخزن؟

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

بالطبع، يجب أن تتوافق الوظائف الموجودة في مستودع وظائف Wolfram مع مبادئ تصميم لغة Wolfram، حتى تتمكن من التفاعل بشكل كامل مع الوظائف الأخرى وتوقعات المستخدمين حول كيفية عمل الوظيفة بشكل صحيح. ومع ذلك، لا يجب أن تكون الوظائف متساوية في الاكتمال أو الموثوقية.

في الوظائف المضمنة في لغة Wolfram، نعمل بجد لجعل وظائف البرمجة عامة قدر الإمكان. ومع ذلك، عندما لا يكون هناك أي خطأ في مستودع وظائف Wolfram في وجود وظيفة فيه تتعامل ببساطة مع بعض الحالات المحددة للغاية ولكنها مفيدة. على سبيل المثال، الدالة SendMailFromNotebook يمكنه تلقي الملفات بتنسيق واحد محدد وإنشاء البريد بطريقة واحدة محددة. مخطط متعدد الأضلاع إنشاء مخططات بألوان وعلامات معينة فقط، وما إلى ذلك.

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

النقطة الواضحة هي أنه من الأفضل أن يكون لديك وظائف تقوم بالمزيد وتؤدي ذلك بشكل أفضل، ولكن تحسين مستودع الوظائف - على عكس الوظائف المضمنة في لغة Wolfram - يجب أن يحتوي على المزيد من الوظائف المجمعة مع المزيد من الوظائف بدلاً من الخوض في التفاصيل. عمليات التنفيذ لكل وظيفة محددة.

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

ونتيجة لذلك، سيكون لمستودع الوظائف عدد من تعقيدات التنفيذ. سيكون بعضها مجرد سطر واحد من التعليمات البرمجية، والبعض الآخر قد يتضمن آلاف أو عشرات الآلاف من الأسطر، ومن المحتمل أن يستخدم العديد من الوظائف المساعدة. متى يستحق إضافة وظيفة تتطلب القليل جدًا من التعليمات البرمجية لتعريفها؟ في الأساس، إذا كان هناك وظيفة اسم ذاكري جيد، والذي سيفهمه المستخدمون بسهولة إذا رأوه في جزء من التعليمات البرمجية، فيمكن إضافته بالفعل. بخلاف ذلك، ربما يكون من الأفضل إعادة إلحاق الكود ببرنامجك في كل مرة تحتاج فيها إلى استخدامه.

الغرض الرئيسي من مستودع الوظائف (كما يوحي اسمه) هو تقديم ميزات جديدة إلى اللغة. إذا كنت ترغب في إضافة بيانات جديدة أو كيانات جديدة، يستخدم مستودع بيانات ولفرام. ولكن ماذا لو كنت تريد تقديم أنواع جديدة من الكائنات لحساباتك؟

هناك في الواقع طريقتان. قد ترغب في تقديم نوع كائن جديد سيتم استخدامه في الوظائف الجديدة في مستودع الوظائف. وفي هذه الحالة، يمكنك دائمًا كتابة تمثيلها الرمزي واستخدامه عند إدخال أو إخراج الوظائف في مستودع الوظائف.

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

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

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

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

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

"النظام البيئي" لقاعدة المعرفة

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

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

لا يجب أن تكون الوظائف التي ترسلها إلى مستودع وظائف Wolfram مثالية؛ يجب أن تكون مفيدة فقط. يشبه هذا إلى حد ما قسم "الأخطاء" في وثائق Unix الكلاسيكية - في "قسم التعريفات" يوجد قسم "ملاحظات المؤلف" حيث يمكنك وصف القيود والمشكلات وما إلى ذلك التي تعرفها بالفعل عن وظيفتك. بالإضافة إلى ذلك، عند إرسال الميزة الخاصة بك إلى المستودع، يمكنك إضافة ملاحظات الإرسال التي سيتم قراءتها بواسطة فريق متخصص من القيمين.

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

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

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

دعونا نفكر في مسألة كيفية عمل "إصدار" الوظائف المطورة. في الوقت الحالي، عند استخدام وظيفة من مستودع الوظائف، سيتم تخزين تعريفها بشكل دائم على جهاز الكمبيوتر الخاص بك (أو في حسابك السحابي إذا كنت تستخدم السحابة). في حالة توفر إصدار جديد من إحدى الميزات، في المرة التالية التي تستخدمها فيها، ستتلقى رسالة تعلمك بذلك. وإذا كنت تريد تحديث الوظيفة إلى إصدار جديد، فيمكنك القيام بذلك باستخدام الأمر تحديث الموارد. (تقوم "وظيفة blob" في الواقع بتخزين المزيد من معلومات الإصدار، ونحن نخطط لجعل ذلك في متناول مستخدمينا في المستقبل.)

أحد الأشياء الجميلة في Wolfram Function Repository هو أن أي برنامج لغة Wolfram، في أي مكان، يمكنه استخدام الوظائف منه. إذا ظهر برنامج في المفكرة، فغالبًا ما يكون من المناسب تنسيق وظائف المستودع كوظائف "كائن ثنائي وظيفي" سهلة القراءة (ربما مع مجموعة إصدار مناسبة).

يمكنك دائمًا الوصول إلى أي وظيفة في مستودع الوظائف باستخدام النص وظيفة الموارد[...]. وهذا مناسب جدًا إذا كتبت تعليمات برمجية أو نصوص برمجية مباشرة لمحرك Wolfram، على سبيل المثال، باستخدام باستخدام IDE أو محرر كود النص (تجدر الإشارة بشكل خاص إلى أن مستودع الوظائف متوافق تمامًا مع محرك Wolfram مجاني للمطورين).

كيف يعمل؟

داخل الوظائف الموجودة في مستودع Wolfram، من الممكن استخدام نفس الوظائف تمامًا أنظمة الموارد قواعد، كما في جميع المستودعات الأخرى الموجودة لدينا (مخزن البيانات، مستودع الشبكة العصبية, مجموعة من المشاريع التجريبية وما إلى ذلك)، مثل جميع موارد نظام Wolfram الأخرى، وظيفة الموارد في نهاية المطاف على أساس الوظيفة كائن المورد.

نظر وظيفة الموارد:

مستودع وظائف Wolfram: منصة وصول مفتوحة لامتدادات لغة Wolfram

في الداخل يمكنك رؤية بعض المعلومات باستخدام الوظيفة معلومات:

مستودع وظائف Wolfram: منصة وصول مفتوحة لامتدادات لغة Wolfram

كيف يعمل إعداد وظيفة الموارد؟ أبسطها هي حالة محلية بحتة. فيما يلي مثال يأخذ وظيفة (في هذه الحالة مجرد وظيفة خالصة) ويعرّفها على أنها وظيفة مورد لجلسة برنامج معينة:

مستودع وظائف Wolfram: منصة وصول مفتوحة لامتدادات لغة Wolfram

بمجرد الانتهاء من التعريف، يمكنك استخدام وظيفة الموارد:

مستودع وظائف Wolfram: منصة وصول مفتوحة لامتدادات لغة Wolfram

لاحظ أن هناك أيقونة سوداء في هذه الوظيفة مستودع وظائف Wolfram: منصة وصول مفتوحة لامتدادات لغة Wolfram. وهذا يعني أن وظيفة BLOB تشير إلى وظيفة مورد الذاكرة المحددة للجلسة الحالية. تحتوي ميزة المورد المخزنة بشكل دائم على جهاز الكمبيوتر الخاص بك أو حسابك السحابي على أيقونة رمادية اللون مستودع وظائف Wolfram: منصة وصول مفتوحة لامتدادات لغة Wolfram. ويوجد رمز برتقالي لميزة الموارد الرسمية في Wolfram Features Repository مستودع وظائف Wolfram: منصة وصول مفتوحة لامتدادات لغة Wolfram.

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

يتم تنفيذ النشر المحلي لوظيفة من مستودع على جهاز الكمبيوتر الخاص بك باستخدام الأمر LocalCache لكائن المورد لحفظه باسم كائن محلي على نظام الملفات الخاص بك. يتم النشر إلى حساب سحابي باستخدام الأمر CloudDeploy لكائن المورد، ويتم نشر السحابة العامة نشر سحابي. في جميع الحالات تسجيل الموارد يستخدم أيضًا لتسجيل اسم وظيفة المورد، لذلك وظيفة الموارد["اسم"] سيعمل.

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

افتراضيًا، يتم إجراء عمليات الإرسال تحت الاسم المرتبط بمعرف Wolfram الخاص بك. ولكن إذا كنت تقدم طلبًا نيابةً عن فريق تطوير أو مؤسسة، فيمكنك ذلك قم بتعيين معرف ناشر منفصل وبدلاً من ذلك استخدمه كاسم للتفاعل مع وجهات نظرك.

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

بعض التفاصيل الدقيقة في العمل

للوهلة الأولى، قد يبدو أنه يمكنك فقط أخذ دفتر تعريفات ووضعه حرفيًا في مستودع الوظائف، ومع ذلك، هناك في الواقع الكثير من التفاصيل الدقيقة المعنية - والتعامل معها يتطلب القيام ببعض البرمجة الوصفية المعقدة جدًا، والتعامل مع المعالجة الرمزية كالرمز الذي يحدد الوظيفة، ويتم تعريف المفكرة نفسها. يحدث معظم هذا داخليًا، خلف الكواليس، ولكن يمكن أن يكون له بعض الآثار التي تستحق الفهم إذا كنت ستساهم في قاعدة معارف الميزات.

أول دقة فورية: عند ملء دفتر التعريفات، يمكنك ببساطة الإشارة إلى وظيفتك في كل مكان باستخدام اسم مثل MyFunction، والذي يبدو كاسم عادي لوظيفة في لغة Wolfram، ولكن يتم استبداله بالنسبة لوثائق مستودع الوظائف وظيفة الموارد["وظيفتي"] هو ما سيستخدمه المستخدمون فعليًا عند العمل مع الوظيفة.

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

عادةً لن ترى أبدًا أي أثر للتعليمة البرمجية المستخدمة لتكوين مساحة الاسم هذه. ولكن إذا قمت لسبب ما باستدعاء رمز غير منفذ داخل وظيفتك، فسترى أن هذا الرمز موجود في السياق الداخلي للوظيفة. ومع ذلك، عند معالجة "مفكرة التعريف"، يكون الرمز المقابل للوظيفة نفسها على الأقل قابل للتعديل للحصول على أفضل عرض باعتبارها BLOB وظيفية بدلاً من كونها شخصية أولية في السياق الداخلي.

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

تقوم معظم الوظائف ببساطة بما يفترض أن تفعله في كل مرة يتم استدعاؤها، ولكن تحتاج بعض الوظائف إلى التهيئة قبل أن تتمكن من التشغيل في جلسة معينة - ولحل هذه المشكلة، يوجد قسم "التهيئة" في قسم التعريف.

يمكن للوظائف الموجودة في المستودع استخدام وظائف أخرى موجودة بالفعل في المستودع؛ من أجل إعداد تعريفات لمستودع الوظائف الذي يتضمن وظيفتين (أو أكثر) تشيران إلى بعضهما البعض، يجب عليك نشرها في جلسة البرنامج الخاصة بك حتى تتمكن من مرجع مثل عليها وظيفة الموارد["اسم"]، ثم يمكنك إنشاء مجموعات من هذه الوظائف التي تحتاجها، والأمثلة (لم أفهمها) وإضافة وظيفة جديدة إلى المستودع بناءً على تلك التي تم نشرها مسبقًا. (أو بالفعل أو سابقًا – كلتا الكلمتين خرقاء)

آفاق التنمية. ماذا يجب أن يحدث عندما يصبح المستودع كبيرًا حقًا؟

اليوم نطلق للتو مستودع ميزات Wolfram، ولكن مع مرور الوقت نتوقع أن يزيد حجمه ووظائفه بشكل كبير، ومع نموه في التطوير، ستكون هناك مشكلات مختلفة نتوقع بالفعل ظهورها.

تتعلق المشكلة الأولى بأسماء الوظائف وتفردها. تم تصميم مستودع الوظائف بحيث، مثل الوظائف المضمنة في لغة Wolfram، يمكنك الرجوع إلى أي وظيفة معينة ببساطة عن طريق تحديد اسمها. ولكن هذا يعني حتمًا أن أسماء الوظائف يجب أن تكون فريدة عالميًا عبر المستودع، بحيث، على سبيل المثال، يمكن أن يكون هناك واحد فقط وظيفة الموارد["الوظيفة المفضلة"].

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

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

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

مع نمو القاعدة المعرفية لوظائف Wolfram، فإن إحدى المشكلات التي من المحتمل أن تنشأ هي إمكانية اكتشاف الوظائف، التي يوفرها النظام وظيفة البحث (وقد تتضمن ملفات التعريف كلمات أساسية وما إلى ذلك). بالنسبة للوظائف المضمنة في لغة Wolfram، توجد جميع أنواع المراجع التبادلية في الوثائق للمساعدة في "الإعلان" عن الوظائف. يمكن للوظائف الموجودة في مستودع الوظائف الرجوع إلى الوظائف المضمنة. ولكن ماذا عن العكس؟ للقيام بذلك، سنقوم بتجربة تصميمات مختلفة لعرض وظائف المستودع في صفحات التوثيق للوظائف المضمنة.

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

مستودع وظائف Wolfram: منصة وصول مفتوحة لامتدادات لغة Wolfram

تم تكوين مستودع وظائف Wolfram كمستودع وظائف مستمر، حيث ستعمل أي وظيفة فيه دائمًا. بالطبع، قد تصبح الإصدارات الجديدة من الميزات متاحة، ونتوقع أن بعض الميزات ستصبح بالطبع قديمة بمرور الوقت. ستعمل الوظائف إذا تم استخدامها في البرامج، لكن صفحات التوثيق الخاصة بها سترتبط بوظائف جديدة أكثر تقدمًا.

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

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

في وقت سابق من تاريخ لغة Wolfram، لم تكن هذه الفكرة لتعمل بشكل جيد كما فعلت، ولكن في هذه المرحلة هناك الكثير من الجهد المبذول في اللغة، ومثل هذا الفهم العميق لمبادئ تصميم اللغة، يبدو الآن تمامًا من الممكن لمجتمع كبير من المستخدمين إضافة ميزات تحافظ على اتساق التصميم لجعلها مفيدة لمجموعة واسعة من المستخدمين.

هناك روح موهبة لا تصدق (؟) في مجتمع مستخدمي Wolfram Language. (بالطبع، يضم هذا المجتمع العديد من رواد البحث والتطوير في مجموعة متنوعة من المجالات.) آمل أن يوفر مستودع ميزات Wolfram منصة فعالة لإطلاق روح الموهبة هذه ونشرها. معًا فقط يمكننا إنشاء شيء من شأنه أن يوسع بشكل كبير المنطقة التي يمكن تطبيق نموذج حوسبة لغة Wolfram عليها.

في أكثر من 30 عامًا، قطعنا شوطًا طويلًا مع لغة Wolfram. الآن معًا، دعونا نذهب إلى أبعد من ذلك. أنا أشجع بشدة جميع مستخدمي لغة Wolfram المحترمين حول العالم على استخدام المستودع الوظيفي كمنصة لذلك، بالإضافة إلى مشروع البرنامج الجديد مثل Free Wolfram Engine for Developers.

المصدر: www.habr.com

إضافة تعليق