تفاوت زبان‌های برنامه‌نویسی php و asp.net به زبان مامان‌بزرگ‌ها

تفاوت زبان‌های برنامه‌نویسی php و asp.net به زبان مامان‌بزرگ‌هاReviewed by گروه آموزشی F1 on Apr 7Rating: 5.0

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

ابتدا به معرفی ASP و PHP می پردازیم و سپس ملاک هایی که می توان برای مقایسه این دو زبان عنوان کرد را با هم مقایسه می کنیم و در نهایت به یک نتیجه کلی می رسیم که قطعا این نتیجه کلی طرفداری از زبان برنامه‌نویسی خاصی نخواهد بود و انتخاب اصلی با شما خواهد بود. قبل از این که انتخابی انجام دهید، می خواهیم تفاوت بین این دو زبان برنامه‌نویسی را برای شما تشریح کنیم تا در انتخاب میان این ها دچار مشکل نشوید. هر دو زبان برنامه‌نویسی تحت PHP و ASP.NET در واقع زبان های اسکریپت نویسی سمت سرور یا در اصطلاح فنی Server Side Scripting هستند که برای طراحی وب سایت های داینامیک مورد استفاده قرار می گیرند. صفحات وب داینامیک ابتدا درخواست کلاینت (کاربر، بازدید کننده) را در سمت سرور پردازش کرده و در نهایت پس از هر بازدید کاربر، نتیجه را به سمت کاربر ارسال می کنند. انتخاب بین این دو زبان اسکریپت نویسی بستگی به مواردی از قبیل اندازه و بزرگی وب سایت، قابلیت های توسعه وب سایت، هزینه های هاستیگ وب، هزینه های پشتیبانی و زمان پیاده سازی و بسیاری دیگر از مواردی از این قبیل دارد که در ادامه به بررسی اکثر این موارد خواهیم پرداخت.

معرفی زبان: زبان برنامه‌نویسی وب ASP یا ASP.NET چیست؟

برنامه‌نویسی

php vs asp.net

ASP مخفف کلمه Active Server Pages است و یک محصول منحصر به فرد برای شرکت مایکروسافت به حساب می آید. این زبان برنامه‌نویسی اکنون منسوخ شده است و جای خود را به زبان اسکریپت نویسی ASP.NET داده است. در همین جا به این نکته اشاره کنم که در واقع ASP.NET یک زبان برنامه‌نویسی نیست، بلکه یک تکنولوژی برنامه‌نویسی وب با استفاده از دات نت است. شما می توانید با #C یا #F یا زبان های برنامه‌نویسی دیگر دات نت ASP.NET بنویسید؛ اما با توجه با اینکه شما به عنوان یک زبان بیشتر با این محصول آشنا هستید، ما در این مقاله از ASP.NET به عنوان یک زبان برنامه‌نویسی یاد می کنیم. بیشتر شرکت ها و سازمان های بزرگ برای نرم افزارهای تحت وب خود از این زبان برنامه‌نویسی استفاده می کنند. نرم افزاری که بیشترین هماهنگی با این زبان برنامه‌نویسی را دارد، به عنوان Microsoft Visual Studio شناخته می شود که در واقع محیط برنامه‌نویسی مایکروسافت محسوب می شود. در این نرم افزار قابلیت های بسیار زیادی برای برنامه‌نویسی به صورت پیش‌فرض قرار گرفته اند که کار برنامه‌نویسی را برای برنامه نویسان بسیار راحت می کند. معمولا تعداد خط های کدی که باید برای یک برنامه به زبان ASP.NET نوشته بشود نسبت به محصولات مشابه کمی بیشتر است. همین دلیل به تنهایی می تواند تا حدودی باعث زمان‌گیر بودن کدنویسی در این زبان برنامه‌نویسی برای فعالیت های پیچیده شود. در صورتی که تغییری در هر خط کد از این زبان برنامه‌نویسی انجام شود، به ناچار کل برنامه بایستی مجددا کامپایل شود. بنابراین زمان برنامه‌نویسی تا حدودی افزایش می یابد. وب سروری که با این زبان برنامه‌نویسی هماهنگ است صرفا وب سرور شرکت مایکروسافت که همان IIS است می باشد و معمولا به عنوان پایگاه داده نیز در این نوع زبان برنامه‌نویسی از Microsoft SQL Server  استفاده می شود.

درست است که ASP.NET و IIS هر دو نرم افزارهایی رایگان هستند اما شما برای لایسنس ویندوز بایستی پول پرداخت کنید و از طرفی نرم افزار Visual Studio نیز نرم افزار ارزان قیمتی نیست. پشتیبانی زبان برنامه‌نویسی ASP.NET توسط وب سایت و مرجعی به نام MSDN انجام می شود که مخفف کلمه Microsoft Software Developer Network می باشد. پیشرفت ها و توسعه هایی که در این زبان برنامه‌نویسی انجام می شود، توسط بازخوردها و تجاربی است که کاربران این محصول به وب سایت این شرکت اطلاع می دهند و همین موضوع باعث ارایه نسخه های جدیدتر این زبان برنامه‌نویسی با امکانات جدید می شود. ASP.NET تحت برند مایکروسافت است و این یعنی بسیاری از زبان ها یا Platform های دیگر را پشتیبانی نمی کند؛ اما در این حین به شما امکانات بسیار ساده ای برای شروع برنامه‌نویسی می دهد. ماژول های آماده، محیط ساده و رابط کاربری آسان، برنامه‌نویسی را برای کاربران لذت بخش می کند. توجه کنید که یکی از مشکلاتی که در دنیای برنامه‌نویسی به این زبان برنامه‌نویسی وارد می شود، هزینه ای است که برای خرید نرم‌افزارهای آن صرف می شود. اما با توجه به اینکه ما در ایران هستیم و هیچ هزینه ای برای خرید این نرم افزارها نمی کنیم،ASP.NET  می تواند گزینه مناسبی برای برنامه‌نویسی وب باشد.

