vahidmy

وبلاگ شخصی وحید محمدی

vahidmy

وبلاگ شخصی وحید محمدی

وحیدمی

وبلاگ شخصی وحید محمدی . یک تایپیست که عاشق علم و تجربه است.


آدرس وبلاگ وحیدمی :

Home Page


https://vahidmy.blog.ir

+


Archive

آرشیو و بایگانی وبلاگ وحیدمی

https://vahidmy.blog.ir/archive

+


نقشه وبلاگ وحیدمی:

Sitemap

https://vahidmy.blog.ir/sitemap.xml

+

خوراکخوان وبلاگ وحیدمی

Feed

RSS

https://vahidmy.blog.ir/rss

+

آدرس مورد استفاده خزنده ها روباتها و موتورهای جستجوگر

Robot

https://vahidmy.blog.ir/robots.txt


+

مشخصات وبلاگ وحیدمی:


ساعات انتشار پست جدید وبلاگ :

بیست و چهار ساعته

وضعیت انتشار پست : نامنظم . در طول شبانه روز و در صورت صلاحدید ؛ پست جدید منتشر می کنم.


نام مدیر : وحید محمدی

گونه : وبلاگ شخصی با آدرس اختصاصی و محتوای عمومی

ژانر : تمام ژانرها

کاربرد : همه منظوره

هدف وبلاگ : به اشتراک گذاشتن دانش و تجربه با مردم و پرداخت زکات علم

مقصد مدیر وبلاگ : کسب رضای خداوند .

جنس وبلاگ : وبلاگ شخصی

تاریخ تاسیس : تیر 1398 خورشیدی



موضوعات وبلاگ : تمام علوم و فنون و مسائل مختلف در تمام زمینه


کپی برداری از مطالب وبلاگ وحیدمی به شرط لینک دادن به آدرس اصلی وبلاگ با دامنه vahidmy.blog.ir ، بلامانع و آزاد است . با خیال راحت ، کپی برداری نمایید . هیچگونه کپی رایت و انحصار برای وبلاگ وحیدمی ، وجود ندارد .

بروزرسانی:

وبلاگ وحیدمی منحصرا توسط سایت بلاگ دات آی آر به آدرس blog.ir میزبانی می شود . بنابراین بجز دامنه vahidmy.blog.ir سایر دامنه ها جعلی و فیک و خطرناک هستند .
برای مشاهده نکات جدید و ترفندهای امنیتی لطفا به آدرس زیر مراجعه فرمایید:

https://vahidmy.blog.ir/post/1



آدرس وبلاگهای تخصصی :

https://spasm.blog.ir

https://fasmy.blog.ir

https://binasm.blog.ir

طبقه بندی موضوعی
مطالب پربحث‌تر
  • ۰۱/۰۴/۱۱
    adc
نویسندگان
پیوندها

برنامه نویسی با باینری بخش 1

جمعه, ۲۰ خرداد ۱۴۰۱، ۱۱:۱۰ ب.ظ









programming-by-binary-part-1




به نام خدا 


برنامه نویسی با باینری بخش 1 :


همانطور که در پست قبلی  تحت عنوان  " سلام باینری خداحافظ اسمبلی "  اعلام کردم ، از این پست به بعد رسما و منحصرا با زبان برنامه نویسی ماشین که از این پست به بعد به آن باینری می گویم ، برنامه نویسی خواهم کرد . انشاا...


منظور از  " باینری " همان زبان برنامه نویسی ماشین می باشد . اینجا قصد دارم بگویم که زبان برنامه نویسی ماشین از ابتدای بکارگیری رسمی اش در سال 1935 میلادی ( توسط  دانشمند آلمانی به نام کنراد زوس و بر روی کامپیوتر زد 1 )  تا به امروز ( سال 2022 میلادی ) همیشه به شکل باینری بوده است و از این به بعد نیز تا روز قیامت و تا ابد  به شکل باینری خواهد بود . باینری یعنی دوتایی . یعنی 0 و 1 . 



باینری یا  0 و 1 زبان مشترک تمام دستگاهها و ماشین آلات و لوازم برقی از یک لامپ ساده گرفته تا بزرگترین و پیچیده ترین و قدرتمندترین سوپرکامپیوترهای جهان ، می باشد . 


درواقع هر دستگاهی که به جریان برق مستقیم یا متناوب وصل شود ، فقط 0 و 1 را می فهمد . 

