شبه رماز

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

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

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

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

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

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

هذا مثال على السودوكود للعبة fizz buzz الرياضية:

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

يشار أحيانًا إلى السودوكود على النمط الرياضي على أنها كود هجين، على سبيل المثال هجين ألغول (أصل المفهوم) وهجين فورتران وهجين بيسك وهجين باسكال وهجين C وهجين ليسب.

الرموز الرياضية الشائعة

مثال 
فيما يلي مثال أطول على السودوكود ذات النمط الرياضي لخوارزمية فورد وفولكرسون:
 algorithm ford-fulkerson is
     input: Graph G with flow capacity c, 
            source node s, 
            sink node t
     output: Flow f such that f is maximal from s to t
 
     (Note that f(u,v) is the flow from node u to node v, and c(u,v) is the flow capacity from node u to node v)
 
     for each edge (u, v) in GE do
         f(u, v) ← 0
         f(v, u) ← 0
 
     while there exists a path p from s to t in the residual network Gf do
         let cf be the flow capacity of the residual network Gf
         cf(p) ← min{cf(u, v) | (u, v) in p}
         for each edge (u, v) in p do
             f(u, v) ←  f(u, v) + cf(p)
             f(v, u) ← −f(u, v)
 
     return f

التجميع الآلي للغات المكتوبة بأسلوب السودوكود

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

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

تتضمن العديد من لغات المواصفات الرسمية تدوين نظرية المجموعات باستخدام أحرف خاصة. من الأمثلة:

 تدوين Z
 لغة مواصفات أسلوب التنمية في فيينا (VDM-SL).

تتضمن بعض لغات برمجة المصفوفات التعبيرات الموجهة وعمليات المصفوفات كصيغ غير ASCII مختلطة بهياكل التحكم التقليدية. من الأمثلة:

 لغة برمجة إيه بي إل (APL) ولهجاتها APLX و أ+
 ماثكاد (MathCAD)

انظر أيضًا 

 برمجة المفاهيم
 مخطط دراكون
 خارطة الانسياب
 البرمجة المتعلمة
 لغة تصميم البرنامج
 الكود القصير
 اللغة الإنجليزية المنظمة

مراجع

قراءة متعمقة

روابط خارجية 

 معيار السودوكود
 الخوارزميات المجمعة من جمعية آلات الحوسبة
 إرشادات سودوكود ، ملف PDF.

كود مصدري
مقالات تحوي أمثلة مكتوبة بشيفرة تقريبية