به نام خدا
Binary 1
باینری 1 :
سلام دوستان . من خیلی فکر کردم و با خودم گفتم بهتر است سخت ترین تصمیم زندگی ام را بگیرم و خودم و شما را راحت کنم . بله تصمیم گرفتم هدف اصلی ام از وبلاگنویسی که همان احیا و ترویج زبانهای ماشین و اسمبلی بود را ادامه دهم .
اما از انجاییکه اسمبلی نیز همانند زبانهای سطح بالا صدها کامپایلر جورواجور دارد و شما را سردرگم و مردد می کند لذا تصمیم گرفتم از این پست به بعد منحصرا زبان ماشین را تدریس نمایم .
من به حد کافی کامپایلرهای مدرن زبان اسمبلی از قبیل masm ، Fasm و RosAsm را به شما و کاربران سایر سیستمهای وبلاگدهی معرفی کرده ام و لینک دانلود را نیز در وبلاگهای بلاگ بیان و بلاگ اسکای قرار داده ام .
بنابراین دلیلی نمی بینم که بیش از این روی زبان اسمبلی و کامپایلرهای مختلف اش مانور بدهم و لازمست قدری به سخت افزار نزدیکتر شوم و شما را به دنیای شگفت انگیز زبان ماشین که در حالت کلی به آن باینری گفته می شود وارد کنم .
هم من و هم شما از تردید و دودلی نفرت داریم و دوست داریم هرچه زودتر تکلیف مان روشن شود .
لذا من رسما از این پست به بعد منحصرا زبان ماشین را به شما آموزش می دهم و خیال خودم و شما را راحت می کنم .
کاربران تمام سیستم عامل های دنیا می توانند از Fasm برای برنامه نویسی با زبان اسمبلی استفاده کنند .
اما از آنجاییکه 90 درصد کاربران دنیا کاربر ویندوز می باشند و نظر به اینکه این تعداد در آینده تعدادشان بیشتر می شود و با توجه به امنیت بسیار بالای ویندوز 10 و افزایش تعداد کاربران این سیستم عامل و البته سازگاری کامل زبان ماشین با ویندوز 10 ، تصمیم گرفتم برنامه نویسی با زبان ماشین را منحصرا براساس معماری و ساختار نرم افزارهای ویندوز آموزش دهم .
پیشاپیش از کاربران سایر سیستم عاملها عذرخواهی می کنم ولی این دوستان باید قبول کنند که آینده در دستان شرکت مایکروسافت و سیستم عامل ویندوز است . ما مردم دنیا چه بخواهیم چه نخواهیم ویندوز سیستم عامل اول و آخرمان است و مایکروسافت نیز تنها شرکت نرم افزاری است که ویندوز می سازد و امنیت سیستمهای ما را تامین می کند .
الان ویندوز 10 بواسطه ی ویندوز دفندر ، امن ترین سیستم عامل دنیا می باشد و در دنیای دسکتاپ و سرور هیچ آنتی ویروسی به گرد پای ویندوز دفندر نمی رسد .
سیستم عاملهای موبایل و تبلت نیز در آینده ، ویندوز خواهند بود و اندروید و آی او اس در مقابل ویندوز 10 ایکس شانسی نخواهند داشت . مایکروسافت هرگز از موضع خود در قبال ساخت سیستم عامل ویندوزی برای گوشیهای هوشمند و تبلت و سایر لوازم شخصی و خانگی کوتاه نمی آید .
مایکروسافت یک شرکت جهانی و بین المللی است و ابرغول دنیای نرم افزار است و هزاران شرکت ریز و درشت در دنیا منحصرا برای ویندوز ، نرم افزار می سازند .
اخیرا ویندوز 10 اینترپرایس آپدیتهای مهم و امنیتی فراوانی را دریافت کرده است و عملا امنیت این سیستم عامل روز به روز بیشتر و کار هکرهای کلاه سیاه روز به روز دشوارتر می شود .
اگر امنیت می خواهید به ویندوز 10 اینترپرایس مهاجرت نمایید و هر روز آنرا آپدیت کنید تا هیچ هکری نتواند امنیت شما را به خطر بیاندازد .
اگر گوشی ویندوزی (لومیا ) در دست دارید آنرا دور نریزید و قدرش را بدانید زیرا این گوشیها از هرجهت استاندارد و قدرتمند و امن می باشند و البته آپدیتهای امنیتی را هنوز هم دریافت می کنند در حالیکه گوشیهای اندروید هرگز نسخه ی جدید اندروید را دریافت نمی کنند . خودم دو دستگاه گوشی اندروید یکی ال جی و دیگری سامسونگ دارم . به هیچ وجه نسخه های جدید اندروید را دریافت نکرده اند زیرا اندروید رو به زوال است و گوگل مالک اندروید با مایکروسافت به توافق رسیده اند که در آینده سیستم عامل ویندوز جایگزین اندروید شود .
بهرحال با حمایتهای قدرتهای بزرگ و دولتها و شرکتهای ثروتمند از مایکروسافت و سیستم عامل ویندوز و درآمدهای فراوان و نجومی مایکروسافت ، عملا آینده ی دنیای فناوری اطلاعات در دست سیستم عامل ویندوز شرکت مایکروسافت خواهد بود .
ویندوز هرگز متوقف نمی شود و انطور که من شاهد هستم مایکروسافت روز به روز بر قدرت و کارایی و امنیت ویندوز اضافه می کند . زیرا پول و حمایت مادی و معنوی و انگیزه و پشتیبانی کافی برای ادامه دادن به توسعه ی ویندوز را دارد و از انجاییکه بیش از 2 میلیارد کاربر وفادار به ویندوز در دنیا منحصرا از ویندوز استفاده می کنند و دولت آمریکا نیز بشدت طرفدار ویندوز است و به مایکروسافت میلیونها دلار بابت توسعه ی ویندوز کمک مالی می کند و با توجه به ساخته شده میلیاردها نرم افزار برای ویندوز توسط برنامه نویسان و توسعه دهندگان از سرتاسر دنیا و مالکیت گیتهاب توسط مایکروسافت ، عملا همه ی پارامترها به نفع ویندوز خواهد بود .
بنابراین سخن کوتاه می کنم و می گویم: ویندوز سیستم عامل آینده است و من نیز برای سیستم عامل آینده برنامه نویسی را آموزش می دهم . به همین راحتی .
از هر لحاظ که فکر کنید برنامه نویسی برای دهها سیستم عامل یا دهها پردازنده یک کار کاملا بیهوده است .
بجای اینکه برای دهها سیستم عامل و پردازنده ی جورواجور و ناسازگار برنامه نویسید بهتر است فقط برای وینتل ( ویندوز + اینتل ) برنامه بسازید و وقتتان را بی جهت هدر ندهید .
گوشیهای هوشمند اندرویدی طی چند سال آینده فراموش می شوند و جای خود را به نانوکامپیوترهای هوشمند ویندوزی شرکت مایکروسافت خواهند داد .
پس از همین حالا اندروید را فراموش کنید .
+
خب با این مقدمه ی طولانی حالا قصد دارم روی زبان ماشین پردازنده ی اینتل و معماری نرم افزارهای ویندوز متمرکز شوم و روش برنامه نویسی با زبان ماشین را به مرور زمان از این پست تا آخرین پست ( پست شماره ی 5000 ) را تدریس نمایم . خب اینکار چندین سال طول می کشد ولی ایرادی ندارد زیرا من فرصت کافی برای استراحت و تهیه ی منابع آموزشی را خواهم داشت . هرچند همین حالا نیز منابع آموزشی فراوانی دارم که قصد دارم از آنها برای تدریس استفاده نمایم .
من پست بعدی را با تاخیر چند روزه منتشر می کنم تا منابع آموزشی کامل و غنی در دست داشته باشم و با دست پر به اینجا بیایم . این پست را علی الحساب مطالعه کنید . یک هفته کامل انرا خوب مطالعه کنید تا من برگردم و تدریس را از پست بعدی شروع کنم . انشاا...
+
+
زبان ماشین هزاران امتیاز نسبت به تمامی زبانهای برنامه نویسی سطح بالا و سطح پایین دارد که من برخی از آنها را در پست های قبلی همین وبلاگ شرح داده ام و بازهم شرح خواهم داد و البته سعی می کنم تمامی مزایای زبان ماشین نسبت به زبانهای دیگر را ابتدا ردیف کنم و سپس توضیح دهم. بعد شروع به تدریس خواهم کرد .
+
زبان ماشین یک زبان جهانی و بین المللی است و شامل همه چیز می شود زبان ماشین صرفا زبان برنامه نویسی و مهندسی معکوس نیست بلکه زبان همه منظوره برای تمامی مقاصد و اهداف می باشد . زبان ماشین را اصطلاحا باینری نیز می گویند هرچند باینری فقط یکی از سیستمهای عددی زبان ماشین می باشد . ( زبان ماشین در 4 سیستم باینری ، دسیمال ، هگزادسیمال و اوکتال بکار می رود . در هگز ادیتورها غالبا سیستم هگزادسیمال را می بینیم و بکار می بریم چون ساده تر و قابل فهمتر است ) .
+
برای برنامه نویسی با زبان ماشین می توانید از هرنوع هگز ادیتور Hex editor دلخواهی استفاده کنید . هر هگز ادیتور که باشد فرقی نمی کند . این یک مزیت بسیار بزرگ است که فقط منحصر به زبان ماشین است و سایر زبانها حتی اسمبلی از این مزیت محروم هستند .
درعمل و درواقع ، Hex editor در حکم یک IDE و محیط برنامه نویسی زبان ماشین محسوب می شود . لذا شما از تمام هگز ادیتورهای دنیا می توانید بعنوان محیط برنامه نویسی زبان ماشین تحت هر سیستم عاملی استفاده نمایید .
+
من برای تدریس زبان ماشین سعی می کنم از دو مبنای رایج یعنی باینری و هگزادسیمال استفاده نمایم . سایر مبناها یعنی دسیمال و اوکتال به ندرت بکار می روند و البته کار کردن با دو سیستم ساده تر از کارکردن با چهار سیستم است .
+
من قبلا در همین وبلاگ حروف الفبای زبان ماشین را بر مبنای هگزادسیمال از 00 تا FF نوشته ام . تعدادشان 255 حرف است که حفظ کردن شان آسان است .
شما تنها با 255 کاراکتر زبان ماشین می توانید هرکاری که دلتان بخواهد انجام دهید و این یعنی اوج قدرت و انعطاف پذیری زبان ماشین که به شما منتقل می شود .
بجای اینکه هزاران دستور زبان اسمبلی یا میلیونها دستور زبانهای سطح بالا را حفظ کنید کافیست 255 کد زبان ماشین را به خاطر بسپارید تا به اوج قدرت برسدید و البته در وقت تان نیز صرفه جویی نمایید .
+
فکر نمی کنم حفظ کردن 255 کد زبان ماشین کار چندان سختی باشد .
علی الحساب بعنوان شروع تدریس زبان همه منظوره ی ماشین که تمام دنیا را در برمی گیرد و شامل همه چیز می باشد حروف الفبای این زبان را در مبنای هگزادسیمال می نویسم . خواهید دید که بخاطر سپردن این حروف کار چندان سختی نیست . این حروف از یک فرمول خاص پیروی می کنند که بعدا توضیح خواهم داد .
فراموش نکنید که عنوان این پست Binary می باشد و باینری یعنی زبان ماشین اما لزوما با سیستم باینری زبان ماشین یعنی 0 و 1 سروکار نخواهیم داشت و از سیستم ساده تر هگزادیسمال یا هگز استفاده خواهم کرد . استفاده از سیستم باینری یعنی 0 و 1 قدری دشوار است و طول کاراکترها زیاد می شود و شما میان میلیونها 0 و 1 سردرگم خواهید شد . اما سیستم هگزادسیمال بسیار ساد ه تر و جمع و جورتر و خواناتر و کوتاهتر است و نوشتن و خواندنش نیز آسانتر است .
علی الحساب سیستمهای چهارگانه ی زبان ماشین را اینجا می نویسم :
1- دسیمال ( ده تایی شامل اعداد 0 تا 9 ) : تاریخ اختراع : طبق برخی منابع (ویکی پدیا انگلیسی) سیستم دسیمال مربوط به چند قرن پیش و زمان کامپیوترهای مکانیکی می باشد لذا تاریخ دقیقی برای دسیمال نمی توان تعیین کرد .
دسیمال همان سیستم شمارش عادی ما انسانها می باشد که در زندگی روزمره از ان استفاده می کنیم . یعنی ما انسانها از قدیم تا الان از سیستم دسیمال برای شمارش و محاسبات استفاده کرده ایم و خواهیم کرد .
لذا قدیمی ترین سیستم زبان ماشین همین سیستم معمولی شمارش دنیای انسانها یعنی سیستم دسیمال است .
احتمالا ادا که یک دختر بود ( برادر زاده ی چارلز بابیج ( پدر کامپیوتر در جهان) ) بعنوان قدیمی ترین برنامه نویس تاریخ این سیستم را ابداع کرده باشد . دقیقا معلوم نیست .
او در قرن 19 میلادی زندگی می کرد .
آن زمانها کامپیوترها کاملا مکانیکی بودند و درواقع بیشتر ماشین حساب مکانیکی بودند و هنوز برق وارد دنیای کامپیوتر نشده بود .
لذا برنامه ها با دست نوشته می شدند و سپس طبق این دستورات عملا کامپیوترهای قدیمی مکانیکی را بکار می گرفتند .
این کامپیوترها بیشتر در حکم یک چرتکه یا ماشین حساب بودند و نمی توان واقعا انها را کامپیوتر نامید . کامپیوتر یعنی محاسب یا حساب کننده . اینها بیشتر ماشین حسابهای غول پیکر بودند تا ماشینهای هوشمند محاسبه .
یکسری زبان سطح بالا نیز در این سالها اختراع شد که کاملا دستی بودند و بیشتر زبان رمزی بودند تا زبان برنامه نویسی و البته خیلی زود منسوخ و منقرض شدند زیرا اینها زبانهایی انسانی بودند نه زبانهای کامپیوتری و با طبیعت ذاتی کامپیوتر که یک دستگاه برقی می باشد هیچ همخوانی نداشتند .
نمونه ی بارزش زبان پلن کال کول می باشد که طرفدارانش یک مشت ترول هستند . همانهایی که زبانهای ماشین و اسمبلی را مسخره می کنند .
زبان به اصطلاح سطح بالا مثل پلن کال کول که توسط کنراد زوس در سال 1942 میلادی اختراع شد عملا یک زبان کاملا دستی بود و هرگز مستقیما روی کامپیوتر بکار نمی رفت و بیشتر شبیه به یک کاتالوگ یا دستورالعمل بود تا زبان برنامه نویسی و این اصلا هیچ مزیتی برای زبانهای سطح بالا نسبت به زبانهای واقعی کامپیوتر یعنی ماشین و اسمبلی ایجاد نمی کند .
چه پلن کال کول چه هر زبان سطح بالای دیگری بجز عوامفریبی کار دیگری نمی کند زیرا اینها دست نوشته ی انسان بودند و الان که کامپایلر دارند نیز دست نوشته ی دیجیتالی هستند و هرگز توسط پردازنده ی کامپیوتر درک و اجرا نمی شوند و به زبانهای ماشین و اسمبلی محتاجند .
بنابراین زبانهای سطح بالا فقط یک ماسک روی چهره ی زیبای زبانهای سطح پایین هستند و درواقع بیشتر نوعی دستورالعملهای دلخواه انسان می باشند تا دستورات واقعی کامپیوتر .
متاسفانه ویکی پدیا پر از اطلاعات درهم و برهم و گنگ است و عملا تاریخ دقیقی از اختراع زبانهای ماشین و اسمبلی در اختیار کاربران قرار نمی دهد اما تا جاییکه در توان دارد مدام از زبانهای سطح بالا تعریف و تمجید می کند و از انجاییکه ویکی پدیا یک رسانه ی استعماری است نباید چندان به ان توجه کرد .
ویکی پدیا تمام حقایق را به شما نمی گوید و این وسط سلیقه ی نویسندگان نیز بشدت دخیل است .
ضمنا ویکی پدیا یک دانشنامه ی آزاد است و محتویاتش توسط هرکس و ناکس ویرایش و بازنویسی می شود لذا هیچ اعتبار و سندیت علمی ندارد .
بسیاری از اوقات نباید به ویکی پدیا اعتماد کرد . ویکی پدیا هرگز یک سند معتبر نیست و بیشتر سلیقه ی افراد در آن لحاظ می شود تا واقعیت . بنابراین ویکی پدیا هرگز یک رسانه ی کاملا معتبر و علمی نیست .
البته طبق نوشته های همین ویکی پدیای بی صاحب !! نخستین کامپیوتر الکتریکی جهان در دهه ی 30 میلادی توسط یک دانشمند آلمانی بنام کنراد زوس با نام Z1 اختراع شد که بطور کامل از زبان ماشین در مبنای باینری ( 0 و 1 ) استفاده می کرد که در جریان بمبماران شهر برلین در جنگ جهانی دوم تخریب شد اما بعدها مجددا بازسازی گردید
سایتهای فارسی مدعی هستند که قدیمی ترین زبان برنامه نویسی جهان یک زبان سطح بالا بنام پلان کال کول است که توسط همین آقای کنراد زوس ساخته شده است . اما نه سایتهای ایرانی و نه ویکی پدیا انگلیسی هرگز تمام واقعیت را به شما نمی گوید و شما را گیج و سردرگم می کنند .
درواقع ترتیب کار به این شکل بوده :
1- اختراع کامپیوتر زد 1 توسط کنراد زوس و بکارگیری کامل زبان برنامه نویسی ماشین در مبنای باینری ( 0 و 1 ) در این کامپیوتر در اواسط دهه ی 30 میلادی در آلمان نازی ( احتمالا در سال 1936 میلادی )
این کامپیوتر در جریان بمباران شهر برلین ( جنگ جهانی دوم) خراب می شود ولی بعدا بازسازی می شود که نسخه ی بازسازی شده اش در موزه ی شهر برلین نگهداری می شود .
می توانید عکسهایی از نسخه های مختلف کامپیوتر Z1 را در ویکی پدیا انگلیسی پیدا کنید . کافیست در گوگل عبارت Z1 را جستجو نمایید .
کامپیوتر Z1 قدیمی ترین کامپیوتر الکترونیکی جهان است که برای نخستین بار از زبان برنامه نویسی ماشین در مبنای 0 و 1 استفاده می کرده است .
لذا با قاطعیت می توان گفت که زبان برنامه نویسی ماشین نخستین بار در تاریخ ، در مبنای باینری یعنی 0 و 1 نخستین بار در سال 1936 میلادی توسط کنراد زوس و در کامپیوتر Z1 بکار رفت .
2- بکارگیری زبان به اصطلاح سطح بالای پلن کال کول توسط همین آقای کنراد زوس در سال 1942 میلادی در امریکا !
( اولین اشتباه مرگبار دانشمندان علوم کامپیوتری که همان اختراع زبان سطح بالا می باشد )
بله اول زبان ماشین را ابداع کرده و رسما بکار برده بعد در دهه ی 40 یک زبان من دراوردی بنام پلن کال کول ابداع کرده که کاملا دستی بوده و بعد انرا به زبان ماشین و با دست ترجمه می کرده و به خورد کامپیوترهای بدبخت دهه ی 40 می داده است .
یعنی بازهم زبان ماشین حرف اول و اخر را می زده است و البته می زند و خواهد زد .
اینجا شما باید به عقل خودتان رجوع کنید و خوب فکر کنید :
آیا زبانهای به اصطلاح سطح بالا مثل همین پلن کال کول که ترولهای طرفدار زبانهای سطح بالا نام انرا با آب و تاب در وبلاگها و سایتها بر زبان می آورند و هدفشان تحقیر و تمسخر کردن زبانهای ماشین و اسمبلی است می توانند مستقیما توسط کامپیوتر که یک دستگاه الکتریکی است درک و اجرا شوند ؟؟؟
مسلما خیر . نمی توانند . هر زبان سطح بالا حالا چه پلن کال کول دهه ی 40 میلادی چه زبانهای جدید امروزی مثل راست و پایتون و ... هیچوقت نتوانسته و نمی توانند با سخت افزار مستقیما ارتباط برقرار کنند و همیشه باید یا با دست یا با کامپایلر ابتدا به زبان اسمبلی و سپس به زبان ماشین ترجمه شود تا قابل استفاده شوند .
جمیع زبانهای سطح بالا از زبان ادا بگیرید تا پلن کال کول تا لیسپ تا سی و سی پلاس پلاس و فورترن و پایتون و کوبول و بیسیک و راست و چپ و کوفت و زهرمار همگی توسط افراد خسته و تنبل ساخته شده و شما را فریب می دهند و شما را از فهم عملکرد دقیق سخت افزار کامپیوتر و هسته ی سیستم عامل محروم می کنند .
همین آقای کنراد زوس ابتدا با زبان ماشین و در مبنای باینری اولین برنامه های کامپیوتری تاریخ را در سال 1936 میلادی بر روی همین کامپیوتر z1 بکار برده است که هنوز هم همین سیستم باینری تا به امروز بطور ذاتی در تمامی کامپیوترها بکا رمی رود و خواهد رفت .
زبانهای سطح بالا همگی یک شروع و یک پایان دارند . همین زبان پلن کال کول بعدها منسوخ شد و جای خود را به سایر زبانهای احمقانه ی سطح بالا داد .
بزرگترین تصور اشتباه دانشمندان علوم کامپیوتری اینست که اسمبلی و ماشین فقط وقتی کاربرد داشتند که کامپیوترها بسیار قدیمی و کند و بدوی بودند ولی الان که کامپیوترها بسیار قدرتمند و سریع و کارآمد و مدرن می باشند به زبانهای سطح پایین یعنی اسمبلی و ماشین نیاز نداریم !!!!
این تصور واقعا احمقانه و مضحک است زیرا کامپیوتر امروز ( سال 2021 میلادی ) با کامپیوتر بسیار قدیمی Z1 ( سال 1936 میلادی ) هیچ فرقی ندارد زیرا هردو دستگاههای برقی هستند و برق هم یعنی روشن و خاموش و روشن را با عدد 1 و خاموش را با عدد 0 نشان می دهند . به همین سادگی .
یک نگاه به دکمه ی روشن خاموش پشت کیس که به پاور کامپیوترتان چسبیده نگاه کنید و اعداد 0 و 1 را تماشا کنید تا بفهمید که زبانهای سطح بالا تا چه حد احمقانه و مکار و فریبنده هستند و تا چه اندازه عوامفریب و شیطانی می باشند .
زبانهای سطح بالا بجز عوامفریبی و شستشوی مغزی کار دیگری انجام نمی دهند .
ذات کامپیوتر هیچوقت عوض نمی شود زیرا کامپیوتر یک دستگاه برقی است و بجز 0 و 1 هیچ زبان دیگری را نمی فهمد نه در سال 1936 میلادی نه در دهه ی 40 نه دهه ی 50 نه دهه ی 60 نه الان نه هیچ وقت دیگر .
پس هرچیزی که در ویکی پدیا یا سایتهای فناوری علیه زبانهای ماشین و اسمبلی و به نفع زبانهای سطح بالا نوشته می شود را قبول نکنید و سعی کنید به عقل خودتان رجوع کنید . ویکی پدیا توسط هر کاربر ناشناسی می تواند ویرایش شود لذا اطلاعات ویکی پدیا چه فارسی و چه انگلیسی هرگز معتبر و موثق نیست اگر هم باشد موقتی است . چون ویرایش می شود .
بهرحال زبان برنامه نویسی ماشین طبق سیستم دسیمال یا باینری نخستین بار توسط کنراد زوس و در اواسط دهه ی 30 میلادی بکار رفت . نام سیستم زد 1 بود . این سیستم قدیمی ترین سیستم زبان برنامه نویسی ماشین است که توسط این دانشمند آلمانی اختراع شد و با آن توانست قدیمی ترین برنامه های کامپیوتری جهان را بسازد . از این سیستم یعنی دسیمال امروزه نیز در برنامه نویسی با زبانهای ماشین و اسمبلی و حتی زبانهای سطح بالا استفاده می شود زیرا ساده تر و قابل فهمتر از بقیه است (برای انسان البته ) . اما البته کامپیوترها سالهاست که فقط سیستم باینری یعنی 0 و 1 را می فهمند زیرا دیجیتال هستند . لذا سیستم دسیمال به باینری ترجمه می شود . یعنی در درون خود کامپیوتر این فرایند ترجمه صورت می گیرد .
دسیمال همان اعداد معمولی است که انسان براحتی آنرا می فهمد و البته کامپیوتر نیز انرا می فهمد اما برای کامپیوتر استفاده از این سیستم بسیار سخت است لذا این سیستم بعدها جای خود را به سیستم باینری ( 0 و 1 ) داد . اما منسوخ نشد . یعنی همین الان نیز می توانید با سیستم دسیمال برنامه نویسی کنید اما کامپیوتر انرا به باینری ترجمه می کند !
دسیمال یا ده تایی شامل اعداد زیر می باشد:
0 1 2 3 4 5 6 7 8 9
همانطور که ملاحظه می کنید این سیستم برای انسان بشدت ساده و قابل فهم است زیرا همان اعداد معمولی ریاضی است یعنی اعداد بین 0 تا 9 که روی هم 10 عدد می باشند لذا به آن دسیمال یعنی ده تایی گفته می شود .
در زبان اسمبلی و برخی زبانهای سطح بالا هنوز هم از این سیستم بسیار قدیمی که در دهه ی 30 میلادی رسما در بدنه ی کامپیوترها پیاده سازی شد استفاده می شود . بله هنوز هم از سیستم دسیمال زبان ماشین استفاده می شود . بنابراین این سیستم هرگز منسوخ نخواهد شد . هرچند همانطور که گفتم کامپیوترهای امروزی کاملا دیجیتال هستند و خودشان مخفیانه سیستم دسیمال را به باینری ترجمه می نمایند .
2- سیستم باینری : همان باینری یا 0 و 1 معروف و همیشگی !
سیستم باینری ( 0 و 1 ) همانطور که در بالا گفتم و چندین و چند بار تکرار و تاکید کردم نخستین بار در سال 1936 میلادی توسط کنراد زوس دانشمند آلمانی و برروی کامپیوتر z1 رسما بکار رفت .
اینهمه تکرار و تاکید فقط برای اینست که تاریخ اختراع زبان برنامه نویسی ماشین و نام مخترع اش و نام کامپیوتر مربوطه و کشور مربوطه را هرگز فراموش نکنید و ملکه ی ذهن تان شود .
از اوایل دهه ی 40 میلادی با وجود اختراع زبانهای ساختگی و تصنعی توسط همین افراد ، زبان ماشین بعنوان تنها زبان برنامه نویسی واقعی و حقیقی توسط دانشمندان آمریکایی رسما بکار رفت و کامپیوترها از آن زمان با سرعت و قدرت و دقت بیشتری نسبت به قبل کار می کردند و البته همگی این کامپیوترها دیجیتال بودند و منحصرا از سیستم باینری استفاده می کردند تا سریعتر و قویتر شوند .
نکته : از همان قدیم افراد سعی می کردند همزمان با زبانهای ماشین و اسمبلی زبانهای سطح بالا را نیز بکار ببرند . این اصلا به معنای اصالت زبانهای سطح بالا نیست . زیرا زبانهای سطح بالا توسط افرادی که زبان ماشین را بسیار سخت می دانستند اختراع شدند و یکی پس از دیگری منسوخ شدند . چون اصالت نداشتند و با ذات کامپیوتر همخوانی نداشتند .
بنابراین اگر در تاریخچه ی زبانهای برنامه نویسی نام زبانهای سطح بالا را در کنار نام زبانهای ماشین و اسمبلی دیدید تعجب نکنید و هرگز مهر تایید روی پیشانی زبانهای سطح بالا نزنید .
زبانهای سطح بالا یعنی پاک کردن صورت مسئله . انسان همیشه دوست دارد بجای حل کردن مسئله صورت مسئله را پاک کند و برای همین زبانهای سطح بالا را اختراع کردند و می کنند و خواهند کرد !!!
هیچوقت زبانهای سطح بالا را جدی نگیرید اینها یک مشت اسباب بازی هستند نه زبان برنامه نویسی . هرگز به ساز طرفداران زبانهای سطح بالا نرقصید و سعی کنید خودتان تحقیق و مطالعه کنید و حقیقت را شخصا درک کنید .
فراموش نکنید: کامپیوتر یک دستگاه برقی است و همانند تمام دستگاههای برقی فقط زبان ماشین یعنی 0 و 1 را می فهمد . پس فقط با زبان ماشین برنامه نویسی کنید .
زبانهای سطح بالا فقط اسباب بازی کودکان محسوب می شوند و کارشان شستشوی مغزی و عوامفریبی و دیکتاتوری و انحصارطلبی است .
سیستم باینری باعث اختراع قدیمی ترین کامپیوترهای دیجیتال شد که معروفترین شان همان کامپیوتر مشهور و معروف انیاک می باشد که در دانشگاه پنسیلوانیا در سال 1944 میلادی ساخته شد و برای محاسبات جدول پرتاب موشکها و راکتها و همچنین طراحی و ساخت بمب اتم و بمب هیدروژنی بکار رفت و امریکاییها با کمک این کامپیوتر توانستند بمب اتم را اختراع و در صحرای منهتن آزمایش کرده و سپس دو بمب اتم را بر روی شهرهای هیروشیما و ناکازاکی انداختند و این اولین جنایت بشر با سو استفاده از کامپیوترها بود . زیرا تا قبل از این تاریخ کامپیوترها فقط جنبه ی رمزگذاری و رمزشکنی و دفاع داشتند و هرگز برای حمله و جنگ و کشتار بکار نمی رفتند .
متاسفانه سو استفاده ی امریکای جنایتکار از قدرت زبان ماشین و کامپیوتر انیاک موجب وقوع این جنایت شد .
از بعد از آن نیز کامپیوترها برای جنگ سرد و جاسوسی و رمزگذاری و رمزشکنی بکار رفتند و سالهاست که از کامپیوترها برای جاسوسی و حملات سایبری و ترور استفاده می شود .
+
باینری یعنی دوتایی . یعنی زوج . یعنی همتا . این بدان دلیل است که در کنار عدد 0 فقط یک عدد دیگر یعنی 1 قرار می گیرد .
اما اینها عدد نیستند بلکه رقم هستند . اصطلاحا به رقم ، دیجیت گفته می شود . دیجیتال یعنی رقمی یعنی همین 0 و 1 .
هر عدد از چندین رقم ساخته شده است . مثلا عدد 0 در سیستمهای دسیمال و هگزادسیمال از ترکیب 8 تا رقم 0 در سیستم باینری ایجاد می شود .
بنابراین دقت کنید که بین عدد و رقم تفاوت وجود دارد . هر رقم معادل با یک بیت bit می باشد . مجموع هر 8 بیت Bit را یک بایت Byte تشکیل می دهد که به آن بایت گفته می شود و هر عدد دسیمال یا هگزادسیمال یا اوکتال دقیقا با 8 رقم باینری معادل و مطابق می باشد .
هر کاراکتر که شما می بینید یا تایپ می کنید دقیقا معادل با 8 رقم باینری یا یک عدد هگزادسیمال و البته یک بایت می باشد . هر رقم باینری را اصطلاحا بیت می گویند .
کوچکترین واحد در کامپیوترهای دیجیتال ، بایت Byte می باشد که شامل 8 بیت از ارقام 0 و 1 زبان ماشین است .
بنابراین برخلاف تصور ، بیت که فقط شامل 0 یا 1 است کوچکترین واحد اندازه گیری حجم در کامپیوتر محسوب نمی شود بلکه ترکیبی از 8 تا بیت که روی هم بایت گفته می شود کوچکترین واحد اندازه گیری در کامپیوترها محسوب می شود .
در برنامه نویسی با زبانهای ماشین و اسمبلی ما عموما با بایت سروکار داریم و بندرت از بیت استفاده می کنیم مگر برای ماسک گذاری روی ارقام باینری زبان ماشین و در جهت مقاصد خاص مثلا با استفاده از دستور xor
بله از بیت نیز استفاده می کنیم و مستقیما بیت ها را نیز ویرایش می کنیم اما به ندرت . چون کاری بسیار سخت و طاقت فرسا می باشد . قرار نیست بصورت میکروسکوپی برنامه نویسی نماییم !!!
همینقدر که با کمک یک ذره بین قوی و با چشمان کاملا باز یعنی زبان ماشین برنامه هایمان را بسازیم کافیست . هدف اینست که خودمان را از شر زبانهای سطح بالا و حتی زبان اسمبلی خلاص کنیم و مستقیما با زبان ماشین برنامه بنویسیم و مستقیما با کرنل سیستم عامل و البته مستقیما با پردازنده ی کامپیوتر حرف بزنیم و ارتباط دوطرف داشته باشیم .
هدف از برنامه نویسی با زبان ماشین ارتباط دوستانه با پردازنده و سایر تراشه های الکتریکی می باشد . درواقع قصد داریم مستقیم به پردازنده ی کامپیوتر که یک تراشه ی الکتریکی است بگوییم که چه کار بکند و چه کار نکند و او نیز با ما مستقیما در ارتباط باشد و به ما پاسخ دهد و حرفهای ما را بدون ذره ای ابهام یا ایهام بفهمد و بکار گیرد و خیلی واضح و سریع به ما جواب دهد .
زبان ماشین هرنوع ابهام و دوپهلو بودن و تناقض را نابود می کند و حرف ما را بی پرده و صریح و واضح به گوش پردازنده می رساند و پردازنده خیلی سریع و صریح و واضح حرف ما را می شنود و می فهمد و پاسخ مناسب به ما می دهد که ما ان پاسخ را می فهمیم و براساس ان پاسخ تصمیم می گیریم .
زبان برنامه نویسی ماشین هیچنوع ابهام و تناقص و ایهام و استعاره و صنایع ادبی ندارد و کاملا واضح و صریح و قابل فهم است . زبان ماشین یک زبان کاملا عقلانی و منطقی است و اهل شعر و ور گفتن و استعاره و ایهام و طبع شعر نیست . پردازنده از این لوس بازیها خوشش نمی آید و باید با او با زبانی که می فهمد و دوست دارد حرف بزنیم .
زبان ماشین با هیچکس و هیچ چیز شوخی و تعارف ندارد و کاملا جدی و عقلی و منطقی است .
نکته : سیستم باینری یعنی 0 و 1 ، سطح پایین ترین سیستم و البته سطح پایین ترین زبان برنامه نویسی جهان می باشد و ما دیگه از باینری سطح پایین تر نداریم زیرا باینری مستقیما به سیگنالهای الکتریکی درون مدارات کامپیوتر ترجمه می شود .
یعنی بین باینری و سخت افزار کامپیوتر هیچ حد و مرز و رابط و واسطه ای وجود ندارد و هر رقم 0 یا 1 زبان ماشین مستقیما به سیگنالها و ولتاژها و پالسهای الکتریکی ترجمه شده و اجرا می شود .
تا جاییکه من می دانم اگر اشتباه نکنم ، هر رقم 0 زبان ماشین به نیم ولت برق مثبت و هر رقم 1 زبان ماشین به 1 ولت برق منفی مستقیم ترجمه می شود .
بنابراین ما در زبان ماشین خصوصا در مبنای باینری مستقیما با ولتاژ الکتریکی درون پردازنده و سایر اجزای کامپیوتر سروکار داریم . یعنی با جریان برق مستقیم سروکار داریم و این یعنی دسترسی کامل به مدارات الکترونیکی کامپیوتر و برق مستقیم که از پاور کامپیوتر وارد مادربورد و سایر اجزا شده است .
بنابراین ما در برنامه نویسی با زبان ماشین مستقیما با جریان الکتریکی و ولتاژ برق مستقیم سروکار داریم و باید خیلی حواسمان جمع باشد که ناخواسته مدارات کامپیوترمان را جزغاله نکنیم !!
(آزادی و قدرت بی نهایت که زبان ماشین به ما هدیه می دهد می تواند خطرناک باشد . پس احتیاط کنید ) .
لذا باینری و البته زبان ماشین ، سطح پایین ترین زبان برنامه نویسی دنیاست و ما در این زبان تسلط کامل و 100 درصدی بر تمامی اجزای سیستم عاملها و سخت افزارهای مختلف (قطعات سخت افزاری و مدارات الکتریکی ) داریم و در اوج قدرت هستیم و هرکاری که دلمان بخواهد می توانیم انجام دهیم و این یعنی اوج آزادی و قدرت که زبان ماشین به ما هدیه می دهد .
پس اگر آزادی و استقلال و قدرت نهایی می خواهید مستقیما با زبان ماشین خصوصا در سیستم باینری برنامه نویسی نمایید . البته احتیاط را نیز فراموش نکنید و بی گدار به آب نزنید . برنامه نویسی با زبان ماشین را باید براساس دانش کامل و تجربه ی کافی و مستندات معتبر و ابزارهای معتبر انجام دهیم تا به سخت افزار آسیبی وارد نشود .
3- مبنای هگزادسیمال زبان ماشین : این مبنا توسط شرکت معروف آی بی ام در دهه ی 50 میلادی ابداع شد که هنوز هم بکار می رود .
سیستم هگزادسیمال زبان ماشین شامل کاراکترهای معروف زیر می باشد که در هگز ادیتورها و همچنین در رجیستری ویندوز و حتی زبانهای سطح بالا زیاد با انها مواجه بوده اید و آنها را می شناسید :
0 1 2 3 4 5 6 7 8 9 A B C D E F
همانطور که می بینید این سیستم شامل 16 کاراکتر می باشد لذا به آن هگزادسیمال یعنی شانزده تایی گفته می شود . مبنای کار من در تدریس زبان ماشین همین سیستم هگزادسیمال خواهد بود . هرچند به سیستم بسیار قدیمی و معروف باینری نیز اشاره می کنم .
4- اوکتال : تا این لحظه از تاریخ دقیق اش خبر ندارم ! بعدا اگر منبع موثق و معتبری گیر آوردم تاریخ دقیق ابداع سیستم اوکتال را در همین پست و پستهای بعدی می نویسم .
فقط می دانم که سیستم اوکتال به ندرت بکار می رود .
سیستم اوکتال شامل اعداد زیر می باشد :
0 1 2 3 4 5 6 7
همانطور که می بینید این سیستم بسیار شبیه به سیستم دسیمال است ولی چون با دسیمال تفاوتهایی دارد و در دنیای انسانها کاربرد ندارد احتمالا منسوخ شده است .
من ندیدم کسی از سیستم اوکتال زبان ماشین استفاده کند . اوکتال یعنی هشت تایی . یعنی هشت عدد .
+
خب حالا که با تاریخچه ی زبان برنامه نویسی ماشین آگاه شدید خودتان را آماده کنید تا از پست بعد زبان ماشین را در مبنای هگزادسیمال و باینری به شما آموزش دهم .
این پست پاسخی بود برای طرفداران زبانهای سطح بالا که زبان ماشین را تحقیر می کنند و فقط خودشان را می توانند گول بزنند نه ادمهای عاقل را .
+
بابت طولانی شدن این پست و تکرار مکررات عذرخواهی می کنم ولی لازم بود تا این تاریخچه را کالبدشکافی کنم و چهره ی واقعی زبانهای سطح بالا را به شما نشان دهم تا بیش از این فریب این زبانها را نخورید . فراموش نکنید که زبانهای سطح بالا هرگز زبان نیستند بلکه یک مشت نرم افزار عوامفریب و استعماری می باشند . این زبانها دشمن آزادی و بصیرت کاربران هستند .
+
وحید محمدی - وبلاگ وحیدمی
+
+
بروزرسانی:
براثر حملات سایبری به وبلاگ وحیدمی ؛ تمام کامنت های کاربرها و پاسخ های من به کاربرها ؛ حذف شدند .
لعنت خدا و نفرین ملائکه بر هکرها و اتکرها و مجرمان سایبری .
تاریخ بروزرسانی
یکشنبه مورخ 29 مرداد 1402 خورشیدی
نکته :
آدرسهای آخرین پست وبلاگ وحیدمی را در زیر مشاهده می فرمایید .
در پناه خداوند متعال عظیم الشان باشید
ِ
الهم عجل لولیک الفرج .
امضای همیشگی اینجانب در جهت تایید صحت و درستی مطالب وبلاگهایم :
وحید محمدی . وبلاگ وحیدمی
https://vahidmy.blog.ir/archive
https://vahidmy.blog.ir/post/764