بله فقط صفر و یک . 


صفر یعنی خاموش 


یک یعنی روشن 


این ، ساده ترین و قابل فهمترین شکل زبان ماشین است که از سالها پیش تا به امروز همیشه بصورت یک اصل و قانون ثابت علمی و بین المللی عملا در دستگاههای برقی وجود داشته و بکار می رفته است . 


درحقیقت ، باینری یا همان 0 و 1 ،  زبان مادری و واقعی تمام دستگاههای الکتریکی دنیا می باشد . در این مورد هیچ فرقی بین یک لامپ برق ساده و یک سوپرکامپیوتر فوق مدرن و پیچیده نیست . زیرا هردو فقط همین دو عدد 0 و 1 را می فهمند و بکار می گیرند .


در چنین شرایطی ، نه فقط زبانهای سطح بالا بلکه حتی زبان اسمبلی که نزدیکترین زبان به زبان ماشین (باینری ) می باشد ، اضافی و زائد هستند و باید دور ریخته شوند . 



زبان ماشین یا همان باینری (0 و 1 ) زبان اول و آخر دنیای فناوری می باشد . 


باینری نخستین بار بصورت کاملا رسمی در اولین کامپیوتر الکتریکی جهان یعنی zed1   در سال 1935 میلادی بکار رفت و تا به امروز ، بعنوان  زبان برنامه نویسی واقعی و حقیقی تمام دستگاههای الکتریکی و تمام کامپیوترها بکار می رود . 


ما می توانیم دستگاههایی را ببینیم که فقط از باینری استفاده می کنند و هیچگونه سیستم عامل ندارند ! 


اکثر دستگاههای ریز و کوچک و ساده که مدارات الکتریکی بسیار ساده ای دارند عملا هیچنوع سیستم عاملی ندارند و مستقیما با جریان برق و باینری ( 0 و 1 ) کار می کنند . 


تعریف سیستم عامل :


سیستم عامل یعنی رابط بین سخت افزار و انسان . 


این ، ساده ترین و قابل فهم ترین و مختصرترین و مفیدترین تعریف از سیستم عامل می باشد . 


سیستم عامل ، هرگز مهمترین بخش یک دستگاه کامپیوتری یا الکتریکی نیست . زیرا دستگاه الکتریکی و حتی کامپیوترهای مدرن ، می توانند بدون سیستم عامل نیز کار بکنند . تمام ما کاربران تجربه ی بالا آمدن بایوس کامپیوتر و اعلام عدم وجود سیستم عامل را داریم . این ثابت می کند که حتی در دستگاههای مدرن مثل کامپیوتر نیز ، سیستم عامل فقط یک عامل ساده کننده و برای راحتی کاربر می باشد و بود یا نبودش چندان مهم نیست . 


من خودم سالها پیش ، نرم افزار معروف فوتوشاپ را روی کامپیوتری که هیچ سیستم عاملی نداشت نصب کردم و جالب اینکه مراحل نصب بصورت کاملا گرافیکی انجام شد !!!


این تجربه ی جالبی از اوایل دهه ی 80 شمسی بود . 


می خواهم بگویم : برای برنامه نویسی با باینری ( زبان ماشین )  لزوما به سیستم عامل نیاز نداریم و می توانیم روی سخت افزار خام نیز با زبان ماشین برنامه بنویسیم ! 


سیستم عامل فقط کار ما را دشوارتر می کند  و دست و پای ما را می بندد خصوصا اگر انحصاری و تجاری باشد . 


وجود توابع API  ویندوز عملا فرایند برنامه نویسی با باینری را دشوار می کند. 


هرچند که می توانیم با ترفندهای مختلف ، در کمترین زمان با زبان ماشین تحت ویندوز برنامه نویسی نماییم اما به آن آزادی کامل و دلخواه نمی رسیم و مجبوریم توابع ویندوز و حتی توابع زبانهای سطح بالا را تحمل کرده و بکار گیریم . 


توابع و کتابخانه ها و سمبولهای دیباگ  سیستم عامل ویندوز و زبانهای سطح بالا خصوصا زبان دشوار و نامفهوم سی و سی پلاس پلاس ، واقعا بجز اتلاف وقت و ایجاد سردرگمی و تردید  و ناامیدی نتیجه ی دیگری برای ما نخواهند داشت . 



من می خواهم از  صفر شروع کنم . 


