PHP یا ASP.NET - مقایسه

PHP یا ASP.NET - مقایسه
در طول چند سال اخیر بسیار به موضوع تفاوت میان PHP و ASP.NET برخورده ام. ولی از اینکه بسیاری بدون دانستن وقایع تنها از روی تعصب یکی را به دیگری برتری می دهند تاسف میخورم.
تحت شرایطی PHP میتواند بهترین ابزار برای انجام کار باشد ولی  تحت شرایط دیگری این ASP.NET است که بهترین بستر شما خواهد بود.
مقالات بسیاری به تفاوت میان PHP و ASP.NET پرداخته اند و شما بسیاری از آنها را میتوانید با جستجوی گوگل پیدا کنید. بدانید مطلبی که در اینجا نوشته ام با همه متفاوت است.

ASP.NET یا PHP مثل سیب یا پرتغال؟

برای مقایسه دو چیز، آنها باید شبیه باشند. بسیاری (حتی متخصصین) نمیدانند مقایسه میان PHP و ASP.NET مثل مقایسه سیب با سیب نیست. PHP یک زبان برنامه نویسی است ولی ASP.NET یک زبان برنامه نویسی نیست. زبانی که برای ASP.NET استفاده میشود C# (و یا VB.NET در شرایط نادری) است.
لطفا مطمئن شوید پاراگراف قبلی را متوجه شده اید! آنرا بفهمید و بخوبی درک کنید. اگر دیدید کسی در باره مقایسه میان PHP و ASP.NET یا WebAPI نوشته است هیچگونه درک کامل و دانش کافی از این تکنولوژی ها نداشته است. PHP زبان برنامه نویسی و ASP.NET یک چارچوب وب است.

PHP در برابر #C

حالا اجازه دهید سیب را با سیب مقایسه کنیم. این تعریفی است که گوگل از هردو ارائه کرده است:
C# - زبان برنامه نویسی شیء گرا، نوشته شده توسط مایکروسافت که توانسته است قدرت زبان برنامه نویسی C++ را با راحتی زبان برنامه نویسی ویژوال بیسیک ترکیب کند.
PHP- یک زبان برنامه نویسی اسکریپتی سمت سرور است که برای توسعه تحت وب ایجاد شده است ولی میتواند برای سایر پروژه ها نیز استفاده شود.
البته گوگل واقعیت را پیچانده است! زبان C# بسیار بیشتر از PHP در پروژه های غیر وبی محبوبیت دارد. شما چند نفر را پیدا میکنید بگویند از PHP برای نوشتن نرم افزار غیر وبی استفاده کرده اند؟ از C# برای نوشتن برنامه های موبایل ویندوز فون، ابزارها و حتی نرم افزارهای اندروید و iOS (با استفاده از بستر MONO) می توان استفاده کرد.
چیزی که گوگل به درستی به آن اشاره کرد شیء گرا بودن C# است که در برابر آن PHP شیء گرا نیست. 

کارایی زبان

