زبان برنامهنویسی سطح بالا
زبان برنامهنویسی سطح بالا (High-level programming language) برخلاف زبان برنامهنویسی سطح پایین، زبانی است که نسبت به زبان برنامهنویسی سطح پایین راحتتر قابل استفاده و قابل حمل بین سیستمهای متفاوت و دارای انتزاع بیشتری هستند. چنین زبانهایی عموماً از عملیات CPU مانند مدلهای دسترسی به حافظه و مدیریت حوزه دور هستند. پایتون یک زبان برنامه نویسی سطح بالا و C یک زبان برنامهنویسی سطح پایین است.
مشخصات زبانهای سطح بالا
عبارت زبانهای سطح بالا بدین معنی نیست که این زبان نسبت به زبانهای سطح پایین برتر هستند بلکه اگر شما میزان اطلاع از نحوه عملکرد رایانهها را به عنوان ملاک در نظر بگیرید برعکس این مطلب درست است. عبارت زبان سطح بالا در حقیقت به معنای دوری این زبانها از زبان ماشین است. به جای کار کردن با ثباتها، آدرسهای حافظه، و فراخوانی پشته زبان برنامهنویسی سطح بالا از متغیرها، آرایهها، و عبارات پیچیده ریاضی و منطقی استفاده مینماید. این زبانها مستقیماً مانند زبان اسمبلی به زبان ماشین ترجمه نمیگردند. ویژگیهای دیگر همانند توابع کار با رشتهها، مفاهیم شیگرایی، و کار با ورودی و خروجی در فایلها در آنها وجود دارد.
به بیان دیگر در حالی که زبان برنامهنویسی سطح بالا برنامهنویسی را آسانتر مینماید اما زبان برنامهنویسی سطح پایین برنامههای بهینهتری تولید میکند. در یک زبان سطح بالا این امکان را فراهم میسازد تا اجزای پیچیده را به اجزای سادهتر اما هنوز پیچیده تقسیم نموده تا برنامهنویس را از انجام کارهای پیچیده بازدارد. به این دلیل برنامههایی که نیاز به کار با سرعت بالا و بهینهتر دارند باید با زبان سطح پایین نوشته شود حتی اگر زبان سطح بالا این کار را سادهتر سازد.
زبانهای سطح بالا پر کاربردترین و در عین حال جذابترین و کاربردیترین محیطهای برنامه نویسی را شامل میشوند، چرا که محیط آن کاربر پسند(User Friendly) بوده و یادگیری اصطلاحات و مفاهیم آن در محیط و قالبی گرافیکی به کاربر ارائه میشود، برنامه نویسان به راحتی به یادگیری دستورهای و قواعد آن به دلیل اینکه به زبان محاوره ایی و انگلیسی نزدیک است میپردازند، اینگونه زبانها از سرعت کمتری نسبت به زبانهای سطح میانی و پایین برخوردار میباشد، به دلیل اینکه دستورهای بایستی به زبان قابل فهم برای ماشین تبدیل گردند که این خود زمانبر میباشد، ولی در عین حال فضای کمتری اشغال میکنند که نمونهایی از این زبانها، زبانهای برنامه نویسی پاسکال، C، ویژوال، دلفی، فرترن و جاوا میباشند.
امروزه با توجه به ساختار پیچیده ریزپردازندهها، کامپایلرهای پیشرفته با استفاده از تکنیکهای بهینهسازی برنامههای بهتری از برنامههای نوشته شده با دست فراهم مینمایند.
انواع زبانهای سطح بالا
معنای نسبی
توجه به این نکته ضروری است که عبارت سطح بالا و سطح پایین نسبی هستند. در ابتدا زبان اسمبلی سطح پایین و زبان کوبول و سی و غیره به دلیل استفاده از متغیر و توابع و عبارات سطح بالا محسوب میشدند. با این وجود برنامهنویسان ممکن است سی را یک زبان سطح پایین محسوب نمایند چرا که امکان دسترسی به حافظه به صورت مستقیم و امکان دسترسی به کد اسمبلی را نیز فراهم میسازد. برای اطلاع بیشتر در این مورد وبسایت C۲'s page about high-level languages را ببینید
مدلهای اجرا
سه روش عمومی برای اجرای برنامههای مدرن زبانهای سطح بالا وجود دارد :
تفسیر شده
- وقتی کد برنامه نوشته شده در زبان برنامهنویسی تفسیر میشود ، سطر به سطر آن خوانده شده و به شکل مستقیم بدون مرحله ترجمه کامل برنامه ، اجرا می گردد ، برنامهای که مفسر نام دارد هر عبارت از برنامه را می خواند ، جریان برنامه را دنبال میکند ، سپس تصمیم میگیرد که چه کاری انجام بدهد و سپس همان کار را انجام میدهد. ترکیبی از یک مفسر و یک مترجم هر عبارت را به زبان ماشین برمی گرداند و آن را اجرا میکند ؛ کد ماشین به دست آمده بعد از اجرا دور انداخته میشود و اگر نیازی به اجرای دوباره همان عبارت باشد ، این کار از نو انجام خواهد شد. در مقایسه با دو روش بعدی مفسرها سادهترین رفتار را برای اجرای برنامه دارند .
ترجمه شده
- وقتی که کد نوشته شده با یک زبان برنامهنویسی ترجمه میشود ، همه دستورها قبل از اجرا تبدیل به فرم قابل اجرا ، میشوند . دو نوع ترجمه وجود دارد:
- تولید کد ماشین
- بعضی از مترجمها کد مبدأ را به شکل مستقیم به زبان ماشین ترجمه میکنند . این حالت روش اصلی ترجمه برنامهها است و زبانهایی که به این شکل مستقیماً به کد ماشین تبدیل میشوند را میتوان "زبانهای با ترجمه واقعی" نامید. زبان اسمبلی را ببینید.
- تولید کد ماشین
- نمایش میانی
- زمانی که کد نوشته شده در یک زبان برنامهنویسی به یک شکل میانه ترجمه شود بهطوریکه بتوان بدون نیاز به استفاده مجدد از کد مبدأ ، این کد میانه را بهبود داد یا برای اجرای بعدی ذخیره کرد ، یک نمایش میانی ساخته شدهاست. وقتی این کد میانه ذخیره شود ، ممکن است شکل بایت کد به خود بگیرد. در این حالت فرم میانه ذخیره شده باید توسط یک مفسر ، تفسیر شود یا برای اجرا بعدی توسط یک مترجم ترجمه شود. ماشینهای مجازی که میتوانند این کدهای میانه را به شکل مستقیم اجرا کنند یا آنها را برای استفاده بعدی به کد ماشین تبدیل کنند ، باعث شده اند مرز مشخصی بین زبانهای با ترجمه واقعی و ترجمه میانی وجود نداشته باشد.
- نمایش میانی
ترجمه کد به کد یا بین زبانی
- کدهای نوشته شده در یک زبان ممکن است به کدهای زبان برنامهنویسی سطح پائین تری ترجمه شوند ، به این علت که مترجمهای خاص آن زبان بیشتر در دسترس هستند. جاوا اسکریپت و زبان برنامهنویسی سی هدفهای مشترکی برای چنین ترجمههایی هستند ، به عنوان مثال به زبانهای کافی اسکریپت ، چیکن یا ایفل را ببینید.
جستارهای وابسته
- انتزاع
- زبان برنامهنویسی سطح پایین
- زبان برنامهنویسی خیلی سطح بالا