زبان های برنامه نویسی سطوح متفاوتی دارند. از محبوب ترین سطوح، میتوان به زبان های برنامه نویسی سطح پایین (Low-level programming language) و زبان های برنامه نویسی سطح بالا (High-level programming language) اشاره کرد. زبان برنامه نویسی سطح پایین بسیار به دستورات ماشین نزدیک است و به همین دلیل سینتکس آنها نسبت به زبان های سطح بالاتر خوانایی کمی دارد. زبان های برنامه نویسی را به سه سطح دسته بندی میکنند که در ادامه به بررسی هر سه سطح خواهیم پرداخت.
انواع سطوح زبان های برنامه نویسی
زبان برنامه نویسی سطح پایین
زبان هایی که در این دسته هستند این امکان را برای شما فراهم می آورند که بتوانید یک سازمان کامپیوتر (منظور از سازمان معماری یا ISA است، در درس معماری کامپیوتر آموزش جامع معماری کامپیوتر در مهندسی کامپیوتر، معماری کامپیوتر مجموعهای از قوانین و روشهایی است که به چگونگی طراحی، کارکرد، سازماندهی و پیاده سازی (ساخت) سیستمهای کامپیوتری میپردازد، در این صفحه به بررسی و آموزش کامل معماری کامپیوتر پرداخته شده است با مفهوم ISA آشنا میشوید) را برنامه ریزی و مدیریت کنید. در ادامه بیشتر با آن آشنا می شویم.
زبان برنامه نویسی سطح میانی
زبان های برنامه نویسی سطح میانی، مزیت های زبان برنامه نویسی سطح بالا و زبان برنامه نویسی سطح پایین را دارند، همچنین مشکلات زبان های سطح پایین را حل کرده اند. منظور از مشکلات٬ خوانایی پایین کد و وابستگی به سخت افزار است. زبان های میانی عموما برای توسعه نرم افزار های سیستم عامل (Operating System)سیستم عامل چیست به زبان ساده، چرا باید از OS استفاده کنیم؟این مقاله عالی به معرفی سیستم عامل (Operating System|OS) به زبان ساده پرداخته، همچنین بررسی کرده که چرا باید از سیستم عامل استفاده کنیم ٬ مدیریت پایگاه داده و … استفاده میشود. زبانهای C و Basic نمونه هایی از زبان های برنامه نویسی میانی هستند.
زبان برنامه نویسی سطح بالا
زبان برنامه نویسی سطح بالا از سایر سطوح بسیار محبوبتر است زیرا دستورات در این زبانها به محاورههای انسان نزدیکتر است و درک دستورات سادهتر است. این زبانها مثل یک بوم نقاشی لایه انتزاعی را روی لایه سخت افزارسخت افزار چیست - بررسی اجزای اصلی سخت افزار کامپیوتردر این صفحه بررسی شده که سخت افزار چیست و سخت افزار کامپیوتر به زبان ساده معرفی شده است، همچنین به بررسی اجزای اصلی سخت افزار کامپیوتر پرداخته شده است کشدهاند و شما نیاز نیست با بسیاری از موارد مثل مدیریت ثباتها٬ پشتهها٬ حافظهحافظه در کامپیوتر، همه چیز در مورد حافظه در معماری کامپیوتردر این مقاله به بررسی کامل حافظه در کامپیوتر، انواع حافظه در کامپیوتر، کش، روشهای آدرس دهی کش، نگاشت آدرس و موارد دیگر میپردازیم و گذرگاهها درگیر بشوید و تمام این ها بدون اینکه حتی شما بخواهید به آنها فکر کنید توسط زیر ساخت های این زبان ها فراهم میشود.در واقع کد های سطح بالا به کد های سطح پایین ترجمه میشوند و سپس روی ماشین اجرا میشوند. امروزه زبان های سطح بالای متفاوتی وجود دارند که هر کدام مزایا و معایب خود را دارند و برای یک حوزه خاص طراحی شده اند. برای آشنایی با انواع زبان برنامه نویسی سطح بالا می توانید به صفحه لیست زبان های برنامه نویسیلیست زبان های برنامه نویسی + تاریخچه، کاربرد و رتبه هر یکاین مقاله عالی لیست زبان های برنامه نویسی و تاریخچه و کاربرد آنها را بررسی کرده، همچنین محبوبیت هر یک از زبان های برنامه نویسی در بین سایر زبانها بررسی کرده مراجعه فرمایید.
زبان برنامه نویسی سطح پایین چیست؟
منظور از زبان برنامه نویسی سطح پایین به معنای بیاهمیت یا کم اولویت بودن آن نیست بلکه منظور این است که کدهایی که در این زبان ها نوشته میشود به سخت افزار بسیار نزدیک هستند و اصطلاحا انتزاع کدها بسیار کم است. در این زبان ها قابل حمل بودن (Portable) بودن خیلی مهم نیست و سعی میشود که کد ها برای معماری کامپیوتر آموزش جامع معماری کامپیوتر در مهندسی کامپیوتر، معماری کامپیوتر مجموعهای از قوانین و روشهایی است که به چگونگی طراحی، کارکرد، سازماندهی و پیاده سازی (ساخت) سیستمهای کامپیوتری میپردازد، در این صفحه به بررسی و آموزش کامل معماری کامپیوتر پرداخته شده است که روی آن اجرا میشوند، بهینه باشد.هدف اصلی زبان های برنامه نویسی سطح پایین ایجاد یک بستر است که بتوان با استفاده از زبان برنامه نویسی سطح بالا، نرم افزارها و برنامه های کاربردی را ایجاد کرد. زبان برنامه نویسی سطح بالا این امکان را ندارد که بطور مستقیم سخت افزار های کامپیوتری را مدیریت کند. بنابراین کد های این زبان ها توسط کامپایلر (Compiler)کامپایلر چیست و چگونه کار میکند و چرا از آن استفاده میشود؟کامپایلر (Compiler) یک برنامهی خاص برای ترجمه سورس کدهای (Source Code) یک زبان برنامه نویسی، به زبان ماشین یا بایت کد و یا یک زبان برنامه نویسی دیگر است به زبان برنامه نویسی سطح پایین تبدیل میشوند.این زبانها بسیار به صرفه هستند زیرا همانطور که گفته شد مستقیم روی سخت افزار سیستم اجرا میشوند و در نتیجه سرعت بسیار بالایی دارند.
ویژگی زبان های سطح پایین
زبان برنامه نویسی سطح پایین همانطور که گفته شد سرعت بسیار بالایی دارد ولی کار کردن با این زبان ها نسبت به زبان برنامه نویسی سطح بالا کمی دشوارتر است. در این سطح هیچ لایه انتزاعی وجود ندارد یا اگر هم وجود دارد بسیار کم است. بنابراین شما مستقیما با واحدهای یک سیستم کامپیوتری مثل ثباتها و… درگیر هستید و مدیریت و اجرا عملیاتها را باید خودتان کد نویسی کنید. پس مهم است که شما اطلاعاتی در مورد سخت افزار و معماری کامپیوترها داشته باشید.
کامپایلر
در زبانهای برنامه نویسی سطح بالا متناسب با هر زبان کامپایلری است که کدهای سطح بالا را به زبان ماشین تبدیل میکنند. در واقع ورودی یک کامپایلر (Compiler)کامپایلر چیست و چگونه کار میکند و چرا از آن استفاده میشود؟کامپایلر (Compiler) یک برنامهی خاص برای ترجمه سورس کدهای (Source Code) یک زبان برنامه نویسی، به زبان ماشین یا بایت کد و یا یک زبان برنامه نویسی دیگر است، یک زبان برنامه نویسی سطح بالا هست و خروجی آن کد ماشین (Machine code) است که متناسب با معماری سیستم مقصد تولید میشود.
اسمبلر
اسمبلر شبیه کامپایلر است اما تفاوت های بسیاری دارند، زمانی که پردازنده ها خلق شدند برای اینکه دستورات را به پردازنده بدهند از دنباله ای از صفر و یک استفاده میکردند. به عنوان مثال:
01110110 10000111 10011011 11110000 0111011 10101101 01110111 11000011
شاید برای شما این رشته نامفهوم باشد ولی برای کامپیوتر می تواند معنای یک عملیات ریاضی یا هر چیز دیگری داشته باشد. این زبان را زبان ماشین یا Machine code میگویند. زبان ماشین بر اساس معماری هر سیستم کامپیوتری، میتواند متفاوت باشد و این موضوع به معمار سیستم مربوط است.فهم زبان ماشین سخت بود بنابراین برای خوانایی بهتر زبان اسمبلی (Assembly language) را ارائه دادند که خوانایی بهتری داشت یک نمونه از دستورات آن بدین صورت است:
ADD R1,R2
این دستور در زبان اسمبلی دو ثبات R1 و R2 را با هم جمع میکند. اینجا بود که اسمبلر بوجود آمد اسمبلر کد هایی که به زبان اسمبلی نوشته شده است مثل نمونه بالا را دریافت و در خروجی آن کد زبان ماشین یعنی رشته ای از صفر و یک را برای اجرا تحویل ماشین میدهد. اسمبلر تغییری در کد نمیدهد فقط دستور را تبدیل به صفر و یک میکند در حالی که کامپایلر نه تنها تبدیل میکند بلکه کارهایی مثل: Optimization, Compacting, Delayed Load و … را انجام میدهد که بسیار حرفه ای صورت میگیرد.
نمونه ای از زبان های سطح پایین
زبان ماشین
زبان ماشین را به نامهای دیگری مثل Machine code یا Object code هم مینامند و همانطور که در بالا گفته شد زبان ماشین مجموعه ای از صفر و یک است که کامپیوتر قادر به خواندن و درک آن است. البته انسان هم میتواند آن را درک کند اما به سختی، و پیش نیاز آن هم این است که با ISA آن کامپیوتر آشنا باشد.
زبان اسمبلی
مفصل توضیح دادیم رسالت زبان اسمبلی چیست، نمونه ای از استفاده از زبان اسمبلی را در کرنل لینوکس میتوان مشاهده کرد. زبان اسمبلی گاهی در تولید Driver ها برای شناساندن وسایل جانبی به سیستم عامل یا در سیستم های بلادرنگ استفاده میشوند. اولین نسخه زبان اسمبلی در سال 1947 در دانشگاه لندن ارائه شد و سپس نسخه بهبود یافته دیگری برای شرکت EDSC توسعه یافت و سرانجام نسخه مدرن آن برای IBM 7090 توسعه پیدا کرد و توسعه دهندگان زیادی روی آن در ادامه کار کردند.
آیا C یا ++C زبان های سطح پایین هستند؟
این زبانها جز زبان های برنامه نویسی سطح پایین محسوب نمیشوند. شاید این زبانها گاهی در حوزه های خاصی استفاده شوند، مثل توسعه سیستم عامل ولی این بدان معنا نیست که سطح پایین هستند. این زبانها بسیاری از کارهایی که باید در زبان های سطح پایین انجام دهیم را ساده سازی کردهاند و یک لایه انتزاعی دارند. اما این زبان های برنامه نویسی نسبت به سایر زبان های برنامه نویسی امروزی، گاهی دستوراتی پیچیدهتر یا امکانات پایهای تری را در اختیار برنامه نویسان قرار میدهند. البته این زبانها نسبت به زبان های برنامه نویسی دیگر سرعت اجرا بالاتری دارند.در مورد اینکه این زبان ها در کدام سطح هستند منابع مختلف، نظرهای متفاوتی دادند بعضی زبان C را زبان میانی و بعضی دیگر سطح بالا در نظر گرفتهاند، ولی سی پلاس پلاسبرنامه نویسی سی پلاس پلاس چیست؟ مزایای برنامه نویسی C++؟برنامه نویسی سی پلاس پلاس چیست و چه کاربردی دارد؟ این صفحه عالی به بررسی مزایای برنامه نویسی C++ پرداخته و نمونه هایی از کدهای زبان برنامه نویسی ++C را آورده را در اکثر موارد سطح بالا در نظر گرفتهاند.
هدف از یادگیری زبان های برنامه نوسی سطح پایین
برای انتخاب اینکه آیا زبان های برنامه سطح پایین برای ما مناسب هستند یا خیر؟ باید بررسی کنید که علاقهی شما به کدام یک است. اگر علاقه به کار کردن در سطح سخت افزار و یا توسعه کرنل و Device Drivers را دارید یادگیری اینها مطلوب شماست البته ممکن است در بعضی موارد ناچار باشید زبان های سطح بالاتر مثل C را بکار بگیرید. این زبانها برای انجام عملیات با سرعت بالا بسیار مناسب هستند. ولی اگر علاقهتان به توسعه نرم افزارهای مدرن است زبان های سطح بالا گزینه مناسبتری هستند.
برخی منابع برای یادگیری
برای دیدن منابع آموزشی سایر زبانها به صفحه معرفی بهترین سایت های آموزش برنامه نویسی رایگانمعرفی بهترین سایت های آموزش برنامه نویسی رایگان 2023این مقاله عالی به معرفی معرفی بهترین سایت های آموزش برنامه نویسی رایگان خارجی و ایرانی پرداخته، همچنین به معرفی سایت های یادگیری آنلاین برنامه نویسی پرداخته مراجعه کنید.
جمع بندی
زبان های برنامه نویسی سه سطح دارند زبانهای برنامه نویسی سطح پایین منطبق بر سخت افزار هستند. زبان اسمبلی یک نمونه زبان برنامه نویسی سطح پایین است که توسط اسمبلر به زبان ماشین تبدیل میشود. زبان برنامه نویسی سطح بالا لایه انتزاعی قوی را ایجاد میکند و شما نیاز نیست تمام موارد اجرا یک عملیات ساده مثل مدیریت ثبات و حافظه را کنترل کنید. زبان های سطح بالا اکثرا توسط کامپایلر تبدیل به کد ماشین میشوند. این زبان های برای توسعه نرم افزار های مدرن مناسب میباشند.
1- بازار کار این زبانهای برنامه نویسی سطح پایین چگونه است؟
به دلیل خاص بودن حوزه این زبان ها بازار کار آنها محدود است و در ایران هم موقعیت های کاری برای این زبان ها کم است. اما در خارج از کشور موقعیت های کاری بیشتری وجود دارد.
2- آیا برای یادگیری زبان برنامه نویسی سطح پایین نیاز هست در مورد سخت افزار هم چیزی بدانیم؟
بله٬ همانطور که گفته شد این زبان ها مستقیم با واحد های سخت افزار ارتباط دارند و آشنا بودن با مفاهیم آنها به شما کمک میکند که بهتر بتوانید برنامه نویسی کنید.
3- آیا میشود از زبان های برنامه نویسی سطح پایین در زبان های برنامه نویسی سطح بالا استفاده کرد؟
در اواخر سال 1960 برخی زبان های برنامه نویسی سطح بالا مثل C و ALGOL این امکان را فراهم کردند که بتوانید به توابع زبان های سطح پایین دسترسی داشته باشید و آنها را فراخوانی کنید.