میلاد شیریان
میلاد شیریان
خواندن ۵ دقیقه·۴ سال پیش

کدها چگونه اجرا میشوند؟

سلام خدمت دوستان عزیز و علاقه مند به حوزه برنامه نویسی...

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

BINARY
BINARY


درک اینکه کدها چجوری اجرا میشن؟

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

زبان های برنامه نویسی سطح بالا و سطح پایین

زبانهای برنامه نویسی از حیث میزان شباهتشون به تنها زبانی که کامپیوترها درک میکنن(کد ماشین-به زودی در مورد زبان ماشین یه مقاله دیگه میذارم) به دو دسته زبان سطح بالا و زبان سطح پایین تقسیم میشن.زبانهای برنامه نویسی سطح بالا از جمله زبانهایی هستند که اکثر ماها باهاشون آشنا هستیم و یا کار میکنیم مثل:

Java, JavaScript, Ruby, C++, ...

اینها زبانهایی کاملا متفاوت با چیزی هستند که ماشین و کامپیوتر میفهمه!!!!!!!!!!ااا پس تکلیف چی میشه؟؟؟؟بهتره عجول نباشین...

در مقابل یک زبان برنامه نویسی سطح پایین فقط اشتقاق جزئی از کد ماشین است یعنی بیشترین شباهت رو نسبت به زبانهای سطح بالا به کد ماشین داره که خب طبیعتا خوندن این زبانها برای ما آدما سخت تر و طولانی تره ولی برای کامپیوترها هم درکش آسون تره و هم سریع تره(Performance).همچنین نسبت به یک زبان سطح بالا حافظه کمتری مصرف میکنه، که متداولترین زبانهای سطح پایین زبان های اسمبلی هستن.

زبانهای اسمبلی تغییرات حروف و نمادهارو برای نشون دادن بخشهای مختلف برنامتون و قابلیتهایی که میخواین به کار بگیرین گروه بندی میکنن.(دستوراتشون شکل یه عبارت--معمولا واسه کرک نرم افزارهام ازش استفاده میکنن).

زبانهای اسمبلی برای تبدیل کدشون به کد ماشین از اسمبلر استفاده میکنن.به اسمبلر به عنوان یک فرهنگ لغت نگاه کنید.در فرهنگ لغت میتوانید کلمه ای رو جستجو کرده و معنیشو(کد ماشینشو) پیدا کنی و برگردونی.

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

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

زبان برنامه نویسی سطح بالا و سطح پایین
زبان برنامه نویسی سطح بالا و سطح پایین



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

در حالی که زبانهای سطح پایین با تبدیل زبان به کد ماشین با استفاده از اسمبلر قابل درک هستند، بیشتر زبانهای سطح بالا با استفاده از کامپایلر یا مفسر قابل درک هستند.

بیاین اول در مورد زبانهای مفسری بحث کنیم چون روش اجراشون با زبانهای کامپایلری و اسمبلی یکمی فرق میکنه!

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

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

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

از مشهورترین این نوع زبانها :

Python, Perl, Javascript, Ruby ,...

زبانهای کامپایلری:

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

یکی از نقاط قوت دیگشون اینه که کد منبعتون رو نشون نمیدن به این معنی که دیگران نمیتونن کد شمارو ببینن و کپی کنن.اما از نقاط ضعفشون اینه که فقط روی یک سیستم عامل خاص قابل اجرا هستن.در واقع برنامه ای که در Mac اجرا میشه به همون روش در PC اجرا نمیشه.به خاطر همینه که یک برنامه هر دو نسخه Mac OS و Windows رو داره.

از مهمترین این نوع زبانها:

C, C++, Java, ...

از Complier گرفته تا Machine Code تا پردازنده

پس از تبدیل کامپایلر (یا اسمبلر) زبان سطح بالا به کد ماشین ، رایانه برای انجام اقدامات آماده است.

برای درک چگونگی خواندن کد ماشین توسط پردازنده رایانه (که به آن واحد پردازش مرکزی یا CPU نیز می گویند) ، ابتدا باید بفهمید کد ماشین چیست.

کد ماشین مجموعه ای از دستورالعمل های باینری است که از 1 و 0 به نام بیت تشکیل شده است. از نظر پردازنده ، 1 نشان دهنده روشن بودن سوئیچ الکتریکی است در حالی که 0 به معنای خاموش بودن سوئیچ است.

1 و 0 به روش های مختلف با هم گروه می شوند و ترکیبات 8 بیتی به نام بایت را ایجاد می کنند.ترکیبی از این 1 و 0 ها سیگنال های الکتریکی مختلفی را به ترانزیستورهای پردازنده ارسال می کنند.پردازنده های مدرن بیش از یک میلیارد ترانزیستور دارند.که حاوی دروازه های منطقی هستند.(logic gates)

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

تبدیل حروف به باینری
تبدیل حروف به باینری


به طور کلی نکته اساسی این مبحث اینه که:

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

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

امیدوارم از این مقاله خوشتون اومده باشه...کامنت یادتون نره???


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




برنامه نویسیکامپایلمفسراسمبلراجرا کدها
خلاقان تاثیرگذار
شاید از این پست‌ها خوشتان بیاید