انتخاب زبان PHP یا ASP

asp یا php برای طراحی سایت

کدامیک بهتر است؟ php یا asp؟ برای طراحی سایتهای داینامیک باید کدام زبان را یاد بگیرم؟ سوالاتی نظیر این بارها از برنامه نویسان حرفه ای و در فضای وب پرسیده شده و پاسخ دهنده بستگی به اینکه شخصا کدام را می پسندد پاسخ داده است. اینجا قضاوتی تا جای ممکن بی طرفانه داریم از اینکه بالاخره تازه کاران php را انتخاب کنند یا asp را؟!

خوب ميريم سراغ ASP: 

سالها بعد از تسلط PHP به دنيای وب بالاخره ميکروسافت هم با ASP يک زبان مدرن رو وارد بازی کرد تا از اين کيک پر در آمد بی نصيب نمونه. همين مسئله باعث شده که اکثريت زبان ASP رو عنوان وسيله ی ديگه اي از ميکروسافت ببينند که برای مونوپول کردن دنيای اينترنت ازش استفاده ميشه (مثل همون کاری که windows کرد)

نقاط ضعف ورژن های اوليه ASP زياد بودن که من فقط چند نمونه ازشون رو عنوان ميکنم

اول از همه پيچيدگی سينتکس ASP در ورژن های اول که خودش سوژه بحث چند ساله بين برنامه نويسا بود.

دوم همخونی کامل فقط با اينترنت اکسپلرر خود شرکت ميکروسافت (جمله معروف: ASP فقط با اينترنت اکسپلرر درست کار ميکنه)

دليل اين مشکل هم اين بود که ASP فقط server side نبود و از اسکريت های client side هم استفاده زيادی ميکرد که فقط کد های html سازگر با اينترنت اکسپلرر بيرون ميدادند، البته اين مشکل تا قسمتی بسته به کار برنامه نويس ها هم بوده ولی خود ASP برنامه نويس رو بيشتر به اين مسير هدايت ميکرد.

علاوه با اين مشکلات کسانی که با ورژن های اول ASP کار کردن اين تجربه رو داشتن که برنامه نويس فقط با يک زبان کار نميکرد بلکه از هر گوشه بايد سری به جاهای ديگه هم ميزد تا کارش تموم بشه.

و يکی ديگه از مشکلات ASP شباهت بيش از حد سينتکس ها به زبان وی بی بود که باعث سر درد بيشتر برنامه نويسا ی سابقه دار تر شد که به زبان های سی و سی ++ عادت داشتن.

(البته اين هم گفته باشم که خيلی از برنامه نويس ها تا مدت ها وی بی رو به عنوان زبان برنامه نويسی نگاه نميکردن، دلايلش باشه واسه بعد)

و بالاخره ميکروسافت در ASP.net بخش بزرگی از اين مشکلات رو از سر راه برنامه نويس برداشت.

 

ASP.NET مثل بيشتر محصولات شرکت ميکروسافت (اصلاً جای تعجب نيست) فقط روی سيستم های windows و IIS کار ميکنه  البته اين حرف هم به مرور زمان ديگه درست نيست چون ميکروسافت کم کم به سمت پروژه های open source کشيده ميشه.

در اين پروژه کد های قابل اجرا در يک قدم به زبان ماشينی بی طرف ترجمه ميشه و فقط موقع اجرا به زبان خاص پلاتفرم کامپايل ميشه. علاوه بر اين .net از يک framework (کلاس & فانکشنس) نسبتاً قوی برای هر کاری برخورداره که خيلی جاها باعث راحتی کار برنامه نويس ميشه.

جالبی ديگه ی .NET اينه که وابسته به زبان برنامه نويسی خاصی نيست ، در حال حاضر هم ميشه از وی بی.net و هم از C# به عنوان زبان برنامه نويسی استفاده کرد ولی در کل ميشه از زبانی تحت تکنولوژی .NET استفاده کرد.

اين مسئله اولين برتری رو نشون ميده. وارد کردن ASP به تکنولوژی .NET کار برنامه نويس رو به مراتب ساده تر کرده. مثلاً دسترسی به ديتا بيس و …. علاوه بر اين ابزار های مختلفی از شرکت ميکروسافت به بازار ارائه شده (مثلاً Visual Studio) که با استفاده ازشون ميشه پروژه های حرفه اي هم اداره کرد.

از اين مسئله ميشه نتيجه گرفت که ASP.NET به دليل پيچيدگی و اينکه توانايی در تکنولوژی .NET برای هر برنامه نويسی لازمه برای هر کسی خوشايند نيست

ASP.NET به همراه IIS نسبتاً از سرعت بالاتری برخورداره که البته دليلش هم اينه که ASP.Net کامپايل ميشه در صورتی که PHP فقط زمان اجرا Interpret ميشه.

 

