الكود كبيانات

في علوم الحاسوب، يشير مصطلح "الشيفرة كبيانات" إلى فكرة إمكانية التعامل مع الشيفرة المصدرية المكتوبة بلغة برمجة كبيانات، مثل سلسلة من الأحرف أو شجرة بناء جملة مجردة (AST)، ويكون لها دلالة تنفيذية فقط في سياق مُصرِّف أو مُفسِّر مُحدد . [ 1 ] يُستخدم هذا المفهوم غالبًا في سياق لغات البرمجة الشبيهة بلغة ليسب التي تستخدم تعابير S كبنيتها الأساسية، حيث أن كتابة البرامج باستخدام قوائم متداخلة من الرموز تجعل تفسير البرنامج كشجرة بناء جملة مجردة واضحًا تمامًا (وهي خاصية تُعرف باسم التماثل ). [ 2 ] [ 3 ]

تُستخدم هذه الأفكار عمومًا في سياق ما يُعرف بالبرمجة الوصفية ، أي كتابة برامج تتعامل مع برامج أخرى كبيانات لها. [ 4 ] [ 5 ] على سبيل المثال، يسمح مفهوم "الرمز كبيانات" بتسلسل الدوال الأساسية بطريقة قابلة للنقل. [ 6 ] ومن حالات الاستخدام الأخرى تخزين البرنامج في سلسلة نصية، ثم معالجتها بواسطة مُصرّف لإنتاج ملف تنفيذي. [ 4 ] وفي أغلب الأحيان، توجد واجهة برمجة تطبيقات انعكاسية (Reflection API) تُظهر بنية البرنامج ككائن داخل اللغة، مما يقلل من احتمالية إنشاء برنامج غير صحيح. [ 7 ]

في نظرية الحوسبة ، تقدم نظرية كلين الثانية للاستدعاء الذاتي شكلاً من أشكال "الرمز هو بيانات"، من خلال إثبات أن البرنامج يمكنه الوصول إلى شفرته المصدرية الخاصة. [ 8 ]

يُعدّ مفهوم "البرمجة كبيانات" أحد مبادئ بنية فون نيومان ، حيث تُمثّل البرامج والبيانات المخزّنة على شكل بتات في نفس وحدة الذاكرة. [ 4 ] تُتيح هذه البنية إمكانية كتابة شيفرة ذاتية التعديل . كما تُعرّض النظام لمخاطر أمنية تتمثل في إمكانية إخفاء برنامج خبيث على هيئة بيانات مستخدم، ثم استغلال ثغرة أمنية لتوجيه تنفيذه إلى ذلك البرنامج الخبيث. [ 9 ]

البيانات كشفرة

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

مراجع

  1. 1 2 بوليتو، ماسيميليانو أ. (سبتمبر 1999). دعم اللغة والمترجم لتوليد الشفرة الديناميكية (PDF) (أطروحة دكتوراه). معهد ماساتشوستس للتكنولوجيا. ص  20. إلى أن تتم ترجمتها ديناميكيًا، تُعتبر الشفرة الديناميكية بيانات. وبالمثل، تُعد القوائم في لغة ليسب والسلاسل النصية في لغة بيرل بيانات، ولكن يمكن تقييمها كشفرة برمجية.
  2. بلوش، مايك (فبراير 2004). "يعتمد ConciseXML على الخصائص المهمة لـ XML و S-Expressions" . مجلة XML . 5 (2). Gale Academic OneFile: 20+ . تاريخ الاسترجاع : 14 يناير 2023. S-Expressions، أو التعبيرات الرمزية، هي الصيغة المستخدمة في لغات البرمجة الشبيهة بلغة Lisp، بما في ذلك Scheme. ببساطة، S-Expressions عبارة عن قوائم متداخلة من الرموز. تُستخدم S-Expressions مع اللغات التي تدعم فكرة أن الكود هو بيانات.
  3. ريهل، جوناثان (22 أكتوبر 2006). "استيعاب ميتا بورغ: تضمين أدوات اللغة في اللغات". وقائع المؤتمر الدولي الخامس حول البرمجة التوليدية وهندسة المكونات . الصفحات 21-28 . doi : 10.1145/1173706.1173710 . ISBN  1595932372. S2CID 11111101 . تعتبر مجتمعات Lisp و Scheme استثناءً، لأنها تميل إلى التمسك بفكرة أن الكود هو بيانات، وتنفيذ جزء كبير من لغتها بلغة أساسية أصغر. 
  4. 1 2 3 كلوكنر، أندرياس؛ بينتو، نيكولاس؛ لي، يونسوب؛ كاتانزارو، بريان؛ إيفانوف، بول؛ فصيح ، أحمد (مارس 2012). “PyCUDA وPyOpenCL: نهج قائم على البرمجة النصية لإنشاء كود وقت تشغيل GPU”. الحوسبة المتوازية . 38 (3): 157– 174. أرخايف : 0911.3456 . دوى : 10.1016/j.parco.2011.09.001 . S2CID 18928397 . 
  5. ^ وو تشور (2010). “البرمجة الفوقية”. Pro DLR في .NET 4 . ص 185 – 210. دوى : 10.1007 / 978-1-4302-3067-0_8 . رقم ISBN  978-1-4302-3066-3.
  6. تاك، غيدو؛ كورنشتات، ليف؛ سمولكا، غيرت (مارس 2006). "التخليل والتصغير العام" . ملاحظات إلكترونية في علوم الحاسوب النظرية . 148 (2): 79-103 . doi : 10.1016/j.entcs.2005.11.041 .
  7. فاندرهارت، لوك؛ سييرا، ستيوارت (2010). "الماكرو والبرمجة الفوقية". كلوجر العملية . ص 167-178 . doi : 10.1007/978-1-4302-7230-4_12 . ISBN  978-1-4302-7231-1.
  8. بانانغادين، براكاش. "ملاحظات حول نظرية الاستدعاء الذاتي" (ملف PDF) . COMP 330 نظرية الحوسبة . جامعة ماكجيل . تاريخ الاسترجاع: 15 يناير 2023 .
  9. بوم، راينر؛ مور، تايلر (26 أغسطس 2013). "مقدمة موجزة لأمن المعلومات" (ملف PDF) .
  10. ^ زيلز ، فابيان. شيفر، موريتز. توفي، صموئيل. كاستنر، يوهانس؛ هولم ، كريستيان (2024). "ZnTrack - البيانات كرمز". أرخايف : 2401.10603 [ cs.SE ].
  11. "Shuttle-hq/Synth" . GitHub .