معرفی زبان: زبان برنامه‌نویسی وب PHP چیست؟

PHP  مخفف کلمه PHP Hypertext Preprocessor است و یک نرم‌افزار یا بستر برنامه‌نویسی متن باز و رایگان است که توسط شخصی به نام رزموس لردورف در سال 1995 طراحی و ایجاد شد. یکی از نکات مهمی که در خصوص برنامه‌نویسی به زبان PHP  وجود دارد این است که این زبان وابسته به هیچ Platform خاصی نیست و می توان آن را بر روی هر سیستمی عاملی اجرا و استفاده کرد. شرکت های متوسط و کوچک، بیشتر از این زبان برنامه‌نویسی در دنیا استفاده می کنند؛ زیرا هزینه توسعه و همچنین هزینه هاستینگی که در اینترنت دارد، بسیار ارزان است. بسیاری از ابزارهای رایگان برای توسعه دهندگان این زبان برنامه‌نویسی به صورت رایگان در اینترنت وجود دارد که به برنامه نویسان PHP این امکان را می دهد که بتوانند براحتی با آن ها برنامه بنویسند.

فاکتور اول: تکنولوژی مورد استفاده در ASP.NET بهتر است یا PHP؟

زبان برنامه‌نویسی PHP در اصل و ماهیت برای نوشتن اسکریپت های وب ایجاد شد و هدف اصلی آن کاهش پیچیدگی های برنامه‌نویسی های وب ای مانند Perl و CGI بود. Php برای این ایجاد شد تا این امکان را ایجاد کند که افراد تازه وارد به دنیای برنامه‌نویسی وب نیز بتوانند در این حوزه شروع به فعالیت کنند و به همین دلیل بیشتر کارهای ساده و طراحی وب سایت های کوچک با این زبان برنامه‌نویسی وب شروع شد و اکثرا در اوایل برنامه نویسان حرفه ای از این زبان استفاده نمی کردند. اما به مرور زمان با توجه به گسترش روزافزون نرم افزارهای Open Source و استفاده بیشتر از زبان Open Source ای به نامPHP  حرکت رو به جلوی این زبان بسیار سریع صورت گرفت. یکی از مشکلاتی که به این زبان گرفته می شد عدم وجود توابع زیاد و همچنین دستورات کم بود که با گستردگی استفاده از PHP به مرور این موانع و مشکلات برطرف شد و امروزه می توان با PHP توابع و کارهای تقریبا پیچیده ای را برنامه‌نویسی کرد. PHP یک زبان مفسری است؛ یعنی در هر بار اجرا بایستی کد توسط وب سرور خط به خط اجرا و نتیجه نمایش داده شود.یکی از مشکلاتی که به PHP برنامه نویسان می گیرند این است که اگر شخصی بتواند به سرور لینوکسی یا آپاچی شما دسترسی پیدا کند، با توجه به اینکه کدهای شما به صورت کامپایل نشده و Open Source روی سرور قرار دارند، می تواند به آن ها دسترسی پیدا کنند. این مشکل در ASP.NET وجود ندارد زیرا برنامه قبل از اجرا به فایل های DLL کامپایل می شود و باعث عدم نمایش کد به مهاجم می شود. این مشکل را PHP با معرفی تکنولوژی رمزنگاری به نام Zend حل کرد تا بتواند کدهای PHP را Encode کند و دیگر نگران این مسأله نباشد.

در ابتدا PHP از شی گرایی پشتیبانی نمی کرد؛ اما به مرور این قابلیت به یکی از قدرت های این زبان تبدیل شد. تکنولوژی کاربردی این زبان بیشتر برای نوشتن و اجرا کردن اسکریپت های وب برای اجرا در سیستم عامل های Open Source ای مانند یونیکس و لینوکس استفاده می شود. البته یکی از خرده هایی که به PHP گرفته می شود این است که هنوز تا حدودی نقص های اولیه خود را در خصوص شی گرایی دارد و به گفته برخی برنامه نویسان خاصیت های حرفه ای شی گرایی در این زبان برنامه‌نویسی دیده نشده است. یکی از قدرت های بی بدیل PHP عدم وابستگی به Platform خاص است؛ یعنی برنامه هایی که با زبان PHP نوشته می شوند، به راحتی قابل اجرا بر روی هر سیستم عاملی از جمله ویندوز هستند. اما ذاتا تکنولوژی برنامه‌نویسی وب PHP مبتنی بر یک ساختار است که به آن در اصطلاح فنی LAMP می گویند. LAMP مخفف کلمات Linux به عنوان سیستم عامل،Apache  به عنوان وب سرور، MySQL به عنوان پایگاه داده و در نهایت PHP به عنوان زبان برنامه‌نویسی می باشد. بنابراین اکثر افرادی که به برنامه‌نویسی وب PHP می پردازند، با این ابزارهای کاملا رایگان آشنا هستند. جالب اینجاست که به راحتی می توان این ابزارها را در سیستم عامل ویندوز نیز نصب و استفاده کرد.

از دات نت یا ASP.NET می توان به عنوان یک Platform نام برد تا یک زبان برنامه‌نویسی. دات نت یک محصول کاملا مایکروسافتی است که به عنوان نسل جدید ابزارهای برنامه‌نویسی و توسعه نرم افزار شرکت مایکروسافت به بازار ارایه شده است. دات نت را می توان بیشتر با Platform هایی مثل جاوا مقایسه کرد و در این میان بیشتر رقابت بین ASP.NET و Java  می باشد. توجه کنید که زبان برنامه‌نویسی کلاسیکی به نام ASP وجود داشت که سابقا استفاده می شد؛ اما امروزه این زبان برنامه‌نویسی وب منسوخ شده است و دیگر استفاده ای ندارد. یکی از قدرت های اصلی ASP.NET وجود کتابخانه ها یا همان Library های بسیار غنی و توایع زیاد و همچنین کلاس های زیادی است که در ASP.NET وجود دارد و همین امر امکان انجام تقریبا هر کاری را در محیط وب به یک برنامه نویس می دهد. در بیشتر موارد برای برنامه‌نویسی ASP.NET از Microsoft Visual Studio  و برای پایگاه داده نیز از Microsoft SQL Server و برای وب سرور نیز از IIS یا همان Internet Information Service  مایکروسافت استفاده می شود. در ASP.NET کدها در سمت سرور Encode می شوند و اگر کسی بتواند به سرور دسترسی پیدا کند نمی تواند از این کدها که در قالب فایل های DLL هستند استفاده کند. در اصطلاح فنی به این عملیات Code-Behind گفته می شود.

زبان برنامه‌نویسی ASP.NET ذاتا برای سیستم عامل ویندوز و استفاده در آن طراحی و ایجاد شده است و بیشتر برنامه هایی که در این زبان نوشته می شوند وابسته به سیستم عامل ویندوز هستند. البته این نکته را به عنوان نکته منفی در خصوص زبان برنامه‌نویسی ASP.NET مطرح می کنند؛ اما توجه کنید که مایکروسافت پروژه هایی را شروع کرده است که برنامه هایی که توسط ASP.NET نوشته می شوند بر روی سیستم عامل های دیگر نیز قابل اجرا باشند. معروفترین این پروژه ها به نام MONO  شناخته می شود. بنابراین در آینده ای نه چندان دور شاهد این خواهیم بود که برنامه هایی که توسط ASP.NET نوشته می شوند، به راحتی بر روی لینوکس و یونیکس نیز اجرا شوند. از نظر تکنولوژی و معماری ASP.NET و Java از Platform هایی هستند که در سطح Enterprise و کلان استفاده می شوند و PHP معمولا برای نوشتن اسکریپت های وب استفاده می شود. همانطور که قبلا هم اشاره کردیم برای نوشتن یک برنامه پیچیده در زبان ASP.NET تعداد خطوط کد بیشتری نسبت به PHP نیاز است و به همین دلیل زمان تولید و توسعه یا همان Develop Time مربوط به زبان ASP.NET نسبت به زمان مشابه PHP بیشتر است. بر خلاف PHP که یک زبان مفسری است ،ASP.NET  یک زبان کامپایلری است. بدین معنا که کدها بعد از هر بار نوشتن؛ مجددا بایستی کامپایل شده و با فایل های DLL تبدیل شوند.

فاکتور دوم: برنامه‌نویسی با ASP.NET ساده تر است یا PHP ؟

بحث سادگی کار با یک محیط برنامه‌نویسی بستگی به موارد مختلفی دارد که از جمله آن ها می توان به اندازه پروژه ای که می خواهیم انجام دهیم اشاره کرد. در وهله اول باید بگوییم که یادگیری زبان PHP قطعا برای شروع ساده تر از برنامه نویسی به زبان ASP.NET است اما برای برنامه نویسی اسکریپت های چند خطی یا وب سایت های کوچک نه برای نوشتن Web Application های بزرگ و سازمانی و یا اتوماسیون های اداری پیچیده. اگر می خواهید صرفا یک وب سایت یا یک CMS یا یک Web Application  ساده و دارای پیچیدگی های کم بنویسید، برای شروع یادگیری PHP بهترین گزینه است. شما با استفاده از هر ویرایشگر متنی قادر به نوشتن کدهای PHP هستید که این خود یکی از مزایای اصلی این زبان برنامه نویسی وب می باشد. متاسفانه PHP ویرایشگر و ابزار مشخصی برای کدنویسی ندارد. شرکت های مختلفی در اینترنت ابزارهای مختلفی برای استفاده برای کدنویسی این محصول ارایه داده اند که این خود یک عدم تمرکز برای برنامه نویسی PHP را ایجاد می کند.

اما اگر قصد برنامه نویسی Web Application هایی در سطح Enterprise دارید، ترجیجا ASP.NET را انتخاب کنید. هدف اصلی و ماهیت واقعی زبان ASP.NET (که همانطور که گفتیم یک Platform به حساب می آید) نوشتن Web Application های بزرگ و دارای فرم ها و اطلاعات ورودی و پیچیدگی های زیاد است. برای کسانی که به برنامه نویسی کردن در محیط های گرافیکی عادت دارند، این زبان بسیار بهتر است. در ASP.NET شما در قالب استفاده از ابزارهای گرافیکی براحتی می توانید تولید کد داشته باشید و همچنین با استفاده از فرم های آماده یا همان Web Form ها می توانید به راحتی به بانک های اطلاعاتی و ماهیت های مختلف اطلاعات و جدول ها به صورت گرافیکی دسترسی پیدا کنید، بدون اینکه نیاز به کد نوشتن داشته باشید. ASP.NET به صورت خودکار با ماژول هایی که در اختیار دارد این کدها را برای شما ایجاد می کند. در کنار این ها فریم ورک .NET  برخی از موارد مانندCaching ، احراز هویت و بسیاری دیگر از این مسایل را به خودی خود انجام می دهد. توابع ASP.NET  اینقدر زیاد است که تقریبا شما را از استفاده کردن از توابع خارجی در برنامه نویسی خود بی نیاز می کند. تمامی کارهایی که قرار است شما در ASP.NET انجام دهید در یک محیط یکپارچه یا بهتر بگوییم یک ابزار قدرتمند به نام Microsoft Visual Studio  انجام می شود که طبیعتا سادگی های کار گرافیکی در محصولات مایکروسافت به خوبی در این نرم افزار نیز دیده می شود.

فاکتور سوم: وابستگی به سیستم عامل در ASP.NET بیشتر است یا در PHP؟

یکی از مواردی که تا چند وقت پیش به عنوان مزیت PHP بر ASP.NET مطرح می شد، این بود که کدهای نوشته شده توسط PHP  بر روی هر سیستم عاملی قابل اجرا هستند و این موضوع برای کدهای ASP.NET وجود ندارد. با این موضوع تا حدودی موافق هستیم اما نه الان، در حال حاضر کدهای PHP براحتی با استفاده از نرم افزارهای شبیه سازی مثل WAMP و XAMP و بسیاری از این موارد براحتی بر روی سیستم عامل ویندوز اجرا می شوند و شما نیازی نیست برای برنامه نویسی PHP حتما لینوکس بلد باشید. در مقابل مایکروسافت نیز در سالهای گذشته سعی کرده است این نقطه ضعف خود را پوشش دهد و در این راه پروژه معروفی به نام MONO را ارایه کرده است که توسط آن شما می توانید براحتی کدهای ASP.NET را بر روی Platform هایی مثل لینوکس و یونیکس اجرا و کد نویسی کنید.

همین مورد باعث شده است دیگر ASP.NET این ضعف را نپذیرد؛ اما به دلیل عدم شناخت درست افراد از وجود چنین پروژه ای و همچنین عادت کردن به زبان PHP و گسترده شدن این زبان معمولا این مسأله عنوان نمی شود. هر چند شخصی که واقعا می خواهد کدنویسی در محیط ASP.NET کند در 99 درصد موارد از ویندوز استفاده می کند؛ اما با این پروژه حرف و حدیث ها در مقابل این نقطه ضعف تمام شد. در واقع یکی پروژه MONO به عنوان Open Source ASP.NET با استفاده از وب سرور آپاچی و سرور لینوکس پیاده سازی و استفاده می شود. بنابراین امروزه ASP.NET را نیز می توانیم زبان برنامه نویسی وب مستقل از سیستم عامل عنوان کنیم.

فاکتور چهارم: امنیت ASP.NET بیشتر است یا PHP؟

پرسیدن این موضوع که امنیت در ASP.NET بیشتر است یا در PHP دقیقا مثل همین سؤال است که امنیت در لینوکس بیشتر است یا در ویندوز؟ در نهایت شما به جواب قاطعی در این زمینه دست پیدا نخواهید کرد. بحث امنیت بیشتر در حوزه میزان تخصص و دانش برنامه نویس بستگی دارد. چه بسا شما یک اتومبیل FJCruser داشته باشید و بلد نباشید با آن رانندگی کنید، این اتومبیل با پیکان برای شما تفاوتی نخواهد داشت؛ چون دانش استفاده از آن را ندارید. اما مواردی هم هست که کمی قبل تر هم در مورد آنها صحبت کردیم. یکی از موارد امنیتی که در پروژه های PHP وجود داشت این بود که فایل های PHP  متن باز هستند و در صورتی که کسی به سرور شما دسترسی داشته باشد، می تواند سورس کدهای شما را به راحتی بخواند؛ اما در ویندوز به دلیل اینکه فایل ها قبل از اجرا توسط کامپایلر به فایل های DLL تبدیل می شوند و دارای قابلیت Code-Behind  هستند نمی توان از این نقطه ضعف استفاده کرد. PHP برای پوشش این مسأله و Encode کردن سورس کد های خود قابلیت Zend را معرفی کرد که یک روش رمزنگاری برای کدهای PHP می باشد که دیگر این نقطه ضعف را نداشته باشند.

گفته می شود: «یکی دیگر از مزایایی که به عنوان مزیتی امنیتی برای PHP محسوب می شود، این است که نرم افزارهایی که به صورت عام و در قالب پروژه هایی مثل GNU ارایه می شوند، متن باز هستند و شما می توانید سورس کد آن ها را مشاهده و از نظر امنیتی آن را تحلیل کنید و به دلیل استفاده زیاد افراد در دنیا از این گونه نرم افزارها و به دست آوردن باگ های امنیتی آن کدهای PHP  از امنیت بالاتری برخوردارند.» اما این حرف درست نیست؛ زیرا همان طور که کدهای باز می تواند باعث بالاتر رفتن امنیت شوند، باعث انتشار باگ های امنیتی یک محصول هم می توانند باشند. یک هکر می تواند سورس کد یک محصول را به صورت کامل در اختیار داشته باشد و آن را از نظر امنیتی تحلیل و با نقاط ضعف به دست آمده به آن حمله کند؛ اما در کدهای ASP.NET همچنین مشکلی وجود ندارد. البته باز هم تاکید می کنم که هیچ ملاکی برای امنیت بیشتر برنامه نویسی PHP بر ASP.NET و برعکس آن وجود ندارد و صرفا این دانش یک برنامه نویس است که تعیین کننده امنیت یک نرم افزار است. برای مثال CMS رایگان Joomla که به صورت رایگان در اینترنت وجود دارد یکی از اهداف همیشگی و ساده هکرها محسوب می شود.

برخی اوقات مشاهده می کنیم که برنامه نویس های PHP این ادعا را دارند که چون سایت های بزرگی مثل گوگل ، یاهو و … از برنامه نویسی PHP استفاده می کنند، بنابراین امنیت این برنامه نویسی از ASP.NET بیشتر است. قبل از هر چیز باید یک نکته را خاطر نشان کنیم که این یک تصور نادرست است که بگوییم یک وب سایت بزرگ در دنیا صرفا از یک زبان برنامه نویسی استفاده می کند. معمولا این وب سایت ها از انواع زبان های برنامه نویسی برای کار خود استفاده می کنند که قطعا PHP  هم می تواند جزیی از آن ها باشد.PHP  در گوگل به عنوان زبان برنامه نویسی اصلی به کار نمی رود. زبان غالب اکثرا در این وب سایت ها C و C++ و جاوا می باشد و در برخی از ماژول های زیر مجموعه ممکن است از PHP استفاده کنند. عزیزان توجه کنید که ASP.NET با برند مایکروسافت معرفی می شود و طبیعی است که حتی اگر بهترین زبان برنامه نویسی دنیا هم باشد، شرکت های رقیب از آن برای نمایش کار خود استفاده نکنند. اما به واقع می توان گفت زبان برنامه نویسی PHP بسیار بسیار محبوب تر و مرسوم تر از ASP.NET در اینترنت می باشد.

فاکتور پنجم: سرعت و کارایی ASP.NET بیشتر است یا PHP ؟

قبل از این که این بحث را باز کنیم، یک مسأله را روشن کنیم ، توجه کنید که شما هر کاری را که می توانید با برنامه نویسی وب PHP انجام دهید با برنامه نویسی ASP.NET نیز می توانید انجام دهید و بر عکس همین موضوع نیز صادق است . سرعت و کارایی هر زبان برنامه نویسی به عوامل مختلفی بستگی دارد که از آن جمله می توان به تکنولوژی مورد استفاده در زبان برنامه نویسی، نوع سیستم عامل مورد استفاده، نوع فایل سیستم مورد استفاده، بزرگی و گستردگی برنامه و پروژه و دانش برنامه نویسی اشاره کرد. در وهله اول برنامه نویسان ASP.NET اینطور القا می کنند که چون زبان برنامه نویسی ASP.NET یک زبان کامپایلری است و زبان PHP یک زبان مفسری است بنابراین سرعت اجرا کدها در ASP.NET بیشتر از سرعت اجرا کدها در PHP  است. این حرف هم درست است و هم اشتباه. درست از این بابت که سرعت اجرای برنامه های کامپایل شده که در قالب فایل های DLL وجود دارند از برنامه های مفسری که به صورت خط به خط اجرا می شوند بیشتر است. یک اسکریپت PHP سرعت بیشتری نسبت به اسکریپت مشابه در ASP.NET دارد اما دلیلی برای اینکار وجود دارد. زمانی که شما یک اسکریپت PHP  را اجرا می کنید، این کد به سرعت تفسیر شده و اجرا می شود و خروجی به مرورگر کاربر ارسال می شود که در این میان وقفه ای نداریم؛ اما زمانی که صحبت از اسکریپت ASP.NET می شود این کد علاوه بر این که به خودی خود باید اجرا شود، بایستی چندین ماژول مانند ماژول های خواندن تنظیمات، کنترل کردنWeb Form ها، انجامauthentication ها و بسیاری دیگر از موارد را به صورت همزمان انجام دهد که همین مورد باعث کمتر شدن سرعت آن نسبت به مفسر PHP می شود. این جاست که برنامه نویس های PHP به خود مغرور می شوند که زبان سریع‌تری دارند؛ اما حقیقت طور دیگری است. بدون شک در برنامه هایی با تعداد خطوط پایین و اسکریپت های کوچک برتری با PHP است؛ اما در سطوح کلان و برنامه های بسیار بزرگ سطح Enterprise که دارای ده ها یا صدها هزاران خط هستند برتری بدون شک با زبان های کامپایلری است. هر چند برنامه هایی برای سرعت بخشیدن به عملیات اجرای کدهای PHP ایجاد شده است اما همچنان برتری در سطح کلان با ASP.NET است.

نوع سیستم عامل نیز عامل بسیار مهمی در سرعت اجرای نرم افزارها می باشد. قطعا و بدون شک سیستم عامل ویندوز از نظر کارایی و سرعت نمی تواند با سرویس های لینوکسی برابری کند. ویندوز به یکباره کلیه منابع سیستم را در اختیار می گیرد و وجود رابط گرافیکی ناخواسته سرعت اجرای نرم افزارها و سرویس ها را کند می کند؛ اما لینوکس بر حسب نیاز اینکار را انجام می دهد و تمامی کارها از طریق Command و دستورات خط فرمان انجام می شود و رابط گرافیکی عملا وجود ندارد. سرویس های لینوکس بسیار قابل اعتمادتر از سرویس ها در ویندوز هستند و قطعا به این مورد برخورده اید که با انجام هر تغییری در سیستم عامل ویندوز یک Restart نیاز است. اما توجه کنید که اگر کدهای ASP.NET را بر روی سرور لینوکس و از طرفی کدهای PHP را بر روی سرور ویندوزی اجرا کنید که قطعا هم این امکان وجود دارد دیگر سیستم عامل جزو ملاک های سرعت و کارایی نمی تواند باشد. از طرفی طبق تحقیقات، فایل سیستم مورد استفاده در هارد دیسک شما نیز می تواند عامل سرعت اجرای کد شما باشد که در این حالت گفته می شود بهترین فایل سیستم برای سرعت فایل سیستم لینوکسی ext4 است. هر چند این ملاک ها نسبی است؛ زیرا بیشتر ما می خواهیم درباره ی خود برنامه نویسی صحبت کنیم نه سخت افزار و فایل سیستم. در اینصورت وجود RAID در هارد دیسک ها نیز می تواند جزو ملاک ها محسوب شود. با توجه به تحقیقات انجام شده در صورت اجرای کدهای ASP.NET با استفاده از MONO در لینوکس سرعت اجرا آن از PHP به نسبت بالاتر خواهد بود.

اما از همه این ها که بگذریم، مهم دانش برنامه نویسی است که در این حوزه استفاده می شود. شیوه Query گرفتن و شیوه کد نویسی بر حسب دانش افراد در این حوزه متفاوت است. هر چقدر هم که شما پروژه بزرگتری داشته باشید، طبیعی است که دانش بیشتری را نیاز خواهید داشت. در این خصوص به یک خاطره اکتفا می کنم ، در حوزه پایگاه داده قطعا Oracle از برتری مشهوی نسبت به MSSQL Sever برخوردار است. در یکی از پروژه هایی که یکی از دوستان در یک سازمان دولتی داشت قرار شد که یک Query از دیتابیس های Oracle گرفته شود که بعد از نوشته شدن این Query و اجرای آن در حدود 30 ثانیه پاسخ به Query و دریافت پاسخ از Oracle طول کشید اما جالب اینجا بود که همین Query در MSSQL Server تنها 5 ثانیه طول می کشید. در اینجا مسأله دانش Oracle بود که دوست ما این دانش را نداشت. فردای همان روز یک Oracle کار حرفه ای همان Query را با کمی تغییر در Oracle وارد کرد و مشاهده کردیم که پاسخ در کمتر از یک دهم ثانیه ارایه شد. این نشان از اهمیت دانش برنامه نویسی و کد نویسی در سرعت و کارایی یک برنامه دارد که واقعا از همه چیز در بحث سرعت و کارایی مهمتر است. در مقاله بعدی فاکتورهای نهایی مقایسه این دو زبان برنامه نویسی را با هم مقایسه خواهیم کرد.

فاکتور ششم: ابزارها و رابط های کاربری ASP.NET بهتر است یا PHP؟

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

در کنارIDE ها بحث ابزارها و اسکریپت های آماده نیز وجود دارد که در این خصوص بدون شک با توجه به عمومیت بیشتر زبان PHP برای این زبان اسکریپت های آماده و همچنین کدهای آماده بسیار زیادی وجود دارد که حقیقت متن باز بودن این زبان را آشکار می کند. درست است که پروژه های Open Source ای برای ASP.NET هم وجود دارد؛ اما واقعا در قیاس با پروژه ها و اسکریپت ها و نرم افزارهای متن بازی که برای PHP وجود دارد، قابل مقایسه نیستند. تقریبا شما هر نوع اسکریپت آماده ای را که بخواهید می توانید به زبان PHP آن را با یک جستجوی ساده پیدا کنید، حداقل کاری که با این ابزارهای فراوان می توان انجام داد اعمال تغییرات و بومی سازی برای برنامه نویسان مبتدی و الگوبرداری برای نوشتن اسکریپت های بهتر است. بنابراین بدون شک ابزارها، نرم افزارها و رابط های کاربری که برای PHP وجود دارد از تنوع و تعداد بیشتری نسبت به ASP.NET  برخوردارند؛ اما از این موضوع هم غافل نشویم که اگر در ASP.NET شما فقط از یک IDE انحصاری استفاده می کنید این IDE شما را از استفاده کردن از هر IDE دیگری بی نیاز می کند.

فاکتور هفتم: سرعت توسعه و پیشرفت ASP.NET بیشتر است یا PHP؟

سرعت توسعه و پیشرفت هر یک از این زبان های برنامه‌نویسی به عوامل متعددی بستگی دارد که از آن جمله می توان به پشتیبانی، منابع آموزشی و یادگیری و بازار کار این زبان های برنامه‌نویسی وب اشاره کرد. در خصوص پشتیبانی یکی از مهمترین موارد، وجود یک ارگان یا یک شرکت منسجم در پس زمینه می باشد. در خصوص برنامه‌نویسی ASP.NET قطعا نمی توان به غول نرم افزاری بزرگ دنیا یعنی مایکروسافت شک کرد. شرکت مایکروسافت به خوبی و با بهترین و منسجم ترین حالت ممکن همیشه در حال به روز رسانی ، پشتیبانی و ارتقای ASP.NET بوده است و همیشه مرجعی واحد به نام MSDN وجود داشته است که به راحتی شما می توانید مشکلات و مسایل خود در خصوص یادگیری را با این مرجع مرتفع کنید. از دیگر نقاط قوت ASP.NET این است که کتاب هایی که برای این محصول نوشته می شود هم همیشه منسجم و دارای نظم و یکپارچگی خاصی هستند زیرا از طرف شرکت مایکروسافت به خوبی پشتیبانی می شوند. وجود وب سایتی مثل TechNet و امثال آن ها برای پشتیبانی و دریافت بازخورد از کاربران، یکی دیگر از نقاط قوت این زبان برنامه نویسی است.
یکی از نقاط قوت برنامه‌نویسی به زبان ASP.NET پشتیبانی ذاتی این زبان از یونیکد و زبان فارسی می باشد که برای برنامه نویسان ایرانی بسیار این امر مهم است. یکی از نقاط ضعفی که برای پشتیبانی از ASP.NET عنوان می شود این است که فقط یک شرکت انحصاری به نام مایکروسافت از این زبان پشتیبانی می کند و ممکن است این شرکت روزی دیگر از این زبان پشتیبانی نکند و در مقابل برای زبان PHP با توجه به فراگیر بودن آن منابع و پشتیبانی های متعددی وجود دارد. به نظر من این یک مبحث  طنز است تا یک بحث انتقادی. اگر قرار باشد روزی مایکروسافت از ASP.NET پشتیبانی نکند قطعا باید بیشتر به فکر ویندوز باشیم تا برنامه‌نویسی ASP.NET . در خصوص پشتیبانی از زبان PHP باید بگوییم که در مقایسه با ASP.NET منابعی که در اینترنت برای آموزش و یادگیری PHP وجود دارد، بسیار فراوان تر و گسترده تر می باشد. این امر کاملا طبیعی است زیرا عمومیت بیشتری در استفاده از PHP نسبت به ASP.NET وجود دارد و بر حسب ذات Open Source این زبان وب سایت ها و تالارهای گفتمان تخصصی بسیار زیادی برای پشتیبانی از این محصول وجود دارد. در کنار این منابع آموزشی به صورت رسمی شرکتی به نام Zend مسؤول توسعه و ارایه نسخه های جدید PHP می باشد که به پشتیبان اصلی این زبان معروف است. شرکت Zend همان کاری را انجام می دهد که مایکروسافت برای ASP.NET انجام می دهد و در واقع به روز کردن Engine مربوط به PHP را بر عهده دارد. طبیعی است که هیچوقت نیازی نیست نگران پشتیبانی یا عدم پشتیبانی از PHP  باشیم. آن قدر منابع آموزشی و اسکریپت های آماده برای یادگیری این محصول وجود دارد که به هیچ عنوان وابستگی به شرکت خاصی ندارد. با توجه به سادگی یادگیری و توسعه نرم افزارها در PHP و سهولت کاربری برای برنامه نویسان تازه کار، سرعت توسعه و پیشرفت این زبان نیز به سرعت رو به پیشرفت است.

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

فاکتور هشتم: هزینه استفاده از ASP.NET بیشتر است یا PHP؟

قبل از اینکه به سراغ هزینه برویم، اول یک مورد را مشخص می کنیم: آیا شما در کشور ایران زندگی و برنامه‌نویسی می کنید یا در یک کشور خارجی؟ این موضوع، خیلی مهم است. در خصوص هزینه های استفاده از این زبان های برنامه‌نویسی، یکی از مواردی کهPHP کارها به عنوان نقطه قوت خود می دانند، رایگان بودن کلیه بسته های نرم افزاری مورد استفاده در این زبان است. ساختار کاری PHP بر اساس پروژه GNU و نرم افزارهای آزاد است. بدین معنی که همه چیز در حوزه نرم افزار در اینجا رایگان است. سیستم برنامه‌نویسی PHP یک ساختار مشخص دارد که به عنوان LAMP شناخته می شود و همان طور که قبلا هم اشاره کردیم، مخفف شده کلمات Linux و Apache و MySQL و PHP می باشد. همه این بسته های نرم افزاری، بدون هیچ گونه هزینه ی اضافی و به صورت رایگان – چه در ایران و چه در جاهای مختلف جهان – برای برنامه نویسان در دسترس می باشد. از این بابت، برای افرادی که در خارج از کشور زندگی می کنند کاملا PHP به صرفه است زیرا کوچکترین هزینه ای بابت خرید لایسنس نرم افزار خود نباید بدهند. هم لینوکس رایگان است و هم آپاچی و همMySQL . پس نیازی به هزینه های اضافی نیست. از طرفی نمونه نرم افزارهای زیادی به صورت رایگان در اینترنت وجود دارد که بدون هیچ هزینه ای می توانید از آن ها استفاده کرده و بومی سازی کنید. توجه کنید که در موردAdd-On ها به هیچ عنوان ASP.NET نمی تواند در این حجم زیاد نرم افزارهای رایگان در اینترنت داشته باشد. هر چند پروژه هایی برای متن باز کردن ASP.NET وجود دارد؛ اما واقعا در مقابل پروژه هایی که با PHP انجام شده اند و رایگان در اینترنت وجود دارند قابل مقایسه نیستند.

از طرف دیگر در برنامه‌نویسی به زبان ASP.NET چیزی به نام رایگان وجود ندارد. شما باید برای هر چیزی در این حوزه هزینه کنید و طبیعی است؛ زیرا یک شرکت در دنیا پشتیبانی کلی مجموعه ASP.NET را بر عهده دارد نه یک جامعه. به همین دلیل شرکت سازنده بایستی بتواند از پس مخارج خود در بیاید. ASP.NET باید بر روی ویندوزی نصب شود که خود ویندوز سیستم عامل رایگانی نیست. ASP.NET  باید بر روی Microsoft Visual Studio ای ایجاد شود که رایگان نیست. ASP.NET از پایگاه داده ای باید استفاده کند به نام MSSQL که طبیعتا رایگان نیست و در نهایت از وب سروری استفاده می کند که باید در سیستم عامل های مایکروسافت نصب شود. بنابراین استفاده از ASP.NET هزینه هایی را در بر دارد. اما به یک نکته توجه کنید که این هزینه ها برای اشخاص یا شرکت هایی است که در خارج از کشور هستند. در ایران ما چیزی به عنوان هزینه نرم افزار نداریم. اینجا قیمت ویندوز سون از ماست سون کمتر است!! پس صحبت از هزینه در ایران بی معنی است. در خارج از کشور هم اینگونه نیست که همه به سراغ PHP بروند زیرا هزینه کمتری دارد ، شرکت ها و سازمان های بزرگی که در حال پیاده سازی پروژه های Enterprise هستند، به راحتی هزینه های اولیه خرید لایسنس بسته ASP.NET را قبول می کنند؛ زیرا به قابلیت های این بسته برای انجام پروژه های سنگین اعتماد دارند. از طرفی این هزینه فقط یکبار انجام می شود و طبیعی است که هر بار نیاز به تکرار آن نمی باشد.

