آدرس : تهران میدان فردوسی خیابان ایرانشهر بین سمیه و طالقانی مجتمع تجاری میلاد واحد 9

پشتیبانی 24 ساعته : 02188867940 – 09927674217

برای مشاهده لیست علاقه مندی ها وارد شوید!

مشاهده محصولات فروشگاه
0

هیچ محصولی در سبد خرید نیست.

نگاه کردن به پشت بایت کد پرده

دسته بندی :اخبار سایت 12 مارس 2023 علیرضا بابامرادی 231
نگاه کردن به پشت بایت کد پرده

 

 

نگاه کردن به پشت بایت کد پرده

هنگامی که مفسر CPython برنامه شما را اجرا می کند، ابتدا آن را به دنباله ای از دستورالعمل های بایت کد ترجمه می کند. بایت کد یک زبان متوسط ​​برای ماشین مجازی پایتون است که به عنوان یک زبان مورد استفاده قرار می گیرد به جای اجرای مستقیم کد منبع قابل خواندن توسط انسان، از کدهای عددی فشرده، ثابت ها و مراجع استفاده می شود که نشان دهنده نتیجه تجزیه کامپایلر و تحلیل معنایی بهینه سازی عملکرد این باعث صرفه جویی در زمان و حافظه برای اجرای مکرر برنامه ها یا بخش هایی از برنامه ها به عنوان مثال، بایت کد حاصل از این مرحله کامپایل روی دیسک در فایل های .pyc و .pyo ذخیره می شود تا اجرا شود. همه اینها برای برنامه نویس کاملاً شفاف است. شما نمی کنید باید آگاه باشید که این مرحله ترجمه میانی اتفاق می افتد، یا نحوه برخورد ماشین مجازی پایتون با بایت کد. در واقع، همان فایل پایتون برای بار دوم سریعتر است. قالب بایت کد جزییات پیاده سازی تلقی می شود و تضمین نمی کند که بین نسخه های پایتون پایدار یا سازگار باشد. و با این حال، برای من بسیار روشنگر است که ببینم سوسیس چگونه درست می شود و درک حداقل برخی از کارهای درونی می تواند به شما در نوشتن کمک کند

کد عملکرد بیشتر (زمانی که این مهم است)

و همچنین بسیار است سرگرم کننده برای نگاه کردن به انتزاعات ارائه شده توسط مفسر CPython. بیایید این تابع greet() ساده را به عنوان نمونه آزمایشگاهی در نظر بگیریم که می توانیم بازی کنیم با و برای درک بایت کد پایتون استفاده کنید:return ‘Hello, ‘ + name + ‘!’ def greet(name): >>> greet(‘Guido’) ‘Hello, Guido!’به یاد داشته باشید که چگونه گفتم CPython ابتدا کد منبع ما را ترجمه می کند قبل از اینکه آن را “اجرا کند” به یک زبان میانی تبدیل شود؟ خوب، اگر این درست باشد، می توان. ما باید بتوانیم نتایج این مرحله تدوین را ببینیم. و ما هر تابع دارای یک ویژگی code (در پایتون 3) است که می توانیم از آن استفاده کنیم برای دستیابی به دستورالعمل ها، ثابت ها و متغیرهای ماشین مجازی استفاده شده توسط تابع سلام ما:b’dx01|x00x17x00dx02x17x00Sx00’ >>> greet.__code__.co_code (None, ‘Hello, ‘, ‘!’) >>> greet.__code__.co_consts >>> greet.__code__.co_varnames (‘name’,)می‌توانید ببینید co_consts شامل بخش‌هایی از رشته تبریک است که عملکرد ما جمع‌آوری می‌کند. برای صرفه جویی در حافظه، ثابت ها و کدها جداگانه نگهداری می شوند فضا. ثابت‌ها، خوب، ثابت هستند – به این معنی که هرگز نمی‌توان آن‌ها را تغییر داد و در مکان‌های مختلف به جای یکدیگر استفاده می‌شوند. بنابراین به جای تکرار مقادیر ثابت واقعی در co_code در جریان ساختار، پایتون ثابت ها را به طور جداگانه در یک جدول جستجو ذخیره می کند. سپس جریان دستورالعمل می تواند به یک ثابت با یک در dex در جدول جستجو اشاره کند. همین امر برای متغیرهای ذخیره شده در امیدوارم این مفهوم کلی شروع به روشن شدن بیشتر کند. ولی نگاه کردن به جریان دستورالعمل co_code هنوز کمی احساس را در من ایجاد می کند دلگیر واضح است که این زبان میانی برای کار آسان است فیلد co_varnames. برای ماشین مجازی پایتون، نه انسان. پس از همه، این همان چیزی است کد منبع مبتنی بر متن برای.

علیرضا بابامرادی

راه آسان‌تری برای ارتباط با کاربران‌مان پیدا کرده‌ایم :) عضویت در کانال

مطالب زیر را حتما بخوانید:

قوانین ارسال دیدگاه در سایت

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

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

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

لینک کوتاه:
0