# أبل سكريبت

أبل سكربت (بالإنجليزية: AppleScript)‏ هي لغة برمجة نصية أنشأتها شركة آبل، تُسهل التحكم الآلي (الأتمتة) في تطبيقات نظام الماك. تم تقديمها لأول مرة في نظام التشغيل 7، وهي مضمنه حاليًا في جميع إصدارات ماك أو إس كجزء من حزمة أدوات أتمتة النظام. قد يشير المصطلح أبل سكربت "AppleScript" إلى اللغة نفسها ،أو إلى نص مكتوب بلغة أبل سكربت ، أو بشكل غير رسمي ،قد يشير إلى macOS Open Scripting Architecture الذي يشكل أساس لغة أبل سكربت.

## نظرة عامة

أبل سكربت هي لغة برمجة نصية تم تطويرها بواسطة أبل لإجراء اتصالات بين التطبيقات (IAC) باستخدام أحداث أبل. ترتبط أبل سكربت بأحداث أبل ولكنها تختلف عنها. تم تصميم أحداث أبل لتبادل البيانات والتحكم في التطبيقات الأخرى من أجل أتمتة المهام المتكررة.
تمتلك أبل سكربت بعض قدرات المعالجة الخاصة بها ، بالإضافة إلى إرسال واستقبال أحداث أبل إلى التطبيقات. يمكن لـ أبل سكربت إجراء العمليات الحسابية الأساسية ومعالجة النصوص ، وهي قابلة للتوسيع ، مما يسمح باستخدام إضافات البرمجة النصية التي تضيف وظائف جديدة إلى اللغة. ومع ذلك ، تعتمد أبل سكربت بشكل أساسي على وظائف التطبيقات والعمليات للتعامل مع المهام المعقدة. كلغة أوامر منظمة ، يمكن مقارنة أبل سكربت بشل يونكس أو Microsoft Windows Script Host أو IBM REXX ولكنها تختلف عن الثلاثة. حقيقة أن تطبيقات ماكنتوش تنشر "قواميس" للكائنات والعمليات القابلة للتوجيه;ضروري جداً حتى يتمكن أبل سكربت من تأدية وظائفه.
تحتوي أبل سكربت على بعض عناصر البرمجة الإجرائية ، والبرمجة الموجهة للكائنات (خاصة في إنشاء كائنات النص البرمجي) ، واتجاهات برمجة اللغة الطبيعية في تركيبها ، ولكنها لا تتوافق تمامًا مع أي من نماذج البرمجة هذه.$^{:xxvi}$

## تاريخ

في أواخر الثمانينيات من القرن الماضي ، اعتبرت شركة أبل استخدام لغة البرمجة HyperTalk الخاصة بـ HyperCard كلغة تطوير قياسية للمستخدم النهائي، عبر الشركة وضمن نظام تشغيل ماك أو إس الكلاسيكي ، وكذلك لتمكين التواصل بين العمليات الخاصة بمنتجات أبل مع عمليات المنتجات الأخرى. يمكن للمبتدئين استخدام HyperTalk لبرمجة مكدس HyperCard. أدرك مهندسو أبل أنه يمكن تصميم لغة برمجة نصية مماثلة ، ولكن أكثر توجهاً للكائنات ، لاستخدامها مع أي تطبيق ، وقد وُلد مشروع أبل سكربت كبرنامج منبثق عن جهد بحثي لتحديث نظام ماكنتوش ككل وأصبح أخيرًا جزءًا من النظام 7 (Mac OS 7).
تم إصدار أبل سكربت في أكتوبر 1993 كجزء من نظام 7.1.1 (نظام ماك 7 Pro ، أول ترقية رئيسية للنظام 7). كان QuarkXPress (الإصدار 3.2) من أوائل التطبيقات البرمجية الرئيسية التي دعمت أبل سكربت. أدى هذا بدوره إلى اعتماد أبل سكربت على نطاق واسع في عالم النشر وما قبل الطباعة ، وغالبًا ما يربط معًا مهام سير العمل المعقدة. كان هذا عاملاً رئيسيًا في الحفاظ على موقع Macintosh المهيمن في النشر وما قبل الطباعة ، حتى بعد نقل QuarkXpress وتطبيقات النشر الأخرى إلى Microsoft Windows.
بعد بعض الشكوك بشأن مستقبل أبل سكربت في الجيل التالي من نظام التشغيل من أبل ، أدى الانتقال إلى Mac OS X (حوالي 2002) وأطر عمل Cocoa إلى زيادة فائدة ومرونة أبل سكربت بشكل كبير. تتيح تطبيقات Cocoa لمطوري التطبيقات تحقيق قابلية البرمجة الأساسية لتطبيقاتهم بأقل جهد ممكن ، مما يؤدي إلى زيادة عدد التطبيقات القابلة للبرمجة مباشرة. وفي الوقت نفسه ،وبسبب التحول إلى أسس يونكس وقدرة أبل سكربت على تشغيل أوامر Unix مباشرة ، باستخدام الأمر do shell script أتاح ذلك لأبل سكريبت تحكم أكبر بكثير في نظام التشغيل نفسه.$^{:863}$
تم إصدار AppleScript Studio مع نظام التشغيل Mac OS X 10.2 كجزء من Xcode (بيئة برمجية) ،ولاحقاً تم إصدار إطار العمل AppleScriptObjC ضمن نظام التشغيل Mac OS X 10.6 ، وكل ذلك سمح للمستخدمين بإنشاء تطبيقات Cocoa باستخدام أبل سكربت.$^{:969}$
في أكتوبر 2016 ، غادر سال سوجويان ، مدير منتج أبل سكربت ومبشر الأتمتة ، شركة أبل عندما تم إلغاء منصبه "لأسباب تتعلق بالعمل". استجاب الخبراء في مجتمع ماك مثل جون غروبر و Andy Ihnatko بشكل عام بقلق ، وشككوا في التزام أبل تجاه مجتمع المطورين والمستخدمين المحترفين. رد نائب الرئيس الأول لهندسة البرمجيات في أبل ، كريج فيديريغي ، في رسالة بريد إلكتروني قائلاً: "لدينا كل النية لمواصلة دعمنا لتقنيات الأتمتة العظيمة في ماك أو إس!" ، على الرغم من أن جيف جاميت في Mac Observer رأى أن ذلك لم يفعل شيئًا يذكر لتهدئة شكوكه حول مستقبل أتمتة أبل بشكل عام وابل سكربت بشكل خاص. في الوقت الحالي ، تظل أبل سكربت أحد مكونات تقنيات أتمتة ماك أو إس ، جنبًا إلى جنب مع Automator و Shortcuts و Services و shell scripting.

