مقایسه زبانهای برنامهنویسی
روشهای مختلفی برای مقایسه و ارزیابی زبانهای برنامه نویسی وجود دارد، اما برای سهولت در درک بهتر این مقاله، تصمیم گرفتیم تنها به سراغ زبانهای برنامهنویسی برویم که کامپایل شده (Compilation) هستند و سطح خوبی از انتزاع (Abstraction) را ارائه میکنند.
کامپایل به کد ماشین
- برخی زبانهای برنامه نویسی به این صورت عمل میکنند که کدهایی که توسط برنامهنویسان نوشته میشوند باید به کد ماشین تبدیل شوند. به بیان دقیقتر، دستورالعملهایی که پردازنده مرکزی (CPU) قادر به درک آنها است. این فرآیند تغییر کدها از زبان قابل درک برای انسانها به زبان کامپیوتر، کامپایل نام دارد. زبانهای اسمبلی، سی، سیپلاسپلاس و پاسکال در گروه زبانهای کامپایل شده قرار میگیرند.
زبانهای تفسیر شده
زبانهای برنامه نویسی دیگری وجود دارند که ماهیت تفسیری دارند. از جمله این زبانها باید به بیسیک (Basic)، اکشناسکریپت (Actionscript) و جاوااسکریپت (Javascript) اشاره کرد که میتوانند تفسیر شده یا مثل جاوا و سیشارپ (#C) ترکیبی از هر دو حالت کامپایل و تفسیری باشند.
زبانهای تفسیر شده در زمان اجرا (Runtime) پردازش میشوند. عملکرد این زبانها به این صورت است که هر خط کد خوانده، تجزیه و تحلیل و اجرا میشود. با توجه به اینکه، زبانهای برنامهنویسی مذکور مجبور هستند، خطوط کدها را در یک حلقه پردازش مجدد کنند، سرعت کمتری نسبت به زبانهای کامپایلی دارند. این سربار به این معنی است که کد تفسیر شده بین 5 تا 10 برابر کندتر از کد کامپایل شده اجرا میشود. زبانهای تفسیر شده مثل بیسیک (Basic) یا جاوااسکریپت (JavaScript) کندترین زبانهای برنامهنویسی هستند. مزیت آنها عدم نیاز به کامپایل مجدد پس از اعمال تغییرات است. هنگامی که قصد یادگیری یک زبان برنامهنویسی را دارید، این ویژگیها به یاری شما میآیند.
با توجه به اینکه برنامههای کامپایل شده تقریبا همیشه سریعتر از زبانهای برنامهنویسی تفسیر شده اجرا میشوند، زبانهایی مثل سی (C) و سیپلاسپلاس (++C) محبوبترین زبانها برای نوشتن بازیها هستند. جاوا و سی شارپ هر دو، تفسیر یا کامپایل میشوند که باعث افزایش عملکرد آنها میشود. به دلیل اینکه ماشین مجازی جاوا (Java Virtual Machine) کدهای جاوا را تفسیر میکند و چارچوب داتنت (.Net) سی شارپ را اجرا میکند، بالاترین سطح از بهینه بودن را ارائه میکنند. نتایج برخی از بنچمارکها نشان میدهد، سرعت اجرای برنامههای نوشته شده به زبان جاوا و سیشارپ با زبان کامپایل شده سیپلاسپلاس یکسان بوده یا گاهی اوقات بیشتر است.
سطح انتزاع (Abstraction Level)
راه دیگر برای مقایسه زبانهای برنامهنویسی بر مبنای سطح انتزاع (Abstraction Level) است. سطح انتزاع برنامه، بیانگر این موضوع است که یک زبان و برنامه نوشته شده با آن زبان برنامهنویسی چقدر به سختافزار نزدیک است. کد ماشین (Machine Code) پایینترین سطح است و زبان اسمبلی درست بالای آن قرار دارد.
سیپلاسپلاس بالاتر از سی است، زیرا ++C انتزاع بیشتری ارائه میدهد.
سطح انتزاع زبانهای جاوا و سی شارپ بالاتر از++C است، زیرا به یک زبان میانی به نام بایتکد (bytecode) کامپایل میشوند.
نحوه مقایسه زبانها
زبانهای کامپایل شده سریع
- زبان اسمبلی (Assembly Language)
- سی (C)
- سیپلاسپلاس (++C)
- پاسکال (Pascal)
- سی شارپ (#C)
- جاوا (Java)
تفسیری و سریع
- پرل (Perl)
- پیاچپی (PHP)
تفسیری با سرعت پایین
- جاوا اسکریپت (JavaScript)
- اکشن اسکریپت (ActionScript)
- بیسیک (Basic)
کد ماشین، دستوراتی است که یک پردازنده مرکزی اجرا میکند. این تنها چیزی است که یک CPU میتواند بفهمد و اجرا کند. زبانهای تفسیر شده به برنامهای به نام مفسر (Interpreter) نیاز دارند که هر خط از کد منبع برنامه را بخواند و آن را اجرا کند.
تفسیر سادهتر است
توقف، تغییر و اجرای مجدد برنامههایی که توسط زبانهای تفسیر شده نوشته شدهاند، ساده است و به همین دلیل است، یادگیری این زبانهای برنامهنویسی محبوب است. این زبانها نیازی به فرآیند کامپایل ندارند. بهطور مثال، یک گرافیکی بزرگ نوشته شده با ++C بر مبنای مقدار کدی که باید بازسازی شود و سرعت حافظه و CPU ممکن است از چند دقیقه تا چند ساعت طول بکشد.
زمانی که کامپیوترها برای اولین بار ظاهر شدند
هنگامی که کامپیوترها برای اولین بار در دهه 1950 به شکل گسترده مورد استفاده قرار گرفتند، برنامهها با کد ماشین نوشته میشدند، زیرا راه دیگری وجود نداشت. برنامهنویسان مجبور بودند برای وارد کردن مقادیر، سوئیچها را به صورت فیزیکی بچرخانند. یک فرآیند خستهکننده و کند که برای ساخت یک برنامه انجام میشد. این مسئله باعث شد تا نیاز به زبانهای کامپیوتری نزدیک به زبان انسان احساس شود.
اسمبلر: سریع اجرا – کند در نوشتن!
- زبان اسمبلی، نسخه قابل خواندن کد ماشین است و ترکیبی شبیه به vhMov A,$45 دارد. از آنجایی که کدهای زبان اسمبلی برای یک خانوادهای از CPUهای خاص نوشته میشوند، چندان قابل حمل نیستند و یادگیری و نوشتن آن زمانبر است. زبانهایی مانند C وابستگی به زبان اسمبلی را کاهش دادهاند، به جز در مواردی که کمبود رم داریم یا نیاز به کدهای حساس به زمان داریم. این فرآیند در کدهای مرکزی که قرار است در قلب یک سیستم عامل یا درایور کارت گرافیک اجرا شوند، انجام میشود.
اسمبلی یک زبان برنامهنویسی با پایینترین سطح از کدها
- زبان اسمبلی، کاملا سطح پایین است. بیشتر کدها مقادیر را تنها بین رجیسترهای CPU و حافظه جابهجا میکنند. هنگامی که قصد ساخت یک برنامه حقوق و دستمزد را دارید و به فکر گزینههایی مثل حقوق و کسر مالیات هستید، دیگر به دنبال جابهجایی مقدار یک ثبات و انتقال آن به مکان حافظه XYZ نیستید. به همین دلیل است که زبانهای سطح بالاتر مانند #C++ ،C یا جاوا پدید آمدهاند. برنامهنویس میتواند بر مواردی مثل حقوق، کسر، مالیات و غیره فکر کند و خود را درگیر مباحث سختافزاری مثل رجیسترها، حافظه و دستورالعملها نکند.
برنامهنویسی سیستمی با سی
- C اوایل دهه 1970 توسط دنیس ریچی ابداع شد. میتوان آنرا به عنوان یک ابزار همهمنظوره در نظر گرفت که کاملا مفید و قدرتمند است، اما به دلیل قدرت نسبتا بی پایانی که به برنامهنویس میدهد، سیستمهایی که برنامههای کاربردی نوشته شده با این زبان را اجرا میکنند، ناامن کند. C یک زبان سطح پایین است و زبان اسمبلی قابل حمل از آن نام برده میشود. سینتکس بسیاری از زبانهای اسکریپتی بر اساس C است که از آن جمله باید به جاوا اسکریپت، پیاچپی و اکشن اسکریپت اشاره کرد.
پرل در خدمت وبسایتها و ابزارهای کمکی
- پرل که در دنیای لینوکس محبوب است، یکی از اولین زبانهای وب بود و امروزه نیز محبوب است. برای انجام برنامهنویسی "سریع و کثیف" در وب بی رقیب است و بسیاری از وبسایتها با استفاده از آن ساخته شدهاند. البته، PHP این زبان برنامهنویسی را به حاشیه رانده است.
زبان برنامهنویسی PHP، سلطان بلامنازع
- PHP به عنوان یک زبان برای وبسرور ابداع شد و در تعامل با لینوکس، آپاچی، MySql و PHP پشته LAMP را پدید آورده است. یک زبان تفسیر شده است، اما از قبل کامپایل شده است، بنابراین کدهای آن به سرعت اجرا میشوند. پیاچپی برای توسعه برنامههای دسکتاپ استفاده نمی شود. این زبان بر مبنای ترکیب نحوی C، کار میکند و دارای اشیا و کلاسها است.
- زبان برنامهنویسی پاسکال، چند سال قبل از C به عنوان یک زبان آموزشی ابداع شد، اما در زمینه مدیریت رشتهها و فایلها عملکرد محدودی دارد. شرکتهای مختلف تصمیم گرفتند، کاستیهای آنرا برطرف کنند، اما تا زمانی که بورلند توربو پاسکال (برای Dos) و دلفی (برای ویندوز) به میدان وارد نشده بودند، با موفقیت روبرو نشد. این دو، پیادهسازیهای قدرتمندی بودند که قابلیتهای کافی را برای توسعه تجاری به این زبان افزودند. با این حال، بورلند در برابر مایکروسافت تن به شکست داد و محو شد.
++C یک زبان بدون رقیب
- سیپلاسپلاس، حدود ده سال پس از C طراحی شد و با ارائه پارادایم برنامهنویسی شی گرا و ویژگیهایی مانند استثناها و قالبها مورد توجه قرار گرفت. یادگیری تمام ویژگیهای زبان ++C کار بزرگی است که ارزشش را دارد. سیپلاسپلاس پیچیدهترین زبان برنامهنویسی این مقاله است، اما هنگامی که بر آن مسلط شدید، با هیچ زبان دیگری مشکلی نخواهید داشت.
#C بزرگ برگ برنده مایکروسافت در دنیای برنامهنویسی
- #C توسط معمار دلفی Anders Hejlsberg پس از مهاجرت به مایکروسافت پدید آمد. سی شارپ شباهت زیادی به جاوا دارد که جای تعجب نیست، زیرا هجلسبرگ آنرا توسعه داده است. سی شارپ را یاد بگیرید، مشکلی در یادگیری جاوا نخواهید داشت. هر دو زبان نیمه کامپایل شدهاند، به طوریکه به جای کامپایل به کد ماشین، به بایت کد کامپایل میشوند و سپس تفسیر می شوند.
جاوا اسکریپت در قلب برنامههای وب
- جاوا اسکریپت هیچ شباهتی به جاوا ندارد. زبان برنامهنویسی مبتنی بر سینتکس C با پشتیبانی از ویژگی Objects است و بیشتر در مرورگرها استفاده میشود. جاوا اسکریپت تفسیری است و کندتر از زبانهای کامپایل شده است، اما عملکرد خوبی در مرورگرها دارد. این زبان، پس از چند سال رکود، با ظهور AJAX دوباره متولد شد. ویژگی که اجازه میدهد تنها بخشهایی از یک صفحه وب که تغییر کردهاند از سرور دریافت و بارگذاری شوند. جاوا اسکریپت به شکل خوبی از غیرهمزمان و XML پشتیبانی میکند.
بیسیک مناسب برای تازهکارها
- Basic، مخفف کد دستورالعمل نمادین همه منظوره مخصوص مبتدیان است و برای آموزش برنامهنویسی در دهه 1960 ایجاد شد. مایکروسافت این زبان را در نسخههای مختلف مثل VBScript برای ساخت وبسایتها و ویژوال بیسیک توسعه داد. آخرین نسخه آن VB.NET است و شبیه به سیشارپ روی پلتفرم داتنت اجرا میشود و همان بایت کد CIL را تولید میکند.
Lua رایگان و ساده
- Lua یک زبان اسکریپتنویسی رایگان است که به زبان C نوشته شده است و ویژگیهایی مثل جمعآوری زباله و روتینها را ارائه میدهد. این زبان برنامهنویسی به خوبی با C++/C ارتباط برقرار میکند و در صنعت بازی (و همچنین غیر بازی) برای اسکریپت منطق بازی، محرکهای رویداد و کنترل بازی استفاده میشود.
کلام آخر
در حالی که هر کسی زبان مورد علاقه خود را دارد و زمان و منابعی را برای یادگیری نحوه برنامهنویسی سرمایهگذاری میکند، برخی از مسائل و برنامهها بهتر است با زبان مناسب حل شوند. بهطور مثال، شما از C برای نوشتن برنامههای وب استفاده نمیکنید و یک سیستم عامل را با جاوا اسکریپت نمینویسید. در مجموع هر زبانی که انتخاب میکنید، اگر C++ ،C یا #C باشد، حداقل میدانید در نقطه شروع مناسبی قرار دارید.
ماهنامه شبکه را از کجا تهیه کنیم؟
ماهنامه شبکه را میتوانید از کتابخانههای عمومی سراسر کشور و نیز از دکههای روزنامهفروشی تهیه نمائید.
ثبت اشتراک نسخه کاغذی ماهنامه شبکه
ثبت اشتراک نسخه آنلاین
کتاب الکترونیک +Network راهنمای شبکهها
- برای دانلود تنها کتاب کامل ترجمه فارسی +Network اینجا کلیک کنید.
کتاب الکترونیک دوره مقدماتی آموزش پایتون
- اگر قصد یادگیری برنامهنویسی را دارید ولی هیچ پیشزمینهای ندارید اینجا کلیک کنید.
نظر شما چیست؟