زبان ماشین: زبان اصلی رایانه با صفر و یک
زبان ماشین چیست و چگونه کار میکند؟
زبان ماشین، تنها زبانی است که پردازندهٔ رایانه به طور مستقیم میفهمد. این زبان از دنبالهای از اعداد صفر و یک (بیتها) تشکیل شده است که هر کدام به پردازنده دستوری میدهند. برای مثال، ممکن است دنبالهٔ 10110000 01100001 به پردازنده بگوید که عدد ۹۷ را در یک محل خاص از حافظه ذخیره کند.
هر دستور در زبان ماشین معمولاً از دو بخش تشکیل شده است: بخش «کد عملیات» که مشخص میکند چه کاری باید انجام شود (جمع، تفریق، مقایسه و ...) و بخش «عملوند» که مشخص میکند دادهها کجا هستند. از آنجایی که همه چیز به صورت صفر و یک نوشته میشود، کوچکترین اشتباه در نوشتن یک بیت، باعث میشود که دستور کاملاً تغییر کند و برنامه درست کار نکند.
| سطح زبان | نمایش | قابلفهم برای |
|---|---|---|
| زبان ماشین | صفر و یک | فقط رایانه |
| زبان اسمبلی | کلمات مخفف (مثلاً MOV, ADD) | برنامهنویسان حرفهای سطح پایین |
| زبان سطح بالا (مانند پایتون) | دستورات نزدیک به زبان انسان | همهٔ برنامهنویسان |
از زبان ماشین تا زبان برنامهنویسی: نقش مترجمها
از آنجایی که کار با زبان ماشین برای انسانها بسیار دشوار است، دانشمندان زبانهای سطح بالاتری مانند پایتون، جاوا و سی را ساختهاند که به زبان انسان نزدیکتر هستند. اما رایانه هنوز فقط صفر و یک را میفهمد. پس چگونه کدهای پایتون به زبان ماشین تبدیل میشوند؟ این کار توسط برنامههای خاصی به نام «مترجم» انجام میشود.
دو نوع مترجم اصلی وجود دارد: «مفسر» و «کامپایلر». مفسر (مثل مفسر پایتون) کد را خط به خط میخواند و همان لحظه آن را به زبان ماشین تبدیل و اجرا میکند. اما کامپایلر (مثل کامپایلر سی) کل کد را یکجا به زبان ماشین تبدیل میکند و یک فایل اجرایی میسازد. در هر دو صورت، هدف نهایی یکی است: تبدیل کدهای قابلخوان برای انسان به صفر و یک برای رایانه.
این لایههای مختلف (زبان ماشین، اسمبلی، و زبانهای سطح بالا) باعث شدهاند که برنامهنویسی برای انسانها ممکن و لذتبخش شود. شما میتوانید با پایتون یک برنامه بنویسید و نگران این نباشید که پردازنده چگونه آن را به صفر و یک تبدیل میکند. مفسر یا کامپایلر این کار را برای شما انجام میدهد. البته دانستن اینکه رایانه در نهایت با چه زبانی کار میکند، به درک عمیقتری از برنامهنویسی کمک میکند.
پرسشهای کلیدی دربارهٔ زبان ماشین
آیا امروزه کسی مستقیماً با زبان ماشین برنامه مینویسد؟
تقریباً هیچ کس. حتی برنامهنویسان سیستمعامل و سختافزار نیز معمولاً از زبان اسمبلی استفاده میکنند که کمی بالاتر از زبان ماشین است و با کلمات مخفف کار میکند. زبان ماشین بیشتر برای درک نحوهٔ کار پردازنده در کتابهای درسی استفاده میشود.
آیا زبان ماشین در همهٔ رایانهها یکسان است؟
خیر. هر نوع پردازنده (مثل اینتل، ایامدی، یا پردازندههای تلفن همراه) مجموعه دستورات خاص خود را دارد. به همین دلیل، برنامهای که برای یک پردازنده نوشته شده است، روی پردازندهٔ دیگری کار نمیکند مگر اینکه بازنویسی شود.
چرا صفر و یک پایهٔ زبان ماشین است؟
چون سختافزار رایانه بر اساس مدارهای الکترونیکی ساخته شده است که دو حالت دارند: روشن (۱) و خاموش (۰). پردازنده با تشخیص این دو حالت، دستورها را اجرا میکند. این سیستم دودویی (باینری) سادهترین و مطمئنترین راه برای طراحی مدارهای الکترونیکی است.