یعنی فرض را بر این می گیرم که کامپیوتر یا یک قطعه ی سخت افزاری را در اختیار دارم که هیچ سیستم عاملی روی آن نصب نیست و حالا می خواهم با کمک زبان ماشین ( باینری)  ، این قطعه ی سخت افزاری یا کامپیوتر یا تراشه را راه اندازی کرده و بکار گیرم و به او دستور بدهم ! 



فقط در این حالت است که به آزادی و بصیرت کامل می رسیم . 


اصلا چه دلیلی دارد که میلیونها تابع ویندوز و توابع زبانهای سطح بالا و  سمبولهای دیباگ را بکار گیریم تا بلکه شاید با هزار بدبختی بتوانیم نرم افزار بسازیم ؟؟؟؟!!!


این فرایند کاملا اشتباه و غلط است و ما را به استقلال و آزادی واقعی و کامل نمی رساند . 



اگر بتوانیم در یک نرم افزار ویندوزی که قصد داریم از اولین تا آخرین بایت اش را با زبان ماشین و در قالب باینری   و با دست بسازیم  ، از توابع ویندوز یا توابع زبانهای سطح بالا استفاده کنیم  عملا خودمان را فریب داده ایم و هرگز به مقصود و هدف نهایی نمی رسیم . 


باید طوری برنامه نویسی کنیم که هیچ نیازی به استفاده از توابع ویندوز و توابع زبانهای سطح بالا نباشد . 


یعنی در ستون سمت راست هگز ادیتور ، هیچ نام و نشانی از توابع ویندوز و توابع زبانهای سطح بالا دیده نشود و منحصرا کدهای زبان ماشین یا کاراکتر  دیده شوند !!!!!


شاید اینکار نوعی مازوخیست و خودآزاری و اتلاف وقت محسوب شود اما موجب می شود که ما به مغز استخوان دنیای فناوری اطلاعات نفوذ کنیم و به آزادی کامل برسیم و از شر زبانهای سطح بالا و حتی توابع ویندوز یا سایر سیستم عاملها ( لینوکس و .... ) خلاص شویم . 


اصلا چه دلیلی دارد که در برنامه نویسی با زبان ماشین یا اسمبلی ، از توابع گنگ و پیچیده و نامفهوم زبانهای سطح بالا خصوصا زبان سی  استفاده کنیم ؟؟؟


اینکار اشتباه بسیار بزرگی است که متاسفانه طراحان اسمبلرهای معروف ، مرتکب شده اند . 



بیاییم یکبار هم که شده  ذهن مان را از زبانهای سطح بالا خالی کنیم و دنیا را به شکلی زیباتر و خالصتر و تمیزتر و واقعی تر ببینیم . 


+


خب با این مقدمه ی طولانی ، قصد دارم بگویم که من برای جلوگیری از بروز مجدد تردید بین زبانهای سطح بالا و سطح پایین و تردید بین زبانهای ماشین و اسمبلی و تردید بین ویندوز و لینوکس و تردید بین ... و ....  ،  از پست بعدی مستقیما به سراغ سخت افزار و باینری می روم . 


یعنی برای ویندوز ، برنامه می نویسم ولی تمام تلاشم را می کنم که از توابع و سمبولهای دیباگ زبانهای سطح بالا و حتی توابع ویندوز  استفاده ننمایم و منحصرا از کدهای خالص باینری استفاده کنم . 


برای اینکه باینری را بهتر بفهمیم سعی می کنم زبان ماشین را در مبنای اصلی و استانداردش یعنی باینری ( 0 و 1 )  بکار گیرم و از بکارگیری سایر مبناهای زبان ماشین یعنی هگزادسیمال و دسیمال و اوکتال  ، خودداری نمایم !!!!


این دیگه نهایت ریاضت و خود آزاری است اما خروجی اش بسیار بسیار زیبا و کاربردی و جذاب خواهد بود . 



از درس بعدی سعی می کنم زبان ماشین را در مبنای واقعی اش یعنی باینری ( 0 و 1 )  تدریس نمایم و  چهار عمل اصلی یعنی جمع و تفریق و ضرب و تقسیم را با استفاده ی محض از کدهای باینری ( 0 و 1 )  انجام دهم . 


+


نکته :


برخلاف تمام کاربران ، من هرگز از  انجام کارهای دشوار و طاقت فرسا خسته نمی شوم و هرگز از اصالت و غیرت ام دور نمی شوم .  من روی اصالت زبان ماشین ، غیرت دارم و تحت هیچ شرایطی حاضر نیستم زبانی غیر از زبان ماشین را تدریس نمایم . 


