Advertisement
  1. Code
  2. Mobile Development
Code

لغات تطوير الهواتف

Arabic (العربية/عربي) translation by Mohammad Al Tahan (you can also view the original English article)

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

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

لنبدأ ببعض اللغات التي قد تكون تعرفها في الوقت الحالي.

لغات أندرويد (Android)

جافا (Java)

وفقاً لفهرس تيوبي (TIOBE Index)، تعتبر جافا أكثر لغات البرمجة شهرةً في يونيو (حزيران) من عام 2017. إذا أردت تطوير تطبيقات أندرويد، فإنك على الأغلب ستلتزم باستعمال جافا. تمتلك جافا مجتمع مطورين كبيرة وموجودة منذ فترة طويلة، وهذا يعني أن بإمكانك الحصول على الدعم والمساعدة التقنية بسهولة.

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

كوتلين (Kotlin)

تم تصميم وتطوير كوتلين من قبل JetBrains، الشركة التشيكية المعروفة ببيئة التطوير المتكاملة (IDE) الخاصة بها، IntelliJ IDEA. أعلن فريق جوجل (Google) حديثاً أنهم سيضيفون الدعم رسمياً للغة البرمجة كوتلين.

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

لغات آي أو إس (iOS)

سويفت (Swift)

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

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

سي-الكائنية (Objective-C)

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

لغات متعددة المنصات

جافا سكريبت (JavaScript)

تمتلك جافا سكريبت تاريخاً طويلاً منذ الأيام الأولى لظهور الشبكة العالمية (بالإنجليزية World Wide Web). لغة مشهورة جداً لتطوير النهاية الأمامية (بالإنجليزية Front-End) وللتطوير في طرف الخادم (بالإنجليزية Server-Side)، تسمح جافا سكريبت لمطوري الويب بالقيام بكل شيء من تحسين تجربة مستخدم مواقع الويب وحتى بناء بناء تطبيقات ويب كاملة.

يوجد اليوم العديد من أطر العمل (بالإنجليزية Frameworks) الخاصة بجافا سكريبت والموجهة خصيصاً لمنصا تطوير الهواتف، مثل Ionic 2 وReact Native. من السهل حداً تطوير تطبيقات الهواتف متعددة المنصات بإستخدام هذه الأطر والمكتبات. هذا يعني أن عليك فقط كتابة نسخةً واحدة من التطبيق الخاص بك، وسيعمل على iOS أو Android.

تايب سكريبت (TypeScript)

تعتبر تايب سكريبت لغة حاوية لجافا سكريبت وتوفر المزيد من الحماية عن طريق إضافة إمكانية استعمال الأنواع بشكلٍ ثابت (بالإنجليزية Static Typing). كما توفر دعماً أفضل لتطوير التطبيقات واسعة النطاق. تطورها وتشرف عليها مايكروسوفت (Microsoft)، وتسمح للمطورين بكتابة تطبيقات هواتف متعدد المنصات بإستخدام أطر عمل مثل NativeScript.

لغات أخرى