یکی دیگر از مواردی که ممکن است در این میان پیش بیاید، این است که اگر ایران به قانون کپی رایت بپیوندد، چه اتفاقی برای برنامه نویسان ASP.NET می افتد؟ در واقع این نیز یک نکته جالب برای برتری PHP عنوان می شود؛ اما خب چند نکته را در این خصوص باید متذکر شویم. اولا به این نکته توجه کنید که زمانی که شما به قانون کپی رایت بپیوندید، دغدغه هایی بیشتر از ASP.NET خواهید داشت چون هزاران نرم افزار دیگر نیز داریم که دارای همین مشکل هستند. بنابراین اگر ایران به قانون کپی رایت بپیوندد، قطعا کشورهای دیگر دنیا با علم به وجود چنین موردی به صورت گام به گام مراحل سوق به سمت کپی رایت را در ایران پیش می برند و نه به یکباره. از طرف دیگر پروژه هایی که در حوزه ASP.NET انجام می شود معمولا پروژه های بزرگی هستند که هزینه های بالایی نیز دارند. همیشه به فکر هزینه نباشید. چه بسا یکبار برای خرید بسته ASP.NET  هزینه می کنید؛ اما بارها در پروژه های گسترده سازمانی از آن ها استفاده می کنید و قطعا در همان فار اول هزینه های خرید نرم افزار خود را در می آورید. بدون شک چه بخواهیم و چه نخواهیم بسته نرم افزاری ASP.NET از قدرت بیشتر و امکانات بیشتری نسبت به PHP برخوردار است و اگر هزینه ای بابت آن، آن هم در صورت پذیرفتن قانون کپی رایت به وجود بیاید دریافت شود ازرشش را دارد.

نتیجه گیری کلی در خصوص تفاوت و مقایسه زبان PHP و ASP.NET

فاکتورهای مختلفی را در رابطه با مقایسه این دو زبان برنامه‌نویسی وب عنوان کردیم اما همانطور که در ابتدای مقاله هم اشاره کردیم سعی کردیم حقایق را عنوان کنیم و طرفداری از محصول خاصی را نکنیم. به هر حال با تمامی این اوصاف در نهایت، این خلاقیت، دانش و مهارت برنامه نویس است که یک زبان برنامه‌نویسی را خوب جلوه می دهد و یا بر عکس. یک برنامه نویس حرفه ای باید بتواند باPlatform ها و ابزارهای مختلف کار کند و با آن ها تا حدودی آشنایی داشته باشد. نوع ابزار مهم نیست. مهم دانش و شیوه ی پیاده سازی است. برای یک برنامه نویس حرفه ای، سویچ کردن از برنامه‌نویسی ASP.NET  به PHP و برعکس، کار چندان سختی نیست زیرا مفاهیم را همیشه در ذهن دارد. فقط syntax اجرای آن را عوض می کند. تعصب بیجا به یک زبان برنامه‌نویسی صرفا برای برنامه نویسان مبتدی است، نه برای برنامه نویسان حرفه ای. چیزی که در شبکه نیز وجود دارد و به صورت نادرستی سیسکو را با مایکروسافت مقایسه می کنند. در سطوح بالا هر دو به خوبی با هم کار می کنند؛ اما در سطوح پایین همه با هم مشکل دارند. انتخاب یک زبان برنامه‌نویسی به صورت ویژه ای به سطح و اندازه کار و نیازمندی های پروژه شما دارد که در پاراگراف های قبل به این مسأله اشاره کردیم. در نهایت مهم ترین رکن در برتری یک زبان برنامه‌نویسی دانش شخصی است که زبان را در دست می گیرد.

نظرات

  • Ashkan

    خیلیی خوب بود توضیحاتتون
    من معتقدم که مقایسه ی این دوتا زبون
    مثل این میمونه که بگی اگه ماشین خوب میخوای، مثلا L90 واقعا ماشین خوبیه اما اگه بیشتر کار کنیو تلاش کنیو پولاتو جم کنی، میتونی لذت داشتن مثلا KIA OPTIMA بخری

    L90 = PHP
    Optima = ASP .NET

    ینی هر دو خوبن، کار میکنن و …
    اما اگه دنبال درآمد بیشتری، باید ارتقا بدی خودتو ینی بری سراغ .NET
    اگه دنبال امکانات بیشتر و قدرت مانور بیشتری، باید ارتقا بدی خودتو و بری سراغ .NET

    اینکه تعداد خط کدهات زیاد تر میشه، کاملا نکته ی قابل توجهیه اما نمیشه حتمن هم اسمشو ایراد گذاشت
    فرضا منِ برنامه نویس با paython برنامه مینویسم حرفه ای و در حجم ۱۰۰KB اما همون برنامه با C شد ۱KB

    گاهی ممکنه خطوط زیا بشه اما امکانات بیشتری بهت میده
    زبونای سطح بالا مثل ماشین دنده اتومات میمونه، زود یاد میگیریشو زود میتونی باهاش کار کنی
    اما زبونای سطح پایینی مثل C مثل ماشین دنده ای میمونه،
    کار کردن باهاش دنگو نگ داره، سخته اما با همون ماشین دنده ایه که میتونی رالی اول بشی! 😀

    اینه که .NETکارا، خودشونو بالاتر میدونن
    چون واقعا قدرت و درک و دانششون نسبت به PHP کارا بالاتره

    اما نتیجه گیری نهایی، خوب بود که گفتین برحسب نیاز باید زبونو انتخاب کرد 🙂