اگر کسی در یک کمپانی بازی کار کند به خوبی معنی کارایی (Performance) را درک می کند. در اینجا امتیاز به PHP داده میشود و PHP در لایه هسته سرعت و کارایی بهتری دارد. ممکن است خیلی بگویند سخت افزار امروزه بسیار پیشرفت کرده و کارایی زبان مهم نیست. این یک اشتباه است زیرا همانقدر که سخت افزار پیشرفت می کند نیاز کاربران به سرعت نیز افزایش می یابد. البته این قضیه نسبی است. اگر اینطور بود و همواره باید زبان با کارایی بالاتر انتخاب شود، آنگاه همه باید به زبان اسمبلی (که مستقیما با سخت افزار صحبت می کند) برنامه بنویسند که بسیار سخت و طاقت فرساست. بنابراین باید دید آیا سختی برنامه نویسی با یک زبان و زمان و هزینه ای که باید صرف آن نمود، ارزش آن را دارد یا خیر؟
از آنجا که سخت افزارها جدید و پرسرعت ایجاد شده اند، زبان های برنامه نویسی سطح بالاتری نیز بوجود آمده اند تا از مزایای آنها استفاده کنند (مانند C#). زبان C# منجر شده تیم های برنامه نویسی درگیر سطوح پایین برنامه نویسی نشوند و نرم افزارها را به سرعت و با هزینه پایینتری نسبت به سایر زبانها تولید کنند.
باید بگویم سرعت  اجرای یک زبان برنامه نویسی شاید در برابر اینکه برنامه نویس چه ساختار و چارچوب و معماری نرم افزاری را اتخاذ کرده باشد مهم نباشد. برای مثال ممکن است علاوه بر سرعت بالاتر PHP نسبت به C#، برنامه هایی که معماری صحیحی دارند و در C# نوشته شده باشند به مراتب بهینه تر از نمونه های PHP باشند.
مطلب مهم دیگر در این حوزه پردازش موازی است. فاکتور بسیار مهم در سرعت یک برنامه قابلیت آن در پیاده سازی پردازش موازی است تا بتواند تکه های کد را به صورت موازی در پردازشگرهای چند هسته ای اجرا کند. زبان PHP این قابلیت را ندارد. در زبان C# پیاده سازی این روش بسیار ساده بوده و تنها با کلیدواژه های wait و async به راحتی قابل پیاده سازی است.
بنابراین تا بدینجا از لحاظ قدرت برنامه نویسی زبان C# قویتر از PHP است و عدم پشتیبانی PHP از پردازش موازی ( و یا multi-threading) میتواند تنها دلیل قاطع بر این مبحث باشد ( البته دلایل دیگر نیز موجود است).

مقایسه واقعی

همانطور که گفتم باید سیب را با سیب مقایسه کنیم. حالا سیبی که باید با ASP.NET MVC  و WebAPI مقایسه شود چیست؟ خوب سیب های بسیاری برای مقایسه است و کافی است عبارت PHP frameworks را در گوگل جستجو کنید.
تنها تجربه کاری من با Laravel Framework بوده است و در نتیجه در اینجا سیب ما میباشد. میتوانم بگویم Laravel یک چارچوب محشری است و قابلیت های بسیاری دارد که ASP.NET بدون برنامه نویسی و افزودن کتابخانه های متفرقه از آنها بی بهره است. مهندسینی که چارچوب Laravel را طراحی کرده اند با تجربه بسیار تفکر فنی زیبایی را پشت آن پنهان کرده اند و از چارچوبهای دیگر PHP و حتی ASP.NET بهترین ها را انتخاب کرده اند. من به طور کامل با Laravel موافقم و بنظرم بهترین است، ولی تنها جایی که با آن مشکل دارم محدودیت هایی است که PHP برای من بهمراه دارد.
چارچوب Laravel (به همراه PHP) برای برخی سناریوها بسیار عالی است. ولی وقتی که کار به پروژه های سازمانی و در سطح بزرگ می رسد با Laravel زودتر به مشکل و محدودیت خواهید خورد تا با ASP.NET. منظور از این مشکلات مقیاس پذیری، مدیریت تغییرات، نگهداشت، پشتیبانی و ... است که با استفاده از ASP.NET کار شما به مراتب ساده تر است. 
در اینجا می توانید مقایسه های سیب با سیب را ببینید:
http://vschart.com/compare/laravel/vs/asp-net-mvc-framework

اطلاعات قدیمی

هر وقت در این رابطه مطلبی مطالعه می کنید مطمئن شوید حتما به تاریخ انتشار آن توجه کنید. بیشتر مواقع ممکن است اطلاعات قدیمی در این رابطه مطالعه کنید در حالی که امروزه با تغییرات و پیشرفتهایی که صورت گرفته است این مقایسه ها نیز تغییر کرده اند.
برای مثال ابزارهای مایکروسافت (مانند Visual studio) اکنون دارای نسخه های رایگان هستند. سرورهای مایکروسافت امروزه تقریبا به اندازه سرورهای لینوکس قیمت دارند (البته همچنان کمی بیشتر) و هم اکنون با توجه به این مطلب مایکروسافت می خواهد پا به عرصه کد باز بگذارد:
http://www.macrumors.com/2014/11/12/microsoft-net-open-source-os-x/

پشتیبانی و انجمن برنامه نویسی

آخرین مطلبی که می خواهم بحث کنم این است که برنامه نویسان PHP می گویند انجمن برنامه نویسان PHP بسیار بزرگتر از ASP.NET است.

بله، تعداد برنامه نویسان PHP از آنهایی که از چارچوب ASP.NET استفاده می کنند بیشتر است. موافقم ولی PHP تنها باید با C# مقایسه شود. زبان PHP تعداد بسیار زیاده برنامه نویس دارد ولی کلیه آنها در چارچوبهای متعددی که PHP دارد پخش هستند. دقیقا نمیدانم ولی می توانم شرط ببندم تعداد برنامه نویسان C# با تعداد PHP کاران قابل مقایسه است ( حتی اگر برنامه نویسان C و C++ را که به راحتی می توانند به C# نقل مکان کنند فاکتور بگیریم).  
برای اینکه دقیق تر بگویم سوالی را مطرح میکنم، آیا می توان چارچوب PHP ای را مانند Laravel پیدا کرد که تعداد بیشتری برنامه نویس از ASP.NET داشته باشد؟ قطعا خیر!
کلیدواژه ها: طراحی سایت
بازدید: 737

نظرات

ارسال پاسخ