HeadlinesBriefing favicon HeadlinesBriefing.com

بند 2 وفخ الاهتزاز في التشفير موضحة

Hacker News •
×

18 سبتمبر 2026 يخدم بند كمثال مفيد لنقتي العامة حول الاهتزاز في التشفير، لأنه حديث، عالي المستوى، وله جوانب تجعله سهل الاستخدام كمثال. لا أعرف شيئًا عن تاريخ المؤلف في تصميم اللغات أو ما إذا كان قد اعتبر بالفعل التنازلات أدناه واتخذ ما أعتقد أنه اختيار سيء. لا تتردد في استبدال “المؤلف” أدناه بـ “مؤلف افتراضي мог يكون قد أنشأ الشيء نفسه”. أنا claramente لا أحب قرارات التصميم التي اتخذت في بند وأريد عرضها، ومع ذلك فقد تم خلطها بشكل مفرط مع النقطة الرئيسية التي أحاول إيصالها أدناه. لا أريد تعديل هذا الآن وجعلها تبدو كما لو أن أي تعليقات موجودة تُعامل بقسوة مفرطة، لذا أشعر أن أفضل حل هو شرح نموذجّي العقلي للمقال أثناء كتابته. إليك تعليق من مؤلف بند. يُعرض بند 2 كلغة لعصر التشفير بالذكاء الاصطناعي: البشر يكتبون “القوانين"، والذكاء الاصطناعي يكتب التنفيذات والبراهين، والمترجم يتحقق من أن البراهين صحيحة. يبدو كل ذلك مثيرًا للإعجاب حقًا، ويمكنني أن أرى لماذا يريد شخص لغة تفعل ذلك. هناك في الواقع بعض المشكلات الرئيسية مع هذه الفكرة؛ ومع ذلك، هذا ليس ما يدور حوله هذا المقال. بدلًا من ذلك، أريد التحدث عن كيف يبدو أن بند نفسه قد وقع في فخ شائع مع الاهتزاز في التشفير لا يُذكر كثيرًا. لنبدأ بخط أساس ما يتطلبه بند من المطور كتابته لعرضه على الصفحة الرئيسية:https://github.com/bendlang/bend/blob/main/demos/app_win_is_bug_2d/LAWS.bend لن أعيد إنتاجه هنا لأن الكود ليس مهمًا جدًا. ما يهم في هذه المقالة هو أنه quite a bit of code. إنه 58 سطرًا من الكود فقط لتحديد أن اللاعب لا يمكنه أبدًا لمس العلم أو الفوز باللعبة. هناك أيضًا مشاكل أخرى في أن نموذج اللغة الكبيرة يمكنه إعادة تعريف برامج اللعبة الفرعية لفعل أي شيء؛ ومع ذلك، هذا مرة أخرى ليس نقطة المقال. بعد ذلك، دعونا ننظر إلى ما يحتاج نموذج اللغة الكبيرة الذي يكتب الكود لهذا البرنامج إلى كتابته من أجل إثبات “القوانين”:https://github.com/bendlang/bend/blob/main/demos/app_win_is_bug_2d/PROOF.bend هذا كثير. 442 سطرًا من الكود لإثبات تلك الخصائص البسيطة. فما هو مشكلتي مع هذا؟ لماذا أسميه فخ الاهتزاز في التشفير؟ المشكلة هي أن الاهتزاز في التشفير يجعل من الممكن بناء حل كبير قبل التعلم الكافي عن المشكلة لتحديد أن حلًا أفضل بكثير موجود. يمكن لمطور إنتاج لغة ومترجم كاملين بينما يفوت منهجًا كان سيظهر مباشرة أمامهم في استطلاع تمهيدي للمجال. المجال المعني هو التحقق الرسمي. من الجدير بالذكر أن هذين الكلمتين لا تظهران أبدًا على صفحة bend على الويب أو في قاعدة كوده. المطور بنى لغة كاملة حول مجال aparentemente دون أن يدرك أن هذا المجال موجود. لتوضيح لماذا هذا مشكلة بوضوح، دعونا نعيد إنشاء نفس البرنامج الذي يستخدمه بند كعرض في SPARK، لغة ومترجم مفتوح المصدر للتحقق الرسمي. لكي أكون منصفًا مع بند، قمت أنا شخصيًا بتشفير هذا بالاهتزاز، فقط أخبرתי نموذج لغة كبيرة بإعادة إنشاء العرض في SPARK دون أي توجيه إضافي:package Game with SPARK_Mode issubtype Column is Integer range 0 .. 11;subtype Row is Integer range 0 .. 7;type State is record X : Column; Y : Row; Won : Boolean;end record; Start : constant State := (8, 5, False);function Wall (X : Column; Y : Row) return Boolean is(((X = 3 or X = 11) and Y <= 3)or ((Y = 3 or Y = 7) and X <= 3));function Cell (X : Column; Y : Row) return Character is(if Wall (X, Y) then '#' elsif X = 1 and Y = 1 then 'F' else '.');-- Inductive invariant: outside the sealed room, off walls, not won.function Safe (G : State) return Boolean is((G. X > 2 or G. Y > 2) and not Wall (G.

X, G. Y) and not G. Won)with Ghost;procedure Step (G : in out State; Key : Character)with Post => (if Safe (G'Old) then Safe (G));-- Both Bend laws, including the actual cell drawn by the terminal.function Replay (Keys : St...