حالُ الحسابِ العدديِّ والذكاءِ الصناعيِّ في لغة ص
الخلاصةُ في سطر
لا سطحَ تعلُّمٍ آليٍّ في لغةِ ص، ولا يُقصَدُ إخفاءُ ذلك. والصراحةُ ههنا أنفعُ من أيِّ وعد: باحثٌ في التعلّمِ الآليِّ يكتشفُ بنفسِه في خمسِ دقائقَ أنّ لا موتّراتِ في اللغة. فالإعلانُ المسبَقُ يوفّرُ وقتَه ويكسبُ ثقتَه، والسكوتُ يُنفِقُ الاثنَين.
المقيس: صفرُ أثرٍ لسطحِ التعلّمِ الآليّ
مسحُ language-truth/ كلِّه عن tensor وneural وcublas وcudnn: صفرُ مطابقة. فليس في مصدرِ الحقيقةِ مفهومُ موتِّرٍ ولا شبكةٍ عصبيّةٍ ولا ربطٍ بمكتبةِ جبرٍ خطّيٍّ مسرَّعة.
ما يوجدُ فعلًا — وهو حقيقيّ
٢٧ دالّةً رياضيّةً قياسيّةً مستقرّة
مقيسٌ من builtins/math.yaml: ٣٣ مُعلَنةً منها ٢٧ مستقرّة.
| الصنف | الدوالّ |
|---|---|
| أسٌّ وجذر | جذر · أس · مربع |
| لوغاريتمات | لوغ · لوغ2 · لوغ10 |
| مثلّثيّات | جيب · جتا · ظل · معكوس_جيب · معكوس_جتا · معكوس_ظل |
| تقريبٌ وحصر | تقريب · أرضية · سقف · اقتطاع · حصر · مطلق · إشارة · باقي |
| مقارنةٌ وتجميع | أكبر · أصغر · جمع |
| ثوابتُ وعشوائيّ | ط · باي · هـ · عشوائي |
قياسيّةٌ — أي تعملُ على عددٍ واحد، لا على مصفوفةٍ ولا موتِّر.
٢٢ مدمَجةَ SIMD — كلُّها مستقرّة
builtins/compiler_simd.yaml: ٢٢ من ٢٢ بلا مؤجَّلٍ واحد.
متجه · متجه_بث · متجه_عنصر · متجه_ضع · متجه_جمع · متجه_طرح · متجه_ضرب · متجه_قسمة · متجه_ضرب_جمع · متجه_جداء_قياسي · متجه_أصغر · متجه_أكبر · متجه_و · متجه_أو · متجه_حصري · متجه_جذر · متجه_مطلق · متجه_سالب · متجه_جمع_عرضي · متجه_ضرب_عرضي · متجه_أدنى_عرضي · متجه_أقصى_عرضي
وهذا سطحٌ منخفضُ المستوى لا أداةُ حسابٍ عدديّ
هذه بدائيّاتُ متّجهِ عتادٍ لكاتبِ الأنظمةِ يضبطُ بها حلقةً حرجة. ليست مصفوفاتٍ، ولا اشتقاقًا آليًّا، ولا رسمًا حسابيًّا. ومكانُها الطبيعيُّ مسارُ أنظمةِ التشغيل.
أسماءٌ تُوهِمُ — وتفكيكُها
① أسماءُ الجبرِ الخطّيِّ كلُّها مؤجَّلة
في builtins/maps.yaml خمسةُ أسماءٍ تبدو جبرًا خطّيًّا: مصفوفة_وحدة · مصفوفة_جديدة · أبعاد_مصفوفة · نطاق_مصفوفة · قلب_محوري. وكلُّها موسومةٌ intent: مؤجَّل — مُعلَنةٌ ولم تُنفَّذ.
② «مصفوفة» في لغةِ ص = array لا matrix
الاسمُ العربيُّ مشترَك، والمعنى في الشجرةِ واحدٌ لا اثنان: مصفوفات هنا مصفوفاتٌ أُحاديّة. فمَن قرأَ الاسمَ فتوقّعَ ضربَ مصفوفاتٍ رياضيًّا لم يجدْه.
③ kernel_gpu ليس حسابًا على المعالجِ الرسوميّ
builtins/kernel_gpu.yaml يُعلِنُ ٢٥ مدخلًا، و٢٥ منها مؤجَّلة — صفرُ مستقرّ. وهي أصلًا بدائيّاتُ إطارِ شاشةٍ لكاتبِ النواة، لا نواةُ حسابٍ متوازٍ ولا CUDA ولا OpenCL.
السبيلُ العمليُّ اليوم: اربِطْ مكتبةَ C
لغةُ ص تملكُ سطحَ ربطٍ خارجيٍّ حقيقيًّا: كلمةُ خارجي "C" مُعلَنةٌ في keywords.yaml، وbuiltins/ffi.yaml يحملُ ٢٠ مدمَجةً مستقرّةً من ٣٥ — منها إدارةُ الذاكرةِ الخامّة (حجز · حرر · اعد_حجز · حجز_صفري) ونقلُها (انسخ_ذاكرة_س · عبئ_ذاكرة_س) وسلاسلُ C وملفّاتُها.
فمَن أرادَ الحسابَ العدديَّ الجادَّ فسبيلُه أن يربطَ BLAS أو مكتبتَه هو، ويستدعيَها من ص. وتفصيلُ ذلك في التعاملُ مع C.
حدٌّ مقيسٌ في هذا السبيل
سمةُ @تمثيل_سي — التي تُعلِّمُ بنية بتخطيطِ ذاكرةٍ متوافقٍ مع C-ABI — مُصرَّحٌ في language-truth/directives.yaml نفسِه بأنّها اليومَ «تُحلَّل وتُقبَل بلا أثرٍ تخطيطيٍّ بعد» (RFC #53، الحاجز ٣/F2-أ). فلا تُبْنِ تخطيطَ بنيةٍ عابرةً للحدِّ على وجودِ السمةِ وحدَه قبلَ أن تقيسَه.
ماذا يفتحُ المجال
هذه الصفحةُ لا تُعلِنُ خارطةَ طريقٍ لم تُقرَّر. والمقيسُ أنّ فتحَ المجالِ يبدأُ من حيثُ يبدأُ كلُّ مجالٍ في هذا المستودع: قاعدةٌ مُعلَنةٌ قبلَ التنفيذ. فسطحُ الموتِّراتِ — لو قُصِد — يُكتَبُ أوّلًا في language-truth/ (أنواعٌ ومعامِلاتٌ ومُرجَعاتٌ وحدودٌ واستثناءات)، ثمّ يُطلَبُ من المترجِّمِ ما اشتُقَّ منها. وما دونَ ذلك تنفيذٌ يُثبِّتُ عللَه عقدًا.
والبطاقةُ خاليةُ الدعاوى صدقًا
capabilities: [] في tracks/ai.yaml ليست سهوًا. ولحظةَ يُوصَلُ سطحٌ حقيقيٌّ وتُكتَبُ دعوى واحدةٌ صادقة، تنقلبُ الدرجةُ من تلقاءِ نفسِها في البناءِ التالي.
ما لم يُقَسْ في هذه الصفحة
المسحُ عن tensor/neural/cublas/cudnn جرى على لقطةِ language-truth/ وحدَها لا على شجرةِ المشروعِ كلِّها. ودعوى «صفرُ إشارةٍ في الشجرةِ كلِّها خارجَ third_party» مكتوبةٌ في tracks/ai.yaml ولم أُعِدْ قياسَها ههنا.