أيها الأصدقاء ، مرحباً بالجميع. على اتصال Dmitry Kozhevin هو مدرس الدورة الأساسية "Android Developer" في OTUS. خاصة بالنسبة لقراء مدونتنا ، أعددت ترجمة لمثل هذا المقال الاستفزازي جزئيًا. رأيك مثير جدا للاهتمام ، لذلك ، بعد القراءة ، أدعو الجميع للتعليق على هذا المنشور.
بمجرد حصول Kotlin على دعم Google ، لم يكن الإثارة الهائلة لمشجعي Kotlin هي الرد الوحيد. كان الأشخاص غير المألوفين لدى Kotlin مهتمين جدًا بمستوى توافقه مع Java ، ومتوسط الوقت اللازم لتعلمه ،
وفوائد استخدام Kotlin بشكل عام.
في محاولاتهم لشرح وتقديم اللغة بأقصر الطرق وأكثرها وضوحًا ، أشار العديد من مطوري Kotlin إلى التوازي لمدة ثلاث سنوات بين Kotlin ولغة iOS الرسمية الثانية ، Swift. عند الاتصال بـ Kotlin "Swift of Android" ، سهّل كل شيء المهمة وساعد في إنشاء صورة للغة. ومع ذلك ، تسببت هذه الصورة أيضًا في
إثارة جدل في مجتمع iOS ، لأن بعض مطوري iOS لم يجدوا المقارنة بين الإغراء وشاهدوا Kotlin مجرد نسخة مقلدة.
على الأقل تجدر الإشارة إلى أنه على الرغم من ظهور Swift في عام 2013 ، ظهر Kotlin مرة أخرى في عام 2011. وبالتالي ، حتى لو كانت المقارنة بين Kotlin و Swift (بهذا الترتيب الدقيق) ملائمة بسبب تعرض سويفت في وقت سابق لجمهور أوسع ، فإن أي ادعاء بتقليد Kotlin ليس له ما يبرره.
ومع ذلك ، هل يستحق المقارنة؟ إذا كان الأمر كذلك ، إلى أي مدى يمتد التشابه؟ وهل يشير وجودها إلى حقيقة أن إصدار تطبيقات iOS و Android قد يصبح في البداية أبسط وأسرع في المستقبل؟ تتيح تجربة ScienceSoft الواسعة في
خدمات تطوير التطبيقات المحمولة إمكانية المضاربة في هذه المرحلة. دعنا نلقي نظرة على ذلك.
بناء الجملة
بناء الجملة Swift لا يذكرنا فقط بملامح Kotlin - في أجزاء صغيرة من الكود يمكن أن يكون هناك
تشابه في خط يصل إلى
77 ٪ .
يمكن تلخيص الاختلافات الرئيسية في الجدول أدناه:
الأساسيات ، والطبقات ، والوظائف لها طرق مماثلة للتعبير. على عكس Objective-C ، تشبه استدعاءات طريقة Swift مكالمات Java و Kotlin ، مع نظام مساحة الاسم ونمط تدوين النقاط. على سبيل المثال ، إليك ما يبدو عليه استدعاء دالة بلغتين:
وهذه هي الطريقة التي يتم الإعلان بها في كل من:
يمكنك العثور على العديد من الأمثلة الأخرى في هذه
المقالة ، وإذا أخبرنا شيئًا ما ، فإن الهدف من كلتا اللغتين هو هدف مشترك - أن تكون موجزة وشفافة قدر الإمكان ، مما يجعل حياة المطورين أسهل. تعد أنظمة بناء الجملة في Kotlin و Swift فعالة للغاية في هذا الصدد ، نظرًا لأن فرق التطوير تقدر قيمة أناقتها.
أمن
على الرغم من أن Swift و Kotlin قويتان وثابتان من حيث الكتابة ، إلا أنهما يتيحان لك أيضًا التعامل مع أنواع ديناميكية. وبهذه الطريقة ، تظل اللغات مختصرة ومرنة ، مما يسمح بالقضاء المبكر على الأخطاء والتناقضات. لذلك ، فهي تعتبر آمنة للغاية وموثوقة بشكل خاص للمشاريع الكبيرة.
بالإضافة إلى ذلك ، تجمع هاتان اللغتان بين أساليب التعامل مع القيم الاختيارية وأمان null / nil باستخدام مشغل التنقل الآمن "؟" أو أنواع الخيارات. الاحتياطات التي تحمل علامة "؟" تم التعبير عنها بشكل شبه متطابق في كل من Kotlin و Swift:
ملامح
بالإضافة إلى أمان null (nil) والوظائف والفئات ، لدى Kotlin و Swift العديد من الوظائف المتشابهة ، بما في ذلك
constants, variables, generics, protocols/traits
(تم
استبدال السمات بالواجهة وملاحظة المترجم)
enumerated types, any (anyobject)
ومعالجة الأخطاء وغيرها. تشترك بعض الوظائف المنفذة بلغتين في النهج ، ولكن يتم استدعاؤها بشكل مختلف بسبب اللغة الأصلية التي ترجع إليها هذه الوظائف.
على سبيل المثال ، في Kotlin ، يمكنك العثور على تعبيرات Java lambda. في Swift ، هذه كتل أو عمليات إغلاق ، مصطلحات من Objective-C. تشبه الطريقة التي يتم استدعاء كل من التعبيرات في التعليمات البرمجية طريقة عملها.
يتم تضمين وظيفة تُعرف باسم
الخصائص المحسوبة في Swift ، وهي عبارة عن إعلان خاصية محدد مع استدعاء للحصول عليها ، في Kotlin:
تُستخدم معلمات الاسم (أو الوسائط المسماة) أيضًا في كلتا اللغتين:
في الواقع ، بدلاً من سرد الوظائف الموجودة في كلتا اللغتين ، سيكون من السهل سرد الوظائف غير الموجودة. وهي ، Kotlin فقط يدعم:
- فئات الاستيراد
- المنشئات الأولية وفئات البيانات
- annotations
في الوقت نفسه ، على عكس Kotlin ، لدى Swift:
- الصفوف
- typealias
- بيان الحراسة
قيمة التشابه
اللغتان منفصلتان بوضوح عن الأيديولوجية ، حيث إنهما يحلان المشكلات نفسها التي أوجدتها لغات أسلافهم: فهم أقل قدرة على الكلام ومحدودين في الوظيفة ، وأكثر قابلية للقراءة وأكثر ملاءمة للعمل معهم. في الوقت نفسه ، تظل Kotlin و Swift متوافقة مع Java و Objective-C ، على التوالي ، مما يسمح باستخدامهما في المشروعات الجديدة وفي خدمة المشروعات القديمة.
علاوة على ذلك ، يمكن لأوجه التشابه القوية بين اللغتين أن تساعد في تطوير التطبيقات المحلية لنظامي iOS و Android. بالطبع ، لا يمكن القول أن التطبيقات على كلا النظامين يمكن أن تشترك في نفس الكود ، لأن اللغات والمكتبات لأنظمة تشغيل معينة ليست متطابقة. ومع ذلك ، يمكن أن تتشابه طرق التعامل مع منطق التطبيق ووظائفه ، وذلك بفضل أوجه التشابه النحوية والوظيفية بين Swift و Kotlin. هذا يمكن أن يجعل التطوير والاختبار والصيانة أسرع وأسهل.
لغة عالمية لنظام التشغيل iOS و Android؟
من الناحية النظرية ، يمكن أن تقبل Google بالفعل Swift كلغة رسمية بدلاً من Kotlin ؛ حتى في عام 2016 كانت هناك شائعات حول هذا الاحتمال. من المحتمل ألا تؤدي هذه الخطوة إلى خلق موقف تصبح فيه أي أدوات تطوير عبر الأنظمة الأساسية غير ذات صلة ، لكن الفرق بين النظامين سيصبح بلا شك غير واضح.
ومع ذلك ، فإن هذه الخطوة ستكون أيضًا غير معقولة ، وليس فقط بسبب القدرة التنافسية للشركة. على الرغم من أن سويفت وكوتلين متشابهان ، فإن الأهم من ذلك كله أنها تشبه سابقاتها. بمعنى آخر ، يقوم كل من Swift و Kotlin بسد الفجوة بين Objective-C و Java. ومع ذلك ، لا يزال التحول من Java إلى Kotlin أكثر طبيعية وسلسة من التبديل من Java إلى Swift.
بشكل عام ، لا يحب الجميع فكرة التكيف مع شيء جديد ؛ يستغرق بعض المطورين وقتًا لبدء استخدام لغة جديدة ، كما كان الحال
مع اعتماد Swift . للتأكد من أن الانتقال إلى لغة جديدة لن يكون اختبارًا صعبًا ، فهذا يعني أن اللغة تكتسب شعبية في النهاية ، ولغة جديدة هذا أمر مهم في المقام الأول.
وداع الفكر
كما تطور المحمول يتطور باستمرار ، وكذلك التقنيات. هذا هو السبب في أن كل من Kotlin و Swift يمكن أن يصبحا مختلفين تمامًا خلال 5-10 سنوات. لم يُعرف بعد ما إذا كانت اللغات ستستمر في سد الفجوة بينها. ومع ذلك ، نظرًا لأن iOS و Android يبحثون عن أكثر أدوات تطوير الأجهزة المحمولة ملاءمةً وأمانًا وأسرعها ، فيمكنهم في نهاية المطاف التحدث باللغة نفسها في يوم من الأيام.