ميديا

صراع التطبيقات عند المبرمجين

تطبيقات الموبايل

عالم تطبيقات الموبايل يُعتبر عالم جديد على المبرمجين والمستخدمين عموماً، إذ أن عمره لم يتجاوز الـ20 عاماً مقارنة مع تطبيقات الكمبيوترات الشخصية.

تطبيقات الكمبيوترات الشخصية معظمنا نعلم كيف كانت تحصل ولا زالت تحصل للآن عند بعض الشركات، على سبيل المثال، شركة صخر الكويتية التي أصدرت ”مجموعة برامج الأسرة“ في بداية هذا القرن، كانت كأي شركة في وقتها، مؤلفة من مئات المبرمجين المتخصصين ببرمجة برامج للويندوز وهؤلاء المبرمجين كانو مقسومين لفرق، وكل فريق متخصص بجزء من هذا المنتج. عند الإنتهاء من هذا المنتج يتم وضعه بـ”ديسك“ ويتم تسميته Master Disc ومن خلاله يتم عمل عشرات آلاف النسخ وبيعه حول العالم.

شركة صخر الكويتية

شركة صخر الكويتية

هذه الطريقة الكلاسيكية، ولكنها لم تعد مثمرة كما في السابق بعد تطوير الأجهزة الذكية المحمولة مثل الموبايل والتابلت والجيل الجديد من اللابتوبات، وتوفر الإنترنت بشكل كبير في السنوات الاخيرة مع إنخفاض سعره (سعر الإنترنت كان في السابق تقريبا 6 دولار في الساعة الواحدة فقط وبطيء جداً).

عالم البرمجة الحديث

الطريقة الحديثة المعتمدة اليوم هي طريقة مذهلة جداً إذ أن أي شخص يستطيع برمجة تطبيق وبيعه حول العالم وهو في منزله! بدون أن ينفق آلاف الدولارات على الموظفين وعمل سجل تجاري ونسخ ديسكات وبيعها في الأسواق على أرض الواقع. يكفي 125 دولاراً فقط وقد تصل أرباحك أكثر من أرباح شركة صخر لو كان تطبيقك ذو منفعة.

الطريقة هي ببساطة أنك تبرمج تطبيق وتقدمه لشركة تملك مخزن للتطبيقات، مثل شركة آبل التي تعرض مخزنها الخاص بها وإسمه Apple App Store وهي بدورها تعرض هذا المخزن عن طريق أجهزتها الخاصة مثل الآيفون والآيباد والآيبود. ولكن عليك أن تدفع 100 دولار كأشتراك سنوي.

نفس المبدأ ينطبق على شركة غوغل التي تملك مخزن إسمه Google Play وتفرض عليك فقط 25 دولار أشتراك مدى الحياة، بالتالي 125 دولار هو ما تحتاجه فقط لتنافس شركة صخر العالمية!

كما أن طريقة البرمجة بحد ذاتها إختلفت 180 درجة بعد اكتساح المنتوجات مفتوحة المصدر وسيطرتها على كل مجال في عالم البرمجة، على سبيل المثال، نظام التشغيل أندرويد هو مفتوح المصدر، هذا يعني أن أي شخص يستطيع تنزيل الكود الخاص بالأندرويد ويضيف به ما يريد (شرط أن يكتب الشركة المؤسسة لهذا النظام) ثم يضيفه لموبايله الخاص ويستخدمه كما يريد.

إضافة على كل ما سبق، فإن البرامج التي من خلالها تبرمج تطبيقاتك أصبحت مجانية وتستطيع تنزيلها من النت، بل منها أصبحت مفتوحة المصدر أيضاً، هذه البرامج التي ستحتاجها إذا كنت تنوي الدخول في هذا العالم:

  • برمجة تطبيق للآيفون والآيباد والأيبود iOS – xCode
  • برمجة تطبيق للأندرويد – Android Studio

الصراع:

تطبيقات الموبايل

لقد تم تسهيل الكثير من الأمور للمبرمجين، لكن هناك مشكلة ستواجهك والتي تواجهنا جميعا منذ بداية هذه الطريقة الحديثة، وهي أن معظم مبرمجين العالم موجودين في نفس الغرفة! هذا يعني لو أنك برمجت تطبيق لتصوير الفيديو مثلاً، ستجد آلاف المنافسين لك من كل بقاع الأرض. تطبيقك الذي تعبت عليه ساعات طويلة سيضيع بين آلاف التطبيقات في المخزن.

لذلك الحل الأنسب لك لو أنت مبرمج مستقل، هو أن كل تطبيق تنوي عمله، يجب أن تبرمج نسخة للأيفون ونسخة للأندرويد، وهذا سيساعد كثيراً في نشر تطبيقك حول العالم وسيقوي مكانك في المنافسة.

لقد دخل المبرمجين في متاهة طويلة طوال هذه السنين منذ إنتشار برمجة التطبيقات حول كيفية برمجة نفس التطبيق للأيفون والأندرويد، لأن الأيفون يفهم لغة مختلفة تماما عن الأندرويد بالإضافة إلى إختلاف في واجهة المستخدم UI/UX والتي هي عبارة عن مجموعة الأشياء التي تراها في الموبايل مثل الكبسات والقوائم والجدوال وحاويات الصور وكيفية إستخدامهم. سوف أعرض بشكل مختصر الطرق التي مر بها معظم المبرمجين (المستقلين) لحل هذه الأزمة:

