PHP یا Node.js؟

در این مطلب قصد داریم تا بعضی از ویژگی های Node.js و PHP رو که باعث میشه اونها رو دوس داشته باشیم بررسی کنیم. ببینید هدف این نیست که بگیم کدوم یکی بهتر از اون یکیه! چون واقعا هیچکس نمیتونه در این مورد نظر کلی بده. ما هم قصد نداریم این کارو بکنیم. فقط نگاهی کلی داریم به اون دسته از ویژگیهای اونا که باعث میشن توسعه دهندهها توی انتخاب زبان سرورسایدشون دچار سرگیجه بشن:
نقطه قوت PHP: ترکیب کد با محتوا
خب من میخوام کمی متن به صفحهی وبم اضافه کنم، یا یه ساختار if else
رو بر اساس اون چیزی که از url
دریافت میکنم مابین کدهام قرار بدم. یا شاید بخوام اطلاعاتی که از پایگاه داده میگیرم رو با یه سری نوشتههای دیگه ترکیب کنم. تگ PHP
رو باز کنین و کدنویسی رو در عرض چند ثانیه شروع کنین! نیازی هم به template
خاصی نیست چون اینجا هر چیزی میتونه یه template
باشه. نیازی به فایلهای اضافی یا معماریهای مشقت بار نیست، فقط کافیه سر انگشتاتون با منطق برنامه نویسی آشنا باشن.
نقطه قوت Node.js: جدا سازی مسائل
ترکیب کد با متن و محتوا گاهی وقتها میتونه عصای دستتون باشه. مطمئنا برای بار اول و دوم جالبه که بتونین کدهای HTML
رو با PHP
ترکیب کنین. اما خیلی زود کد شما از نظر منطقی به شکل افتضاحی در میاد. برنامه نویسان واقعی به برنامه شون ساختار اضافه میکنن و لایه ی دیزاین رو از لایهی منطق تفکیک میکنن. این برای برنامه نویسهای تازه کار یه نعمته که کدهای تمیز ببینن و به آسونی اونا رو درک کنن. فریم ورکهایی که روی node.js اجرا میشن توسط برنامه نویسایی ساخته شدن که، میدونن زندگی وقتی بهتر میشه که مدل ، ویو و کنترلرها از هم جدا باشن. البته PHP
هم فریمورکهایی داره که این کار و انجام میدن و نمیشه گفت این نقطه قوت فقط مختص node.js
هست!
نقطه قوت PHP: ریشهی قویتر
وب پر از کدهای PHP
هستش. اکثر پلتفرمهای پرطرفدار ساخت وبسایتها با PHP
نوشته شدن. مثل وردپرس یا جوملا و دروپال. حالا به اینا اضافه کنید این همه پلاگین رنگارنگی که واسشون نوشتن رو! کدهای PHP همه جا هستن و فقط کافیه دانلودشون کنین، تغییرشون بدین و بر حسب نیازهاتون ازشون استفاده کنین.
نقطه قوت Node.js: کد جدیدتر = ویژگیهای مدرنتر
خب قبوله، هزاران فایل اوپن سورس PHP
وجود دارن. اما نکته ی بامزهش اینجاس که من پلاگینهایی از وردپرس رو میشناسم که هشت سالشون شده و هنوز امیدوارن و در واقع التماس میکنن که تو رو خدا یکی منو دانلود کنه! چه کسی دوس داره ساعتها و روزها و هفتهها وقتش و با کدی تلف کنه که بعد از این همه سال هنوز به روز نشده؟ پلاگینهای Node.js
نه تنها جدیدترن، بلکه با دانش کامل از آخرین دیدگاهها و دستاوردهای معماری نرمافزاری ساخته شدن. اونها بوسیله برنامه نویسایی ساخته شدن که به این درک رسیدن که اپلیکیشنهای وب مدرن باید هوشمندی بیشتری رو به کاربر از خودشون نشون بدن. به بیان ساده تر: خیلی خفن هستن!
نقطه قوت PHP: (نوعی از) سادگی
PHP
چیز زیادی لازم نداره. چند تا متغیر و تابع (نکته: هنوز کسی معادل فارسی مناسبی واسه function
پیدا نکرده؟!) برای کار با رشتهها و اعداد کافیه. در واقع میشه گفت سنگینترین کاری که PHP
انجام میده انتقال اطلاعات از پورت ۸۰ به دیتابیس و بالعکسه. این همون چیزیه که از PHP
انتظار میره. PHP
مقدار درست و صحیحی از پیچیدگی رو داره و کاری رو که پیچیده نیست، پیچیده ترش نمیکنه!
نقطه قوت Node.js: ترکیب Closureها و بیشتر
برای دونستن در مورد closure
ها اینجا رو ببینید.
جاوااسکریپت ممکنه یه سری خصوصیاتی داشته باشه که دیوانه کننده به نظر برسه، اما بیشتر این خصوصیات باعث میشن جاوااسکریپت یه زبان مدرن باشه که از گرامر و سینتکس مدرنی و ویژگیهای مفیدی مثل Closure
ها پشتیبانی میکنه. شما میتونین اون رو پیکربندی کنید و به راحتی توسعه بدین، کتابخونههای قدرتمندی مثل جیکوئری باهاش بسازین و توابع رو مثل آبجکتها پاس بدین. پس چرا باید خودتونو محدود کنین؟
نقطه قوت PHP: هیچ اپلیکیشن کلاینتی نیاز نیست
همه ی صحبتهایی که در مورد استفاده از زبان مشترک در سمت مرورگر و سمت سرور میشه زیبا هستن، اما اگه نیاز به استفاده از هیچ زبانی روی مرورگر نباشه چی؟ اگه بخوایم اطلاعات رو روی فرم های HTML
سوار کنیم چی؟ مرورگر این کار و انجام میده و دیگه با مشکلاتی مثل عدم اجرای رشته های جاوااسکریپتی که سعی میکنن یه صفحه رو روی مرورگر از طریق اجرای صدتا وب سرویس ایجاد کنن، روبرو نیستیم. HTML
خالص خیلی راحتتر از هر چیز دیگه کارا رو پیش میبره و PHP
خیلی عالی برای این کار بهینه سازی شده. چرا میخواین با اجرای جاوااسکریپت روی مرورگر خودتونو به دردسر بندازین؟
نقطه قوت Node.js: فراخوانی سرویسها حجم کمتری از فراخوانیهای سنگین PHP بر پایهی HTML دارن
از اونجایی که اپلیکیشنهای وب HTML5
که با ajax
کار میکنن میتونن قسمتهای متحرک زیادی داشته باشن، خیلی با حال و کاربردی هستن. تا وقتی کد جاوااسکریپت توی کَش مرورگر هست، تنها چیزی که توی سیمها در حال جابجایی هست دادههای جدید هست. دیگه خبری از یه تُن کد HTML
نیست و دیگه لازم نیست صفحه رو مدام رفرش کنیم تا چیزای جدیدی ببینیم. فقط دادهها هستن که دارن عوض میشن. اگه میخواین یک اپلیکیشن تحت وب جذاب بسازین بهترین انتخاب جاوااسکریپته. Node.js
ساخته شده تا فقط و فقط دادهها رو انتقال بده. اگه اپلیکیشن شما پیچیده و پر از دادهه است، Node.js
یه ساختار خوب برای تحویل سریع داده ها داره.
نقطه قوت PHP: SQL
PHP
و MySQL
همیشه با هم هستن و اگه هم MySQL
در دسترس نباشه، پایگاه دادههای مبتنی بر SQL
دیگه از طرف اوراکل و مایکروسافت هم هستن که میشه خیلی راحت با یه خرده تغییر توی کوئریها بین اونا سوییچ کرد. دنیای بزرگ SQL
محدود به مرز نیست و بسیاری از پروژههای بزرگ از دیتابیس های SQL
استفاده میکنن. شاید بهترینِ بهترینها نباشه، اما کارای بزرگی ازش برمیاد.
نقطه قوت Node.js: JSON
اگه مجبورین که با SQL
در ارتباط باشین، Node.js
هم کتابخونههایی برای این کار داره. اما Node.js
از JSON
که در حد یه زبان بینالمللی هست استفاده میکنه که میتونه با خیلی از پایگاه داده های NoSQL
صحبت کنه. البته معنیش این نیست که شما نمیتونین از کتابخونههای کار با JSON
توی PHP
استفاد کنین، اما استفاده از JSON
توی جاوااسکریپت با توجه به این که ساختارشون یکیه راحت تره. همین باعث میشه کلی از وقتتون رو صرفه جویی کنین.
نقطه قوت PHP: سرعت کدنویسی
برای خیلی از توسعه دهندهها، نوشتن اپلیکیشن با PHP
سریعتر به نظر میرسه. کامپایلر خاصی نیاز نیست، فایل JAR
نیاز نداریم و قرار نیست از preprecessor ها استفاده کنیم. فقط ادیتور مورد علاقتون رو باز میکنین و یه تعداد فایل PHP
رو توی دایرکتوری خودتون قرار میدین.
نقطه قوت Node.js: سرعت اولیه
نوشتن کد جاوااسکریپت کمی سختتر میشه اگه بخواین پارانتزها و براکتهای پیچیده رو بشمارین! اما وقتی تموم بشه، کد شما تبدیل به باقلوا میشه. مکانیزم callback
فوقالعادهس چون شما رو از سر و کله زدن با رشتهها نجات میده. هستهی کار خیلی عالی ساخته شده و طراحی شده تا کاری رو که میخواین براتون انجام بده. از این بهتر؟
جمع بندی
برنامه نویس خوب کسیه که بتونه توی هر پلتفرمی برنامهی خوب بنویسه و سرعت خودش و اپلیکیشنی که میسازه براش قابل قبول باشه و اگر هم نیاز شد بتونه بین پلتفرمهای مختلف سوییچ کنه و کاراشو پیش ببره. پس درگیر این نباشین که چی بهتر و سریعتره، آستینها رو بالا بزنین و شروع به نوشتن کنید!