[ Taha. Dostifam ]
[ Taha. Dostifam ]
خواندن ۲ دقیقه·۱ سال پیش

زبان های مفسری vs زبان های کامپایلری

زبان های برنامه نویسی زیادی هستند که شما اسم اون هارو خیلی شنیدید مثل CPP یا Fortran یا Cobol یا حتی Basic که زبان های کامپایلری هستند... زبان های کامپایلری کد شما رو به کد اسمبلی تبدیل میکند. و بعد برنامه ای تحت عنوان Assembler اون رو تبدیل به binary-code میکنه و بعد سیستم عامل میتونه اون رو ران بکنه و در نهایت پروگرم شما میتونه روی اون سیستم کار بکنه. دلیل اینکه میگوییم فقط روی اون سیستم دارای علت خاصی است‌ :) چرا که کد اسمبلی که توسط اسمبلر تولید شده برای هر cpu-architecture متفاوته و برنامه کامپایل شده فقط و فقط میتونه روی اون arch کار بکنه. برای مثال کد اسمبلی که برای x86-64 تولید شده قرار نیست روی AArch64 کار بکنه و این برای اسمبلی کار ها میتونه یک دردسر جدی باشه! اصلا برای همینه که زبان های برنامه نویسی High-Level توسعه داده شدن تا برنامه نویس درگیر مسائل مربوط به machine نشه!

نوشتن یک برنامه کامپایلری مراحلی داره که احتمالا باهاش آشنا هستید...
معمولا برنامه نویس از یک ابزار توسعه ای مثل vsc یا vscode یا Xcode یا حتی یک نوت پد ساده استفاده میکنه و سورس کد رو مینویسه و یا اگر برنامه پیچیدگی خاصی پیدا کرد اون رو تقسیم بندی میکنه بین فایل های مختلف. بعد برنامه نویس module هارو link (متصل) میکنه و در نهایت همه اون سورس کد تبدیل میشن با زبان قابل فهم کامپیوتری.

اما زبان های دیگه ای هم هستن که بطور مستقیم کد رو تبدیل به کد ماشین نمیکنن و فقط وقتی برنامه اجرا میشود تبدیل به کد ماشین میشن که این زبان هارو اغلب بعنوان script میشناسن. یعنی همه برنامه ما خلاصه میشه در همون سورس کد! هیچ چیز دیگه ای قرار نیست در برنامه ما دخیل باشه... بعضی زبان های اسکریپتی مانند Unix-shells (sh, csh, ksh, etc.) سورس رو میخونن و بلافاصله هر خط از سورس کد رو اجرا میکنند... زبون هایی مثل Perl هم وجود دارن که قبل از اجرا کردن سورس کد کل اسکریپت رو آنالیز میکنند.
ویژگی مهم زبان های اینترپرتری اینه که بسیار Portable عمل میکنند. بیشتر مسائل توسط اینترپرتر (مفسر) هندل میشن برای مثال برنامه شما cross-platform خواهد بود و قادر است در هر مکان و هر زمان توسط هر کامپیوتری اجرا بشه. یعنی هر کامپیوتری که Interpreter را نصب داشته باشه میتونه کما و بیش بی هیچ تغییری برنامه رو اجرا کنید. خیلی راحت... بی هیچ مشکلی. اما مشکلاتی نیز وجود دارد. برای مثال برنامه هرگز قابل executive (اجرا) نخواهد بود اگر interpreter در دسترس نباشد!
در حقیقت زبان هاس مفسری کند تر از زبان های کامپایلری هستند اما دیباگ و اصلاح آنها ساده است و میتونن راحت جابجا بشن. Python و Javascript مثال های دیگه ای ازین زبون ها هستن!

برنامه نویسpythonjavascript
Full-stack web developer
شاید از این پست‌ها خوشتان بیاید