## التعليقات برمجياً

يمكن عمل التعليقات بطرق متعددة. يمكن أن يبدأ التعليق المكون من سطر واحد بشرطتين (--). في أبل سكربت 2.0 ، التي تم إصدارها لأول مرة في نظام التشغيل Mac OS X Leopard ، قد يبدأ أيضًا بعلامة (#). يسمح هذا بتخزين برنامج نصي أبل سكربت قائم بذاته كملف نصي قابل للتنفيذ يبدأ بسطر #!/usr/bin/osascript مثال:
بالنسبة إلى التعليقات التي تشغل سطورًا متعددة ، تستخدم أبل سكربت أقواسًا بداخلها علامات نجمية، مثال:

## برنامج أهلا بالعالم

في أبل سكربت ، يمكن كتابة البرنامج التقليدي أهلا بالعالم(!Hello World) في عدة أشكال مختلفة ، بما في ذلك:
تحتوي أبل سكربت على العديد من خيارات واجهة المستخدم ، بما في ذلك الحوارات والتنبيهات وقائمة الاختيارات. (يشير الرمز ¬ ، الناتج عن الضغط على ⌥ Option+return في المحرر ، إلى استمرار جملة واحدة عبر عدة أسطر.)
يمكن لكل طريقة تفاعل للمستخدم إرجاع قيم الأزرار التي تم النقر عليها أو العناصر المختارة أو النص الذي تم إدخاله لمزيد من المعالجة. فمثلا:

## استعارات اللغة الطبيعية

في حين أن أحداث أبل هي وسيلة لإرسال الرسائل إلى التطبيقات ، فإن أبل سكربت هي لغة معينة مصممة لإرسال أحداث أبل. تماشياً مع هدف سهولة الاستخدام للمبتدئين ، تم تصميم لغة أبل سكربت على استعارة اللغة الطبيعية ، تمامًا كما تم تصميم واجهة المستخدم الرسومية على استعارة سطح المكتب. يجب أن يكون كود أبل سكربت المكتوب جيدًا واضحًا بما يكفي ليقرأه ويفهمه أي شخص ، كما يجب تحريره بسهولة. تعتمد اللغة إلى حد كبير على لغة HyperTalk التابعة لـ HyperCard ، والتي امتدت لتشير ليس فقط إلى عالم HyperCard للبطاقات والمكدسات ، ولكن أيضًا من الناحية النظرية إلى أي مستند. تحقيقًا لهذه الغاية ، قدم فريق أبل سكربت نموذج كائن حدث أبل (AEOM) ، والذي يحدد الكائنات التي "يعرفها" أي تطبيق معين.
جوهر لغة أبل سكربت هو استخدام المصطلحات التي تعمل كأسماء وأفعال يمكن دمجها. على سبيل المثال ، بدلاً من فعل مختلف لطباعة صفحة أو مستند أو نطاق من الصفحات (مثل printPage و printDocument و printRange) ، تستخدم أبل سكربت فعل "print" واحد يمكن دمجه مع كائن ، مثل صفحة أو وثيقة أو مجموعة من الصفحات.
بشكل عام ، تحدد AEOM عددًا من الكائنات - مثل مستند "document" أو فقرة "paragraph" - والإجراءات المقابلة - مثل "cut" و "close". يحدد النظام أيضًا طرقًا للإشارة إلى خصائص الكائنات ، بحيث يمكن للمرء الرجوع إلى "الفقرة الثالثة من المستند 'يوم جيد'"--"'third paragraph of the document 'Good Day"، أو" لون الكلمة الأخيرة من النافذة الأمامية "--"color of the last word of the front window". يستخدم AEOM تطبيق القاموسdictionary" لربط أحداث أبل بمصطلحات يمكن للبشر قراءتها ، مما يسمح بالترجمة ذهابًا وإيابًا بين أحداث أبل سكربت القابلة للقراءة البشرية وأحداث أبل ذات الرمز الثانوي. لاكتشاف عناصر البرنامج القابلة للبرمجة ، يمكن عرض قواميس التطبيقات المدعومة. (في تطبيقي Xcode و Script Editor ، يوجد هذا ضمن File → Open Dictionary.)
لتحديد التطبيق المقصود أن يكون هدفًا لمثل هذه الرسالة ، تستخدم أبل سكربت بنية "tell":
بدلاً من ذلك ، يمكن التعبير عن tell في سطر واحد باستخدام المصدر:
بالنسبة للأحداث في (activate و open و reopen و close و print و quit) ، قد يتم ألحاق التطبيق ككائن مباشر لأوامر متعدية:
يمكن التعبير عن مفهوم التسلسل الهرمي للكائن باستخدام الكتل المتداخلة:
يمكن أيضًا التعبير عن مفهوم التسلسل الهرمي للكائن باستخدام عبارات الجر المتداخلة:
والتي يمكن التعبير عنها بلغة برمجة أخرى على أنها استدعاءات طريقة متسلسلة ، كما هو الحال في هذا الكود المزيف (للفهم فقط):
يتضمن أبل سكربت بناء الجملة للعد الترتيبي ، مثلاً: 'الفقرة الأولى' "the first paragraph" ، وكذلك الأساسي ،مثلاً:'الفقرة واحد' "paragraph one". وبالمثل ، يمكن الإشارة إلى الأرقام نفسها على أنها نص أو رقميًا ، "five"و "fifth" و "5" كلها مدعومة ؛ هم مرادفات في أبل سكربت. أيضًا ، يمكن استخدام كلمة "the" قانونيًا في أي مكان في البرنامج النصي من أجل تعزيز إمكانية القراءة: ليس لها أي تأثير على وظائف البرنامج النصي.

## أمثلة

حاسبة أمنة من الفشل:
تسلسل بسيط لمربع حوار اسم المستخدم و كلمة المرور. هنا ، اسم المستخدم هو احمد وكلمة المرور app123:

## أسلوب البرمجة النصية المفتوح

أحد الجوانب المهمة لتطبيق أبل سكربت هو (Open Scripting Architecture (OSA. توفر Apple OSA للغات البرمجة النصية الأخرى ومنتجات البرمجة النصية/الأتمتة التابعة لجهات خارجية مثل QuicKeys و UserLand Frontier ، للعمل في حالة متساوية مع أبل سكربت. تم تنفيذ أبل سكربت كمكون برمجة نصية ، وكانت المواصفات الأساسية لربط هذه المكونات بـ OSA عامة ، مما يسمح للمطورين الآخرين بإضافة مكونات البرمجة النصية الخاصة بهم إلى النظام. ستعمل واجهات برمجة التطبيقات العامة الخاصة بالعميل (Public client APIs) لتحميل النصوص البرمجية وحفظها وتجميعها بنفس الطريقة لجميع هذه المكونات ، مما يعني أيضًا أن التطبيقات الصغيرة والقطيرات يمكنها الاحتفاظ بنصوص برمجية في أي من لغات البرمجة النصية هذه. إحدى ميزات OSA هي إضافات البرمجة النصية ، أو OSAX لـ Open Scripting Architecture eXtension ، المستوحاة من أوامر HyperCard الخارجية.إضافات البرمجة النصية هي مكتبات تسمح للمبرمجين بتوسيع وظيفة أبل سكربت. الأوامر المضمنة كإضافات نصية متاحة على مستوى النظام ، ولا تعتمد على أحد التطبيقات . محرر أبل سكربت قادر أيضًا على تحرير وتشغيل بعض لغات OSA مباشرة.

### جافا سكريبت للأتمتة

ضمن OS X Yosemite والإصدارات الأحدث من ماك او اس ، يظل مكون (JavaScript for Automation (JXA هو لغة OSA الوحيدة الجادة والبديلة لـ أبل سكربت ، على الرغم من أن إصدارات ماكنتوش من بيرل وبايثون وروبي وTcl تدعم جميعها وسائل العمل الأصلية مع أحداث أبل دون أن تكون مكونات OSA.$^{:516}$
توفر JXA أيضًا واجهة لغة أجنبية Objective-C (ولغة C). نظرًا لكونها بيئة تعتمد على محرك JavaScriptCore الخاص بـ WebKit ، فإن مجموعة ميزات جافا سكربت متزامنة مع محرك متصفح سفاري الخاص بالنظام. توفر JXA نظام وحدة جافا سكربت ويمكن أيضًا استخدام وحدات CommonJS عبر browserify.

## انظر أيضاً

   * حدث أبل
   * معالجة اللغة الطبيعية

## مراجع

* ↑ "Mac Automation Scripting Guide". مطورو آبل (بالإنجليزية). أبل. Archived from the original on 2022-07-20. Retrieved 2022-11-11. The core fundamentals of AppleScript are described in AppleScript Language Guide, as well as in numerous third-party books.{{استشهاد ويب}}: صيانة الاستشهاد: لغة غير مدعومة (link)
* 1 2 3 Goldstein، Adam (2005). AppleScript: the missing manual. Sebastopol, CA: أوريلي ميديا. ISBN:0596008503. OCLC:56912218. مؤرشف من الأصل في 2023-03-26.
* 1 2 3 4 5 6 Sanderson، Hamish؛ Rosenthal، Hanaan (2009). Learn AppleScript: the comprehensive guide to scripting and automation on Mac OS X (ط. 3rd). Berkeley: Apress. DOI:10.1007/978-1-4302-2362-7_27. ISBN:9781430223610. OCLC:308193726. مؤرشف من الأصل في 2023-03-26.
* ↑ Flynn، Laurie (27 فبراير 1989). "Apple Ponders Standardizing on HyperTalk". InfoWorld. ج. 11 رقم 9. ص. 31. مؤرشف من الأصل في 2023-03-06.
* ↑ https://books.google.com/books?id=_40AkCe9nOUC نسخة محفوظة 2022-11-26 على موقع واي باك مشين.
* 1 2 Cook، William (2007). "AppleScript" (PDF). History of Programming Languages (HOPL III). Proceedings of the third ACM SIGPLAN conference. جمعية آلات الحوسبة: 1–21. DOI:10.1145/1238844.1238845. ISBN:9781595937667. S2CID:220938191. مؤرشف من الأصل (PDF) في 2023-05-31.
* ↑ "AppleScript Language Guide commands reference: do shell script". developer.apple.com. مؤرشف من الأصل في 2023-06-20. اطلع عليه بتاريخ 2019-09-15.
* ↑ Lovejoy، Ben (17 نوفمبر 2016). "Sal Soghoian says 'ask Apple' about future of Mac user automation as company eliminates position". 9to5mac.com. مؤرشف من الأصل في 2023-03-30. اطلع عليه بتاريخ 2017-05-08.
* ↑ Evans، Jonny (17 نوفمبر 2016). "Does Apple really want to kill Automator, AppleScript? Shock termination of veteran Apple developer guru sends shockwaves across the Mac community". عالم الكمبيوتر $^{[الإنجليزية]}$.com. مؤرشف من الأصل في 2023-03-26. اطلع عليه بتاريخ 2017-05-08.
* ↑ Gamet، Jeff (23 نوفمبر 2016). "Apple's intent isn't the same as committing to mac automation". macobserver.com. مؤرشف من الأصل في 2023-03-26. اطلع عليه بتاريخ 2017-05-08.
* ↑ "AppleScript Overview: Open Scripting Architecture". developer.apple.com. مؤرشف من الأصل في 2023-06-08. اطلع عليه بتاريخ 2017-05-08.
* ↑ "Technical Note TN1164: Scripting Additions for Mac OS X". developer.apple.com. مؤرشف من الأصل في 2023-03-26. اطلع عليه بتاريخ 2017-05-08.
* 1 2 Siracusa، John (16 أكتوبر 2014). "OS X 10.10 Yosemite: The Ars Technica Review: JavaScript automation". آرس تكنيكا. مؤرشف من الأصل في 2023-03-26. اطلع عليه بتاريخ 2017-05-08.
* ↑ Neuburg، Matt (2006). AppleScript: the definitive guide (ط. 2nd). Beijing: أوريلي ميديا. ISBN:0596102119. OCLC:68694976.
* ↑ "Importing Scripts". GitHub. JXA-Cookbook. 6 ديسمبر 2019. مؤرشف من الأصل في 2023-06-01. اطلع عليه بتاريخ 2019-12-09.
* بوابة أبل
* بوابة برمجة الحاسوب
* بوابة علم الحاسوب