الإخوة الراغبون بتعلم برمجة الماكنتوش، رأيت أن أكتب موضوعا أبين فيه الطريق الذي يجب أن يسلكه كل مبرمج ماكنتوش، خصوصا لأنه لا نجد من حولنا من يهتم ببرمجة الماكنتوش، وبداية يجب الحديث عن نظام تشغيل الماكنتوش:
نظام تشغيل الماكنتوش سواء كان( Leopard أو Tiger ... أو غيره من إصدارات X) أو حتى نظام Classic بمختلف إصداراته هو عبارة عن مجموعة كبيرة من الإدارات، ولكل إدارة وظيفتها المنوطة بها، فيجب على المبرمج فهم وظيفة وآلية كل إدارة على حدة، وعلاقة الإدارات بعضها ببعض، إذ عندما يقدم المبرمج على كتابة نص برنامجه (الشيفرة) فهو يقوم بالتعامل مع هذه الإدارات بشكل مباشر، كما يتطلب أحيانا من المبرمج إنشاء إدارات خاصة تؤدي وظائف خاصة ويتم ذلك بطرق مختلفة ومن أشهرها إنشاء ملحقات النظام.
ملاحظة: لم يتم ذكر جميع إدارات نظام التشغيل، واكتفيت بذكر الإدارات الهامة والأساسية فقط.
الطريق التي يتوجب على المتعلم سلوكه يكون على النحو التالي:
أولا: تعلم أدوات الماكنتوش الضرورية والهامة وتعرف باسم Macintosh Toolbox Essential ويشمل هذا الإدارات التالية:
(1)إدارة الأحداث- Event Manager -وهي أوتوماتيكية وذاتية التشغيل.
(2)إدارة القوائم- Menu Manager- وذلك لإنشاء وتحرير شريط القوائم وهي أيضا أوتوماتيكية
(3)إدارة النوافذ – Window Manager – وهي المسؤولة عن التعامل مع كل النوافذ، وكذلك إنشاء نوافذ خاصة ذات أشكال وأغراض خاصة لا يدعمها نظام التشغيل.
(4)إدارة مربعات الحوار – Dialog Manager- وذلك لإنشاء وعرض مربعات الحوار التي تستخدم لطلب المعلومات والتماس خيارات المستخدم.
(5)إدارة التحكم – Control Manager- ويتم فيها إنشاء عناصر التحكم مثل الأزرار والقوائم ومختلف العناصر التي تظهر في كل من النوافذ ومربعات الحوار.
(6)الاتصال بالباحث –Finder Interface- وذلك للتعامل مع تطبيق الباحث.
كما تستخدم الإدارات السابقة لإنشاء عناصر خاصة لا يدعمها نظام التشغيل، فإدارة القوائم تستخدم لإنشاء قوائم خاصة لا يدعمها نظام التشغيل وذلك يعرف باسم عملية تعريف قائمة خاصة. وبقية الإدارات تقتضي نفس الأمر.
جميع الإدارات الخمس السابقة أوتوماتيكية وذاتية التشغيل.
بعد ذلك يستطيع المتعلم الانتقال إلى المزيد من أدوات الماكنتوش وهي More Macintosh Toolbox وهي على النحو التالي:
(1)إدارة موارد الماكنتوش- Resource Manager، وموارد الماكنتوش صنفان، الأول: قياسي وهي التي يدعمها نظام التشغيل وعددها بالمئات، والصنف الثاني هو الخاص، الذي ينشئه المبرمج ليلبي حاجته وهذا لا حصر لعدده.
(2)إدارة التعليمات- Help Manager- وذلك لإنشاء وعرض بالونات التعليمات (توقف العمل بها في نظام X بشكل رسمي لكن لا تزال موجودة في النظام، ويجب تعلمها لأنها تفيد في تعلم دليل تعليمات Apple)
(3) إدارة القوائم List Manager، وهي التي تتوفر في النوافذ ومربعات الحوار.
(4)إدارة المسوّدة –Scrap Manager – وهي المسؤولة عن عمليات النسخ واللصق، ولقد تطورت كثيرا في نظام X، كما أصبح لها عدة بدائل مثل Pasteboard.
(5)إدارة المكوّن أو المركّب – Component Manager- لإنشاء مركبات تستخدم في إثراء البرنامج بشكل كبير.
(6)استخدامات الرموز في الماكنتوش (Icons Utilities).
(7) إدارة الترجمة وذلك لتغيير نوع الملفات من هيئة إلى أخرى.
(8)إنشاء لوحات التحكم – Control Panel ويتم فيها إنشاء لوحات التحكم تماما كالتي في نظام Classic، لكنها غير كافية لأنها تعتمد كثيرا على كل من إدارة الذاكرة وإدارة محلقات النظام.
(9)إدارة سطح المكتب.
ثم يتعلم المبرمج الرسم والتخيل باستخدام QuickDraw ويشمل ذلك ما يلي:
(1)مفاهيم QuickDraw
(2)الرسم باستخدام QuickDraw
(3)QuickDraw الملون
(4)أجهزة الإخراج والرسوم (وهي الشاشات بالدرجة الأولى)
(5) استخدامات الصور في الماكنتوش ويتم التعرف على هيئة ونوع صور نظام الماكنتوش وهي PICT و PICT Resource Format
(6)إدارة الطباعة Printing Manage وذلك لعلميات الطباعة والإخراج.
(7)تطبيق عمليات خاصة على استخدام الصور(تطبيق معادلات رياضية لإنشاء صور رياضية مذهلة، مفيدة في صناعة الألعاب).
(8) استخدامات المؤشر (Cursor Utilities).
(9)رموز و شيفرة الصور في الماكنتوش.
ولمن يريد التوسع في الألوان ما عليه إلا أن يشرع في تعلم المزيد عن QuickDraw الملون وهو على النحو التالي:
(1)إدارة لوح الألوان (له تأثيرات لونية مذهلة جدا، وكلما ازدادت معرفتك بالرياضيات ازداد ابداعك فيها..)
(2)إدارة منتقي الألوان
(3)مدخل بسيط لإدارة توافق الألوان (ملحق النظام ColorSync)
(4)تطوير توافق الألوان (بإنشاء تطبيق مساعد)
(5)تطوير توافق الألوان (بإنشاء ملحق مساعد)
(6)إدارة الألوان.
ثم يصبح المبرمج الآن أمام منعطف: وهو أن يسلك أحد هذه الطرق:
(1)إدارات الذاكرة.
(2)عالم النصوص في الماكنتوش Macintosh Text، وهو عالم كبير جدا وفيه تعقيد كبير، ويتطلب وقتا طويلا لتعلمه، ويشمل 6 أجزاء مختلفة.
(3)ملفات الماكنتوش Macintosh Files، ويشمل إدارة الملفات، وحزمة الملف القياسية، كذلك إدارة الملف المكافئ.، وأيضا إدارة تهيئة الأقراص. ملاحظة إدارة الملفات تبدأ بشكل سهل ثم تزداد صعوبة شيئا فشيئا إلى أن تصبح في غاية التعقيد، وقد ازداد تعقيدها مؤخرا في نظامي Tiger و Leopard..
(4)كتاب الأصوات في عالم الماكنتوش Macintosh Sound يشرح جميع إدارات الأصوات والتحدث.
ملاحظة مهمة جدا: جميع ما ذكر يجب على كل مبرمج ماكنتوش تعلمه.
المواضيع التالية بالإضافة إلى التي سبق ذكرها تهم من يريد أن يصبح مبرمج محلل ومطور نظم ماكنتوش:
(5) كتاب Operating System Utilities.
(6) كتاب Macintosh Devices.
(7) كتاب الشبكات في الماكنتوش Macintosh Networking.
(8)كتاب اتصال التطبيقات ببعضها البعض.
(9)كتابَيْ QuickTimeو QuickTime Components.
ملاحظات تؤخذ بعين الاعتبار: - لمن أراد الاستزادة من QuickDraw عليه أن يقتني QuickDraw GX وهي سبعة كتب كبيرة، ومتقدمة جدا. وبتعلمها يستطيع المبرمج إنشاء برامج مثل Illustrator و Photoshop و InDesgin.
- المهندسون في شركة Apple يطلقون حاليا على جميع الكتب والمواضيع السابقة اسم Carbon، ويدعمون لغة C فقط حاليا، لكنك عند قراءتك للكتب السابقة تجد فيها دعما للغتي C و Pascal على حد سواء وهذا في السابق. ولقد تطورت Carbon كثيرا, فالكتب الحديثة لا تشرح كل المفاهيم وإنما تمر مرورا سريعا عليها، فلذلك ذكرت جميع الكتب المهمة وأشرت عليها بأنها ضرورية لكل مبرمج ماكنتوش فهي تشرح شرحا مفصلا وافيا ومفيدا.
- وأما ما يخص Cocoa فهي أصعب من Carbon إلا أنه يفضل قبل تعلمها الإطلاع على Carbon لأنها لا تتطرق ( أقصد Cocoa )إلى آليات عمل إدارات النظام ولا تشرح كيف تتعامل الإدارات معها، بعكس Carbon التي هي عبارة عن التعامل المباشر مع إدارات نظام التشغيل.
ملاحظات بخصوص نظام التشغيل X:
أولا: بعض الإدارات التي ذكرتها تم استبدالها كليا، لكن لا بأس بتعلمها قبل تعلم الإدارات الجديدة خصوصا وأنها لا زالت تعمل على نظام X، وستجد ملاحظات من Apple أثناء كتابة برنامجك في Xcode تخبرك بأنه يجب عليك استخدام البديل الجديد، لكن المشكلة أن الإدارات الحديثة لن تجد فيها أي تفصيل عن كيفية إنشائها، بعكس الإدارة المستبدلة حيث كانت Apple تستخدم تقنية الـ Open Source بشكل ليس له مثيل حتى أنه كان بإمكان أي مبرمج محترف استبدال إدارة من تلقاء نفسه أو تعديل عملها (إلا بعض الإدارات الهامة جدا)، مما يسر على المنافسين تقليد النظام إلى حد كبير، فحدث في نظام X أن اعتمدت Apple تقنية تسمى Opaque Structure وهذه التقنية لا تظهر طريقة بناء الإدارة ولا بناء النظام بل تحفظ لـ Apple أسرارها، رغم أن النظام لا يزال مفتوح المصدر – Open Source-.
ثانيا: بخصوص QuickDraw وهو لغة العرض على الشاشة في أنظمة الماكنتوش التي سبقت نظام X، ولغة العرض في نظام X تدعى Quartz2D فيجب على المبرمج استخدام التقنية الخاصة بنظام X، ويجب عليه تعلم QuickDraw ليعرف الفرق بينهما وطريقة تطوير الرسوم في الماكنتوش واستخدام التقنيتين عند الحاجة.
وتقنية Quartz تتشعب وتتوسع كثيرا، فبها وحدها تستطيع عمل برنامج قوي ومنافس بل وأفضل من Photoshop.
ثالثا: عند تعلم برمجة نظام X، يجب أن تعلم أنها واسعة جدا، ولا تعتمد على لغة معينة، فلغة البرمجة شيء, وبرمجة الماكنتوش شيء أخر، ويلزمك وقت وجهد طويلين. فعليك بالصبر والمثابرة والقراءة ومتابعة التطور وعدم التوقف عن ممارستها عمليا.
رابعا: الـ Cocoa منفصلة كلية عن الـ Carbon ولا علاقة بينهما مطلقا وكلاهما بحر مستقل، إلا أنك تستطيع عمل أي برنامج يخطر على بالك بأي التقنيتين.
خامسا: ستجد في مجلد التطوير أسماء أخرى مثل: CoreFoundation وهي مجموعة كبيرة من الأدوات تؤدي وظائف عديدة ومهمة جدا، وتعرف باللغة العربية باسم (نواة قاعدة البرمجة) ومن وظائفها هي كتابة النصوص وتحويلها بين جميع اللغات المستخدمة اليوم (كالعربية والفارسية والبشتو والأردو والإنجليزي والصينية واليابانية والعبرية.. الخ) وعلى جميع الحواسب سواء كانت ماكنتوش أو PC أو حتى الأجهزة التي تتبع الحاسوب كهواتف الجوالات و أيضا أجهزة المفكرات الرقمية. باختصار جميع الأجهزة الالكترونية التي تعرض النصوص على شاشاتها.
وهذه مقسمة إلى أنوية أخرى كل نواه لها وظيفة.
سادسا: إذا أردت احتراف برمجة QuickTime، فأمامك مشوار علمي شيق، راجع كتب QuickTime والتي تجاوزت الآن تسعة كتب متسلسلة.
ملاحظة : عندما أذكر أن أحد المواضيع صعب، أو في غاية الصعوبة فلا أقصد بذلك تعجيز المتعلم أو إبعاده عن تعلم برمجة الماكنتوش، بل على العكس، حتى يأخذ الأمر بجدية أكثر ويجد برمجة الماكنتوش ممتعة أكثر من برمجة غيرها من الأنظمة.
وأنا مستعد لتلقي استفساراتكم وملاحظاتكم بخصوص الموضوع المطروح ( تعلم برمجة الماكنتوش).
وللموضوع بقية، لكن رأيت أن يأخذ كل محب لتعلم البرمجة فكرة أولية عن نظام الماكنتوش وبرمجته.
ومع تمنياتي للجميع بالتوفيق، والله الهادي والموفق إلى سواء السبيل.