1. البداية:

في البداية كان المبرمج يضطر أن يبرمج نسختان مستقلتان تماماً عن بعضهما، ولكن طبعاً هذه الطريقة كانت متعبة جداً ولم تدوم طويلاً لأن المبرمج لا يستطيع أن يكون قوي بلغتان برمجيتان، يجب عليه أن يتخصص بلغة واحدة فقط.

2. تطبيق هجين:

درجت فكرة التطبيق الهجين بعد فترة من إنتشار الموبايل ولكنها غير ناجحة أيضاً، هي ببساطة أنك تبرمج صفحة ويب، يعني كأنك تبرمج موقع إنترنت عادي ثم تعرضه بداخل التطبيق، وبالتالي التطبيق يصبح مجرد إطار لموقع ويب، كإنك تفتح متصفح!

الطريقة غير ناجحة لأن صفحات الويب بطيئة ولا تعرض إمكانيات الموبايل المذهلة مثل نعومتها في الإستخدام وهذا شيء طبيعي، لأن تشغيل صفحات الويب لا يكون بشكل مباشر، بل يكون بهذا الشكل:

  1. نظام التشغيل يشغل التطبيق.
  2. التطبيق يشغل كلاس إسمها UIWebView.
  3. الكلاس تشغل صفحات الويب.

بهذه الخطوات الثلاثة سيكون الأداء بطيئاً عند التشغيل وعند الإستخدام. كلما زادت الفجوة بين نظام التشغيل وبين ما يظهر عالشاشة، كلما أصبح التطبيق أبطأ.

3. لغة واحدة للجميع:

إنتشرت فكرة جديدة وهي أنك تبرمج لغة واحدة عن طريق برنامج واحد، وهذا البرنامج بدوره يصدّر للأيفون والأندرويد. أشهر هذه البرامج هو برنامج Xamarin والذي من خلاله تبرمج تطبيق بلغة إسمها C# وهو يتكفل بالباقي.

فكرة هذا البرنامج كانت مذهلة لدرجة أن شركة مايكروسوفت إشترت البرنامج وأغلقته كبرنامج مستقل وجعلته جزء من الفيجوال ستوديو Visual Studio وأصبح مجاناً في نهاية المطاف.

ولكن هذه الطريقة لا يستخدمها الكثير من المبرمجين لأن لغة C# هي لغة لها تخصصها وعالمها وأيضاً خاصة بشركة المايكروسوفت. من هنا وأنا لم أجد الحل الأنسب لي كمبرمج، ما زلت أعاني الأزمة.

4. لغة واحد للجميع ولكن أسهل وبإنتاجية أسرع بكثير:

وضعت شركة الفايسبوك يديها على هذه الأزمة وأخيراً لتنقذ المبرمجين كما أنقذت المستخدين سابقاً بتوفيرها إنترنت لأشخاص لا يصلهم الإنترنت أبداً.

بدأت الفايسبوك سنة 2015 بمشروع أسمه React Native لتصميم تطبيقات للأيفون والأندرويد بلغة جافاسكربت مع XML JSX ولكن التطبيق لا يكون هجين كما ذكرنا سابقاً.

الفكرة جداً مذهلة إذ أنك تبرمج كأنك تبرمج موقع ويب، ولكن النتيجة لا تكون كأنك برمجت تطبيق هجين، بل يكون تطبيق عادي جداً يعرض إمكانيات الموبايل بشكل طبيعي، يعني لو أردنا مثلا تصميم تطبيق يعرض نص معين، تحتاج فقط لتاغ XML إسمه <Text> وسيتكفل الـReact Native بطريقته الخاصة بالباقي، هو يستخدم اللغة والـUI لوحده حسب الجهاز. هذا المبدأ قريب جداً على مبدأ الـXamarin ولكنه لا يجبرك أن تستخدم لغة الـC#. بل تستخدم جافاسكربت.

ملاحظة مهمة: رغم أن الـReact Native يستخدم الجافاسكربت، ولكنه لا يستخدم الويب أبدا، بل يستخدم شيء أسمه JavaScriptCore لقرائة السكربت.

من هنا بدأت أنا بأول تطبيق لزبون في السعودية كتجربة وأخذ مني شهرين فقط لإنهائه أيفون وأندرويد والأداء نفسه. من هنا قلت وداعا للغة الـobjective-c ولغة الـjava إلى الأبد.

هذه الطريقة لا تزال جديدة، وكل شهر تقريبا تحصل تعديلات وتحسينات طفيفة للـReact Native وطبعا كل شهر تصبح أقوى وأسرع. هناك مشروع آخر منافس إسمه Angular 2 NativeScript ولكن حل الفايسبوك يبقى أفضل، تطبيق إنستاجرام تم برمجته عليه وهذا لوحده يكفي، بالإضافة أن شركة مثل الفايسبوك لا تغلق أبوابها بين ليلة وضحاها كما حصل مع شركات أخرى بسبب أزمة مالية.

ملاحظة: عندما أقول أيفون، فأنا أقصد أجهزة الـiOS عموماً.

ملاحظة أخرى: هذه الحلول تنطبق فقط على البرامج وليس الألعاب. برمجة الألعاب لها حل واحد أبدي وهو إستخدام لغة الـC++ ويتم إستخدامه منذ البداية وهو الأسرع بين جميع اللغات ومدعوم في الأيفون والأندرويد، أسرع حتى من لغة الجافا والـobjective-c.