مفسر (برمجة): الفرق بين النسختين

[نسخة منشورة][نسخة منشورة]
تم حذف المحتوى تمت إضافة المحتوى
JarBot (نقاش | مساهمات)
ط بوت:إصلاح تحويلات القوالب
This contribution was added by Bayt al-hikma 2.0 translation project
سطر 1:
'''المفسّر''' ([[لغة إنجليزية|الإنجليزية]] Interpreter) هو برنامج حاسوبي يقوم بتشغيل النصوص البرمجية المكتوبة ب[[لغة مفسرة]].<ref>[http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.41.2582&rep=rep1&type=pdf The Structure and Performance of Interpreters] {{Webarchive|url=https://web.archive.org/web/20170809090123/http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.41.2582&rep=rep1&type=pdf |date=09 أغسطس 2017}}</ref><ref>{{استشهاد بكتاب |editor-first1=Rainer |editor-last1=Erlekampf |editor-first2=Hans-Joachim |editor-last2=Mönk |author-first=Claus |author-last=Kühnel |صفحات=222 |عنوان=Mikroelektronik in der Amateurpraxis |عنوان مترجم=Micro-electronics for the practical amateur |chapter=4. Kleincomputer - Eigenschaften und Möglichkeiten |trans-chapter=4. Microcomputer - Properties and possibilities |ناشر={{Interlanguage link multi|Militärverlag der Deutschen Demokratischen Republik|de}}, Leipzig |مكان=Berlin |تاريخ=1987 |orig-year=1986 |إصدار=3 |لغة=German |isbn=3-327-00357-2 |id=7469332}}</ref><ref>{{استشهاد بكتاب |الأخير1=Kent |الأول1=Allen |الأخير2=Williams |الأول2=James G. |عنوان=Encyclopedia of Computer Science and Technology: Volume 28 - Supplement 13 |تاريخ=April 5, 1993 |ناشر=Marcel Dekker, Inc |مكان=New York |isbn=0-8247-2281-7 |مسار=https://books.google.com/books?id=EjWV8J8CQEYC |تاريخ الوصول=Jan 17, 2016| مسار أرشيف = https://web.archive.org/web/20161120161636/https://books.google.com/books?id=EjWV8J8CQEYC | تاريخ أرشيف = 20 نوفمبر 2016 }}</ref> حيث يقوم المفسر بتنفيذها سطرا سطرا مباشرة، وهذا بعكس ال[[محول برمجي|مصرّف]] والذي يقوم بتحويل البرنامج مرة واحدة من لغة إلى أخرى (لغة الآلة غالبا) حيث يكون ناتجه ملف يمكن تشغيله لاحقا. بعض اللغات وخاصة اللغات الوظيفية من الصعب جدا عمل مصرف لها بينما هي عادة تعمل بسهولة عن طريق مفسر. من اللغات التي يتم تشغيل برامجها عن طريق مفسر لغة [[بيسيك|البيسك]]، و[[روبي (توضيح)|روبي]]، و[[بايثون|بيثون]] و[[بي إتش بي]]. يستخدم المفسر عمومًا واحدة من الاستراتيجيات التالية لتنفيذ البرنامج:
 
* تجزئة الشيفرة المصدرية وتنفيذها مباشرةً؛
* ترجمة الشيفرة المصدرية إلى لغة وسيطة فعالة وتنفيذها فورًا؛
* التنفيذ الصريح لشيفرة مخزنة مسبقًا<ref>''In this sense, the [[Central processing unit|CPU]] is also an interpreter, of machine instructions.''</ref> أنشأها مترجمٌ يُعدّ جزءًا من نظام المفسر.
 
تُعد الإصدارات الأولى من [[لغة برمجة|لغة البرمجة]] ليسب ولغة دارتموث بيسيك أمثلة على النوع الأول. وتُعد لغات بيرل، وبايثون، وماتلاب، وروبي أمثلة على النوع الثاني، في حين تُعد لغة يو سي إس دي باسكال مثالًا على النوع الثالث. تُترجم البرامج المصدرية قبل وقت محدد وتُخزن على شكل شيفرة مستقلة عن الآلة، ثم تُربط في وقت التنفيذ وينفّذها مفسرٌ و/أو مترجم (لأنظمة الترجمة في الوقت المناسب). إن بعض الأنظمة، مثل سمول توك والإصدارات المعاصرة من لغات [[بيسيك]] [[جافا (لغة برمجة)|وجافا]]، قد تجمع اثنين أو ثلاثة.<ref>Although this scheme (combining strategy 2 and 3) was used to implement certain BASIC interpreters already in the 1970s, such as the efficient BASIC interpreter of the [[ABC 80]], for instance.</ref> بُنيت المفسرات من أنواع مختلفة من أجل العديد من لغات البرمجة المقترنة بالترجمة، كلغة ألغول، وفورتران، وكوبول، وَسي، وَسي بلس بلس.
 
في حين يُعد التفسير والترجمة أداتين رئيسيتين تُنفذ من خلالهما لغات البرمجة، فإنهما ليستا متعارضتين، إذ إن معظم أنظمة التفسير تنجز أيضًا بعض أعمال الترجمة، كالمترجمات تمامًا. يشير المصطلحان «لغة مفسرة» أو «لغة مترجمة» إلى أن التنفيذ المعياري لتلك اللغة هو مفسر أو مترجم، على التتالي. اللغة عالية المستوى هي في الحالة المثالية تجريد مستقل عن تنفيذات معينة.
 
== تاريخه ==
استُخدمت المفسرات منذ عام 1952 لتسهيل البرمجة مع وجود قيود على الحواسيب في ذلك الوقت (مثل نقص مساحة تخزين البرامج، أو عدم وجود دعم في الأصل للأعداد الحقيقية (ذات الفاصلة العائمة)). كانت المفسرات تُستخدم أيضًا للترجمة بين لغات الآلة المنخفضة المستوى، وتسمح بكتابة الكود لآلات كانت ما تزال قيد البناء، وتخضع للاختبار على حواسيب موجودة مسبقًا.<ref>{{cite journal|last1=Bennett|first1=J. M.|last2=Prinz|first2=D. G.|last3=Woods|first3=M. L.|title=Interpretative sub-routines|journal=Proceedings of the ACM National Conference, Toronto|date=1952}}</ref> كانت اللغة المفسرة الأولى هي لغة ليسب. نُفذت لغة ليسب أولًا في عام 1958 من قبل [[ستيف راسيل (مهندس)|ستيف راسيل]] على حاسوب آي بي إم 704. كان راسيل قد قرأ ورقة جون مكارتي البحثية وأدرك أن تابع ''إيفال eval'' في لغة ليسب قابل للتنفيذ في شيفرة الآلة.<ref>According to what reported by [[Paul Graham (computer programmer)|Paul Graham]] in ''[[Hackers & Painters]]'', p. 185, McCarthy said: "Steve Russell said, look, why don't I program this ''eval''..., and I said to him, ho, ho, you're confusing theory with practice, this ''eval'' is intended for reading, not for computing. But he went ahead and did it. That is, he compiled the ''eval'' in my paper into [[IBM 704]] machine code, fixing [[Software bug|bug]], and then advertised this as a Lisp interpreter, which it certainly was. So at that point Lisp had essentially the form that it has today..."</ref> كانت النتيجة هي مفسر للغة ليسب يمكن استخدامه لتنفيذ برامج ليسب، أو بعبارة أدق «لتقييم تعابير ليسب».
 
== دورة التطوير ==
خلال [[عملية تطوير البرمجيات|دورة تطوير البرمجيات]]، يُجري المبرمجون تغييرات دورية على الشيفرة المصدرية. عند استخدام مترجم، وفي كل مرة يُجرى فيها أي تغيير على الشيفرة المصدرية، عليهم أن ينتظروا المترجم كي يترجم الملفات المصدرية المعدلة ويربط جميع ملفات الشيفرة الثنائية مع بعضها قبل أن يُنفذ البرنامج. كلما كان البرنامج أكبر، تكون مدة الانتظار أكبر. في المقابل، ينتظر المبرمج الذي يستخدم المفسر مدةً أقل بكثير، إذ يجب على المفسر عادةً أن يترجم الشيفرة التي يجري العمل عليها فقط إلى لغة وسيطة (أو لا يترجمها كلها)، بالتالي يتطلب وقتًا أقل بكثير قبل أن يصبح بالإمكان اختبار التغييرات. تظهر التأثيرات عند حفظ الشيفرة المصدرية أو عند إعادة تحميل البرنامج. تُصحح الشيفرة المترجمة بسهولة أقل لأن التحرير والترجمة والربط هي عمليات تسلسلية يجب أن تكون مترابطة بالتسلسل المناسب مع مجموعة التعليمات المناسبة لها. لهذا السبب، لدى العديد من المترجمات مساعدة تنفيذية تُعرف بملف وبرنامج الصنع. يسجل ملف الصنع أسطر أوامر الرابط والمترجم وملفات الشيفرة المصدرية للبرنامج، لكن من الممكن أن يستقبل دخلًا بقائمة أسطر أوامر بسيطة (مثل «صنع 3») وهو أمر يختار المجموعة الثالثة من التعليمات ثم يرسل الأوامر إلى المترجم والرابط اللذين يغذيان ملفات الشيفرة المصدرية المحددة.
 
== مراجع ==