نقل البيانات
في مجال تطوير البرمجيات، تُعرف عملية النقل بأنها تكييف البرمجيات لتشغيلها في سياق مختلف. وغالبًا ما تتضمن تعديل شفرة المصدر بحيث يمكن تشغيل البرنامج على منصة مختلفة (أي على معالج أو نظام تشغيل مختلف ) أو في بيئة مختلفة (أي باستخدام مكتبة أو إطار عمل مختلف ). كما تشمل أيضًا نقل تغيير أو ميزة من قاعدة بيانات برمجية إلى أخرى ، حتى بين إصدارات مختلفة من البرنامج نفسه. [ 1 ]
يُصنّف البرنامج على أنه قابل للنقل إذا أمكن تشغيله في بيئة مختلفة دون تغيير في شفرته المصدرية. ويُعتبر البرنامج قابلاً للنقل إذا كانت تكلفة تكييفه مع بيئة معينة أقل بكثير من تكلفة كتابته من الصفر. وكلما انخفضت تكلفة النقل مقارنةً بتكلفة إعادة الكتابة، زادت قابلية البرنامج للنقل. ويعتمد هذا الجهد على عدة عوامل، منها مدى اختلاف البيئة الأصلية عن البيئة الجديدة، ومهارة المبرمجين، وقابلية نقل قاعدة الشفرة.
أصل الكلمة
مصطلح "port" مشتق من الكلمة اللاتينية portāre ، والتي تعني "الحمل". [ 2 ] عندما لا يكون الكود متوافقًا مع نظام تشغيل أو بنية معينة ، يجب "نقل" الكود إلى النظام الجديد.
تاريخ
انخفض عدد وحدات المعالجة المركزية وأنظمة التشغيل المختلفة المستخدمة في أجهزة سطح المكتب اليوم بشكل ملحوظ مقارنةً بالماضي. ونظرًا لهيمنة معمارية x86 ، فإن معظم برامج سطح المكتب لا تُنقل إلى معالجات مركزية أخرى. وفي السوق نفسه، انحصرت خيارات أنظمة التشغيل فعليًا في ثلاثة أنظمة: مايكروسوفت ويندوز ، وماك أو إس ، ولينكس . أما في أنظمة التشغيل المدمجة وأجهزة الجوال ، فلا تزال قابلية النقل تُمثل تحديًا كبيرًا، حيث تُعد معمارية ARM بديلًا شائع الاستخدام.
تُسهّل المعايير الدولية، كتلك التي تُصدرها المنظمة الدولية للمعايير (ISO) ، عملية نقل البرامج بشكل كبير من خلال تحديد تفاصيل بيئة الحوسبة بطريقة تُساعد على تقليل الاختلافات بين المنصات المختلفة المتوافقة مع المعايير . ويُمثل كتابة برامج تلتزم بالحدود التي تُحددها هذه المعايير جهدًا عمليًا، وإن كان ليس بالهين. قد يكون نقل برنامج كهذا بين منصتين متوافقتين مع المعايير (مثل POSIX.1 ) مجرد مسألة تحميل شفرة المصدر وإعادة تجميعها على المنصة الجديدة، ولكن غالبًا ما يجد الممارسون أن هناك حاجة إلى إجراء تعديلات طفيفة مختلفة، نظرًا للاختلافات الدقيقة بين المنصات. وتعاني معظم المعايير من "مناطق رمادية" حيث تؤدي الاختلافات في تفسير المعايير إلى اختلافات طفيفة من منصة إلى أخرى.
يوجد أيضًا عدد متزايد باستمرار من الأدوات لتسهيل عملية النقل، مثل مجموعة GNU Compiler Collection ، التي توفر لغات برمجة متسقة على منصات مختلفة، و Autotools ، التي تعمل على أتمتة اكتشاف الاختلافات الطفيفة في البيئة وتكييف البرنامج وفقًا لذلك قبل التجميع.
تكتسب المترجمات لبعض لغات البرمجة عالية المستوى (مثل Eiffel و Esterel ) قابلية النقل عن طريق إخراج التعليمات البرمجية المصدرية بلغة وسيطة عالية المستوى أخرى (مثل C ) والتي تتوفر لها مترجمات للعديد من المنصات بشكل عام.
نقل المترجمات
بدلاً من الترجمة المباشرة إلى لغة الآلة ، تُترجم المترجمات الحديثة إلى لغة وسيطة مستقلة عن الآلة، وذلك لتعزيز قابلية نقل المترجم وتقليل جهد التصميم. تُعرّف اللغة الوسيطة آلة افتراضية قادرة على تنفيذ جميع البرامج المكتوبة بها (تُعرّف الآلة بلغتها والعكس صحيح). [ 3 ] تُترجم تعليمات اللغة الوسيطة إلى تسلسلات مكافئة من لغة الآلة بواسطة مُولّد أكواد لإنشاء كود قابل للتنفيذ . كما يُمكن الاستغناء عن توليد لغة الآلة من خلال تنفيذ مُفسّر أو مُترجم فوري (JIT) للآلة الافتراضية. [ 4 ]
يُحسّن استخدام الشفرة الوسيطة من قابلية نقل المُصرّف، إذ لا يلزم نقل سوى الشفرة الخاصة بالجهاز (المُفسّر أو مُولّد الشفرة) من المُصرّف نفسه إلى الجهاز المُستهدف. يُمكن استيراد باقي المُصرّف كشفرة وسيطة، ثم معالجتها بواسطة مُولّد الشفرة أو المُفسّر المنقول، ما يُنتج برنامج المُصرّف أو يُنفّذ الشفرة الوسيطة مباشرةً على المُفسّر. يُمكن تطوير الجزء غير الخاص بالجهاز واختباره على جهاز آخر ( الجهاز المُضيف ). يُقلّل هذا بشكل كبير من جهود التصميم، إذ لا يلزم تطوير الجزء غير الخاص بالجهاز إلا مرة واحدة لإنشاء شفرة وسيطة قابلة للنقل. [ 5 ]
يُعدّ المترجم أقل تعقيدًا، وبالتالي أسهل في النقل، من مولد الشفرة، لأنه لا يستطيع إجراء تحسينات على الشفرة نظرًا لمحدودية رؤيته لشفرة البرنامج (فهو لا يرى سوى تعليمة واحدة في كل مرة، ويحتاج المستخدمون إلى تسلسل لإجراء التحسين). بعض المترجمات سهلة النقل للغاية، لأنها لا تفترض سوى الحد الأدنى من الافتراضات حول مجموعة تعليمات العتاد الأساسي. ونتيجة لذلك، تكون الآلة الافتراضية أبسط من وحدة المعالجة المركزية المستهدفة. [ 6 ]
إن كتابة مصادر المترجم بالكامل بلغة البرمجة التي من المفترض أن يترجمها المترجم، يجعل النهج التالي، المعروف باسم تهيئة المترجم ، ممكناً على الجهاز المستهدف:
- قم بنقل المفسر. يجب كتابة هذا بلغة التجميع، باستخدام مُجمِّع موجود بالفعل على الجهاز المستهدف.
- قم بتكييف مصدر مولد الشفرة مع الجهاز الجديد.
- قم بتنفيذ الكود المُعدَّل باستخدام المُفسِّر مع كود مُولِّد الشفرة كمدخل. سيؤدي ذلك إلى توليد شفرة الآلة لمُولِّد الشفرة.
يتم تنفيذ الجزء الصعب من برمجة إجراءات التحسين باستخدام لغة عالية المستوى بدلاً من لغة التجميع الخاصة بالهدف.
بحسب مصممي لغة BCPL ، فإنّ الكود المُفسَّر (في حالة BCPL) يكون أكثر اختصارًا من كود الآلة، عادةً بنسبة اثنين إلى واحد. مع ذلك، فإنّ الكود المُفسَّر يعمل أبطأ بعشر مرات تقريبًا من الكود المُجمَّع على نفس الجهاز. [ 7 ]
يحاول مصممو لغة برمجة جافا الاستفادة من صغر حجم التعليمات البرمجية المفسرة، لأنه قد يلزم نقل برنامج جافا عبر الإنترنت قبل أن يبدأ التنفيذ على آلة جافا الافتراضية (JVM) الخاصة بالهدف.
نقل ألعاب الفيديو
يُستخدم مصطلح "النقل" أيضًا عندما يتم تحويل لعبة فيديو مصممة للعمل على منصة معينة، سواء كانت جهاز ألعاب أركيد أو جهاز ألعاب فيديو منزلي أو حاسوب شخصي ، لتشغيلها على منصة مختلفة، ربما مع بعض الاختلافات الطفيفة. [ 9 ] منذ بدايات ألعاب الفيديو وحتى تسعينيات القرن الماضي، لم تكن "النقلات"، التي كانت تُعرف آنذاك باسم " التحويلات "، في كثير من الأحيان نقلات حقيقية، بل كانت نسخًا مُعاد تصميمها من الألعاب نظرًا لقيود الأنظمة المختلفة. على سبيل المثال، لعبة "الهوبيت" (The Hobbit) الصادرة عام 1982 ، وهي لعبة مغامرات نصية مُدعمة بصور رسومية، تتميز بأنماط رسومية مختلفة بشكل ملحوظ عبر مجموعة الحواسيب الشخصية التي طُورت من أجلها. [ 10 ] مع ذلك، يتم تطوير العديد من ألعاب الفيديو في القرن الحادي والعشرين باستخدام برامج (غالبًا بلغة C++ ) قادرة على إخراج شفرة برمجية لجهاز ألعاب واحد أو أكثر، بالإضافة إلى الحاسوب الشخصي، دون الحاجة إلى نقل فعلي (بالاعتماد بدلًا من ذلك على النقل الشائع لمكتبات المكونات الفردية ). [ 10 ]
كان نقل ألعاب الأركيد إلى أنظمة منزلية ذات مواصفات تقنية متواضعة أمرًا صعبًا. فقد حذفت النسخة المنقولة من لعبة باك مان لجهاز أتاري 2600 العديد من الميزات البصرية للعبة الأصلية لتعويض نقص مساحة ذاكرة القراءة فقط (ROM) ، كما عانى الجهاز عند ظهور عدة أشباح على الشاشة، مما أدى إلى ظهور وميض. ويُعزى ضعف أداء لعبة باك مان على جهاز أتاري 2600 ، بحسب بعض الباحثين، إلى انهيار سوق ألعاب الفيديو عام 1983. [ 11 ]
عانت العديد من النسخ المبكرة من مشاكل كبيرة في جودة اللعب نظرًا للاختلاف الكبير بين أجهزة الكمبيوتر. [ 12 ] صرّح ريتشارد غاريوت في عام 1984 في معرض أوريجينز للألعاب أن شركة أوريجين سيستمز طوّرت ألعاب الفيديو لجهاز أبل 2 أولًا، ثم نقلتها إلى أجهزة كومودور 64 وأتاري ذات 8 بت ، لأن رسومات هذه الأجهزة الأخيرة وميزاتها المتطورة الأخرى جعلت نقلها إلى أبل "أكثر صعوبة، وربما مستحيلًا". [ 13 ] اشتكت المراجعات من النسخ التي عانت من "هوس تحويل أبل"، [ 14 ] حيث احتفظت بـ"صوت أبل الرديء ورسوماتها بالأبيض والأسود والأخضر والبنفسجي"؛ [ 15 ] [ 16 ] بعد تصريح غاريوت، عندما سأل دان بونتن الحضور: "يا موظفي أتاري وكومودور، هل أنتم راضون عن النسخ المُعاد كتابتها لأجهزة أبل؟"، صرخ الحضور "لا!". ردّ غاريوت: "[وإلا] فلن تُنجز نسخة أبل أبدًا. من وجهة نظر الناشر، هذا ليس مُجديًا من الناحية المالية". [ 13 ]
اتبع آخرون أساليب مختلفة. فشركة أوزارك سوفتسكيب، على سبيل المثال، طورت برنامج MULE لجهاز أتاري أولًا لأنها فضّلت تطوير الألعاب لأجهزة الكمبيوتر الأكثر تطورًا، مع حذف أو تعديل الميزات حسب الحاجة أثناء عملية النقل. لم تكن هذه السياسة قابلة للتطبيق دائمًا؛ فقد صرّح بونتن بأن "برنامج MULE لا يمكن تطويره لأجهزة أبل" [ 12 ] ، وأن نسخ لعبة " المدن السبع الذهبية" غير المخصصة لأتاري كانت أقل جودة. [ 17 ] وكتبت مجلة "كومبيوت!" غازيت عام 1986 أنه عند نقل الألعاب من أتاري إلى كومودور، كانت النسخة الأصلية عادةً ما تكون أفضل. وقد تحسّنت جودة ألعاب كومودور عندما بدأ المطورون بإنشاء برامج جديدة لها في أواخر عام 1983. [ 18 ]
في مجال نقل ألعاب الأركيد ، شاع استخدام مصطلحي "مطابقة تمامًا للأركيد" أو "مطابقة للأركيد" لوصف مدى تطابق أسلوب اللعب والرسومات والعناصر الأخرى في النسخة المنقولة مع نسخة الأركيد. كانت العديد من نسخ ألعاب الأركيد في أوائل الثمانينيات بعيدة كل البعد عن المطابقة التامة، نظرًا لافتقار أجهزة الألعاب المنزلية والحواسيب إلى الأجهزة المتطورة المستخدمة في ألعاب الأركيد، إلا أن الألعاب استطاعت مع ذلك محاكاة أسلوب اللعب. ومن الجدير بالذكر أن لعبة "سبيس إنفيدرز" على جهاز أتاري VCS أصبحت اللعبة الأبرز على الجهاز رغم اختلافاتها، [ 19 ] بينما اشتهرت نسخة "باك مان" اللاحقة بانحرافاتها عن نسخة الأركيد. [ 20 ] ازداد انتشار الألعاب المطابقة للأركيد بدءًا من التسعينيات مع تطور أجهزة الألعاب المنزلية لتضاهي قوة أنظمة الأركيد. ومن الملاحظ أن نظام "نيو جيو" من شركة SNK ، الذي طُرح كنظام ألعاب أركيد متعدد الألعاب، تم تقديمه أيضًا كجهاز منزلي بنفس المواصفات. وقد أتاح ذلك إمكانية لعب الألعاب المطابقة تمامًا للأركيد في المنزل. [ 10 ]
لعبة "مُحولة إلى جهاز ألعاب" هي لعبة صُممت في الأصل أو بشكل أساسي لأجهزة الألعاب المنزلية قبل إنشاء نسخة منها قابلة للتشغيل على الحاسوب الشخصي. غالبًا ما يُنظر إلى عملية تحويل الألعاب من أجهزة الألعاب المنزلية إلى الحاسوب الشخصي بنظرة تشاؤمية أكبر من أنواع التحويل الأخرى. ينبع هذا التصور من حقيقة أن بعض نسخ الحاسوب الشخصي لا تستغل بشكل كامل إمكانيات الأجهزة المتطورة المتوفرة في العديد من أجهزة الحاسوب، حتى عند إطلاق جهاز الألعاب المنزلي. ولأن مواصفات أجهزة الألعاب المنزلية تظل ثابتة طوال جيلها بينما تستمر مواصفات أجهزة الحاسوب الشخصي في التطور، فقد تبدو الألعاب المصممة وفقًا لقيود أجهزة الألعاب المنزلية غير مُحسّنة بشكل كافٍ عند إصدارها على الحاسوب الشخصي. ورغم التشابه الكبير بينهما اليوم، لا تزال بعض الاختلافات المعمارية قائمة، مثل استخدام الذاكرة الموحدة وأنظمة التشغيل الأصغر حجمًا على أجهزة الألعاب المنزلية. تنشأ اعتراضات أخرى من اختلافات واجهة المستخدم التقليدية لأجهزة الألعاب، مثل أجهزة التحكم ، وواجهات المستخدم الرقمية ذات مجال الرؤية الضيق ، ونقاط الحفظ الثابتة ، واللعب عبر الإنترنت المقتصر على الخوادم الرسمية أو بروتوكولات P2P ، وضعف دعم التعديلات أو انعدامه ، فضلاً عن الاعتماد الأكبر عمومًا بين مطوري أجهزة الألعاب على البرمجة الداخلية الثابتة والإعدادات الافتراضية بدلاً من واجهات برمجة التطبيقات الخارجية وإمكانية التكوين ، وكل ذلك قد يتطلب إعادة تصميم شاملة ومكلفة لتجنب الشعور بالكسل عند نقل اللعبة إلى الحاسوب الشخصي. [ 21 ]
تُعرف عمليات النقل المستحيلة بأنها عمليات نقل لألعاب الفيديو إلى أجهزة ذات قدرات أقل بكثير من الجهاز المستهدف. [ 22 ] ومن الأمثلة على ذلك نقل ألعاب بلاي ستيشن 4 وإكس بوكس ون ، مثل Nier: Automata و The Witcher 3: Wild Hunt ، إلى جهاز نينتندو سويتش . [ 23 ] [ 24 ]
انظر أيضاً
- التحديث الرجعي – تطوير تحديث لبرنامج قديم بناءً على تحديث لإصدار أحدث
- برنامج محاكاة أجهزة ألعاب الفيديو – برنامج يُعيد إنتاج سلوك أجهزة ألعاب الفيديو
- مترجم متقاطع – مترجم لغة الآلة متعدد المنصات
- البرامج متعددة المنصات – برامج حاسوبية مثبتة على منصات حوسبة متعددة
- المحاكي – نظام يسمح لجهاز بتقليد جهاز آخر
- ربط اللغات – واجهة تسمح للغة برمجة واحدة باستخدام مكتبة مكتوبة بلغة أخرى
- قائمة سمات جودة النظام – المتطلبات غير الوظيفية لتقييم النظام
- بوشليب – إطار عمل برمجي يُستخدم في تطوير البرمجيات متعددة المنصات
- تحويل البرامج – التوليد الآلي لبرنامج حاسوبي
- قابلية نقل البرامج - قدرة البرنامج على العمل على منصات مختلفة مع تعديلات طفيفة.
- منفذ المصدر – نقطة نهاية الاتصالات في نظام التشغيل
- مترجم من المصدر إلى المصدر - مترجم شفرة المصدر الحاسوبية
- اكتب مرة واحدة، وقم بالتجميع في أي مكان – هدف التصميم هو أن يكون الكود المصدري قابلاً للتجميع عالميًا
مراجع
- ↑ ويتن، دي إي؛ ديمين، بي إيه دي (مارس 1975). "فورتران مستقلة عن الآلة والتكوين: فورتران محمولة". معاملات IEEE في هندسة البرمجيات . SE-1 (1): 111-124 . doi : 10.1109/TSE.1975.6312825 . S2CID 16485156 .
- ↑ "port, v.2" . قاموس أكسفورد الإنجليزي (OED Online) . مطبعة جامعة أكسفورد . تم الاطلاع عليه في 21 ديسمبر 2017. الأصل: متعدد الأصول .
مُقتبس جزئيًا من الفرنسية. مُقتبس جزئيًا من اللاتينية. أصول الكلمات: الفرنسية
porter
؛ اللاتينية
portāre
. ... 1.
متعدٍ.
حمل، أو نقل، أو جلب.
- ↑ يصف Tanenbaum 1984 ، ص. 3 ، § 1.1 اللغات والمستويات والآلات الافتراضية المصطلحات وعلاقاتها.
- ↑ تانينباوم 1984 ، ص 2. الفصل 1 مقدمة تشرح الترجمة والتفسير.
- ↑ ريتشاردز وويتبي -ستريفنز 1984 ، ص 124، § 7.1 مقدمة تشرح قابلية نقل المترجم باستخدام التعليمات البرمجية الوسيطة.
- ↑ ريتشاردز وويتبي -ستريفنز 1984 ، ص 133، § 7.4 عملية التمهيد و INTCODE تشرح دور مترجم INTCODE.
- ↑ ريتشاردز وويتبي -ستريفنز 1984 ، ص 136، § 7.4.3 يقدم المثال ترجمة نموذجية لبرنامج BCPL إلى INTCODE للمفسر.
- ↑ هايتون، فيل (17 يناير 2024). "إليك كيفية لعب ألعاب أمير بلاد فارس الأصلية في عام 2024" . GamesRadar+ . تم الاطلاع عليه بتاريخ 19 أبريل 2026.
صدرت 27 نسخة من لعبة المنصات الأصلية عبر أجيال متعددة
. - ↑ وولف، مارك جيه بي (2008). "مسرد المصطلحات" . انفجار ألعاب الفيديو: تاريخ من لعبة بونغ إلى بلاي ستيشن وما بعدها . دار بلومزبري للنشر . ص 315. ISBN 978-0-313-33868-7.
- 1 2 3 غراباركزيك، باويل؛ آرسيث، إسبن (2019)، نقل أم تحويل؟ إطار أنطولوجي لتصنيف إصدارات الألعاب | مؤتمر ديغرا 2019
- ↑ نيكول، بنجامين (2015). "ردم الفجوة: جهاز نيو جيو، والخيال الإعلامي، وتدجين ألعاب الأركيد". الألعاب والثقافة . doi : 10.1177/1555412015590048 . S2CID 147981978 .
- 1 2 بونتن، دان (ديسمبر 1984). "تقارير / رؤى من جبهة تصميم ألعاب الاستراتيجية" . عالم ألعاب الكمبيوتر . ص 40. تم الاسترجاع في 31 أكتوبر 2013 .
- 1 2 "مؤتمر ألعاب الكمبيوتر CGW" . عالم ألعاب الكمبيوتر (حلقة نقاش). أكتوبر 1984. ص 30. تم الاطلاع عليه في 31 أكتوبر 2013 .
- ↑ دانينغتون، بن؛ براون، مارك ر.؛ مالكولم، توم (يناير–فبراير 1987). "معرض 64/128" . معلومات . الصفحات 14–21 .
- ↑ ستانتون، جيفري؛ ويلز، روبرت ب.؛ روتشوانسكي، ساندرا؛ ميليد، مايكل، محرران. (1984). كتاب أديسون-ويسلي لبرمجيات أتاري . أديسون-ويسلي . الصفحات 12، 21، 44، 126. ISBN 0-201-16454-X.
- ↑ بيرنشتاين، هارفي (مايو 1985). "ما وراء قلعة وولفنشتاين" . أنتيك . ص 83. تم الاطلاع عليه بتاريخ 8 يناير 2015 .
- ↑ بونتن، دان. "مجموعة الألعاب" . أوزارك سوفتسكيب . تم الاسترجاع في 4 أكتوبر 2017 .
- ↑ ياكال، كاثي (يونيو 1986). "تطور رسومات كومودور" . مجلة كومبيوت! غازيت . الصفحات 34-42 . تاريخ الاسترجاع: 18 يونيو 2019 .
- ↑ كينت، ستيفن (2001). التاريخ الشامل لألعاب الفيديو . دار نشر ثري ريفرز . ص 190. ISBN 0-7615-3643-4.
- ↑ كينت، ستيفن (2001). "السقوط". التاريخ الشامل لألعاب الفيديو . دار نشر ثري ريفرز. الصفحات 237-239 . ISBN 978-0-7615-3643-7.
- ↑ "توقفوا عن صنع نسخ سيئة من ألعاب الكونسول - دليل" . مجلة بي سي غيمر . 2013.
- ↑ ياروود، جاك (17 ديسمبر 2024). "صناعة: نسخة "المستحيلة" من لعبة Dragon's Lair لجهاز Game Boy Color" . مجلة Time Extension . تاريخ الاسترجاع: 17 يناير 2026 .
- ↑ مينور، جوردان (29 يونيو 2020). "جمال منفذ نينتندو سويتش المستحيل" . مجلة PCMag . تم الاطلاع عليه بتاريخ 17 يناير 2026 .
- ↑ كراير، هيرون (2022-10-06). "قد تكون نسخة نيير أوتوماتا لجهاز نينتندو سويتش أفضل مكان للعب لعبة 2017" . جيمز رادار+ . تم الاطلاع عليه بتاريخ 2026-01-17 .
- ريتشاردز، مارتن ؛ ويتبي-ستريفنز، كولين (1984). لغة BCPL، اللغة ومترجمها . مطبعة جامعة كامبريدج . ISBN 0-521-28681-6.
- تانينباوم، أندرو س. (1984). تنظيم الحاسوب الهيكلي . برنتيس هول . ISBN 0-13-854605-3.
- قابلية التشغيل البيني
- شفرة المصدر
