مرحبًا حبر! أقدم انتباهكم إلى ترجمة مشاركة ستيفن ولفرام
المتطلبات الأساسية لاتساق لغة Wolfram
اليوم نقف على أعتاب إنجازات عظيمة مع لغة البرمجة
يعد مستودع وظائف Wolfram أمرًا ممكنًا بفضل الطبيعة الفريدة للغة Wolfram، ليس فقط كلغة برمجة، ولكن أيضًا كلغة برمجة.
على سبيل المثال، يحتوي مستودع وظائف Wolfram بالفعل على
وكذلك أكثر من
للوصول إلى الصفحة، انسخ الكائن أعلاه (وظيفة BLOB)، والصقه في سطر الإدخال ثم قم بتشغيل الوظيفة - فهي مدمجة بالفعل في لغة Wolfram ومدعومة افتراضيًا بدءًا من
وتجدر الإشارة هنا إلى أنه عند المعالجة
أتمنى ذلك مع الدعم
قد تحتوي وظائف المستودع على أجزاء صغيرة أو كبيرة من التعليمات البرمجية المكتوبة بلغة Wolfram. على سبيل المثال، قد تكون هذه مكالمات
تم تصميم الغلاف وبنية البرمجة الخاصة بـ Wolfram Features Repository بحيث يتمكن الجميع من المساهمة في القضية المشتركة بأكثر الطرق بساطة وملاءمة بالنسبة لهم - في الواقع، فقط
هناك العديد من المقايضات والتفاصيل في هذا النهج، ولكن هدفنا هو تحسين مستودع ميزات Wolfram لتجربة المستخدم ولضمان مساهمة ميزات المستخدم الجديدة بشكل مفيد في تطوير اللغة. ومع نمونا، ليس لدي أدنى شك في أنه سيتعين علينا ابتكار أساليب جديدة لمعالجة الوظائف المضمنة في المستودع والتحقق من صحتها، وخاصة تنظيم أعداد كبيرة من الوظائف والعثور على تلك التي يحتاجها المستخدمون. ومع ذلك، فمن المشجع أن المسار الذي اخترناه يمثل بداية جيدة. أنا شخصيا
زيادة الكفاءة مع خفض التكاليف
حتى قبل ظهور الإنترنت، كانت هناك طرق لمشاركة كود لغة Wolfram (كان أول مشروع مركزي كبير لنا هو
لأكثر من 30 عامًا، عملت شركتنا بجد للحفاظ على سلامة بنية لغة Wolfram، وهذا أمر بالغ الأهمية لضمان أن لغة Wolfram لن تصبح مجرد لغة برمجة، بل أيضًا
تحدث عمليات حسابية مختلفة في هيكل تنفيذ كل وظيفة. وتجدر الإشارة هنا إلى أنه من الضروري أن تتمتع الوظيفة بمظهر واضح وموحد وسهولة القراءة البصرية للمستخدم. في هذا السياق، يتم عرض الوظائف المضمنة في لغة Wolfram مع أكثر من 6000 مثال متسلسل لكيفية برمجة الوظائف بشكل صحيح (هذه هي
يعد إنشاء مستودع يعمل بشكل جيد بالفعل مهمة برمجية وصفية مثيرة للاهتمام. على سبيل المثال، لن تسمح القيود الزائدة في البرنامج بالحصول على التوحيد المطلوب وعالمية الخوارزمية. كما هو الحال مع العدد غير الكافي من القيود الوظيفية، لن تتمكن من تنفيذ تسلسل صحيح بما فيه الكفاية لتنفيذ الخوارزمية. العديد من الأمثلة السابقة لتنفيذ حل وسط لهذه الأساليب، التي نفذتها شركتنا، عملت بشكل مستقر تمامًا - وهي:
تتميز جميع الأمثلة المذكورة أعلاه بميزة أساسية - وهي أن الكائنات والوظائف المجمعة في المشروع تتمتع بدرجة عالية جدًا من هيكلة العمليات وتوزيعها. بالطبع، يمكن أن تختلف تفاصيل بنية ما هو عرض توضيحي أو شبكة عصبية أو أي شيء آخر بشكل كبير، لكن البنية الأساسية لأي مستودع حالي تظل دائمًا كما هي. فما رأيك عزيزي المستخدم في إنشاء مثل هذا المستودع الذي يضيف امتدادات للغة Wolfram؟ تم تصميم لغة Wolfram لتكون مرنة للغاية، بحيث يمكن توسيعها وتعديلها بأي شكل من الأشكال. يعد هذا الظرف مهمًا للغاية للقدرة على إنشاء مشاريع برمجية متنوعة واسعة النطاق بسرعة بلغة Wolfram. وتجدر الإشارة هنا إلى أنه مع زيادة مرونة اللغة، فإن تكلفة المشاريع المنفذة بمثل هذه اللغة ستزداد حتماً. ويرجع ذلك إلى حقيقة أنه كلما زاد استخدام المستخدم لهذه اللغة، زادت الوظائف المخصصة التي يتلقاها، ولكن لا ينبغي لنا أن ننسى أن هذا النهج قد يكون له أيضًا جوانب سلبية من حيث عدم القدرة على ضمان الاتساق المتسق لوحدات البرنامج.
هناك مشكلة شائعة في المكتبات في لغات البرمجة التقليدية - إذا استخدمت مكتبة واحدة مثلاً فإن الكود سيعمل بشكل صحيح، أما إذا حاولت استخدام مكتبات متعددة فليس هناك ضمان أنها ستتفاعل بشكل صحيح مع بعضها البعض . كما أنه في لغات البرمجة التقليدية - على عكس لغة الحوسبة الكاملة - لا توجد طريقة لضمان وجود تمثيلات مدمجة متسقة لأي وظائف أو أنواع بيانات بخلاف بنياتها الأساسية. ولكن، في الواقع، المشكلة أكبر مما تبدو للوهلة الأولى: إذا كان المرء يبني قطاعًا رأسيًا واسع النطاق من الوظائف، فمن دون التكاليف الضخمة لبرمجة المشروع المركزية التي نضعها في لغة Wolfram، سيكون من المستحيل تحقيق الاتساق. لذلك من المهم أن تعمل جميع وحدات البرامج معًا بشكل صحيح دائمًا.
لذا فإن الفكرة وراء مستودع ميزات Wolfram هي تجنب المشكلة الموضحة أعلاه عن طريق إضافة امتدادات للغة في أجزاء صغيرة نسبيًا من التعليمات البرمجية عبر ميزات فردية يسهل تطويرها كوحدات متماسكة. ومع ذلك، هناك ميزات برمجة لا يمكن جعلها ملائمة باستخدام الوظائف الفردية (وتخطط شركتنا لإصدار خوارزمية برمجة محسنة في المستقبل القريب للمساعدة في تنفيذ حزم البرامج واسعة النطاق). ومع ذلك، استنادًا إلى الوظائف المضمنة بالفعل في لغة Wolfram، هناك العديد من إمكانيات البرمجة التي يتم تنفيذها بناءً على الوظائف الفردية. الفكرة هنا هي أنه من خلال جهد برمجي قليل نسبيًا، من الممكن إنشاء عدد من الوظائف الجديدة والمفيدة جدًا التي ستوفر تماسكًا كافيًا للتصميم، وسيتم تنسيقها جيدًا مع بعضها البعض، وأيضًا، بالإضافة إلى ذلك، سوف تكون قادرة على استخدامها بسهولة وعلى نطاق واسع في اللغة في المستقبل.
وهذا النهج هو، بطبيعة الحال، حل وسط. إذا تم تنفيذ حزمة أكبر، فيمكن تصور عالم جديد تمامًا من الوظائف التي ستكون قوية ومفيدة للغاية. إذا كانت هناك حاجة للحصول على وظائف جديدة تتناسب مع كل شيء آخر، ولكنك لا ترغب في إنفاق الكثير من الجهد على تطوير المشروع، فقد يؤدي هذا للأسف إلى تقليص نطاق مشروعك. الفكرة وراء مستودع ميزات Wolfram هي توفير وظائف لجزء محدد من المشروع؛ سيضيف هذا الأسلوب وظائف قوية مع تسهيل الحفاظ على الاتساق الجيد في مشروع البرمجة.
المساعدة في إضافة وظائف مخصصة إلى مستودع الوظائف
لقد بذل فريقنا قصارى جهده ليسهل على المستخدمين المساهمة في ميزات مستودع Wolfram. على سطح المكتب (بالفعل في
هناك خطوتان رئيسيتان ستحتاج إلى تنفيذهما: أولاً، قم بتدوين الكود الخاص بوظيفتك، وثانيًا، قم بتدوين المستندات التي توضح كيفية عمل وظيفتك.
انقر فوق الزر "فتح العينة" في الجزء العلوي لرؤية مثال لما عليك القيام به:
في الأساس، أنت تحاول إنشاء شيء مشابه لوظيفة مدمجة في لغة Wolfram. باستثناء أنه يمكنه القيام بشيء أكثر تحديدًا من وظيفة مدمجة. وفي الوقت نفسه، ستكون التوقعات بشأن اكتمالها وموثوقيتها أقل بكثير.
يجب عليك إعطاء وظيفتك اسمًا يتبع إرشادات تسمية الوظائف الخاصة بـ Wolfram Language. بالإضافة إلى ذلك، ستحتاج إلى تطوير وثائق لوظيفتك، على غرار الوظائف المضمنة في اللغة. سأتحدث عن هذا بمزيد من التفصيل لاحقًا. في الوقت الحالي، لاحظ فقط أنه يوجد زر في صف الأزرار الموجود أعلى ملف دفتر التعريف
عندما تتأكد من ملء كل شيء بشكل صحيح وأنك جاهز، انقر فوق الزر "تحقق". من الطبيعي تمامًا أنك لم تكتشف كل التفاصيل بعد. لذلك سيتم تشغيل وظيفة "التحقق" تلقائيًا وستجري الكثير من عمليات التحقق من النمط والاتساق. في كثير من الأحيان، سيطالبك على الفور بتأكيد التصحيحات وقبولها (على سبيل المثال: "يجب أن ينتهي هذا السطر بنقطتين"، وسيطالبك بإدخال نقطتين). في بعض الأحيان ستطلب منك إضافة شيء ما أو تغييره بنفسك. سنضيف باستمرار ميزات جديدة إلى الوظيفة التلقائية لزر التحقق، ولكن الغرض الأساسي منها هو التأكد من أن كل ما ترسله إلى مستودع الميزات يتبع بالفعل أكبر عدد ممكن من إرشادات الأنماط
لذلك، بعد تشغيل "التحقق"، يمكنك استخدام "معاينة". تقوم "المعاينة" بإنشاء معاينة لصفحة الوثائق التي حددتها لوظيفتك. يمكنك أيضًا إنشاء معاينة لملف تم إنشاؤه على جهاز الكمبيوتر الخاص بك أو لملف موجود في وحدة التخزين السحابية. إذا لم تكن راضيًا، لسبب ما، عما تراه في المعاينة، فما عليك سوى الرجوع وإجراء التصحيحات اللازمة، ثم النقر فوق الزر "معاينة" مرة أخرى.
أنت الآن جاهز لدفع وظيفتك إلى المستودع. يمنحك زر النشر أربعة خيارات:
الشيء المهم في هذه الخطوة هو أنه يمكنك إرسال وظيفتك إلى مستودع وظائف Wolfram بحيث تكون متاحة لأي شخص. وفي الوقت نفسه، يمكنك أيضًا وضع وظيفتك لعدد محدود من المستخدمين. على سبيل المثال، يمكنك إنشاء وظيفة تتم استضافتها محليًا على جهاز الكمبيوتر الخاص بك بحيث تكون متاحة عند استخدام هذا الكمبيوتر المحدد. أو يمكنك نشره في حسابك
لنفترض أنك تريد إرسال وظيفتك فعليًا إلى قاعدة معارف وظيفة Wolfram. للقيام بذلك، انقر فوق الزر "إرسال" إلى المستودع. إذن ما الذي يحدث في الوقت الحالي؟ يتم وضع طلبك على الفور في قائمة الانتظار للمراجعة والموافقة من قبل فريق القيمين المخصص لدينا.
مع تقدم طلبك خلال عملية الموافقة (والتي تستغرق عادةً عدة أيام)، ستتلقى اتصالات بخصوص حالته وربما اقتراحات للاستخدام المستقبلي. ولكن بمجرد الموافقة على الميزة الخاصة بك، سيتم نشرها على الفور في مستودع ميزات Wolfram وستكون متاحة ليستخدمها أي شخص. (وهذا سيظهر في
ماذا يجب أن يكون في المخزن؟
تجدر الإشارة إلى أن شركتنا لديها معايير عالية جدًا للاكتمال والموثوقية والجودة الشاملة، ومن بين أكثر من 6000 وظيفة قمنا بدمجها بالفعل في لغة Wolfram على مدار أكثر من 30 عامًا الماضية، جميعها تلبي المتطلبات المذكورة أعلاه. الهدف من مستودع وظائف Wolfram هو استخدام كل البنية والوظائف الموجودة بالفعل في لغة Wolfram من أجل إضافة أكبر عدد ممكن من الوظائف الأخف (أي وظائف الأداء الأعلى) قدر الإمكان.
بالطبع، يجب أن تتوافق الوظائف الموجودة في مستودع وظائف Wolfram مع مبادئ تصميم لغة Wolfram، حتى تتمكن من التفاعل بشكل كامل مع الوظائف الأخرى وتوقعات المستخدمين حول كيفية عمل الوظيفة بشكل صحيح. ومع ذلك، لا يجب أن تكون الوظائف متساوية في الاكتمال أو الموثوقية.
في الوظائف المضمنة في لغة Wolfram، نعمل بجد لجعل وظائف البرمجة عامة قدر الإمكان. ومع ذلك، عندما لا يكون هناك أي خطأ في مستودع وظائف Wolfram في وجود وظيفة فيه تتعامل ببساطة مع بعض الحالات المحددة للغاية ولكنها مفيدة. على سبيل المثال، الدالة
هناك نقطة أخرى تتعلق بالوظائف المضمنة وهي أن شركتنا تبذل قصارى جهدها للتعامل مع جميع الحالات غير النمطية، والتعامل بشكل صحيح مع الإدخال غير الصحيح، وما إلى ذلك. في مستودع الوظائف، من الطبيعي تمامًا أن تكون هناك وظيفة خاصة تتعامل مع الحالات الرئيسية لحل المشكلة وتتجاهل جميع الحالات الأخرى.
النقطة الواضحة هي أنه من الأفضل أن يكون لديك وظائف تقوم بالمزيد وتؤدي ذلك بشكل أفضل، ولكن تحسين مستودع الوظائف - على عكس الوظائف المضمنة في لغة Wolfram - يجب أن يحتوي على المزيد من الوظائف المجمعة مع المزيد من الوظائف بدلاً من الخوض في التفاصيل. عمليات التنفيذ لكل وظيفة محددة.
الآن دعونا نلقي نظرة على مثال لاختبار وظائف في المستودع. من الطبيعي أن تكون توقعات الاتساق لمثل هذه الوظائف أقل بكثير من توقعات الاتساق الخاصة بوظائف اللغة المضمنة. وينطبق هذا بشكل خاص في الحالات التي تعتمد فيها الوظائف على موارد خارجية مثل واجهات برمجة التطبيقات، فمن المهم إجراء اختبارات متسقة باستمرار، وهو ما يحدث تلقائيًا ضمن خوارزميات التحقق. في ملف nb، يمكنك تحديد التعريفات بشكل صريح (في قسم المعلومات الإضافية) وتحديد العديد من الاختبارات كما هو محدد بواسطة سلاسل الإدخال والإخراج أو كائنات الأحرف الكاملة من النوع
ونتيجة لذلك، سيكون لمستودع الوظائف عدد من تعقيدات التنفيذ. سيكون بعضها مجرد سطر واحد من التعليمات البرمجية، والبعض الآخر قد يتضمن آلاف أو عشرات الآلاف من الأسطر، ومن المحتمل أن يستخدم العديد من الوظائف المساعدة. متى يستحق إضافة وظيفة تتطلب القليل جدًا من التعليمات البرمجية لتعريفها؟ في الأساس، إذا كان هناك وظيفة
الغرض الرئيسي من مستودع الوظائف (كما يوحي اسمه) هو تقديم ميزات جديدة إلى اللغة. إذا كنت ترغب في إضافة بيانات جديدة أو
هناك في الواقع طريقتان. قد ترغب في تقديم نوع كائن جديد سيتم استخدامه في الوظائف الجديدة في مستودع الوظائف. وفي هذه الحالة، يمكنك دائمًا كتابة تمثيلها الرمزي واستخدامه عند إدخال أو إخراج الوظائف في مستودع الوظائف.
ولكن ماذا لو كنت تريد تمثيل كائن ثم تحديد أنك تريد العمل معه من خلال الوظائف الموجودة في لغة Wolfram؟ لطالما كان لدى لغة Wolfram آلية خفيفة الوزن لهذا الغرض، تسمى
إذًا، ما الذي يمكن أن يوجد في كود الوظيفة في مستودع الوظائف؟
هل يجب كتابة كافة التعليمات البرمجية الخاصة بمستودع ميزات Wolfram بلغة Wolfram؟ بالتأكيد، لا ينبغي كتابة الكود الموجود داخل واجهة برمجة التطبيقات الخارجية بلغة Wolfram، التي لا تصنع حتى كود اللغة. في الواقع، إذا وجدت وظيفة في أي لغة أو مكتبة خارجية تقريبًا، فيمكنك إنشاء غلاف يسمح لك باستخدامها في مستودع وظائف Wolfram. (عادةً يجب عليك استخدام الوظائف المضمنة لهذا الغرض
إذن ما الفائدة من فعل هذا؟ يتيح لك هذا بشكل أساسي استخدام نظام Wolfram Language المتكامل بالكامل ومجموعته الموحدة الكاملة من إمكانيات البرامج. إذا حصلت على التنفيذ الأساسي من مكتبة أو لغة خارجية، فيمكنك بعد ذلك استخدام البنية الرمزية الغنية للغة Wolfram لإنشاء وظيفة مناسبة على المستوى الأعلى تتيح للمستخدمين استخدام أي وظيفة تم تنفيذها بالفعل بسهولة. على أقل تقدير، يجب أن يكون هذا ممكنًا في عالم مثالي حيث توجد جميع العناصر الأساسية لمكتبات التحميل وما إلى ذلك، وفي هذه الحالة سيتم التعامل معها تلقائيًا بواسطة لغة Wolfram. (تجدر الإشارة إلى أنه في الممارسة العملية قد تكون هناك مشاكل
بالمناسبة، عندما تنظر لأول مرة إلى المكتبات الخارجية النموذجية، غالبًا ما تبدو معقدة للغاية بحيث لا يمكن تغطيتها في عدد قليل من الوظائف فقط، ولكن في كثير من الحالات، يأتي الكثير من التعقيد من إنشاء البنية التحتية اللازمة للمكتبة وجميع الوظائف ادعمه . ومع ذلك، عند استخدام لغة Wolfram، عادةً ما تكون البنية التحتية مدمجة بالفعل في الحزم، وبالتالي ليست هناك حاجة لكشف كل وظائف الدعم هذه بالتفصيل، ولكن فقط قم بإنشاء وظائف للوظائف "الأعلى" الخاصة بالتطبيق في المكتبة .
"النظام البيئي" لقاعدة المعرفة
إذا كنت قد كتبت وظائف تستخدمها بانتظام، فأرسلها إلى مستودع وظائف Wolfram! إذا لم يخرج شيء آخر من هذا (تطوير اللغة)، فسيكون من الملائم لك استخدام الوظائف للاستخدام الشخصي. ومع ذلك، فمن المنطقي أن نفترض أنه إذا كنت تستخدم الوظائف بانتظام، فربما يجدها مستخدمون آخرون مفيدًا أيضًا.
وبطبيعة الحال، قد تجد نفسك في موقف لا تستطيع فيه - أو لا تريد - مشاركة وظائفك أو في حالة الوصول إلى موارد المعلومات الخاصة. وحتى في مثل هذه الحالات، يمكنك ببساطة نشر الوظائف في حسابك السحابي الخاص بك،
لا يجب أن تكون الوظائف التي ترسلها إلى مستودع وظائف Wolfram مثالية؛ يجب أن تكون مفيدة فقط. يشبه هذا إلى حد ما قسم "الأخطاء" في وثائق Unix الكلاسيكية - في "قسم التعريفات" يوجد قسم "ملاحظات المؤلف" حيث يمكنك وصف القيود والمشكلات وما إلى ذلك التي تعرفها بالفعل عن وظيفتك. بالإضافة إلى ذلك، عند إرسال الميزة الخاصة بك إلى المستودع، يمكنك إضافة ملاحظات الإرسال التي سيتم قراءتها بواسطة فريق متخصص من القيمين.
بمجرد نشر الميزة، تحتوي صفحتها دائمًا على رابطين في الأسفل: "
في بعض الأحيان، قد ترغب فقط في استخدام الوظائف من مستودع وظائف Wolfram، مثل الوظائف المضمنة، دون النظر إلى التعليمات البرمجية الخاصة بها. ومع ذلك، إذا كنت تريد إلقاء نظرة على الداخل، يوجد دائمًا زر "المفكرة" في الأعلى. انقر عليها وستحصل على نسختك الخاصة من دفتر التعريفات الأصلي الذي تم إرساله إلى مستودع الميزات. في بعض الأحيان يمكنك فقط استخدامه كمثال لاحتياجاتك. وفي الوقت نفسه، يمكنك أيضًا تطوير تعديلك الخاص لهذه الوظيفة. قد ترغب في نشر هذه الوظائف التي عثرت عليها من المستودع الموجود على جهاز الكمبيوتر الخاص بك أو في حساب التخزين السحابي الخاص بك، وربما ترغب في إرسالها إلى قاعدة معارف الوظيفة، ربما كنسخة محسنة وموسعة من الوظيفة الأصلية.
في المستقبل، نخطط لدعم التفرع على نمط Git لمستودعات الميزات، لكننا نحاول الآن إبقاء الأمر بسيطًا، ولدينا دائمًا إصدار واحد مقبول فقط من كل ميزة مضمنة في اللغة. في أغلب الأحيان (ما لم يتخلى المطورون عن الحفاظ على الميزات التي قاموا بتطويرها والرد على عمليات إرسال المستخدمين)، يتولى المؤلف الأصلي للميزة التحكم في التحديثات الخاصة بها ويقدم إصدارات جديدة، والتي تتم مراجعتها بعد ذلك، وإذا اجتازت عملية المراجعة ، نشرت باللغة.
دعونا نفكر في مسألة كيفية عمل "إصدار" الوظائف المطورة. في الوقت الحالي، عند استخدام وظيفة من مستودع الوظائف، سيتم تخزين تعريفها بشكل دائم على جهاز الكمبيوتر الخاص بك (أو في حسابك السحابي إذا كنت تستخدم السحابة). في حالة توفر إصدار جديد من إحدى الميزات، في المرة التالية التي تستخدمها فيها، ستتلقى رسالة تعلمك بذلك. وإذا كنت تريد تحديث الوظيفة إلى إصدار جديد، فيمكنك القيام بذلك باستخدام الأمر
أحد الأشياء الجميلة في Wolfram Function Repository هو أن أي برنامج لغة Wolfram، في أي مكان، يمكنه استخدام الوظائف منه. إذا ظهر برنامج في المفكرة، فغالبًا ما يكون من المناسب تنسيق وظائف المستودع كوظائف "كائن ثنائي وظيفي" سهلة القراءة (ربما مع مجموعة إصدار مناسبة).
يمكنك دائمًا الوصول إلى أي وظيفة في مستودع الوظائف باستخدام النص
كيف يعمل؟
داخل الوظائف الموجودة في مستودع Wolfram، من الممكن استخدام نفس الوظائف تمامًا
نظر
في الداخل يمكنك رؤية بعض المعلومات باستخدام الوظيفة
كيف يعمل إعداد وظيفة الموارد؟ أبسطها هي حالة محلية بحتة. فيما يلي مثال يأخذ وظيفة (في هذه الحالة مجرد وظيفة خالصة) ويعرّفها على أنها وظيفة مورد لجلسة برنامج معينة:
بمجرد الانتهاء من التعريف، يمكنك استخدام وظيفة الموارد:
لاحظ أن هناك أيقونة سوداء في هذه الوظيفة . وهذا يعني أن وظيفة BLOB تشير إلى وظيفة مورد الذاكرة المحددة للجلسة الحالية. تحتوي ميزة المورد المخزنة بشكل دائم على جهاز الكمبيوتر الخاص بك أو حسابك السحابي على أيقونة رمادية اللون . ويوجد رمز برتقالي لميزة الموارد الرسمية في Wolfram Features Repository .
فماذا يحدث عند استخدام قائمة التوسيع في دفتر التعريفات؟ أولاً، يأخذ جميع التعاريف الموجودة في المفكرة وينشئ منها رمزاً
يتم تنفيذ النشر المحلي لوظيفة من مستودع على جهاز الكمبيوتر الخاص بك باستخدام الأمر
إذا قمت بالنقر فوق الزر إرسال لمستودع الوظائف، ماذا يحدث تحته
افتراضيًا، يتم إجراء عمليات الإرسال تحت الاسم المرتبط بمعرف Wolfram الخاص بك. ولكن إذا كنت تقدم طلبًا نيابةً عن فريق تطوير أو مؤسسة، فيمكنك ذلك
بعد إرسال أي من وظائفك إلى قاعدة معارف الوظيفة، سيتم وضعها في قائمة الانتظار للمراجعة. إذا تلقيت تعليقات ردًا، فستكون عادةً في شكل ملف نصي مع إضافة "خلايا تعليق" إضافية. يمكنك دائمًا التحقق من حالة طلبك من خلال زيارة
بعض التفاصيل الدقيقة في العمل
للوهلة الأولى، قد يبدو أنه يمكنك فقط أخذ دفتر تعريفات ووضعه حرفيًا في مستودع الوظائف، ومع ذلك، هناك في الواقع الكثير من التفاصيل الدقيقة المعنية - والتعامل معها يتطلب القيام ببعض البرمجة الوصفية المعقدة جدًا، والتعامل مع المعالجة الرمزية كالرمز الذي يحدد الوظيفة، ويتم تعريف المفكرة نفسها. يحدث معظم هذا داخليًا، خلف الكواليس، ولكن يمكن أن يكون له بعض الآثار التي تستحق الفهم إذا كنت ستساهم في قاعدة معارف الميزات.
أول دقة فورية: عند ملء دفتر التعريفات، يمكنك ببساطة الإشارة إلى وظيفتك في كل مكان باستخدام اسم مثل MyFunction، والذي يبدو كاسم عادي لوظيفة في لغة Wolfram، ولكن يتم استبداله بالنسبة لوثائق مستودع الوظائف
الدقة الثانية: عندما تقوم بإنشاء وظيفة مورد من دفتر التعريفات، يجب التقاط جميع التبعيات المتضمنة في تعريف الوظيفة وإدراجها بشكل صريح. ومع ذلك، للتأكد من أن التعريفات تظل معيارية، تحتاج إلى وضع كل شيء بشكل فريد
عادةً لن ترى أبدًا أي أثر للتعليمة البرمجية المستخدمة لتكوين مساحة الاسم هذه. ولكن إذا قمت لسبب ما باستدعاء رمز غير منفذ داخل وظيفتك، فسترى أن هذا الرمز موجود في السياق الداخلي للوظيفة. ومع ذلك، عند معالجة "مفكرة التعريف"، يكون الرمز المقابل للوظيفة نفسها على الأقل
مستودع الوظائف مخصص لتحديد وظائف جديدة. وقد يكون لهذه الوظائف خيارات. في كثير من الأحيان هذه المعلمات (على سبيل المثال،
تقوم معظم الوظائف ببساطة بما يفترض أن تفعله في كل مرة يتم استدعاؤها، ولكن تحتاج بعض الوظائف إلى التهيئة قبل أن تتمكن من التشغيل في جلسة معينة - ولحل هذه المشكلة، يوجد قسم "التهيئة" في قسم التعريف.
يمكن للوظائف الموجودة في المستودع استخدام وظائف أخرى موجودة بالفعل في المستودع؛ من أجل إعداد تعريفات لمستودع الوظائف الذي يتضمن وظيفتين (أو أكثر) تشيران إلى بعضهما البعض، يجب عليك نشرها في جلسة البرنامج الخاصة بك حتى تتمكن من مرجع مثل عليها
آفاق التنمية. ماذا يجب أن يحدث عندما يصبح المستودع كبيرًا حقًا؟
اليوم نطلق للتو مستودع ميزات Wolfram، ولكن مع مرور الوقت نتوقع أن يزيد حجمه ووظائفه بشكل كبير، ومع نموه في التطوير، ستكون هناك مشكلات مختلفة نتوقع بالفعل ظهورها.
تتعلق المشكلة الأولى بأسماء الوظائف وتفردها. تم تصميم مستودع الوظائف بحيث، مثل الوظائف المضمنة في لغة Wolfram، يمكنك الرجوع إلى أي وظيفة معينة ببساطة عن طريق تحديد اسمها. ولكن هذا يعني حتمًا أن أسماء الوظائف يجب أن تكون فريدة عالميًا عبر المستودع، بحيث، على سبيل المثال، يمكن أن يكون هناك واحد فقط
قد تبدو هذه مشكلة كبيرة في البداية، ولكن من المفيد أن ندرك أنها نفس المشكلة تمامًا كما هو الحال بالنسبة لأشياء مثل نطاقات الإنترنت أو مقابض الوسائط الاجتماعية. والحقيقة هي أن النظام يحتاج ببساطة إلى مسجل - وهذا هو أحد الأدوار التي ستؤديها شركتنا لقاعدة المعرفة الخاصة بوظيفة Wolfram. (بالنسبة للإصدارات الخاصة من المستودع، قد يكون المسجلون هم المسؤولين.) بالطبع، يمكن تسجيل نطاق الإنترنت دون وجود أي شيء عليه، ولكن في مستودع الوظائف، لا يمكن تسجيل اسم الوظيفة إلا إذا كان هناك تعريف فعلي لـ الوظيفة.
جزء من دورنا في إدارة قاعدة معارف وظيفة Wolfram هو التأكد من أن الاسم المختار للوظيفة منطقي بالنظر إلى تعريف الوظيفة وأنه يتبع اصطلاحات التسمية بلغة Wolfram. لدينا أكثر من 30 عامًا من الخبرة في تسمية الوظائف المضمنة في لغة Wolfram، وسيجلب فريق القيمين لدينا هذه الخبرة إلى مستودع الوظائف أيضًا. بالطبع، هناك دائما استثناءات. على سبيل المثال، قد يبدو من الأفضل أن يكون لديك اسم قصير لبعض الوظائف، ولكن من الأفضل "الدفاع" باستخدام اسم أطول وأكثر تحديدًا لأنه من غير المرجح أن تصادف شخصًا يريد إنشاء اسم وظيفة مماثل في المستقبل .
(تجدر الإشارة هنا إلى أن مجرد إضافة بعض علامات الأعضاء لتوضيح الوظائف لن يكون له التأثير المقصود. لأنه ما لم تصر على تعيين علامة دائمًا، فستحتاج إلى تحديد علامة افتراضية لأي وظيفة معينة، وكذلك تخصيص علامات المؤلف ، الأمر الذي سيتطلب مرة أخرى تنسيقًا عالميًا.)
مع نمو القاعدة المعرفية لوظائف Wolfram، فإن إحدى المشكلات التي من المحتمل أن تنشأ هي إمكانية اكتشاف الوظائف، التي يوفرها النظام
بالنسبة للوظائف المضمنة في لغة Wolfram، هناك ما يسمى بطبقة الكشف التي توفرها
تم تكوين مستودع وظائف Wolfram كمستودع وظائف مستمر، حيث ستعمل أي وظيفة فيه دائمًا. بالطبع، قد تصبح الإصدارات الجديدة من الميزات متاحة، ونتوقع أن بعض الميزات ستصبح بالطبع قديمة بمرور الوقت. ستعمل الوظائف إذا تم استخدامها في البرامج، لكن صفحات التوثيق الخاصة بها سترتبط بوظائف جديدة أكثر تقدمًا.
تم تصميم مستودع ميزات Wolfram لمساعدتك على اكتشاف الميزات الجديدة بسرعة وتعلم طرق جديدة لاستخدام لغة Wolfram. نحن متفائلون للغاية بأن بعض ما تم استكشافه في مستودع الميزات سيكون له معنى في نهاية المطاف ليصبح أجزاء مدمجة في لغة Wolfram الأساسية. على مدى العقد الماضي كان لدينا مجموعة مماثلة
الشيء الأكثر أهمية هنا هو أن الوظيفة الموجودة في مستودع الوظائف هي شيء متاح لكل مستخدم لاستخدامه الآن. من الممكن أن تكون ميزة اللغة الأصلية أفضل بكثير وأكثر أداءً، ولكن مستودع الميزات سيسمح للمستخدمين بالوصول إلى جميع الميزات الجديدة على الفور. والأهم من ذلك أن هذا المفهوم يسمح للجميع بإضافة أي ميزات جديدة يريدونها.
في وقت سابق من تاريخ لغة Wolfram، لم تكن هذه الفكرة لتعمل بشكل جيد كما فعلت، ولكن في هذه المرحلة هناك الكثير من الجهد المبذول في اللغة، ومثل هذا الفهم العميق لمبادئ تصميم اللغة، يبدو الآن تمامًا من الممكن لمجتمع كبير من المستخدمين إضافة ميزات تحافظ على اتساق التصميم لجعلها مفيدة لمجموعة واسعة من المستخدمين.
هناك روح موهبة لا تصدق (؟) في مجتمع مستخدمي Wolfram Language. (بالطبع، يضم هذا المجتمع العديد من رواد البحث والتطوير في مجموعة متنوعة من المجالات.) آمل أن يوفر مستودع ميزات Wolfram منصة فعالة لإطلاق روح الموهبة هذه ونشرها. معًا فقط يمكننا إنشاء شيء من شأنه أن يوسع بشكل كبير المنطقة التي يمكن تطبيق نموذج حوسبة لغة Wolfram عليها.
في أكثر من 30 عامًا، قطعنا شوطًا طويلًا مع لغة Wolfram. الآن معًا، دعونا نذهب إلى أبعد من ذلك. أنا أشجع بشدة جميع مستخدمي لغة Wolfram المحترمين حول العالم على استخدام المستودع الوظيفي كمنصة لذلك، بالإضافة إلى مشروع البرنامج الجديد مثل Free Wolfram Engine for Developers.
المصدر: www.habr.com