Python vs. PHP

http://gognoos.com منبع

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

در این مقاله سعی شده تا فهرست مختصری از تفاوت های دو زبان برنامه نویسی Python و php بیان گردد. لازم به ذکر است زبان php جزو زبان های پرکاربرد و قدرتمند در زمینه وب بوده و زبان پایتون نیز علاوه بر کاربردهای فراوان دیگر آن ( ساخت بازی های کامپیوتری گرفته تا نرم افزارهای موبایل و نرم افزارهای دسکتاپ برای لینوکس و ویندوز و ...) در زمینه وب نیز علیرغم تازه وارد بودن (خصوصا در ایران) بسیار قدرتمند ظاهر شده و پا به پای دیگران در این عرصه رقابت می کند. زبان پایتون توسط ابرقدرت هایی همچون ناسا، گوگل و ... به طور گسترده ای مورد استفاده قرار گرفته است.



زمینه های مشترک


هر دو زبان python و php دارای ویژگی های زیر می باشند:

* زبان های تفسیری، سطح بالا و دارای انواع پویا می باشند
* متن باز هستند (مگر زمانی که انواع محصولات zend برای استفاده از php توصیه می شوند)
* دارای پشتیبانی توسط جوامع بزرگ توسعه دهنده
* یادگیری آنها آسان است (در مقایسه با java و perl)
* امکان توسعه آسان در c ، c++ و جاوا
* قابلیت حمل بالا دارند. این زبانها بر روی اکثر پلتفرم ها بدون کامپایل مجدد قابل اجرا می باشند.
* پشتیبانی از تعداد متغییر آرگومان توابع
* قابلیت آزادسازی آبجکت های فعال در ارائه رشته



مقایسه دو زبان


ویزگی هایی که php دارد و پایتون ندارد:

* دستور زبان مشابه C و Perl ، همراه با تعداد زیادی علامت دلار و جفت گیومه
* عبارت 'switch' و حلقه 'do ... while'
* عملگرهای تخصیص و افزایش کاهش (تخصیص در پایتون فقط عبارت می باشد)
* عملگر/عبارت سه تایی (... ? ... : ...)
* تابلو اسکیزوفرنیک از نام تابع
* زبان بسیار اتفاقی، جایی که تمام متغیرها مقدار NULL می گیرند و تا حدودی سیستم ضعیف انواع (نباید با انواع پویا اشتباه گرفته شود)
* محیط مصلحتی (عموما نصب شده)
* ارجاع ها ('a =& $b$' به این معنی می باشد که زمانی که b$ تغییر کرد، a$ نیز تغییر یابد)
* 1 نوع آرایه و دوبل آن به عنوان لیست و دیکشنری
* تغییر خصوصی، محفوظ و عمومی هم برای متدها و هم خواص
* تغییر انتزاعی و نهایی هم برای کلاس ها و هم متدها
* اینترفیس ها


ویزگی هایی که Python دارد و php ندارد:

* زبان برنامه نویسی چندکاره (نه فقط برای وب)
* برای نمایش ساختار بلوک به جای استفاده از کروشه از تورفتگی خطوط استفاده می شود
* فضاهای نام و ماژول ها
* هسته کوچک
* دستور زبان بسیار روشن، مختصر و متعامد
* زبانی خود مستند توسط docstrings و pydoc
* آرگومان های کلیدواژه برای توابع و متدها، پشتیبانی آسان از آرگومان های پیش فرض
* شی گرایی صحیح و توابع و کلاس های 'first class' صحیح
* کلاس ها به صورت گسترده ای در کتابخانه های استاندارد استفاده شده است
* مفهوم صفات خصوصی
* وراثت چندگانه
* مدیریت فایل شی گرا
* زنجیری متد
* خودکاوی عالی
* همه چیز مرجع است! (مراجع در PHP رنج آور هستند)
* یک عبارت 'del' برای همه ی انواع داده. (در PHP از 'unset' برای متغییرها و چیز دیگری برای اعضای آرایه استفاده می شود)
* case sensitivity سازگار (توابع PHP، حساس به حروف نیستند ولی متغیرها هستند)
* دستور زبان برش آرایه ساده
* lambdas و دیگر ساختارهای برنامه نویسی تابعی builtin
* تکرار کننده ها
* ساختار پردازش استثنا
* سربارگذاری عملگر
* یکپارچه سازی SWIG
* threading
* profiler عالی
* چندین debugger و IDE
* تعداد زیادی از انواع داده سطح بالا (لیست ها ، tuples ، dicts ، mx.DateTimes ، آرایه های NumPy ، و غیره)
* تفاوت بین آرایه (لیست) و آرایه های همبند (دیکشنری ها)
* تاریخ ها محدود به  timestamps یونیکس (2038) نیستند
* کامپایل بایت کد ذخیره سازی شده
* API استاندارد پایگاه داده
* پشتیبانی از همه ی فریم ورک های GUI بزرگ
* بین المللی سازی قدرتمند و پشتیبانی از پونیکد
* جاافتادگی، ثبات و سازگاری صعودی
* تمایل به رهبری برنامه های مقیاس پذیر خیلی بیشتر -- وارد کردن ماژول ها ایمن تر از ضمیمه کردن کدها ازروی متن در php می باشد: متغییرهای عمومی به منظور تبادل اطلاعات استفاده نمی شوند

 

 

برگرفته از http://wiki.python.org/moin/PythonVsPhp
نگارش و ترجمه : جلیل حمدالهی