زبان های برنامه نویسی به مجموعه کدها، دستورات، و قواعد مشخص برای ارتباط با ماشین گفته میشود. امروزه زبان های برنامه نویسی زیادی برای کاربردهای مختلف وجود دارد. اگر بخواهیم با توجه به کاربرد دسته بندی کنیم میتوان به مواردی مثل اپلیکیشن وب و موبایل، هوش مصنوعی، داده کاوی، و … اشاره کرد. در ادامه ابتدا به طور ساده و خلاصه به بررسی زبان های برنامه نویسی و تاریخچه آن میپردازیم.

از اولین زبان های برنامه نویسی؛ زبان ماشین
بیشتر کامپیوترها از زبان ماشین یا همان صفر و یک استفاده میکنند. البته دسته ای از کامپیوترها به اسم “کامپیوتر های کوانتومی” نیز وجود دارند که از مبحث ما خارج هستند. اولین زبان برنامه نویسی صرفاً شامل 0 و 1 بود؛ به عبارت دیگر برنامه نویس باید در مدت زمان نسبتا طولانی دنباله ای از صفر و یک را به کامپیوتر میداد تا تنها چند کار ساده انجام بشود.
این زبان که زبان ماشین نام دارد، مستقیماً توسط پردازنده (CPU) کامپیوتر پردازش میشود و این بدان معناست که دستورات، بدون واسط و با سرعت بالا اجرا میشود. این میتواند بزرگترین مزیت زبان ماشین در بین تمام زبان های برنامه نویسی باشد. اما مشکل اسای این زبان، وقت گیر بودن و نامفهوم بودن خواندن و نوشتن دستورات برای انسان است. حال فرض کنید یک مشکل کوچک در بین انبوهی از صفر و یک ایجاد شود!
زبان اسمبلی
با گذشت زمان برای رهایی از کدنویسی طاقت فرسا با زبان ماشین، زبانی به اسم اسمبلی (Assembly) ساخته شد. این زبان کار برنامه نویسان را ساده تر، سرعت را بیشتر، برنامه را خواناتر، و … کرده است. دلیل موارد ذکر شده را میتوان در نحوه نوشتن برنامه یافت.
زبان اسمبلی با کدگذاری زبان ماشین به عبارات ساده و مخفف شده کمک فراوانی به برنامه نویسان کرد به طوری که اکنون در طراحی زبان های برنامه نویسی نیز تا حدود زیادی استفاده میشود. این زبان به دلیل نزدیک بودن به زبان ماشین دارای سرعت بالایی در تحلیل و پردازش دستورات این زبان است.
تا اینجا با دو زبان ابتدایی در کامپیوتر و تاریخچه آن آشنا شدیم. به این دو زبان، زبان سطح پایین میگویند. پایین بودن سطح زبان به معنی ضعیف بودن یا ناکارآمد بودن آن نیست؛ بلکه به معنای نزدیک بودن زبان، به زبان ماشین و سخت افزار است. و بالعکس، بالا بودن سطح زبان به معنای نزدیک بودن آن زبان به زبان قابل درک توسط انسان است.
تمام دستورات یک زبان باید به دستورات زبان ماشین (صفر و یک) تبدیل شود تا برای کامپیوتر قابل فهم باشد. بنابراین هر کدام از زبان های برنامه نویسی سطح بالا برای تبدیل شدن به کد ماشین نیاز به یک ابزار دارد. این ابزار به طور کلی به دو دسته زبان های برنامه نویسی کامپایلری و مفسری تقسیم میشود. اما ابتدا به اسمبلر (به عنوان یک نرم افزار) پرداخته و سپس به بررسی هر دسته از آن ابزارها، و چند زبان را به همراه کاربرد آن میپردازیم.

اسمبلر
به طور خلاصه، اسمبلر وسیله ای برای تبدیل کد زبان سطح بالا به زبان اسمبلی است. این نرم افزار از آن جهت اهمیت دارد که تمام زبان های برنامه نویسی میتوانند از اسمبلر به عنوان یک واسط مطمئن برای طراحی مفسر یا کامپایلر استفاده کنند. بنابراین نیاز نیست هر زبان راه جدیدی برای تبدیل کد به زبان ماشین کشف کند.
زبان های برنامه نویسی کامپایلری
کامپایلر (Compiler) یک نرم افزار برای تبدیل کد به زبان ماشین است. ابتدا این نرم افزار در چند فاز تمام کدهای برنامه را تحلیل کرده و در صورت درست بودن کد، آن را به کد ماشین تبدیل میکنند. بنابراین در اجراهای بعد فقط آن نسخه ترجمه شده اجرا میشود. برخی کامپایلرها ابتدا کد را به زبان اسمبلی تبدیل کرده و سپس کد اسمبلی به زبان ماشین تبدیل میشود.
مزایای کامپایلر
- سرعت بالا در اجرای برنامه
- تبدیل یک جای کد برنامه به زبان ماشین
- بدون نیاز به ترجمه مجدد و تبدیل کد در اجراهای بعدی
- بهینه سازی کد
- تشخیص خطا قبل از اجرای برنامه
- …
معایب کامپایلر
- انعطاف پذیری کمتر درحین توسعه برنامه
- نیاز به کامپایل کد برای هر کامپیوتر (قابلیلت حمل پایین)
- زمان کامپایل طولانی
- مقدار فضای بیشتر نسبت به مفسر
- …
چند زبان کامپایلری
در ادامه چند زبان کامپایلری معروف نام برده شده :
- C: توسعه سیستم عامل ها و نرم افزار
- C++: توسعه نرم افزار و بازی سازی
- Java: توسعه انواع نرم افزار (موبایلی، سازمانی، و …)
- Rust: توسعه نرم افزار سریع و ایمن، برنامه های وب
- Swift: برنامه های سیستم عامل iOS و macOS
- Katlin: برنامه های سیستم عامل Android
زبان های برنامه نویسی مفسر
مفسر (Interpreter) نوع دیگری از مبدل های کد با زبان سطح بالا به زبان ماشین است. برخلاف کامپایلر ها که تمام کد ها را به طور یک جا گرفته و تبدیل کرده، مفسرها خط به خط برنامه را تفسیر و تحلیل کرده و به کد ماشین تبدیل میکند.
به عنوان مثال اگر برنامه دارای چندین خط کد باشد، مفسر ابتدا اولین خط را بررسی کرده و درصورت صحیح بودن کد، آن را به کد ماشین تبدیل میکند و سپس به سراغ خط دوم میرود. همین روند تا انتهای برنامه ادامه دارد. به دلیل ترجمه لحظه ای هر خط، گاهی مفسر بارها و بارها یک خط تکراری را اجرا کند.
این اجرای مجدد خط تکراری به معنای منتظر ماندن برای تبدیل، و در نتیجه کندی این نوع زبان ها میشود. همچنین مفسر قبل از اجرا نمیداند چه خطا هایی ممکن است به وجود بیاید زیرا برنامه خط به خط اجرا شده و تنها در صورت بروز خطا پیغام مناسب نمایش داده میشود. در ادامه به مزایا و معایب زبان های برنامه نویسی که بر پایه مفسر هستند میپردازیم.

مزایای مفسر در زبان های برنامه نویسی
- قابلیت انعطاف بالا و تغییرات سریع درحین برنامه نوسی
- قابلیت حمل بالا
- نوشتن و اجرای سریع بدون نیاز به زمان کامپایل
- آسانی در توسعه و تست برنامه
- …
معایب مفسر در زبان های برنامه نویسی
- کند بودن مخصوصا در مقیاس وسیع
- مصرف منابع بیشتر نسبت به کامپایلر
- اشکال زدایی سخت نسبت به زبان هایکامپایلری
- در دسترس بودن کد برنامه برای سایر کاربران
- …
چند زبان مفسری
ممکن است با توجه به کاربرد، زبان های برنامه نویسی که از مفسرها استفاده میکنند انتخاب برنامه نویس باشد. این انتخاب میتوان از جهت انعطاف بالای اینگونه زبان ها باشد. در ادامه چند زبان برنامه نویسی به همراه کاربرد آن نام برده شده:
- Python: توسعه بک اند وب، یادگیری ماشین، علم داده، و …
- JavaScript: توسعه بک اند و فرانت اند وب، برنامه های سمت Client
- PHP: توسعه بک اند وب، برنامه های سمت سرور
- Ruby: توسعه وب و برنامه های سمت سرور
- R: داده کاوی، آمار، یادگیری ماشین، تحلیل داده
سخن پایانی
هر کدام از زبان های برنامه نویسی برای انجام کار مشخصی طراحی شده اند. بنابراین نمیتوان با قطعیت گفت کدام زبان بهتر یا بدتر است. به عنوان مثال شاید زبان A ویژگی های زیادی داشته باشد ولی برای یک برنامه خاص زبان B مناسب تر باشد. اگرچه ملاک هایی برای خوب بودن زبان وجود دارد ولی این موارد در این بحث نمیگنجد.
سوالات متداول
اولین زبان برنامه نویسی چیست؟
اولین زبان، زبان ماشین است.
ابزار های تبدیل کد به زبان ماشین چیست؟
انواع کامپایلر و مفسر چه تفاوتی دارند؟
کامپایلر کد ها را یک جا، و مفسر کد ها را خط به خط بررسی و ترجمه میکنند.