سي شارب (C#)

سي شارب هي لغة ويندوز موبايل (Windows Mobile). هذه اللغة مشابهة جداً لسي بلس بلس (C++) ولجافا. تبنت مايكروسوفت بعضاً من ميزات جافا لتبسيط معماريتها، مع الحفاظ على التصميم الشبيه بتصميم سي بلس بلس. تمتلك سي شارب أيضاً مجتمعاً ضخماً ونشطاً من المطورين الودودين والراغبين في المساعدة دوماً.

سي (C)

سي هي ثاني أشهر لغة في فهرس تيوبي، ومثل جافا، مجتمعها مليءٌ بالمطورين المخضرمين القادرين على منحك النصيحة القيمة حول كتابة كودٍ برمجي خالي من الأخطاء.

مصممة من قبل دينيس ريتشي (Dennis Ritchie)، أثناء عمله في مختبرات بل (Bell Labs)، سي لغةٌ قوية ومعتمدة على نطاق واسع وتسمح لك بالتعامل مباشرةً مع العمليات منخفضة المستوى في الحاسوب. إذا رغبت باستعمال حزمة التطوير الأصلية الخاصة بأندرويد (Android Native Development Kit)، فستحتاج لأن تكون عارفاً بلغة سي.

سي بلس بلس (C++)

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

بايثون (Python)

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

روبي (Ruby)

روبي هي لغة برمجة كائنية التوجه، متأثرة بلغات آدا (Ada)، سي بلس بلس، بيرل (Perl)، بايثون، وليسب (Lisp). يعتبر RubyMotion إطار عملٍ رائع لتطوير تطبيقات الهواتف الأصلية ومتعددة المنصات في روبي. من السهل جدا تعلم روبي، والفضل في ذلك يعود إلى تركيبها النحوي الذي يركز على البساطة والإنتاجية.

كيف تصنف اللغات؟

يمكن أن يتم جمع تطبيقات الهواتف في ثلاث فئات، وهي بالتحديد الأصلية (بالإنكليزية Native)، الهجينة (بالإنجليزية Hybrid)، والأصلية متعددة المنصات (بالإنجليزية Native Cross-Platform). التطبيقات الأصلية يمكنها أن تستفيد بشكلٍ كامل من تسهيلات وميزات نظام التشغيل، وهي الأسرع عندما يتعلق الأمر بالأداء. لكن ستحتاج إلى امتلاك مصادر برمجية مختلفة لكل منصة هاتف، حيث تتطلب كل منصة استعمال لغات برمجة مختلفة.

على سبيل المثال، منصة أندوريد تستعمل جافا بالإضافة إلى سي\سي بلس بلس لتطوير التطبيقات الأصلية. منصة آي أو إس الخاصة بأبل تعتمد على سي-الكائنية وعلى سويفت كاللغات الأصلية الخاصة بها. سي شارب يتم استعمالها من قبل منصة ويندوز موبايل لبرمجة تطبيقاته الأصلية. جميع لغات برمجة التطبيقات الأصلية هذه مترجمة (بالإنكليزية Compiled)، وليست مفسرة (بالإنكليزية Interpreted).

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

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

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

مقارنة الميزات

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

أندرويد بشكلٍ أصلي

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

الأمان من ناحية المؤشر الخالي (Null Safety)

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

التزامن (Concurrency)

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

نظام الأنواع Type System

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

أنماط البرمجة المدعومة

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

ما اللغة التي يجب أن تختارها؟

باختصار، يبدو أن كوتلين أفضل من جافا، لكن قد يتطلب الأمر بعض الوقت لكي تنتقل إليها بشكلٍ كامل. واحدٌ من التحديات التي قد تواجهها هو اعتياد المبرمجين على أنماط التفكير المفروضة من قبل جافا. تحدٍ آخر هو أن كوتلين ما تزال لغةً جديدة، وهنالك ميزاتٌ محددة ما زالت في الطور التجريبي.

على كل حال، أعلنت جوجل حديثاً أنها ستوفر دعماً كاملاً لكوتلين. في الواقع، استوديو أندرويد (Android Studio)، بيئة التطوير الرسمية لأندرويد، تتوافر الآن مع دعمٍ كامل لكوتلين. يتم إضافة الميزات والقدرات الجديدة بشكلٍ مستمر لكوتلين. على مدى السنوات القليلة القادمة، سنشهد فترة إنتقال من جافا إلى كوتلين، على الأقل في مجال تطوير التطبيقات الأصلية لأندرويد.

آي أو إس بشكلٍ أصلي

سي-الكائنية وسويفت هما الخياران الوحيدان عندما يتعلق الأمر بالتطوير لآي أو إس. لذا دعنا نلقي نظرةً على ميزات كل واحدةٍ منهما.

التركيب النحوي للكود (Code Syntax)

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

إدارة الذاكرة

تتفوق سويفت بشكلٍ واضح على سي-الكائنية، عندما يتعلق الأمر بإدارة الذاكرة. تفرض سويفت آليات تحكمٍ أكثر قوةً وموثوقيةً، مما يسمح للمبرمج بتجنب تسربات الذاكرة (بالإنجليزية Memory Leaks) غير المرغوب بها.

الأداء

تنفيذ كود سويفت أسرع بكثير من كود سي-الكائنية. هذا سيؤدي بوضوح إلى أداء أسرع للتطبيقات وإلى تجربة مستخدم أفضل.

أنماط البرمجة المدعومة

على عكس سي-الكائنية، لدى سويفت دعمٌ للبرمجة الوظيفية (بالإنجليزية Functional Programming) مضمنٌ فيها. لذا لا داعي أن يقيد المطورون أنفسهم بأي نمط برمجة محددٍ مسبقاً. هذا يساعد المطورين على الفهم المشكلة بوضوح وعلى الإتيان بحلٍ أفضل لها.

ما اللغة التي يجب إختيارها؟

كما تقوم كوتلين باستبدال جافا في مجال تطوير التطبيقات الأصلية لأندرويد، يبدو أن سويفت ستزدهر بكل تأكيد في مجال تطوير تطبيقات آي أو إس الأصلية، مما يجبر سي-الكائنية على التقاعد. أبل بدأت منذ الآن بتقديم دعمٍ واسع لسويفت، وسيصبح هذا الدعم أفضل في المستقبل. ومثل مطوري أندرويد، يختبر مطورو آي أو إس فترة إنتقال في الوقت الراهن.

وبينما تتوافر عددٌ من أدوات الهجرة، قد لا يكون من الممكن أن تحول مشاريع سي-الكائنية بشكلٍ كلي إلى سويفت دون حصول أخطاء. أحياناً قد يتطلب الأمر حلولاً معينة، وقد تحتاج إلى معرفة واسعة في سي-الكائنية عند محاولة تطبيق هذه الحلول. لذا أفضل استراتيجية الآن هي إعطاء الأولوية لسويفت مع تعلم القليل من سي-الكائنية عند الضرورة القصوى فقط. أيضاً، يجب أن تتابع باستمرار آخر التطورات والميول المتعلفة بسويفت.

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

جافا سكريبت (مقرونةً مع تقنيات إتش تي إم إل 5 الأخرى) هي أكثر لغات تطوير الهواتف المتعددة المنصات إستعمالاً. هناك أيضاً لغاتٌ أخرى مثل بايثون وروبي، لكن جافا سكريبت تمتلك أكبر قدرٍ من الدعم والتبني من قبل المطورين.

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

خاتمة

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

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

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

Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.