جمعه ۱۴ آذر ۱۴۰۴ |  عضویت / ورود

PHP یا NodeJS ؛ کدامیک برای back-end مناسب‌تر است؟


یکی از سخت‌ترین انتخاب‌ها در برنامه‌نویسی، انتخاب زبان Backend است؛ چرا که با طیف گسترده‌ای از زبان‌ها طرف هستیم:

PHP, NodeJS, Python, ASP, JSP, Ruby on Rails, ...

اما خوشبختانه خبر خوب این است که فعلاً علی‌الحساب درگیری اصلی بین سه زبان اول یعنی PHP و NodeJS و Python است. (در هر زمانی چند زبان در صدر هستند؛ مثلاً زمان ما دعوا بین PHP و ASP بود؛ که خوب ASP به رحمت خدا رفت)

چرا Python را پیشنهاد نمی‌کنم؟

به نظر من Python موجی است مانند Delphi و VB و ... که یک روز (که دیر نیست) خواهد خوابید. (۲۰ سال پیش وقتی می‌گفتند فلانی برنامه‌نویس است یعنی دلفی بلد بود! حالا برنامه‌نویسان جدید اسم آن را هم نشنیده‌اند)

بزرگ‌ترین دلیل مرگ زبان‌هایی مانند Delphi و VB از نظر من ساختار غیر مبتنی بر C بود. پایتون نیز همان اشتباه را تکرار کرده است. به‌خصوص حذف آکولادها {} که به نظر من فقط یک احمق می‌تواند این کار را انجام دهد! (البته سازنده این زبان تقصیری نداشته، او قرار بود یک زبان ساده برای آموزش برنامه‌نویسی به دبیرستانی‌ها بسازد که شوخی‌شوخی جدی شد! و من فکر می‌کنم به همان صورت هم به ملکوت اعلا خواهد پیوست) شما تصور کنید، در برنامه‌نویسی دائم پیش می‌آید که هنگام کپی کردن کدها، تورفتگی‌ها از بین می‌رود. اگر در یک قطعه کد پایتون چنین اتفاقی بیفتد، شما باید بشینید کل آن کد را از اول مرور کنید و تورفتگی‌ها را خودتان اصلاح کنید! هیچ هوش مصنوعی‌ای نمی‌تواند به طور ۱۰۰٪ به شما کمک کند!

خلاصه اینکه این Syntax، یک سینتگس حرفه‌ای نیست...

https://img.aftab.cc/news/99/php_vs_nodejs.png

PHP یا NodeJS ؟

حالا چالش اصلی انتخاب بین پی.اچ.پی و نودجی‌اس است. انتخاب فوق‌العاده سختی است؛ چون هر کدام برتری‌های وسوسه‌کننده‌ای دارند.

مزایای PHP نسبت به NodeJS

  • PHP از نظر درک، ساده‌ترین زبان برنامه‌نویسی دنیا به حساب می‌آید.
  • بزرگ‌ترین عیب NodeJS این است که شما چندین جایگزین برای آن دارید که همه ادعا می‌کنند بهتر از NodeJS هستند! یعنی تا می‌خواهید نود را یاد بگیرید، می‌بینید Deno آمد! تا می‌خواهید دنو را یاد بگیرید می‌بینید Bun آمد! و این قصه ادامه دارد! اما PHP اینطور نیست! شما یک زبان را یاد می‌گیرید و بس!
  • PHP دارای صدها تابع توکار (Built-in) است که نیاز شما را به کتابخانه‌ها و کدهای دیگران برطرف می‌کند اما در NodeJS شما برای یک کار ساده (مانند کار با کوکی) باید به کتابخانه‌ها متوسل شوید و برای هر کار ده‌ها کتابخانه وجود دارد که معلوم نیست کدام باگ دارد یا ندارد و کدام حرفه‌ای نوشته شده یا بهینه نیست و خلاصه باید بشینید تک‌تک همه را تجربه کنید!
  • NodeJS بر روی هر هاستی اجرا نمی‌شود؛ باید هاست مجهز به NodeJS باشد؛ اما PHP تقریباً بر روی همه هاست‌ها بدون نیاز به تغییر خاصی اجرا می‌شود.
  • NodeJS ده‌ها نسخه و آپدیت دارد و تغییرات در هر نسخه تقریباً زیاد است؛ اما PHP اینطور نیست؛ یعنی کدی که ۲۰ سال پیش نوشته بودید تقریباً بدون مشکل روی PHP جدید اجرا می‌شود و کد جدید شما هم روی نسخه‌های قدیمی با حداقل تغییرات اجرا خواهد شد.

