از سال 1950 تا به امروز، متخصصین علوم کامپیوتری، هزاران زبان برنامهنویسی را ایجاد کردهاند. بسیاری از آنها ناشناس باقی ماندهاند و شاید مثلاً فقط برای تز دکترا ساخته شدهاند. برخی نیز برای مدت زمان محدودی محبوبیت پیدا کردند و بعد به دلیل فقدان پشتیبانی لازم یا به این دلیل که نوع خاصی از کامپیوترها را پشتیبانی میکردند، به مرور از پرده اذهان، محو شدند. برخی از زبانهای برنامهنویسی، شکل دیگری از یکی از زبانهای برنامهنویسی موجود هستند و فقط امکان اجرای آن برنامه در ابزارهای کامپیوتری مختلف را در خود جای دادهاند.
برای اطلاعات بیشتر در این مورد، مطلب معرفی کامل انواع زبانهای برنامهنویسی را مطالعه کنید.
مقایسه زبانهای برنامهنویسی
از جنبههای مختلفی میتوان زبانهای برنامهنویسی را با هم مقایسه کرد، اما در این مطلب برای سادهسازی موضوع میخواهیم زبانهای برنامهنویسی را بر اساس متد کامپایل (Compılatıon) و سطح انتزاع برنامهها با هم مقایسه کنیم.
کامپایل به زبان ماشین
در برخی زبانها برنامهها (کدهای نوشته شده توسط انسان) به طور مستقیم به زبان ماشین، تبدیل میشوند. همان دستورالعملهایی که CPU (پردازنده کامپیوتر) میتواند مستقیماً آنها را درک کند. به این فرایند تغییر شکل کدهای برنامه، کامپایل (Compilation) گفته میشود. زبانهای اسمبلی، سی (C) ، ++C و پاسکال، نمونههایی از زبانهای کامپایل شده هستند.
زبانهای تفسیر شده
باقی زبانهای برنامهنویسی، یا مثل JavaScript، Basıc یا Actionscript ، تفسیر شده هستند یا مثل Java و #C ، ترکیبی از کامپایل و تفسیر در آنها وجود دارد.
زبانهای تفسیر شده، به صورت رانتایم پردازش میشوند و در آنها خواندن، تجزیه و تحلیل و اجرای کدها به صورت خط به خط انجام میسشود. از آنجا که این زبانها هر بار نیاز دارند خطوط کد را در یک حلقه، بازپردازش کنند، سرعت آنها پایین است. این یعنی کدهای تفسر شده، بین 5 تا 10 برابر، کندتر از کدهای کامپایل شده هستند. زبانهای تفسیر شده مانند Basic و JavaScript، کندترین زبانها هستند. مزیت این زبانها این است که بعد از تغییرات، نیاز به کامپایل مجدد ندارند و هنگام یادگیری یک زبان برنامهنویسی، این ویژگی بسیار مفید واقع میشود.
به دلیل این که زبانهای کامپایل شده، تقریباً همیشه سریعتر از زبانهای تفسیر شده هستند، برای نوشتن بازی از زبانهای کامپایل شدهای مثل C و ++C استفاده میشود. Java و #C نیز هر دو، هم کامپایل و هم تفسیر میشوند و این ویژگی، باعث اثربخشی بالای این زبانها شده است. از آنجا که Virtual Machine که کدهای Java را تفسیر میکند و Net Framework. که #C را اجرا میکند، به میزان زیادی بهینه شدهاند، ادعا میشود سرعت برنامههای ساخته شده توسط Java و #C با زبان کامپایل شدهای مثل ++C برابری کرده و حتی از آن پیشی میگیرند.
سطح انتزاع یا Abstraction Level برنامهها
زبانهای برنامهنویسی را میتوان بر اساس سطح انتزاع (Abstractıon Level) آنها با هم مقایسه کرد. سطح انتزاع برنامه، میزان نزدیکی یک برنامه خاص به سختافزار را بیان میکند. کد ماشین یا Machıne Code، پایینترین سطح انتزاع است و زبان Assembly، درست بالای آن قرار دارد. زبان ++C بالاتر از C قرار دارد و سطح انتزاع بالاتری نسبت به آن دارد. Java و #C نسبت به ++C سطح انتزاع بالاتری دارند چرا که این دو زبان، به یک زبان سطح میانی به نام bytecode تفسیر میشوند.
مقایسه زبانهای برنامهنویسی
-
Fast Compiled Languages
- Assembly Language
- C
- C++
- Pascal
- C#
- Java
-
Reasonably Fast Interpreted
- Perl
- PHP
-
Slow Interpreted
- JavaScript
- ActionScript
- Basic
کد ماشین، حاوی دستورالعملهاییست که CPU آنها را اجرا میکند و در واقع، تنها چیزی که CPU قادر به درک و اجرای آن است، همین دستورالعملها هستند. زبانهای تفسیر شده به یک برنامه کاربردی به نام Interpreter یا مفسر نیاز دارند که کدهای برنامه را سطر به سطر میخواند و آنها را اجرا میکند.
تفسیر، آسانتر است
توقف، تغییر و اجرای مجدد برنامههایی که در زبانهای تفسیر شده نوشته شدهاند، بسیار آسان است و به همین دلیل، این زبانها در میان کسانی که میخواهند برنامهنویسی یاد بگیرند، بسیار محبوبترند. این زبانها به هیچ مرحلهای تحت عنوان کامپایل نیاز ندارند. فرایند کامپایل میتواند بسیار کند باشد. کامپایل برنامه گرافیکی بزرگی که در ++C نوشته شده، بسته به تعداد دفعات نیاز به بازسازی کد و سرعت پردازشگر و CPU ممکن است ساعتها زمان ببرد.
پیشنهاد مقاله: شروع آموزش برنامهنویسی
وقتی برای اولین بار سر و کله کامپیوتر ظاهر شد
در سال 1950 وقتی کامپیوتر برای اولین بار در دنیا محبوبیت پیدا کرد، برنامهها به زبان ماشین نوشته میشدند و هیچ راه دیگری برای برنامهنویسی کامپیوترها وجود نداشت. برنامهنویسها باید مقدار سوییچهای فیزیکی را به صورت دستی تغییر میدادند. چنین روش خستهکننده و زمانبری باعث شد نیاز به خلق زبانهای سطح بالاتر کامپیوتر احساس شود.
اسمبلر: سریع در اجرا- کند در نوشتن
زبان Assembly، نسخه قابل خواندن کد ماشین بوده و چیزی شبیه کد زیر است:
vhMov A,$45
زبان Assembly، پایینترین سطح کد است
زبان Assembly، سطح بسیار پایینی دارد. بیشتر کدهای این زبان، فقط مقادیر را بین ثباتهای CPU و حافظه جابهجا میکنند. اما اگر بخواهید یک برنامه حقوق و دستمزد بنویسید، ترجیح میدهید به مواردی چون ارقام حقوق و مالیات فکر کنید نه ثبت رقم A و انتقال آن از حافظه به موقعیت XYZ. دلیل ارجحیت زبانهای سطح بالاتری چون ++C ، C یا Java نیز همین است. این زبانها به برنامهنویسها امکان میدهند که راجع به مسائل اطراف موضوع برنامه (مثل حقوق، مالیات، بیمه و غیره) فکر کنند و تفکر راجع به مسائل مرتبط با سختافزار (مثل حافظه، ثبت کننده و غیره) را به کامپیوتر واگذار کنند.
برنامهنویسی سیستمها با C
زبان C در سال 1970 توسط دنیس ریچی (Dennıs Rıtchıe) ساخته شد. میشد C را به عنوان ابزاری مفید و قدرتمند با اهداف عمومی درنظر گرفت ولی به راحتی ممکن بود باگهایی وارد برنامهها شوند و همین باعث ناامن شدن سیستمها میشد. زبان C یک زبان سطح پایین است و به عنوان یک زبان Assembly پرتابل درنظر گرفته میشود. سینتکسهای بسیاری از زبانهای اسکریپتی (مثل JavaScript، PHP و ActionScript) بر اساس C کار میکنند.
زبان Perl : وبسایتها و برنامههای سودمند
یکی از برنامههای بسیار محبوب دنیای لینوکس، Perl نام دارد. یکی از اولین زبانهای وب که امروزه همچنان از محبوبیت بالایی برخوردار است. این برنامه برای نوشتن سریع برنامههای وب، بی رقیب است و بسیاری از وبسایتها توسط این برنامه هدایت میشوند. هر چند امروزه PHP به عنوان یک زبان اسکریپتی وب باعث شده تا حدودی از محبوبیت آن کاسته شود.
کدنویسی وبسایتها با PHP
PHP به عنوان زبان وبسرورها طراحی شد و ترکیب MySQL، Apache، Lınux و PHP یا به اختصار، LAMP از محبوبیت بالایی برخوردار است. PHP یک زبان تفسیرشده ولی از قبل کامپایل شده است و به همین دلیل، سرعت قابل قبولی دارد. از PHP میتوان برای ساخت برنامههای دسکتاپ نیز استفاده کرد ولی کاربرد آن در این زمینه، وسعت چندانی ندارد. PHP بر اساس سینتاکس C کار میکند و آبجکت و کلاس نیز در آن وجود دارد.
زبان Pascal، چندسال قبل C به عنوان یک زبان آموزشی ابداع شد ولی به دلیل ضعف در مدیریت استرینگها و فایلها، محدودیتهایی داشت. بعدها چند سازنده تصمیم گرفتند این زبان را گسترش دهند ولی این جریان، تا زمانی که شرکت Borland، زبان Turbo Pascal (برای DOS) و Delphi (برای ویندوز) را به طور جداگانه عرضه نکرده بود، با موفقیت رو به رو نشده بود. این دو زبان، کاربرد بسیار گستردهای پیدا کرد تا جایی که توزیع تجاری آنها امکانپذیر شد. اما شرکت Borland قادر به رقابت با مایکروسافت نبود و از گود رقابت خارج شد.
++C : یک زبان باکلاس
++C یا C بعلاوه کلاس، ده سال بعد از C پا به میدان گذاشت و با موفقیت توانست برنامهنویسی شیء گرا را در کنار ویژگیهایی نظیر استثناها و الگوها به C معرفی کند. یادگیری کل ++C وظیفه بسیار سنگینیست که یک نفر میتواند برعهده بگیرد: این زبان، با فاصله زیاد، پیچیدهترین زبان برنامهنویسی موجود است ولی اگر بر آن مسلط شوید، برای یادگیری هیچ زبان دیگری مشکل نخواهید داشت.
#C : شرطبندی بزرگ مایکروسافت
#C زبانیست که توسط معمار برنامه Delphi، اندرس هیلسبرگ (Andres Hejlsberg) خلق شد. او پس از مهاجرت به مایکروسافت و زمانی که توسعهدهندگان Delphi مشغول کار با ویژگیهایی چون Windows Form بودند، زبان #C را خلق کرد.
سینتکس #C ، شباهت بسیاری به Java دارد که البته چیز عجیبی نیست. زیرا هیلسبرگ بعد از انتقال به مایکروسافت، روی ++J نیز کار کرده بود. اگر #C را یاد بگیرید، تا یادیگیری Java نیز راه زیادی پیش رویتان نخواهد بود. هر دوی این زبانها نیمه کامپایلشده هستند و به همین دلیل، به جای کامپایل به زبان ماشین، به زبان bytecode کامپایل میشوند (#C به CIL کامپایل میشود ولی Bytecode و CIL شبیه یکدیگرند) و سپس تفسیر میشوند.
پیشنهاد مقاله: مقایسه کامل #C و PHP
JavaScript : برنامهای در مرورگر شما
JavaScript هیچ شباهتی به Java ندارد. یک زبان اسکریپت نویسی بر اساس سینتاکس C که شیءگرایی را پشتیبانی میکند و اصلیترین کاربرد آن در مرورگرهاست. JavaScript یک زبان تفسیر شده است و سرعت آن در مقایسه با کدهای کامپایل شده بسیار پایینتر است ولی در مرورگرها به خوبی از عهده کارهای خود بر میآید.
شرکت Netscape با ابداع JavaScript توانست موفقیت خود را اثبات کند و بعد از چند سال با ارائه AJAX (ترکیب اسامی JavaScript و XML) ، دور جدیدی از موفقیت را تجربه کند. AJAX این امکان را برای صفحات وب فراهم میکند که بدون نیاز به دریافت مجدد کل صفحه از سرور، نسخه جدید آن را به روز نماید.
ActıonScrıpt : یک زبان پر زرق و برق
ActıonScrıpt، یکی از کاربردهای JavaScript است با این تفاوت که صرفاً در برنامههای Macromedia Flash کاربرد دارد. این برنامه اساساً با استفاده از تصاویر وکتور، برای ساخت بازیهای ویدیویی و رابطهای گرافیکی کاربر پیچیده که همگی در مرورگر اجرا میشوند، کاربرد دارد.
Basıc برای تازهکارها
زبان Basıc، مخفف Begınners All-purpose Symbolic Instruction Code است و در سال 1960 با هدف آموزش برنامهنویسی ساخته شد. مایکروسافت، این زبان را در نسخههای مختلفی ارائه نمود. نسخههایی چون VBScrıpt برای ساخت وبسایت و Visual Basic که بسیار موفق بود. آخرین نسخه آن نیز VB.Net است و مانند #C در پلتفورم NET. اجرا میشود.
مجتمع دانش و فناوری بامداد: بوتکمپ برنامهنویسی
نتیجهگیری
هرچند، هر کس زبان برنامهنویسی مورد علاقه خود را دارد و روی یادگیری آن سرمایهگذاری میکند، اما بهترین راه حل برخی مشکلات فقط در یک برنامه خاص قابل دستیابیست.
مثلاً برای ساخت برنامههای تحت وب از زبان C استفاده نمیکنیم و برای ساخت یک سیستم عامل، به سراغ JavaScript نمیرویم. اما اگر زبانی که برای یادگیری انتخاب میکنید ++C ، C یا #C باشد، حداقل، مطمئنید که در مسیر درست قرار گرفتهاید.