الفرق بين سويفت Swift وسي أوبجيكتيف Objective-C
بين الجديد والقديم، وبين الأصيل والمعاصر، تبرز الكثير من القضايا لبرهان الاختلاف، وتبيان الأفضليّة، وهذا هو الحال في آخر بضع سنين فيما يتعلّق بالتطوير على منصّات Apple المختلفة؛ فبعد اعتمادها Swift خليفةً للغتها الأولى Objective-C، انفتحت سجالات عديدة حول اختلافهما، واستحقاق إحداهما للتعلّم، والاستخدام الإنتاجي، سواءً بين المطوّرين، والمستهلكين.
فيما يلي توضيح مُبسّط لأهم نقاط الالتقاء والتباين بين هاتين اللغتين.
اختلاف عامّ
Swift هي لغة برمجة متعددة الأغراض، تم تطويرها بواسطة شركة Apple لأنظمة تشغيل أجهزتها المختلفة مثل iOS و tvOS و macOS وwatch OS.
تم إصدارها تحت رخصة “Apache License 2.0″، وظهرت لأول مرة في عام 2014، وهي تدعم أنظمة تشغيل متعددة مثل Linux و Darwin و Free BSD وما إلى ذلك، وهي تتصف بالثبات، مع نظام الكتابة القوي، والمنضبط.
تم تصميم Swift للعمل بتوافقٍ مع “Apple’s Cocoa framework”، ومكتبة Objective-C، للاستخدام في منتجات Apple.
امتداد اسم الملف فيها هو .swift، وهي تدعم العديد من المكونات الأساسية من Objective-C.
في المقابل:
تُعتبر Objective-C لغة برمجةٍ موجهة للكائنات، وللأغراض العامة، وهي تستند إلى الصفوف “classes”.
صمّمها كلٌّ من براد كوكس “Brad Cox”، وتوم لوف”Tom Love”في شركة تدعى “Stepstone”، وقد ظهرت أول مرة في عام 1984.
وهي لغة برمجة ديناميكية، تدعم التطبيقات على عدّة منصّات، ويبرز تأثير أسلوب “SmallTalk”، ولغة “C” عليها.
تنتهي ملفاتها عادةً بامتدادات “.m” أو “.h”، وذلك بناءً على ما إذا كان ملف برنامج، أو ملف الـ “header”.
تعقيد التعليمات البرمجية
من أجل إدارة البرنامج بنجاح، تحتاج إلى رمز يسهل قياسه؛ إذ كلما قل عدد الأسطر التي يحتوي عليها تطبيقك، أصبحت صيانته وتحديثه أكثر سهولة.
تعقيد شفرة Objective-C
إذا نظرنا جيّدًا في كود Objective-C، فسوف نرى أن السلاسل النصية مطولة للغاية وتتطلب الكثير من الخطوات لربط قطعتين من المعلومات، وقد تؤدي مخالفة الترتيب أو استخدام رمز السلسلة غير الصحيح إلى تعطل أحد التطبيقات.
تتطلب Swift رموزًا أقل
يرجع ذلك إلى أن Swift تتضمّن ميزة إضافة سلسلتين معًا باستخدام المعامل “+”.
دعم المكتبات الديناميكية
المكتبات الديناميكية هي الأجزاء القابلة للتنفيذ من التعليمات البرمجية التي يمكن ربطها بالتطبيق.
الفرق بين المكتبات الديناميكية والمكتبات الثابتة هو أنه يمكن ربط المكتبات الديناميكية أثناء وقت التشغيل.
تستخدم Objective-C مكتبات ثابتة فقط، في حين تدعم Swift المكتبات الديناميكية، ما يقلل من حجم التطبيق.
توقعات طويلة الأجل
لفترة طويلة، كانت Objective-C لغة تطوير iOS. الوحيدة، ولكن بعد دخول Swift إلى السوق، احتلت Objective-C المركز الثاني في عالم Apple.
واليوم، تعمل الشركة بنشاط على تثقيف مستخدمي Swift المستقبليين وإطلاق الميزات التي تجعلها اللغة الرئيسية لشركة Apple.
Objective-C لغة “ناضجة”.
إذ لا يرغب العديد من المطورين بالانتقال من Objective-C إلى خليفتها، وذلك لأنهم استثمروا الكثير من الوقت في تعلمها وتطوير التطبيقات فيها.
لم تقدم Apple حتى الآن تاريخًا محددًا لموعد إسقاط الدعم عن Objective-C، ولكن يمكننا أن نفترض أنها لن تفعل ذلك أبدًا.
يتم دعم Swift باستمرار بواسطة Apple.
سويفت لغة “يافعة” تنمو بسرعة كبيرة، ولديها مجتمع قوي ونشط يساهم في تشكيل مكانتها.
لا تقتصر سويفت على نظام Apple فقط، بل هي لغة متعددة المنصّات، واليوم، تشير جميع المؤشرات إلى أن Swift أصبحت لغة برمجة شائعة للغاية.
الترخيص والمصدر المفتوح
تم إنشاء Swift تحت رخصة Apache، وهي لغة مفتوحة المصدر منذ عام 2015، مما يتيح لمهندسي البرمجيات الاستفادة القصوى منها، وهذا يعني هذا أنّ Apple سيكون لديها القدرة على التقرب من شبكة المهندسين المستقلين.
على الجانب الآخر، فإنّ Objective-C مرخصة بموجب “GPL “General Public License.
كلمة أخيرة
إذا قمت بالدخول إلى أي موقع أسئلة وأجوبة مثل Quora، وسألت عن نصيحة للاختيار بين Swift أو Objective-C، فإنّك ستسمع على الأرجح جوقة من الأصوات تردد “Swift!”.
ابتكرت Apple لغة Swift كتطور للغتها القديمة، لذلك ليس من المستغرب عدم وجود العديد من “المبشّرين” للغة Objective-C.
ومع ذلك، عند اتخاذ قرارات حول العمل، عليك أن تسأل نفسك الأسئلة التالية:
ما اللغة التي يعرفها فريقك بالفعل؟
كم من الوقت لديك قبل بدء المشروع؟
ما حجم مشروعك؟
هل لديك ميزانية لإنفاقها على تعيين مطورين جدد؟
ما الذي تنوي القيام به مستقبلاً مع هذا المشروع؟
يواجه المطورون عديدًا من العقبات، ويكافحون كثيرًا في هذا المجال؛ لأن الأمر يتطلب الوقت، والجهد للتحول إلى شيء جديد تمامًا.
لكن، إذا كان بمقدورك، أو في نيتك تعلّم لغة جديدة، وبسرعة، فعليك باختيار Swift، إذ توفر شركة Apple فرصة رائعة للتعلم والاستكشاف في Swift باستخدام Swift Playgrounds، والمجتمع هناك يتقاسم مستندات البرامج ويحسنها في سبيل جعل سويفت معيارًا جديدًا للبرمجة.
بين الجديد والقديم، وبين الأصيل والمعاصر، تبرز الكثير من القضايا لبرهان الاختلاف، وتبيان الأفضليّة، وهذا هو الحال في آخر بضع سنين فيما يتعلّق بالتطوير على منصّات Apple المختلفة؛ فبعد اعتمادها Swift خليفةً للغتها الأولى Objective-C، انفتحت سجالات عديدة حول اختلافهما، واستحقاق إحداهما للتعلّم، والاستخدام الإنتاجي، سواءً بين المطوّرين، والمستهلكين.
فيما يلي توضيح مُبسّط لأهم نقاط الالتقاء والتباين بين هاتين اللغتين.
اختلاف عامّ
Swift هي لغة برمجة متعددة الأغراض، تم تطويرها بواسطة شركة Apple لأنظمة تشغيل أجهزتها المختلفة مثل iOS و tvOS و macOS وwatch OS.
تم إصدارها تحت رخصة “Apache License 2.0″، وظهرت لأول مرة في عام 2014، وهي تدعم أنظمة تشغيل متعددة مثل Linux و Darwin و Free BSD وما إلى ذلك، وهي تتصف بالثبات، مع نظام الكتابة القوي، والمنضبط.
تم تصميم Swift للعمل بتوافقٍ مع “Apple’s Cocoa framework”، ومكتبة Objective-C، للاستخدام في منتجات Apple.
امتداد اسم الملف فيها هو .swift، وهي تدعم العديد من المكونات الأساسية من Objective-C.
في المقابل:
تُعتبر Objective-C لغة برمجةٍ موجهة للكائنات، وللأغراض العامة، وهي تستند إلى الصفوف “classes”.
صمّمها كلٌّ من براد كوكس “Brad Cox”، وتوم لوف”Tom Love”في شركة تدعى “Stepstone”، وقد ظهرت أول مرة في عام 1984.
وهي لغة برمجة ديناميكية، تدعم التطبيقات على عدّة منصّات، ويبرز تأثير أسلوب “SmallTalk”، ولغة “C” عليها.
تنتهي ملفاتها عادةً بامتدادات “.m” أو “.h”، وذلك بناءً على ما إذا كان ملف برنامج، أو ملف الـ “header”.
تعقيد التعليمات البرمجية
من أجل إدارة البرنامج بنجاح، تحتاج إلى رمز يسهل قياسه؛ إذ كلما قل عدد الأسطر التي يحتوي عليها تطبيقك، أصبحت صيانته وتحديثه أكثر سهولة.
تعقيد شفرة Objective-C
إذا نظرنا جيّدًا في كود Objective-C، فسوف نرى أن السلاسل النصية مطولة للغاية وتتطلب الكثير من الخطوات لربط قطعتين من المعلومات، وقد تؤدي مخالفة الترتيب أو استخدام رمز السلسلة غير الصحيح إلى تعطل أحد التطبيقات.
تتطلب Swift رموزًا أقل
يرجع ذلك إلى أن Swift تتضمّن ميزة إضافة سلسلتين معًا باستخدام المعامل “+”.
دعم المكتبات الديناميكية
المكتبات الديناميكية هي الأجزاء القابلة للتنفيذ من التعليمات البرمجية التي يمكن ربطها بالتطبيق.
الفرق بين المكتبات الديناميكية والمكتبات الثابتة هو أنه يمكن ربط المكتبات الديناميكية أثناء وقت التشغيل.
تستخدم Objective-C مكتبات ثابتة فقط، في حين تدعم Swift المكتبات الديناميكية، ما يقلل من حجم التطبيق.
توقعات طويلة الأجل
لفترة طويلة، كانت Objective-C لغة تطوير iOS. الوحيدة، ولكن بعد دخول Swift إلى السوق، احتلت Objective-C المركز الثاني في عالم Apple.
واليوم، تعمل الشركة بنشاط على تثقيف مستخدمي Swift المستقبليين وإطلاق الميزات التي تجعلها اللغة الرئيسية لشركة Apple.
Objective-C لغة “ناضجة”.
إذ لا يرغب العديد من المطورين بالانتقال من Objective-C إلى خليفتها، وذلك لأنهم استثمروا الكثير من الوقت في تعلمها وتطوير التطبيقات فيها.
لم تقدم Apple حتى الآن تاريخًا محددًا لموعد إسقاط الدعم عن Objective-C، ولكن يمكننا أن نفترض أنها لن تفعل ذلك أبدًا.
يتم دعم Swift باستمرار بواسطة Apple.
سويفت لغة “يافعة” تنمو بسرعة كبيرة، ولديها مجتمع قوي ونشط يساهم في تشكيل مكانتها.
لا تقتصر سويفت على نظام Apple فقط، بل هي لغة متعددة المنصّات، واليوم، تشير جميع المؤشرات إلى أن Swift أصبحت لغة برمجة شائعة للغاية.
الترخيص والمصدر المفتوح
تم إنشاء Swift تحت رخصة Apache، وهي لغة مفتوحة المصدر منذ عام 2015، مما يتيح لمهندسي البرمجيات الاستفادة القصوى منها، وهذا يعني هذا أنّ Apple سيكون لديها القدرة على التقرب من شبكة المهندسين المستقلين.
على الجانب الآخر، فإنّ Objective-C مرخصة بموجب “GPL “General Public License.
كلمة أخيرة
إذا قمت بالدخول إلى أي موقع أسئلة وأجوبة مثل Quora، وسألت عن نصيحة للاختيار بين Swift أو Objective-C، فإنّك ستسمع على الأرجح جوقة من الأصوات تردد “Swift!”.
ابتكرت Apple لغة Swift كتطور للغتها القديمة، لذلك ليس من المستغرب عدم وجود العديد من “المبشّرين” للغة Objective-C.
ومع ذلك، عند اتخاذ قرارات حول العمل، عليك أن تسأل نفسك الأسئلة التالية:
ما اللغة التي يعرفها فريقك بالفعل؟
كم من الوقت لديك قبل بدء المشروع؟
ما حجم مشروعك؟
هل لديك ميزانية لإنفاقها على تعيين مطورين جدد؟
ما الذي تنوي القيام به مستقبلاً مع هذا المشروع؟
يواجه المطورون عديدًا من العقبات، ويكافحون كثيرًا في هذا المجال؛ لأن الأمر يتطلب الوقت، والجهد للتحول إلى شيء جديد تمامًا.
لكن، إذا كان بمقدورك، أو في نيتك تعلّم لغة جديدة، وبسرعة، فعليك باختيار Swift، إذ توفر شركة Apple فرصة رائعة للتعلم والاستكشاف في Swift باستخدام Swift Playgrounds، والمجتمع هناك يتقاسم مستندات البرامج ويحسنها في سبيل جعل سويفت معيارًا جديدًا للبرمجة.