مزایای NodeJS نسبت به PHP

  • بزرگ‌ترین مزیت نود این است که در حقیقت این زبان همان زبان JavaScript است که شما از قبل بلد هستید و این یعنی هر چقدر نودجی‌اس شما قوی شود، در سمت کلاینت، جاوا اسکریپت شما قوی می‌شود و هر چقدر جاوا اسکریپت خود را قوی‌تر کنید، در سمت سرور نودجی‌اس شما قوی‌تر می‌شود. و این واقعاً چیزی است که عقل حکم می‌کند! یعنی عقل می‌گوید به جای دو زبان، اگر می‌شود، یک زبان را تخصصی‌تر یاد بگیر...
  • Node یک زبان Asynchronous (نامتقارن) است و PHP یک زبان Synchronous (متقارن) و این مزیت این زبان را به طور ویژه برای همزمانی‌های زیاد عالی می‌کند. در این مورد در سال ۹۹ در مطلب «دنیای آینده برنامه‌نویسی وب به سمت Fullstack JS پیش خواهد رفت» توضیح داده بودم.
  • مزیت پایانی، Syntax جالب زبان جاوا اسکریپت است؛ به ویژه کاربرد ` (بک‌تیک) در اطراف رشته که یکی از بزرگ‌ترین چالش‌های PHP و دیگر زبان‌ها را حل کرده است.

من با اینکه یک PHPکار هستم، اما در پروژه I'm done تلاش کردم که به طور کامل از NodeJS استفاده کنم؛ هر چند با یک پروژه نمی‌شود تصمیم گرفت، اما من در این سطح نتوانستم با مفاهیم نامتقارن نود.جی.اس کنار بیایم! شاید همان پیشنهاد وب‌سایت‌های مشهور درست باشد: برای تولید CMSها و سامانه‌های مشابه، بهتر است از PHP استفاده شود و برای تولید سامانه‌هایی مانند شبکه‌های اجتماعی و... که همزمانی در آن‌ها مهم است، استفاده از NodeJS بهتر به نظر می‌رسد.

موفق باشید؛
حمید رضا نیرومند
 


[ارسال شده در مورخه : یکشنبه، 19 مرداد، 1404 توسط Hamid]
[ #برنامه‌‌نویسی]



بازدیدها از این مطلب: 724 بار   امتیاز متوسط : 0  تعداد آراء: 0   امتیاز دهید:

نظرات طرح شده

نام: [ کاربر جدید ]
ایمیل:

نظر:


اجازه استفاده از تگهای HTML را ندارید


جمع عدد 12 با 6 را در كادر زیر وارد نمایید:
(این كار برای جلوگیری از فعالیت موتورهای اسپمر است)


* توجه: نظر شما بعد از بررسی، نمایش داده خواهد شد.

Whisper                توسط Whisper در مورخه : یکشنبه، 19 مرداد، 1404(لینک نظر)
اتفاقاً دعوا فقط بین این سه زبان نیست...
مایکروسافت دات نت رو اوپن سورس کرده

از دات نت ۶ به بعد هم دات نت کراس پلتفرم شده و روی بیشتر بسترها اجرا میشه

به جز .Net و Node.js و python و php زبان‌های کامپایلری جدیدی مثل Go lang و Rust هم کم کم دارن پا می‌گیرن
با اینکه جامعه آماری خیلی کمی دارن ولی پرفورمنس بالایی دارن


ولی به نظرم در حال حاضر php بهترین زبان سمت سروره اینکه تا چند سال دیگه چی بشه خدا می‌دونه (همین چند روز پیش هم ورژن ۸.۵ آلفا اومد بیرون)

برای کسایی که php کار هستن نود جی اس عذابه...
اینکه فقط برای ست کردن یا گرفتن یه سشن یا کوکی بخوای یه ماژول بیاری و حدود ۵ ۶ خط کد بنویسی واقعاً مسخره هست


[ ارسال جوابیه ]


رضا (امتیاز : 0)(لینک نظر)
توسط رضا در مورخه : سه شنبه، 21 مرداد، 1404
نقد مقاله توسط chatGPT:

بخش Python

موارد صحیح یا قابل دفاع:
• تاریخچه طراحی پایتون: بله، پایتون در ابتدا برای اهداف آموزشی و سادگی طراحی شد (دهه ۹۰ میلادی، توسط Guido van Rossum) و بعدها بسیار گسترده شد.
• مشکل حساسیت به تورفتگی (Indentation): این مورد واقعاً وجود داره؛ در کپی‌پیست یا تغییر فرمت ممکنه کد خراب بشه، ولی این مشکل در عمل با ابزارهای مدرن (IDEها، auto-formatters) خیلی کم پیش میاد.
• پایتون مبتنی بر C نیست: درست است که Syntax پایتون مثل خانواده C (C, C++, Java, JavaScript) نیست، ولی این الزاماً بد یا عامل «مرگ» نیست.

موارد غلط یا گمراه‌کننده:
• پیش‌بینی مرگ پایتون مثل Delphi یا VB: شواهد فعلی خلاف این رو نشون می‌ده. پایتون الان (۲۰۲۵) یکی از پرتقاضاترین زبان‌ها در داده‌کاوی، هوش مصنوعی، اتوماسیون و حتی بک‌اند هست. جامعه کاربری بزرگ، کتابخانه‌های قوی و سرمایه‌گذاری شرکت‌های بزرگ باعث می‌شه به این زودی‌ها از بین نره.
• حذف آکولادها فقط کار یک «احمق» است: این بیشتر نظر شخصیه. فلسفه پایتون اینه که کد خواناتر باشه و از شلوغی ظاهری کم کنه. خیلی‌ها این رو مزیت می‌دونن.
• هیچ هوش مصنوعی نمی‌تواند تورفتگی را ۱۰۰٪ درست کند: در عمل ابزارهایی مثل black, autopep8 یا حتی IDEها مثل PyCharm و VSCode این کار رو تقریباً بدون خطا انجام میدن.



بخش PHP و NodeJS

موارد صحیح یا قابل دفاع:
• PHP روی تقریباً همه هاست‌ها پشتیبانی می‌شود: این واقعیت دارد. به خاطر قدمت و مدل اجرا (بدون نیاز به daemon مستقل)، هاست اشتراکی به راحتی PHP رو ساپورت می‌کنه.
• تغییرات NodeJS و وجود Deno و Bun: بله، در دنیای جاوااسکریپت فریم‌ورک‌ها و محیط‌های اجرایی سریع رشد و تغییر می‌کنن و این می‌تونه برای تازه‌کارها گیج‌کننده باشه.
• NodeJS مناسب همزمانی (Concurrency) بالا: درست است، مدل asynchronous و event-driven برای پردازش همزمان I/O زیاد خیلی بهینه است.
• مزیت یادگیری یک زبان (JS) برای هر دو سمت: واقعیت داره، چون JS در کلاینت و سرور یکسان می‌مونه.

موارد غلط یا نیازمند اصلاح:
• PHP ساده‌ترین زبان برنامه‌نویسی دنیاست: این یک ادعای نسبی و شخصیه. برای بعضی‌ها درست، ولی مثلاً Python از نظر سادگی یادگیری حتی ساده‌تر محسوب میشه.
• PHP فقط یک نسخه یاد بگیرید و بس: PHP هم نسخه‌های مهم با تغییرات بزرگ داشته (مثلاً PHP 5 → PHP 7 یا PHP 8). بعضی کدهای قدیمی نیاز به اصلاح جدی دارن.
• در NodeJS باید همیشه کتابخانه نصب کنید حتی برای کار ساده: خیلی از قابلیت‌ها در ماژول‌های داخلی Node هست، ولی PHP از ابتدا توابع built-in بیشتری در core خودش داره. این تفاوت هست ولی به این شدت نیست که NodeJS «همیشه» نیاز به کتابخانه خارجی داشته باشه.
• سازگاری ۲۰ ساله PHP بدون تغییر: این تا حدی اغراق‌آمیزه. بسیاری از توابع و ویژگی‌ها در نسخه‌های جدید حذف یا تغییر پیدا کردن (مثلاً mysql_* functions).



جمع‌بندی کلی:
• نقاط قوت مقاله: تجربه شخصی نویسنده در کار با PHP و NodeJS، توضیح مزایای عملی PHP در هاست اشتراکی، و اشاره به اهمیت مدل Asynchronous در NodeJS.
• نقاط ضعف مقاله: پیش‌بینی آینده زبان‌ها بر اساس تاریخچه‌ی متفاوت زبان‌های دیگه (Delphi, VB) منطقی نیست، دیدگاه نسبت به Python بیش از حد منفی و شخصیه، و بعضی مقایسه‌ها مطلق‌گرایانه یا اغراق‌آمیزه.


[ ارسال جوابیه ]


[بدون موضوع]                توسط در مورخه : پنجشنبه، 13 شهریور، 1404(لینک نظر)
به نظر من تعریف و پیش بینی تون درباره پایتون غیرحرفه‌ای بود
همچنین پیشنهاد می کنم برای مقایسه زبان های مختلف وب سایت techempower رو ببینید
صدها زبان برنامه‌نویسی رو در سکوی های مختلف و با روش های و بنچمارک‌های متنوع مورد تست قرار داده
حتی ارزش دارد در یک پست مجزا معرفی ش کنید
ارادتمند

https://www.techempower.com


[ ارسال جوابیه ]


ابوالفضل                توسط ابوالفضل در مورخه : جمعه، 11 مهر، 1404(لینک نظر)
برنامه های شمارو همرو دیدم خودمم php نویسم باید بگم ما اونقدر مبدی مینویسیم و اونقدر کد هامون کوچیکن که همین php و نهایت لارولی ک کنارشه همه نیاز هامون رو پاسخ میده
این حرفا هم برای اوناییه که حد اکثر استفادرو از یک زبان میکنن


[ ارسال جوابیه ]