بعد از اینکه مقالات مفسر در برنامه نویسی چیست و بررسی تفاوت کامپایلر و مفسر رو در سایت منتشر کردیم حال میخواهیم در مورد زبان های برنامه نویسی مفسری صحبت کنیم و ببینیم چه زبان های برنامه نویسی مفسری هستند. البته ابتدا توضیحاتی در مورد زبان های مفسری میدیم و در نهایت می گیم چه زبان هایی مفسری هستند. در مقاله ای جدا هم در مورد زبان های کامپایلری صحبت می کنیم و می گیم چه زبان های برنامه نویسی کامپایلری هستند.
قبل از اینکه شروع به معرفی زبان های برنامه نویسی مفسری کنیم باید بدونیم اصلا زبان های مفسری چی هستند و چگونه کار می کنند. در بخش پایین در این باره صحبت می کنیم و توضیحاتی رو ارائه میدهیم.
زبان های مفسری
اگر بخواهیم واضح بگویم مفسر در برنامه نویسی چیست؟ مفسر یک برنامه کامپیوتری است که دستورهای نوشته شده در یک زبان برنامه نویسی را اجرا میکند. مفسر در واقع یک زبان برنامه نویسی سطح بالا را به یک زبان قابل فهم برای ماشین تبدیل می کند.
نکته مهم: در زبان های مفسری کد ها به صورت خط به خط تفسیر و اجرا می شوند و در اجرا بعدی برنامه نیز به همین صورت ادامه می یابد.
همینطور که می دانید هر دستگاه کامپیوتری (کامپیوترهای رومیزی، نوت بوک ها، گوشی های هوشمند، تبلت ها و …) از سخت افزار خاصی ساخته شده است که دارای قسمت های مختلفی از جمله پردازنده (Processor) است. حال اگر بخواهید برای این پردازنده برنامه ای بنویسید که این پردازنده کاری را انجام دهد باید دستورات زبان ماشین خاص آن پردازنده را یکجا نوشته و در یک فایل ذخیره کنید و برای اجرا آن فایل را یکباره به پردازنده بدهید تا اجرا کند.
چون نوشتن به زبان ماشین بسیار نیاز به حوصله و وقت دارد و اشکال زدایی (دیباگ) آن نیز کار پر مشقت و وقت گیر است معمولا از سایر زبان ها استفاده می کنند و آن زبان ها را با “برنامه های خاصی” به زبان ماشین تبدیل می کنند.
اگر آن برنامه خاص تبدیل دستورات به زبان ماشین را به جای یکباره و کامل به صورت دستور به دستور انجام دهد و همان لحظه دستور تبدیل شده (فقط و فقط همان دستور را) برای اجرا به پردازنده تحویل دهد و پس از اجرا دوباره دستور بعد را به زبان ماشین تبدیل کند و به پردازنده تحویل دهد و … این ماجرا تا به انتهای دستورات به صورت خط به خط تکرار شود و دستورات زبان ماشین توسط پردازنده فقط اجرا شوند و در فایلی ذخیره نشوند به آن برنامه خاص اینترپرتر یا مفسر می گویند.
در گذشته های دور نسخه های مختلف بیسیک جزو معروفترین زبان های اینترپرتری یا مفسری دنیا بودند نسخه هایی نظیر GWbasic و Basica و QBasic و …
بزرگترین مزیت اینترپرتر یا مفسر این است که برنامه نوشته شده اصلی وابستگی کمتری به نوع سخت افزار دارد. لذا برنامه ای که به زبان مفسر نوشته شود همانطور که می تواند روی یک کامپیوتر پردازنده اینتل اجرا شود می تواند بر روی یک تبلت با پردازنده آرم نیز اجرا شود یا روی یک موبایل یا یک اسباب بازی مدل.
توجه: برای اینکه به صورت دقیق بدونید زبان های مفسری چه هستند یا اصلا مفسر در برنامه نویسی چیست پیشنهاد می کنم مقاله مفسر در برنامه نویسی چیست رو مطالعه کنید. در این مقاله به صورت کامل و دقیق در مورد مفسر در برنامه نویسی صحبت کرده ایم
از نظر نحوه ی اجرا
از نظر نحوه ی اجرا نیز معمولا می توان زبان ها را به دو دسته تقسیم کرد.
به دسته اول زبان های کامپایلری یا کامپایل شونده ( Compiled ) گفته می شود. این زبان های برای اجرا به کامپایلر نیاز دارند. کامپایلر برنامه ای است که کد مربوط را خط به خط از نظر درستی بررسی کرده و سپس در صورت عدم وجود خطا کل کد را به زبان قابل اجرا برای ماشین تبدیل می کند. کد کامپایل شده در نهایت به صورت یک فایل قابل اجرا برای سیستم هدف درآمده و دیگر قابل تغییر نیست. در صورت نیاز به تغییر باید کد اصلی را ویرایش کرده و آن را مجددا کامپایل کنیم.
به زبان های دسته دوم مفسری یا اسکریپتی ( Scripting ) گفته می شود. این زبان ها به جای کامپایلر به مفسر نیاز دارند. مفسر کد برنامه را خط به خط بررسی کرده و همان لحظه اجرا می کند. فایل حاوی کد های یک زبان های مفسری به وسیله مفسر مستقیما اجرا می شود و با تغییر فایل و ذخیره آن نتیجه هم تغییر می کند.
یکی از تفاوت های این دو دسته مربوط خطا یابی است. در دسته اول اگر در خطی از برنامه خطایی موجود باشد کامپایلر کد را کامپایل نمی کند ولی در دسته دوم مفسر کد های قبل از خطا را اجرا می کند و وقتی به خطا می رسد ارور داده و متوقف می شود. (البته در بعضی زبان های مفسری در صورت رسیدن به خطا مفسر متوقف نمی شود و از خط دارای خطا عبور می کند و به تفسیر بقیه خطوط می پردازد)
توجه: برای درک بهتر تفاوت زبان های مفسری و کامپایلری پیشنهاد میکنم مقاله بررسی تفاوت کامپایلر و مفسر رو مطالعه کنید. در این مقاله در قالب ۱۴ مورد به بررسی تفاوت زبان های مفسری و کامپایلری پرداخته ایم.
زبان های برنامه نویسی مفسری
تعداد زیادی زبان برنامه نویسی داریم که مفسری می باشد. که در بخش زیر تعدادی از زبان های معروف که مفسر هستند رو لیست کرده ایم.
- پایتون
- جاوااسکریپت
- بیسیک
- وی بی اسکریپت
- زبان PHP
- پرل
- روبی
- زبان Forth
- و …
زبانهای تفسیری و کامپایلی
بسیاری از افراد زبانهای سطح بالا را به دو دسته تفسیری و کامپایلی تقسیم می کنند. کامپایلر ها و مفسر ها روی زبان ها عمل می کنند نه زبانها روی آنها، مثلا این تصور وجود دارد که الزاما BASIC تفسیر می شود و C کامپایل. اما ممکن است نمونه هایی از BASIC یا C ارائه شود که به ترتیب کامپایلری و تفسیری باشد. البته استثنا هایی نیز وجود دارد، مثلا برخی زبانها در خصوصیات خود این تقسیم بندی را مشخص کرده اند (C کامپایلری است یا SNOBOL4 و اکثر زبانهای اسکریپتی که کد منبع زمان اجرا دارند تفسیری می باشد).
نکته مهم: زبان هایی مثل جاوا، ویژوال بیسیک دات نت و سی شارپ زبان هایی هستند که هم کامپایلری هستند هم مفسری.