پایتون برای همه | 6 | اصطلاحات: مفسر و کامپایلر

پایتون برای همه پایتون 3

اشتراک وفاداری

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

پایتون یک زبان سطحِ بالا به حساب می‌آید. هدف پایتون، راحتی و قابل فهم بودن آن برای انسان جهت خواندن و نوشتن متن برنامه است؛ به صورتی که کامپیوتر هم به واسطه‌ی پایتون بتواند همان فایل را بخواند و پردازش کند. زبان‌های برنامه‌نویسی سطح بالا بسیار زیادند. از جمله معروف‌ترین آن‌ها می‌توان به جاوا، C++‎،‏ Ruby، ‏PHP‏، Basic‏، Prel و جاوا اسکریپت اشاره کرد. پردازنده‌ی کامپیوتر (CPU) نمی‌تواند که زبان هیچکدام از این برنامه‌ها را بفهمد.

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

    001010001110100100101010000001111
    11100110000011101010010101101101
    ...

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

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

مترجم‌های زبان‌های برنامه‌نویسی در دو گروه اصلی خلاصه می‌شوند: ۱) مفسرها و ۲) کامپایلرها.

یک مفسر (interpreter) کد منبع را – همانگونه که برنامه توسط برنامه‌نویس نوشته شده – می‌خواند، تجزیه می‌کند و دستورالعمل (کد برنامه) را روی هوا تفسیر می‌کند. زمانی که ما از حالت تعاملی مفسر پایتون استفاده می‌کنیم، یک خط یا جمله‌ی پایتونی می‌نویسیم و پایتون در جا آن را خوانده، پردازش کرده و از ما طلب خط بعدی را می‌کند. البته این روند بستگی به میزان پردازش لازم هم دارد برای آن خط کد را نیز دارد.

برخی خطوط در پایتون، به او می‌گوید که «بایستی مقادیری را برای استفاده‌ی بعدی به خاطر بسپاری». برای این کار ما نامی برای آن مقدار برمی‌گزینیم که بتوانیم در آینده نیز آن نام را به خاطر آورده و مقدار متغیر را از آن خارج کنیم. اسم برچسب‌هایی که به این مقادیر می‌زنیم variable یا متغیر است. متغیرها، مقادیر را در خودشان نگه می‌دارند. به مثال زیر دقت کنید که متغیر x مقدار 6 را در خود دارد و متغیر y مقدار x * 7 را:

    >>> x = 6
    >>> print(x)
    6
    >>> y = x * 7
    >>> print(y)
    42
    >>>

در این مثال، ما از پایتون خواستیم که مقدار شش را به خاطر داشته باشد و برچسب x بر روی آن بزند. به این صورت ما در آینده می‌توانیم مقدار را توسط این برچسب احضار کنیم. ما با استفاده از print مطمئن می‌شویم که پایتون با فراخوانی برچسب، مقدار آن را نمایش می‌دهد. سپس از پایتون می‌خواهیم که مقدار برچسب خورده با x را بگیرد در هفت ضرب کند و در نهایت مقدار محاسبه شده را در y قرار دهد. سپس از پایتون می‌خواهیم که مقدار فعلی y را چاپ کند.

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

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

اگر از سیستم ویندوزی استفاده می‌کنید، این برنامه‌ها که به زبانِ ماشینِ‌اند و قابلیت اجرا بر روی کامپیوتر را دارند، پسوندی مثل «exe» یا «dll» را خواهند داشت که اولی به معنای «قابل اجرا بودن» و دومی «کتابخانه پیوند پویا» است. در لینوکس و مکینتاش پسوندی که نشان دهنده‌ی فایل قابل اجرا باشد وجود ندارد.

اگر شما یک فایل اجرایی را در ویرایشگر متن خود – مثلا Notepad – باز کنید، چیزی که نمایش داده خواهد شد، یک متن کاملا ناخوانا و اجق وجق خواهد بود:

    ^?ELF^A^A^A^@^@^@^@^@^@^@^@^@^B^@^C^@^A^@^@^@xa0x82
    ^D^H4^@^@^@x90^]^@^@^@^@^@^@4^@ ^@^G^@(^@$^@!^@^F^@
    ^@^@4^@^@^@4x80^D^H4x80^D^Hxe0^@^@^@xe0^@^@^@^E
    ^@^@^@^D^@^@^@^C^@^@^@^T^A^@^@^Tx81^D^H^Tx81^D^H^S
    ^@^@^@^S^@^@^@^D^@^@^@^A^@^@^@^A^D^HQVhTx83^D^Hxe8
    ....
 

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

وسط بحث ما در خصوص کامپایلر و مفسر شاید این فکر به ذهن شما خطور کند که خب، خودِ مفسر پایتونچطور نوشته شده است. آیا پایتون در یک زبان کامپایل‌شده نوشته شده؟ وقتی ما در خط فرمان می‌نویسیم python دقیقا چه اتفاقی می‌افتد؟

پایتون با زبان سطح بالایی به اسم C نوشته شده است و می‌توانید از طریق سایت www.python.org کد منبع آن را مشاهده کنید. در اصل پایتون خودش یک برنامه‌ای‌ست که به صورت زبان ماشین کامپایل شده است. زمانی که پایتون را روی سیستم خود نصب می‌کنید شما یک رونوشت از برنامه‌ی کامپایل شده و به زبان ماشین درآمده‌ی پایتون را بر روی سیستم خود قرار می‌دهید. در ویندوز، کدِ ماشین پایتون که قابلیت اجرا داشته باشد احتمالا در مسیر زیر قرار گرفته است:

    C:Python35python.exe

این اطلاعات بیشتر از آن چیزی بود که برای برنامه‌نویسی نیاز داشتید. در اصل دانستن یا ندانستنشان زیاد تاثیری در روند برنامه‌نویسی شما ندارد ولی گاهی دانستن این موارد به شما کمک می‌کند تا درک بهتری از روند کار داشته باشید.

این نوشته تحت مجوز کرییتیو کامنز BY – NC و حمایت موسسه تحقیقاتی رامونا ارائه می‌شود. شما می‌توانید با توجه به مفاد این گواهی از آن استفاده کنید.

1 دیدگاه

پاسخ دهید

ایمیل شما نمایش داده نخواهد شد