# جنو ستب

جنو ستب (بالإنجليزية: GNUstep)‏ هو تطبيق مجاني يشتمل على البرمجيات الحرة التي تنفذ Cocoa (لاحقاً OpenStep ) Objective-widget toolkit , C frameworks ، وأدوات تطوير التطبيقات Unix-like operating systems و Microsoft Windows . إنه جزء من GNU Project .
GNUstep تضم من خلال منصة، وجوه المنحى IDE . بغض النظر عن واجهة Objective-C الافتراضية ، فإن GNUstep توجد لها روابط Java , Ruby. يعملون على ضم بعض الإضافات إلى Cocoa من Apple ليظلا متوافقتين. جذور واجهة التطبيق GNUstep هي نفس جذور كوكوا: NeXTSTEP و OpenStep . وهكذا يسبق GNUstep الكاكاو ، الذي ظهر عندما استحوذت شركة Apple على تقنية NeXT ودمجتها في نظام التشغيل Mac OS X الأصلي وعملت على تطويرها ، بينما كان GNUstep في البداية فقط جهدًا مبذول من قبل بعض مطوري GNU لتكرار ميزات NeXTSTEP العالية طموحها تقنيًا والتي تناسب المبرمجين.

## تاريخ

بدأت GNUstep مع بول كونز و الأخرين في مركز ستانفورد مسرع الخطي عندما أرادو نقل ميناء HippoDraw من منصة NeXTSTEP إلى منصة بديلة. بدلاً من الإنشغال بإعادة كتابة HippoDraw من البداية وإعادة استخدام تصميم التطبيق فقط ، قرروا إعادة كتابة طبقة كائن NeXTSTEP التي يثق بها التطبيق. كان هذا الإصدار الأول من libobjcX . لقد مكنهم من نقل HippoDraw إلى أنظمة Unix التي تشتغل بنظام X Window دون العبث أو تغيير سطر واحد من مصدر التطبيق الخاص بهم. من بعد إظهار مواصفات OpenStep للجمهور في عام 1994 ، تم إقرار إعادة كتابة objcX أخر يلتزم بواجهات برمجة التطبيقات الجديدة. البرنامج سيشتهر باسم "GNUstep".

## هيكلة البرمجيات
### استدعاء

GNUstep تمتلك مجموعة من عناصر التحكم الرسومية التي تكتب بلغة البرمجة Objective-C.
تشتمل واجهة المستخدم الرسومية (GUI) الخاصة بـ GNUMail على عناصر التحكم في الرسومات. توجد إحتمالية أن يتفاعل GNUMail مع نظام النوافذ ، على سبيل المثال X11 أو ايلاندز ، واجهة المستخدم الرسومية لابد أن تشتمل على المقدمة . تحتوي طبعاً الواجهة الخلفية لـ GNUstepعلى مجموعة صغيرة من الوظائف التي تسستعلها مكتبة واجهة المستخدم بخصوص التفاعل مع نظام النوافذ الفعلي. كما أن لديها محرك عرض يطابق وظائف Postscript الشائعة. الحزمة gnustep-back توفر لك الخلفيات التالية:
* القاهرة - الواجهة الخلفية الافتراضية باستخدام مكتبة رسومات القاهرة ثنائية الأبعاد.
* winlib - الخلفية الافتراضية لأنظمة Microsoft Windows. متغيرات Cairo و Windows API.
* الفن - الخلفية القديمة (المهملة) على أنظمة تشبه يونكس. يستخدم مكتبة رسومات PostScriptlike 2d المستندة إلى المتجهات Libart .
* xlib - الخلفية X11 القديمة (مهملة).

### النماذج

ترث GNUstep بعض المبادئ المتعلقة بالتصاميم المقترحة في OPENSTEP (يسبق Cocoa GNUstep، لكن Cocoa تصب كامل إهتمامها و إعتمادها على OPENSTEP) بالإضافة إلى لغة Objective-C.
* نموذج - عرض - نموذج تحكم
* الهدف - العمل
* السحب والإفلات
* وفد
* إعادة توجيه الرسائل (من خلال NSInvocation)

### واجهات أخرى