و امّا PHP

تاريخچه به وجود اومدن PHP هم که تقريباً همه ميدونن واسه همين زياد در موردش چيزی نميگم.

برتری اصلی PHP آپن سورس بودنشه و لازم نيست هزينه اي بابت ليسنس های مختلف پرداخت بشه. به خصوص در ترکيب با Linux ، Apache و MySQL در مدت زمان خيلی کمی PHP به عنوان اولين انتخاب برای تکنولژی تحت وب جای خودش رو ثبت کرد. (LAMP = linux, apache, mysql, php)

البته PHP فقط تحت لينوکس و با Apache قابل استفاده نيست، بلکه به سادگی تحت windows به همراه IIS هم قابل استفادست.

از جمله برتری های ديگه ی PHP ميشه شباهت سينتکس رو به زبان C و سخاوتمند بودن PHP نسبت به کد نويسی رو عنوان کرد. در کل ميشه گفت که PHP برای تازه کار های عزيز راحت تره و هر کسی خيلی راحت ميتونه شروع کنه به نوشتن کد های کوچيک بدون اينکه به اينيسيال کردن توابع و تايپ ها توجه زيادی بکنه.

البته همين برتری به شکلی يکی از مشکلات اصلی PHP هم هست، چون باعث ميشه که برنامه نويس های تازه کار اشتباهت بزرگی بکنند بدون اينکه خودشون متوجه بشن. حتماً همه ۱۰۰۰ تا سايت ميشناسند که مثلاً به خاطر دقت نکردن برنامه نويس و يا ناواردی از طريق اينجکشن هک شدن.

البته در ورژن پنجم PHP و فعلاً آخرين ورژن قسمت های اصلی يک زبان OOP وارد شدن و در کل زبان حرفه اي تری نسبت به قبل شده.

بر عکس ASP.NET زبان PHP عضوی از يک تکنولژی مادر نيست (منظورم تکنولژی .NET در کل هستش) به همين دليل PHP مثل ASP از کتابخانه کاملی برخوردار نيست اگرچه از نظر Function چيزی کم نداره ( اين هم باز يکی از خوبی های Open Source بودن برنامه هستش)

البته اينجا هم باز PHP کم نمياره و با معرفی PEAR (=PHP Extention Application Repository) خودش رو کمی به Framework ميکروسافت نزديکتر ميکنه.

اين Framework کامپننت های اصلی برای کار مثل تمپليت و ديتا بيس و .. رو همراه داره و اگه همينجور ادامه بده تا چند سال ديگه چيزی در اين موارد از .NET کم نخواهد داشت.

مشکل بعدی PHP کمبود برنامه ها ی کمکی و برنامه نويسی هستش، يکی از دوستان گفته بود که به نظر من .Net بهتره چون PHP حتی IDE نداره. البته اين حرف درست نيست چون برای PHP هم IDE خوب هست. که فعلاً ميشه گفت بهترينشون IDE شرکت Zend هستش. (ولی با اينکه امکانات زيادی مثل ديباگر و کامل کردن اتماتيک کد رو داره باز هم مثل Visual Studio نيست)

متأسفانه پروژه های Open Source بيشتر وقت ها با همون سرعتی که به وجود ميان از بين هم ميرن واسه همين تا دلتون بخواد پروژه های بتا واسه دانلود وجود داره که چند ساله هنوز بتا موندن.

يکی ديگه از مواردی که طرفداران .Net هميشه عنوان ميکنن مسئله سرعت ASP هستش، که تنها دليلش در حقيقت کامپايل شدن .Net هستش و اينکه PHP کامپايل نميشه و فقط زمان اجرا Interpret ميشه. البته اين مشکل هم ميشه به راحتی با استفاده از Caching-System حل کرد.

با وجود تمام اين مشکلات طراحان و برنامه نویس های وب می تونن با PHP در مدت زمان کمی برنامه های کامل و پيشرفته اي بنویسن، مخصوصاً وقتی که مسئله مالی پروژه مهم باشه و بودجه کمی واسه کار داشته باشيد. حتی وب ديزاينر های نه چندان حرفه اي ميتونن با کمک PHP خيلی راحت مشکلات کوچيک خودشون رو حل کنن

 

و اما انتخاب:

اگه بودجه کار زياد نيست و نتيجه هم بايد سريع عرضه بشه ميشه گفت که اولين انتخاب PHP هستش

ولی اگه فکر ميکنيد که پروژه بعد ها وابستگی به برنامه های ديگه اي داره که ميکروسافت ارائه کرده بهتره بريد سراغ ASP.net مثلاً اگه شرکت توی برنامه انبار داری از Access استفاده ميکنه و يه زمانی بخواد پيوند بزنه بهتره از همون اولش با .NET شروع کنيد.

 

Leave a Reply

Your email address will not be published.