حلّ مشكلة التعبير بأسلوب أنيق: الإرسال المتعدد والطرق المفتوحة

2025-09-07

تتناول هذه المقالة "مشكلة التعبير"، وهي تحدٍّ يواجه كلًا من البرمجة الشيئية والبرمجة الوظيفية: إضافة أنواع بيانات جديدة وعمليات دون تعديل الكود الموجود. يستخدم الكاتب أمثلة في C++ وHaskell، لتوضيح جوهر المشكلة. تواجه البرمجة الشيئية التقليدية صعوبة في توسيع الأنواع والعمليات في وقت واحد، وتواجه البرمجة الوظيفية قيودًا مماثلة. تحلّل المقالة نمط الزائر وامتداداته بشكلٍ معمّق، ثم تستخدم طرقًا متعددة وبروتوكولات Clojure لإظهار كيف يحلّ الإرسال المتعدد والطرق المفتوحة مشكلة التعبير بأسلوب أنيق، مما يسمح بكتابة كود مرن وقابل للتوسيع.

اقرأ المزيد
التطوير

مشكلة التعبير: حلول أنيقة في البرمجة كائنية التوجه والبرمجة الوظيفية

2025-09-07

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

اقرأ المزيد

إعادة زيارة فورث: تطبيقان وتأملات حول لغة غريبة

2025-08-28

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

اقرأ المزيد

خوارزمية التوحيد: التنفيذ والتطبيقات

2025-08-18

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

اقرأ المزيد
التطوير توحيد

الصلة الأنيقة بين ضرب كثيرات الحدود والالتفاف ومعالجة الإشارات

2025-05-21

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

اقرأ المزيد

مرشحات بلوم: بنية بيانات احتمالية لعضوية المجموعات بكفاءة

2025-05-02

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

اقرأ المزيد

محولات فعالة: خليط الخبراء ذو البوابة المتفرقة (MoE)

2025-04-20

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

اقرأ المزيد
التطوير كفاءة النموذج

إنتروبيا متقاطعة: غوص عميق في دالة الخسارة للتصنيف

2025-04-13

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

اقرأ المزيد

صنع المعجزات بأربعة أرقام 2: حل أنيق للعبة رياضية

2025-02-23

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

اقرأ المزيد

زخارف JIT في بايثون: ثلاث استراتيجيات للتنفيذ

2025-02-03

تتناول هذه المقالة نمط زخارف JIT الشائع في بايثون، وتحديداً استخدامه في مكتبات JAX و Triton. يقوم الكاتب بتنفيذ ثلاث زخارف JIT من الصفر باستخدام مثال مبسط: القائم على AST، والقائم على bytecode، والقائم على التتبع. تقوم الطريقة القائمة على AST بتغيير شجرة النحو المجردة مباشرةً؛ أما الطريقة القائمة على bytecode فتستغل مُفسّر bytecode الخاص ببايثون؛ والطريقة القائمة على التتبع تُنشئ IR تعبيري من خلال تتبع تنفيذ الدالة وقت التشغيل. تُفصّل المقالة مزايا وعيوب كل طريقة، وتستخدم JAX و Numba كأمثلة لتوضيح استراتيجياتها في التطبيقات الواقعية.

اقرأ المزيد
التطوير ترجمة JIT

تنفيذ خوارزمية رافت: غوص عميق في الإجماع الموزع

2024-12-21

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

اقرأ المزيد