# متعدد المنصات

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

## منصات

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

### منصات الأجهزة

منصات الأجهزة تشير إلى معمارية ما للحاسوب أو المعالج مثل معمارية x86 و x64, مثل هذه المعمارية يمكن يشتغل عليها أكثر من نظام تشغيل مثل أنظمة مايكروسوفت ويندوز، جنو/لينكس، أوبن بي إس دي، نت بي إس دي، أو إس 10 وفري بي ‌إس ‌دي.
منصات الأجهزة تضم أيضا كل منصات ألعاب الفيديو مثل منصات PlayStation وإكس بوكس ونينتندو، حيث توفر هذه المنصات بيئة متكاملة من حيث العتاد ونظام التشغيل لغرض تشغيل الألعاب وبعض الخدمات الترفيهية الأخرى، تتوفر مع هذه المنصة في العادة معدات تطوير خاصة بالمطورين.

### المنصات البرمجية

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

## برمجيات متعددة المنصات

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

### تطبيقات الويب

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

### ألعاب الفيديو

مصطلح (متعدد المنصات) يمكن أن يعنى به أيضا ألعاب الفيديو التي أطلقت لأكثر من منصة ألعاب أو منصة قادرة توفر ميزة تشغيل الألعاب، من امثلة هذه الألعاب: جي تي أي 5 فيفا 16 تومب رايدر: ليجند
كل منها أطلق في عدد من المنصات المشهورة مثل وي، بلاي ستيشن 3 ، إكس بوكس 360، الحاسب المحمول.
عملية إطلاق الألعاب على أكثر من منصة قد يسبب في إطالة فترة التطوير، خصوصاً بسبب تعديل اللعبة مع مميزات المنصة التي سوف تعمل عليه، الذي يجعل الشركات تلجأ في بعض الأحيان إلى إطلاق اللعبة في وقت أخر على بعض المنصات. هذه الحالات تحدث في العادة عندما يتم إطلاق منصة العاب جديدة، لأن المطورين يحتاجون لبعض الوقت للتعود ولتعلم التطوير على هذه المنصات الجديدة.
بعض الألعاب قد لا تكون متعددة المنصات لسببين، الأول بسبب أنها من تطوير شركات الطرف الأول التي تتبع الشركة المالكة للمنصة، فيتم تطوير الألعاب بشكل حصري على منصة الشركة، والسبب الثاني ناتج من شروط العقد الذي قد يتم احياناً بين الشركة المالكة للمنصة وشركات الطرف الثالث المطورة للعبة الذي ينص على حصرية اللعبة لهذه المنصة لفترات قد تكون طويلة أو قصيرة، من أمثلة الألعاب الحصرية: Uncharted الحصرية على منصة Playstation Gears of War الحصرية على منصة Xbox

## البرمجة المتعددة المنصات

برمجة متعددة المنصات هي العمليات التي يتم فيها كتابة برنامج يعمل على أكثر من منصة واحدة.

### طرق برمجة المنصات المتعددة

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

### أدوات وبيئات التطوير

يوجد عدد كبير من الأدوات التي تسهل عليك وتسمح لك بتطوير تطبيقات متعددة المنصات، تختلف هذه الأدوات من حيث الطرق التي تعتمد عليها في طرق التطوير، منها:
* AppearIQ: إطار عمل يدعم عمليات التطوير والإطلاق للتطبيق داخل المؤسسات، يستخدم في عملية البرمجة إتش تي إم إل 5 التي تتميز بإمكانية عملها على مختلف المنصات ومخصص للأجهزة المحمولة واللوحيات.
* إكلبس: منصة تطوير متعددة المنصات ومفتوحة المصدر، يتم التطوير عليها باستخدام لغة جافا بشكل عام.
* Mono: نسخة مفتوحة المصدر من مايكروسوفت دوت نت فريموورك.
* زامارين: منصة تطوير لإطلاق تطبيقات متعددة المنصات باستخدام لغة #C.

## التحديات في تطوير التطبيقات المتعددة المنصات

يوجد بعض القضايا المتعلقة بالتطوير المتعدد المنصات، التي ينتج عنها عدة تحديات منها:
* عملية اختبار التطبيقات المتعددة المنصات قد تعتبر معقدة، بسبب أن المنصات تكون مختلفة، فينتج عنها سلوك غير متوقع أو بعض المشاكل المتعلقة باستقرار عمل التطبيق. هذه المشاكل تقود المطورين إلى اللجوء إلى أسلوب التطوير الذي ينص «اكتب مرة واحدة، يشتغل في كل مكان» الذي تتخذه شركةصن ميكروسيستمز صاحبة جافا كإشعار لها.
* يكون المطورون غالباً مقيدين بالمميزات المشتركة بين كل المنصات فقط، دون تضمين خواص ومميزات أخرى، مما يحد من أداء النظام ومميزاته بسبب عدم استخدام المميزات المتطورة لكل منصة.
* المنصات المختلفة لها أعراف خاصة بواجهات استخدام مختلفة، وتطبيقات المنصات المتعددة لا تتبع هذه الأعراف في العادة.
* اللغات النصية (لغة برمجة نصية) والأجهزة الافتراضية (آلة افتراضية) يجب أن تتم ترجمتها إلى شفرة تنفيذية بلغة الألة (native executable code)، ما يسبب في إضعاف الأداء بسبب الوقت المستغرق في هذه العملية.
* البيئات التنفيذية للتطبيقات المتعددة المنصات قد تعاني من ثغرات وعيوب أمنية، مما يخلق بيئة خصبة للبرمجيات الخبيثة.