یعنی اگر قرار باشد یک سیستم عامل شبیه به سیستم عاملهای اسمبلی بسازم ، آنرا بطور کامل با زبان ماشین می سازم  و هرگز به جان زبانهای ماشین و اسمبلی غر نمی زنم و نق نمی زنم و تحت هیچ شرایطی سنگ زبانهای سطح بالا را به سینه نمی زنم . 


بنابراین بعنوان یک مرد که حرف اش همیشه یکی می باشد ، مطابق همیشه روی زبان ماشین ، غیرت و تعصب دارم و خواهم داشت . 


من سنگ زیرین آسیاب هستم و از دشواریهای برنامه نویسی با زبان ماشین هرگز نمی ترسم . 


دنبال سود و منفعت مالی و پول و ثروت و شهرت و محبوبیت نیز نیستم .  دنبال مادیات و زندگی مرفه نیستم .


دنبال  آزادی و آزادگی و  اصالت و غیرت و بصیرت هستم که این روزها کمتر پیدا می شود . 


باید از صفر شروع کنم . یعنی هم ویندوز و هم لینوکس و هم تمام سیستم عاملها را از ذهن ام دور بریزم و یک سیستم ساده را با دست و با زبان ماشین  از نو  طراحی نمایم  . 


باید چرخ را از نو اختراع نمایم ! 



من با بیت و بایت سروکار دارم و دنبال این هستم که سیستم ها را ساده کنم و از پیچیدگی ها و فناوریهای سنگین و چند لایه  از قبیل فناوری سنگین و ننگین و حجیم دات نت فریمورک  فاصله بگیرم و فرار کنم . 





انواع مدلهای برنامه نویسی از جمله برنامه نویسی شیئ گرا را می توانید با زبان ماشین ، عملا پیاده سازی و اجرایی نمایید .  کافیست اول فکر کنید بعد تحقیق کنید  و بعد آزمایش نمایید .  اما باید همیشه سیستم ها را ساده نمایید و از دشواریها و پیچیدگیها و موازی کاری  خودداری نمایید . 



شعار من اینست :


سیستم ها را ساده کنید . 



+


وحید محمدی . وبلاگ وحیدمی 



https://vahidmy.blog.ir/rss



https://vahidmy.blog.ir/sitemap.xml




  • ۰۱/۰۳/۲۰
  • vahidmy

0 و 1

0 یعنی خاموش

1 یعنی روشن

Assembly Language

Binary

C32asm

Fasm

Freedom

Hex Editor

Linux

Microsoft

Music

OS

Operating System

RosAsm

UNIX

Windows

binary

bit

c32asm

hackman

hex

hex editor

hex editor neo

hexplorer

masm

masm32

open source

programming

programming by hex editor

programming without Bug

vahid muhammadi

vahidmy

vahidmy.blog.ir

win32 Assembly

win64 Assembly

winhex

از نظر من

اوپن سورس واقعی

ایده

بایت

باینری

باینری=سورس

برنامه نویس

برنامه نویسی

برنامه نویسی با زبان ماشین

برنامه نویسی با هگز ادیتور

برنامه نویسی بدون باگ

برنامه نویسی تک فایلی

برنامه نویسی شیئ گرا

به نظر من

بیت

تردید

تردید بین زبان ماشین و زبان اسمبلی

تردید بین ویندوز و لینوکس

توابع 16 بیتی و 32 بیتی ویندوز

توابع API ویندوز

توابع سیستم عامل ویندوز

توابع ویندوز

زبان

زبان اسمبلی

زبان برنامه نویسی

زبان برنامه نویسی اسمبلی

زبان برنامه نویسی ماشین

زبان شناسی

زبان ماشین

زبان ماشین زبان اول و آخر دنیای برنامه نویس است

زبانهای سطح بالا

زبانهای سطح پایین

سیستم عامل

سیستم عامل اسمبلی

سیستم عامل فقط رابط بین سخت افزار و کاربر است

صفر و یک

فناوری اطلاعات

فناوری سنگین و ننگین دات نت فریمورک

فناوریهای مدرن

فکر

فکر آزاد

لینوکس

موسیقی

هگز ادیتور

وبلاگ

وبلاگ وحیدمی

وبلاگنویسی

وحیدمی

ویندوز

کتابخانه