PDA

View Full Version : روش تفسیر کدها در مفسر پایتون چگونه است؟



taha11111
جمعه 20 شهریور 1394, 23:01 عصر
سلام.
توی پایتون ، کد هایی که تایپ می کنیم چطوری اجرا میشن؟

1- مفسر کد پایتون رو به زبون ماشین ترجمه و بعد همزمان اون رو اجرا میکنه.
2- یا نه ، مثل ترمینال یا سی ام دی میگه هر وقت به فلان دستور برخورد کردی فلان کار رو انجام بده (مثلا میگه هر وقت دستور ipconfig نوشته شد فلان کد رو اجرا کن).
3- یا این که به یک زبون مستقل از ماشین ترجمه و همزمان اون رو اجرا میکنه. (مثلا به زبون مستقل از ماشینی که کامپایلر های دات نت یا جاوا کد ها رو به اون ترجمه و بعدا توسط ماشین مجازی اجرا میشن) .

n.nowroozi
شنبه 21 شهریور 1394, 07:39 صبح
کامپایلی در کار نیست تا جایی که میدونم مفسر میاد خط به خط کد رو میخونه و اجرا میکنه ..

taha11111
شنبه 21 شهریور 1394, 09:02 صبح
http://trizpug.org/Members/cbc/wyntkap/img/interpreter.png

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

HackNetProg
شنبه 21 شهریور 1394, 09:34 صبح
به زبان ساده پایتون رو مثل جاوا در نظر بگیرید ، که ی ماشین مجازی رو روی سیستم شما نصب میکنن و روی اون کد ها رو اجرا میکنن.
این یعنی دوتا موضوع معم :
اگر میخوای پایتون رو اجرا کنی باید روی سیستمت نصب باشه => مستقیم روی سخت افزار اجرا نمیشه => مستقل از سخت افزار
هر جایی که بتونی پایتون و نصب کنی میتونی برنامه هاشو اجرا کنی => قابلیت انتقال پذیری


اما اینکه پایتون کامپایلر داره یا نه ؟
باید بگم هم اره هم نه !
نسخه هایی از پایتون هست که کامپایل میکنن کد رو
اما این نسخه ای که روی سایت Python.org هست اینترپرتر داره
یعنی خط به خط پیش میره و نفسیر میکنه

taha11111
شنبه 21 شهریور 1394, 11:48 صبح
به زبان ساده پایتون رو مثل جاوا در نظر بگیرید ، که ی ماشین مجازی رو روی سیستم شما نصب میکنن و روی اون کد ها رو اجرا میکنن.
این یعنی دوتا موضوع معم :
اگر میخوای پایتون رو اجرا کنی باید روی سیستمت نصب باشه => مستقیم روی سخت افزار اجرا نمیشه => مستقل از سخت افزار
هر جایی که بتونی پایتون و نصب کنی میتونی برنامه هاشو اجرا کنی => قابلیت انتقال پذیری


اما اینکه پایتون کامپایلر داره یا نه ؟
باید بگم هم اره هم نه !
نسخه هایی از پایتون هست که کامپایل میکنن کد رو
اما این نسخه ای که روی سایت Python.org هست اینترپرتر داره
یعنی خط به خط پیش میره و نفسیر میکنه
خوب وقتی میگید تفسیر میکنه یعنی مثل ترمینال یا سی ام دی ویندوز میگه هر وقت به فلان دستور برخوردی فلان کد رو اجرا کن؟؟؟ یعنی اصلا هر خط رو به هیچ زبونی ترجمه و همزمان اجرا نمیکنه؟

HackNetProg
دوشنبه 23 شهریور 1394, 09:30 صبح
پایتون مدل های پیاده سازی مختلفی داره مثل پیاده سازی روی جاوا، سی ، دات نت و ...
اما اینی که تویه سایت https://www.python.org/ هست رو interpreter شو با زبان C نوشتن. کارش اینه که یک سری bytecode تولید میکنه که روی virtual machine اجرا میشه و اینم با C نوشتن.
کتابخونه هاشم یک سریش با سی هست ی سری هم با پایتون.
این کد های به بایت کد تبدیل میشن. بایت کد زبان هست ولی نه مثل این زبان هایی که میشناسید بیشتر ازین که برای انسان قابل درک باشه ، روی سرعت اجراش روی ماشین کار میشه .
این چندتا لینک هم ببنید




http://stackoverflow.com/questions/1782415/what-is-the-difference-between-assembly-code-and-bytecode
http://stackoverflow.com/questions/2203248/what-are-bytecodes-and-how-does-the-jvm-handle-them/2203296#2203296
https://en.wikipedia.org/wiki/Interpreter_(computing)
https://en.wikipedia.org/wiki/Bytecode
https://en.wikipedia.org/wiki/Machine_code

taha11111
دوشنبه 23 شهریور 1394, 18:38 عصر
پایتون مدل های پیاده سازی مختلفی داره مثل پیاده سازی روی جاوا، سی ، دات نت و ...
اما اینی که تویه سایت https://www.python.org/ هست رو interpreter شو با زبان C نوشتن. کارش اینه که یک سری bytecode تولید میکنه که روی virtual machine اجرا میشه و اینم با C نوشتن.
کتابخونه هاشم یک سریش با سی هست ی سری هم با پایتون.
این کد های به بایت کد تبدیل میشن. بایت کد زبان هست ولی نه مثل این زبان هایی که میشناسید بیشتر ازین که برای انسان قابل درک باشه ، روی سرعت اجراش روی ماشین کار میشه .
این چندتا لینک هم ببنید




http://stackoverflow.com/questions/1782415/what-is-the-difference-between-assembly-code-and-bytecode
http://stackoverflow.com/questions/2203248/what-are-bytecodes-and-how-does-the-jvm-handle-them/2203296#2203296
https://en.wikipedia.org/wiki/Interpreter_(computing)
https://en.wikipedia.org/wiki/Bytecode
https://en.wikipedia.org/wiki/Machine_code


ممنونم از جوابتون. :تشویق::لبخند: