2017/01/06

عن PHP و ASP.NET أتحدث 😊


السلام عليكم ورحمة الله وبركاته
الجدال حول PHP و ASP.NET على أحر من الجمر…
اشتغلت باللغتين بحدود 8 سنين لحد هلأ، البداية مع C# و ASP.NET كانت سيئة نوعاً ما بالبدايات، Web Forms كان فيها أدوات سهلة ومريحة بالبداية لكن وقت بدك تفوت بالتفاصيل شوي بتلاقيها صارت معقدة كتير ومحدودة الإمكانيات أحياناً وسيئة جداً بالتخصيص كتصميم خصوصي css باعتبار كود html مالك شايفو وأحياناً كتيرة بيعتمد عل جداول وهاد بيأثر كتير على تصميم المشروع وجماليتو.
انتقلت للـ PHP وكانت بسيطة كتير مقارنة بالـ ASP.NET ولكن كنت اتعذب كتير لأني بلشت برمجة من الصفر وخصوصي بموضوع السكيوريتي. بعد فترة تعرفت عل لغة منيح وحبيتها نوعاً ما والأهم صرت اتعامل مع أطر عمل (Frameworks) نواخترت العمل بنصيحة صديق عزيز على فريم وورك CodeIgniter وكانت رائعة جداً وسهلة وفيها مكتبة كبيرة من الأدوات وبتأمن درجة جيدة جداً من السكيوريتي. بعد عدة مشاريع بلشت اتضايق من اللغة والسينتاكس تبعها باعتبار بدايتي بالبرمجة أكاديمياً كانت مع C# وتعاملي بالجامعة مع C# بشكل كبير. لذلك توصلت لصورة مقتنع فيها حالياً نوعاً ما أنو PHP لغة برمجة قديمة قوية ولكن على مدى السنين تطورت بأسلوب ترقيعي بحيث بتدعم برمجة غير غرضية التوجه وبتدعم بالشكل التاني غرضي التوجه. مافيها تنظيم خصوصي بالفانكشينات الأساسية وهاد بيسبب لخبطة وتضطر تحفظ مع الاستخدام الطويل لعدد كبير من التوابع. بينما لو اعتمدت على برمجة غرضية التوجه بشكل مضبوط أكتر كان الشغل أرتب وأفضل بكتير.
رجعت صرلي بحدود 3 سنين للـ C# وصرت اعتمد عليها بأول سنة بجانب PHP لكن النصر كان لصالح ASP.NET خصوصي بعد دراسة أكاديمية جيدة ومعرفة التعامل معها بشكل ممتاز وحل المشاكل والأخطاء (ما عدا Web.Config يلي بشوفو غليظ نوعاً ما لحد هلأ) بس باقي الشغلات ممتازة وهية برأيي النقاط لتفوق C# و ASP.NET:
  1. البرمجة غرضية التوجه: اعتماد لغة C# على هاد المبدأ أفضل بكتير خصوصي تنظيم ممتاز للكود، مكتبات متاحة بشكل كبير، سبورت كبير بحيث أغلب المشاكل يلي ممكن تواجهك بتلاقي حلها عل انترنت وإيدك اليمين غوغل وستاك أوڤر فلو. تقسيم المشروع على أكتر من بروجيكت بيسهل المهام أكتر.
  2. MVC: أسلوب ممتاز كتير للبرمجة بأي لغة وأي بلاتفورم. منظم بشكل كبير، العمل بفريق عمل أفضل لسهولة توزيع المهام بين الداتابيز أو داتا سورس بشكل عام و بين البرمجة وبين تصميم الديزاين. رازور هية بديل عن برمجة كودات ASP ضمن صفحة الديزاين، قريبة لأغلب لغات الـ Scripting وصيغة مو معقدة. في أدوات بتولد كود سريع إذا حبيت تستخدمها وبنفس الوقت تخصيصها بالـ css سهل. اعتماد أسلوب أفضل من القديم قالب (Master Page) وبتعبي فيه محتوى وصارت أفضل بعمل أجزاء الصفحة على ملفات متعددة include متل PHP وهاد الشي كان بينقصها نوعاً ما وأسهل من Web Controls القديم. الاعتماد على الموديلات بيسهل الشغل البرمجي كتير بس أحياناً بتضطر تستغني عنو بحالات أكتر من فورم (الأسلوب القديم كان ممنوع استخدام أكتر من فورم واحد ضمن كل الصفحة).
  3. ASP.NET WebAPI: مع الحاجة الملحة لبرمجة تطبيقات متعددة المنصات سواء سيرفرات أو كومبيوتر عادي أو موبايل صار مصدر البيانات من الصعب تضمينو مع التطبيق والمزامنة ما بين المستخدمين الآخرين بنفس التطبيق لهيك صار ضروري كتير تخزين البيانات وإجراء عملية المعالجة على سيرفر واحد بيجمع كل المستخدمين بغض النظر عن تطبيقاتهون وأنظمة التشغيل. تم هاد الشي بإنشاء مشروع ويب API (اختصار لـ Application Programming Interface) بيكون هوة الـ Exchange ما بين التطبيقات و قاعدة البيانات. طبعاً صارت المعالجة مركزية مشان هيك بيصير وصول أكبر لعتاد ولو كان منخفض. منصات الموبايل كافة متل Android - iOS - Tizen - Windows Phone وحتى المستقبل للـ IoT.
  4. حماية الكود: لأنو النسخة Publish بتكون Binary بالتالي لا يمكن سرقة الكود، مع إمكانية نشر الكود فوراً وبيشتغل عل سيرفر بنفس الأداء تماماً يلي ما بيحب يعمل Publish أو أثناء التطوير والتجريب.
  5. Entity Framework: حولت عالم قواعد البيانات من منصة مستقلة عن المشروع إلى مصدر بيانات برمجي قوي جداً جداً وسهل التعامل معه برمجياً بشكل لا يصدق!
  6. مفتوحة المصدر: شركة مايكروسوفت أطلقت مصدر كل من Dot Net Framework و ASP.NET وأطلقت IIS Express يلي بيشتغل على أنظمة التشغيل الشهيرة Windows - Linux - macOS وبالتالي يمكن استضافة أي تطبيق Dot Net على أي نظام تشغيل تقريباً من الموجودين، وإمكانية تنزيل السورس وعمل Build على أنظمة أخرى إذا احتاج الشخص. دعم IoT بشكل كبير. إطلاق نسخة SQL Server لنظام تشغيل Linux وبالتالي استضافات ويندوز الغالية ما عد في داعي إلها في حال اختيار البرمجة ASP.NET Core وقواعد البيانات سواء MySQL أو SQL Server ودعم Entity Framework.

وأخيراً: Visual Studio من أفضل الـ IDEs على الإطلاق وأمر رائع أنو صار في نسخة للـ macOS. في محررات نصوص جيدة متل Sublime Text بس في تقدم حالياً لـ Visual Studio Code بشكل كبير.

الخلاصة برأيي لغة PHP في إلها سلبيات ما عم لاقيلها حلول مرنة متل ما بدي، اللغة شعبيتها عم تخف يوم بعد يوم. معشر المبرمجين عم يتجهو نحو لغات تانية متل C# و Node.JS و Ruby و Python وغيرها كتير. بس بيضل بشكل عام برأيي هاد تقدم كبير كتير للـ C# ومايكروسوفت عامة لأنو بيخلي المبرمج يرتاح أكتر بعد مشقة التعلم الأكاديمي والتطبيقي مع هدول الأدوات المتكاملة ولو ما كنت عم تبرمج على ويندوز ولكن لينوكس أو ماك .

ادعولنا 😉