وعليكم السلام ورحمة الله وبركاته.
سؤال جميل ومن واقعنا اليومي كمطورين، واتفق معك بكل ما قلته.
سأحاول الكتابة بشيء من التفصيل كي يستفيد اكبر عدد ممكن من المطورين
بداية دعني اعلق على مجموعة نقاط، ثم اعطيك وجهة نظري، والتي ستفيدك ان عملت عليها بشكل جيد:
1. PhoneGap تقنية جميلة في تطوير تطبيقات الجوال بشكل سريع وعلى جميع المنصات، وهو ليس بالضبط عمل موقع ويب وتحويله لتطبيق جوال، بالعكس هذا النوع من التطبيقات يسمى Hybrid أو هجين، يسمح لك بدمج تقنيات الويب مع التقنيات المخصصة لكل منصة، مثلا ( يمكنك استخدام الكاميرا، GPS, Contacts, Notifications) وغيرها الكثير وكله باستخدام جافا سكربت، وثق انها ستعمل جيدا على جميع المنصات، ولي تجربة جميلة معها. لكن يبقى هذا النوع من التطبيقات مفيد في حالات معينة وأخرى لا، خصوصا تلك التي تعتمد على الجهاز وعتاده مثل الالعاب والفيديو وغيرها.
2. مكتبات الجافا سكربت جميلة ومريحة (وكثيرة جدا) واهمها ربما AngularJS، ويمكن استخدامها مع تطبيقات الجوال، مثل تقنية Ionic، التي تعتمد على PhoneGap + AngularJS
3. لن ننسى شيء اسمه تطبيقات اندرويد وايفون، تكنولوجيا الويب قوية ويمكن توظيفها، ولكن لا يمكن التنبؤ بمستقبل التكنولوجيا، لا ننسى Nokia التي اختفت فجأة، وربما تختفي التكنولوجيا التي بين ايدينا اليوم لندخل عالم اوسع واشمل، فالأفضل حالياً الاستفادة من المصادر والتكنولوجيا المتوفرة بالشكل الأمثل.
بالنسبة لوجهة نظري، وبعد تقسيم التطبيقات او الحلول البرمجية إلى ثلاثة اقسام رئيسية:
1. تطبيقات الويب
2. تطبيقات سطح المكتب
3. تطبيقات الجوال
استطيع القول بأن تكنولوجيا مايكروسوفت هي الافضل في تغطية هذا الطيف الواسع، باستخدام لغة برمجة واحدة، مفاهيم متشابهة، وتقنيات متطورة جداً. كالتالي:
1. تطبيقات الويب: باستخدام ASP.NET طبعا هناك ثلاث تقنيات لها (WebForms, MVC, WebPages) الافضل بالتأكيد هي MVC، بالتالي تطوير تطبيق الويب باستخدام لغة سي شارب، وبنفس مفاهيم MVC يمكنك ايضا تطوير خدمات الويب مثل (Web API) والتي ستقوم التطبيقات الطرفية (Desktop, Mobile) لاحقا باستهلاكها.
2. تطبيقات سطح المكتب: باستخدام السي شارب مرة اخرة لكن مع تقنية جميلة مثل WPF، والتي تمكنك من انشاء تطبيق سطح مكتب بدرجة عالية جدا من الجمالية والكفاءة في حال تم استخدامها بالشكل الصحيح (احد الاشكال الصحيحة هو استخدام نمط التصميم MVVM) واذا لم تجربها من قبل، انصح الان بترك المقالة والبدء بها.
3. تطبيقات الجوال: كلمة السر في عالم البرمجة والتطبيقات هي تطبيقات الجوال، يمكننا ايضا تقسيمها إلى ثلاثة اقسام رئيسية:
Native Application
Hybrid Application
Cross-Platform Application
بالتأكيد لديك فكرة عن كل تقنية منها، والافضل بلا منازع من حيث الكفاءة هي تطبيقات Native، ومن حيث السرعة وتوفير الوقت والجهد هي تطبيقات Hybrid و Cross-Platform. لذلك علينا الاختيار؟ لكن ماذا لودمجنا Native مع Cross-Platform مع السي شارب؟ نحصل على التقنية الجميلة Xamarin
نعم يمكنك تطوير تطبيق جوال واحد يعمل على جميع الأجهزة وبشكل Native، يعنى باستخدام جميع التقنيات الموجود في كل منصة وبنفس الكفاءة، وبلغة برمجة واحدة هي السي شارب، لا تنسى أن مايكروسوف قامت بشراء شركة Xamarin عام 2016 وطرحت هذه التكنولوجيا بشكل مجاني في النسخة الجديدة من Visual Studio
الجميل في هذه التقنية انك تعمل ضمن Visual Studio ولا تغادره، والفكرة تقوم على أن تستخدم كود مشترك على المنصات الثلاث (Android, iOS, Windows Phone)، الكود المشترك يقصد به كود خدمات الويب وادارة البيانات وغيره، يبقى لديك العمل على كل منصة لتطوير الواجهات فقط، واستخدام الكود المشترك لقراءة وتنظيم البيانات، وقد تصل نسبة الكود المشترك إلى 60 او 70 بالمئة او ربما اكثر. لكن يبقى لديك جزء يجب ان تقوم بعمله على كل منصة، وهو ما يتطلب معرفة مسبقة بلغات تلك المنصات، لكن لن تغادر السي شارب انطلاقا من مبدأ في تقنية Xamarin يقول ( ما تستطيع عمله بلغة الجافا او Objective-C او Swift يمكنك عمله باستخدام السي شارب).
لكن ماذا لو دمجنا Xamarin مع WPF ونمط التصميم MVVM، سنحصل على التقنية الجميلة ايضا Xamarin Forms، والتي من خلالها يمكنك تطوير الواجهات على جميع المنصات مرة واحدة باستخدام Xaml، او باستخدام سي شارب نفسها. والكود المشترك اصبح 100 بالمئة!!!
بالتالي لغة واحدة لجميع طيف التطبيقات الواسع، ولا ننسى ان .NET اصبحت مفتوحة المصدر وتعمل على جميع انظمة التشغيل، واذا كان لديك جهاز ماك، قم بتثبيت نسخة Visual Studio for Mac.
اخيراً او ان الفت الانتباه ان هناك توجه لتوحيد منصات العمل بل اصبح رغبة لدى الافراد والشركات على حد سواء، وهو ما تقوم به مايكروسوفت بشكل اكبر من باقي الشركات الأخرى.
بالتوفيق،،،