قابلية نقل البرامج

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

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

الاستراتيجيات

قد تتضمن قابلية نقل البرامج ما يلي:

أنظمة مماثلة

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

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

في بعض الحالات، يُصمَّم برنامجٌ ما، يُوصف عادةً بأنه " برنامج محمول "، خصيصًا للعمل على أجهزة كمبيوتر مختلفة ذات أنظمة تشغيل ومعالجات متوافقة، دون الحاجة إلى تثبيت خاص بالجهاز. وتقتصر عملية النقل على نقل مجلدات محددة ومحتوياتها. ويمكن استخدام البرامج المثبتة على أجهزة تخزين محمولة ، مثل ذاكرة USB، على أي جهاز كمبيوتر متوافق بمجرد توصيل جهاز التخزين، حيث تُخزَّن جميع معلومات التكوين على الجهاز القابل للإزالة. وغالبًا ما تُخزَّن المعلومات الخاصة بالأجهزة والبرامج في ملفات تكوين في مواقع محددة، مثل سجل النظام في نظام ويندوز .

يجب تعديل البرامج غير القابلة للنقل بهذا المعنى بشكل أكبر لدعم البيئة على الجهاز المستهدف.

معالجات مختلفة

في عام 2011، كانت غالبية أجهزة الكمبيوتر المكتبية والمحمولة تستخدم معالجات دقيقة متوافقة مع مجموعات تعليمات x86 ذات 32 و64 بت . أما الأجهزة المحمولة الأصغر حجمًا فتستخدم معالجات ذات مجموعات تعليمات مختلفة وغير متوافقة، مثل ARM . ويؤدي هذا الاختلاف بين الأجهزة الكبيرة والصغيرة إلى اختلاف تفاصيل تشغيل البرامج؛ فلا يمكن ببساطة نقل تطبيق مصمم للعرض بشكل مناسب على شاشة كبيرة إلى هاتف ذكي صغير الحجم بشاشة صغيرة، حتى لو كانت وظائفه متشابهة.

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

قابلية نقل شفرة المصدر

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

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

جهود نقل شفرة المصدر

حتى مع اللغات التي تبدو قابلة للنقل مثل C و C++ ، فإن جهد نقل شفرة المصدر قد يختلف اختلافًا كبيرًا. ذكر مؤلفو UNIX/32V (1979) أن " صدفة (بورن) [...] تطلبت أكبر جهد تحويل من أي برنامج يُفترض أنه قابل للنقل، وذلك ببساطة لأنه غير قابل للنقل." [ 1 ]

أحيانًا يتطلب الأمر إعادة تجميع الكود المصدري، وأحيانًا أخرى يتطلب إعادة كتابة أجزاء رئيسية من البرنامج. تصف العديد من مواصفات اللغات سلوكًا محددًا بالتنفيذ (على سبيل المثال، يمكن أن يؤدي إزاحة عدد صحيح مُوقّع إلى اليمين في لغة C إلى إزاحة منطقية أو حسابية ). قد لا تكون وظائف نظام التشغيل أو مكتبات الطرف الثالث متوفرة على النظام المستهدف. قد تكون بعض الوظائف متوفرة على النظام المستهدف، ولكنها تُظهر سلوكًا مختلفًا قليلًا (مثل utime()فشلها في نظام Windows مع ظهور خطأ EACCES عند استدعائها لدليل). قد يحتوي كود البرنامج على عناصر غير قابلة للنقل، مثل مسارات ملفات التضمين، وأحرف محركات الأقراص، أو الشرطة المائلة العكسية. كما أن العناصر المحددة بالتنفيذ، مثل ترتيب البايتات وحجم نوع البيانات int ، قد تزيد من جهد النقل. عمليًا، يُعدّ ادعاء لغات مثل C و C++ بأنها تتمتع بمبدأ WOCA ( اكتب مرة واحدة، ترجم في أي مكان ) أمرًا قابلًا للنقاش.

انظر أيضاً

مراجع

  1. توماس ب. لندن وجون ف. رايزر (1978). نظام تشغيل يونكس لحاسوب DEC VAX-11/780 . مذكرة داخلية من مختبرات بيل 78-1353-4.

مصادر

  • موني (1997). "إضفاء قابلية النقل على عملية تطوير البرمجيات" (ملف PDF) . (مساعدة) . جامعة ويست فرجينيا. قسم الإحصاء وعلوم الحاسوب. مؤرشف من النسخة الأصلية (ملف PDF) بتاريخ 25 يوليو 2008. تم الاطلاع عليه بتاريخ 17 مارس 2008 .
  • غارين (2007). "قابلية نقل البرمجيات: موازنة الخيارات، واتخاذ القرارات" . مجلة المحاسبين القانونيين المعتمدين . 77 (11): 3. مؤرشف من الأصل بتاريخ 2010-07-08.
  • ليهي (1995). "نقل برامج يونكس: من التنزيل إلى التصحيح" (ملف PDF) . (مساعدة) . تم الاطلاع عليه بتاريخ 27-05-2010 .