بالإضافة إلى علامة Objective-C ، هناك بعض المشاريع الصغيرة التي تدرس وتطبق تحت مظلة GNUstep و برمجة تطبيقات أخرى من Apple:
* تهدف مكتبة البورون إلى تطبيق Carbon API . إنه غير مكتمل للغاية.
* تم تصميم مكتبة CoreBase لتكون متوافقة مع Core Foundation . لم يكتمل بشكل كافٍ أن يكون المكون الأساسي (مجموعة الأساس) مجرد غلاف حوله.
* تنفذ مكتبة QuartzCore واجهات برمجة تطبيقات الرسوم المتحركة الأساسية. تنفذ مكتبة أوبال كوارتز 2D .
اعتبارًا من فبراير 2020, لاتوجد مشاريع تتماشى مع بيئة The Swift programming language ضد GNUstep Objective-C environment

## التطبيقات

بالأسفل توجد الأمثلة على التطبيقات المكتوبة أو المنقولة إلى GNUstep.

### مكتوب من الصفر

* العناوين ، عنوان / مدير جهات الاتصال
* Étoilé ، بيئة سطح المكتب
* GNUMail ، عميل بريد إلكتروني
* مكتبة قاعدة بيانات GNUstep 2 ، نسخة Enterprise Objects Framework
* GNUstepWeb ، خادم تطبيق متوافق مع WebObjects 4.x.
* Gorm ، منشئ واجهة
* GWorkspace ، مساحة عمل ومدير ملفات
* Grr ، قارئ موجز RSS
* Oolite ، نسخة من Elite ، لعبة محاكاة الفضاء مع مكونات تداول
* PRICE ، تطبيق التصوير
* ProjectCenter أو Project Builder أو ما يعادله من Xcode.
* TalkSoup ، عميل IRC
* صالة
* زيبر ، أداة أرشيف الملفات

### تم نقله من NeXTSTEP أو OPENSTEP أو macOS

* أدون
* بيوكاكوا
* شطرنج
* سينون
* عدن ماث
* باذنجان
* إيماكس
* محظوظ
* جوموكو
* نيكستغو
* بيكو بيكسل
* تحرير النص
* الوقت

### شوكات GNUstep

* Universal Windows Platform ، التي تتضمن مجموعة WinObjC تتكون من أجزاء مختلفة من GNUstep وتطبيقات Microsoft الخاصة لأشياء مثل Cocoa Touch API.

## قدرات الطبقة
### المجموعة الأساسية

توفر Foundation Kit فئات أساسية مثل الغلاف و بنية البيانات.
* سلاسل
* المجموعات (المصفوفات والمجموعات والقواميس) والعداد
* إدارة الملفات
* أرشفة الكائن
* التلاعب المتقدم بالتاريخ
* الكائنات الموزعة والاتصال بين العمليات
* التعامل مع URL
* الإخطارات (والإخطارات الموزعة)
* سهل متعدد الخيوط
* توقيت
* أقفال
* معالجة الاستثناء

### مجموعة التطبيق

مجموعات التطبيقات تقدم فئات مختلفة بخصوص إمكانيات واجهة المستخدم الرسومية.
* عناصر واجهة المستخدم (طرق عرض الجدول ، المتصفحات ، المصفوفات ، طرق عرض التمرير)
* الرسومات ( WYSIWYG ، رسومات تشبه التذييل ، مسارات بيزير ، معالجة الصور مع تمثيلات متعددة ، سياقات رسومية)
* إدارة الألوان (تمت معايرتها مقابل ألوان الجهاز ؛ تمثيلات الألوان CMYK وRGB وHSB والرمادي والمسمى ؛ شفافية ألفا)
* ميزات نظام النص: تنسيق نص منسق ، ومرفقات نصية ، ومدير تخطيط ، وأداة طباعة ، وقواعد ، وأنماط فقرات ، وإدارة خطوط ، وتهجئة
* إدارة الوثائق
* ميزات الطباعة: عمليات الطباعة ولوحة الطباعة وتخطيط الصفحة
* مدير المساعدة
* خدمات اللوح (المعروف أيضًا باسم Clipboard)
* مدقق املائي
* ارتباطات مساحة العمل للتطبيقات
* عمليات السحب والإفلات
* تقاسم الخدمات بين التطبيقات