در مطلب قبل درباره برخی اصطلاحات در دنیای طراحی وب توضیح دادم: توضیح چند اصطلاح در طراحی وب: Roadmap , Front-end, Back-end, Fullstack, DevOps یعنی چه؟
در اینکه در برنامهنویسی سمت کلاینت یا Front-end یا به عبارتی برنامهنویسی ایستا (Static) باید بر HTML و CSS و Javascript مسلط شوید شکی نیست چون مرورگرها فقط همین سه زبان را میشناسند. اما سؤال این است که:
برای Back-end (یعنی سمت سرور) چه زبان برنامهنویسی را یاد بگیرم؟
برای Back-end یا همان طراحی پویا (Dynamic) فعلاً تا این لحظه این گزینهها را پیش رو دارید:
PHP
ASP
JSP
Python
که افرادی که با بنده دورههای طراحی وب را پاس کردهاند میدانند که من همانطور که در مطلب «کدام زبان برنامه نویسی را یاد بگیریم؟» هم توضیح دادهام، زبان PHP را پیشنهاد میدادهام.
اما موضوع این است که چند سالی هست که به این لیست، NodeJS هم اضافه شده و ظاهراً دارد خوب پیش میرود. من در ابتدا شک و شبهههایی دربارهاش داشتم اما کمکم دارم قانع میشوم که پشتیبانان فعال و پیگیری دارد.
چرا Python نه؟
این روزها یک موجی شکل گرفته به سمت زبان برنامهنویسی پایتون یا پیتون. اما من معتقدم این موج خیلی زود خواهد خوابید.
کسانی که میگویند همه جا صحبت از Python است و بعید است که این زبان نابود شود، احتمالاً زمانی که VB همه جا را گرفته بود به دنیا نیامده بودند یا حداقل به دنیای برنامهنویسی نیامده بودند. احتمالاً زمانی که همه جا صحبت از Delphi بود را درک نکردهاند! همان موقع من با هر دوی این زبانها مخالف بودم و حالا کسی اسم آنها را هم نشنیده! احتمالاً این افراد ده سال پیش که همه جا صحبت از Ruby on Rails بود را به یاد نمیآورند!؟
Python از نظر من به همان سرنوشت VB و Delphi دچار خواهد شد. مهمترین دلیل آن این است که پایتون ساختار C-based ندارد. ساختار C-based مورد قبول هر انسان عاقلی است و به نظر میرسد ساختاری غیر از آن عاقلانه به نظر نمیرسد. (پایتون جداکننده دستورات را «خط جدید» قرار داده و از آن عجیبتر اینکه یک Block کد در آن با فرورفتگی کدها مشخص میشود! و دلایل مختلف دیگر از جمله: وجود آپشنهای بهتر!)
چرا Node.js ؟
پیشبینی من این است که به زودی احتمالاً باید با PHP هم خداحافظی کنیم و به سمت NodeJS برویم؛ چون:
۱- نود.جی.اس همان جاوا اسکریپت است؛ پس نیازی به یادگیری زبان جدید ندارید.
وقتی میشود با یک زبان هر دو کار سمت کلاینت و سمت سرور را به خوبی انجام داد؛ هر انسان عاقلی به این نتیجه میرسد که به جای دو زبان، یک زبان را یاد بگیرد. تازه، شما اگر سمت سرور را با جاوا اسکریپت کدنویسی کنید، کدنویسی سمت کلاینت شما قویتر و حرفهایتر خواهد شد؛ تمرکز روی یک زبان بسیار بهتر از تمرکز روی دو زبان است؛ دقت کنید که عمر شما کفاف نمیدهد که در چندین زبان به تخصص کامل برسید؛ پس باید تا جایی که میشود از تعداد آنها کم کنید.
۲- نود.جی.اس Asynchronous است ولی پی.اچ.پی Synchronous است.
تفاوت اجرای نامتفارن و متفارن در شکل زیر مشخص است:
روال اجرای کدها در ASP و PHP به این صورت است:
- دستور به File System سرور ارسال میشود.
- منتظر میماند تا سرور فایل مورد نظر را باز و اجرا کند.
- داده آمده میشود و به کلاینت ارسال میشود.
- سرور آماده اجرای دستور بعدی است.
اما در Node.js روال اجرا به این صورت است:
- دستور به File System سرور ارسال میشود.
- سرور آماده اجرای دستور بعدی است.
- هر زمان سرور فایل مورد نظر را باز و اجرا کرد، دادهی آماده شده به کلاینت ارسال میشود.
این تفاوت باعث شده که در تستهای انجام شده، کارایی Node.js نسبت به PHP به این صورت باشد:
یعنی Node,js بیش از دو برابر تقاضا در ثانیه نسبت به PHP هندل میکند. این تفاوت در سیستمهایی مانند تِستا که یک سیستم برگزاری آزمون آنلاین است و ممکن است هزاران کاربر هجوم بیاورند که در آزمون شرکت کنند، خودش را به خوبی نشان خواهد داد.
به نظر من همین دو تفاوت کافی است که کمکم PHP را رها کنیم و به Node.js بپیوندیم؛ اما توضیحات بیشتر در مقایسه این دو زبان در سایت GeeksForGeeks موجود است.
اگر تصمیم گرفتهاید که Node.js را یاد بگیرید، طبیعتاً ابتدا نیاز دارید که زبان Javascript را یاد بگیرید؛ سپس کافیست به سایت W3schools بروید و آموزش Node.js را دنبال کنید:
https://www.w3schools.com/nodejs
اگر شما جاوا اسکریپت و PHP را بلد باشید (که ما آموزشهای ویدئویی هر دو را عرضه کردهایم: آموزشهای ویدئویی ما در فروشگاه)، به نظر من فقط یک روز کافی است تا Node.js را یاد بگیرید!
به افرادی که سر کلاسهای طراحی وب من بودهاند و یا ویدئوهای آموزشی ما را دنبال کردهاند میگویم که: من در حال عبور از PHP به سمت Node.js هستم و حدس میزنم پروژههایی مثل تستا و نمرا را دوباره با این زبان جالب بازنویسی کنم.
Fullstack JS
با توجه به آنچه گفته شد، مدتی هست که Fullstack JS مطرح شده است؛ توضیحات بیشتر:
https://www.w3schools.com/whatis/whatis_fullstack_js.asp
یعنی به طور خلاصه، در پُشته شما این زبانها قرار بگیرد:
HTML
CSS
Javascript
NodeJS
موفق باشید؛
حمید رضا نیرومند