AppleScript

**AppleScript** — bul Apple Inc. tárepinen jaratılǵan skriptlew tili bolıp, ol Mac qosımshaların avtomatlastırılǵan basqarıwdı ańsatlastıradı. Birinshi ret System 7-de usınılǵan, ol házirgi waqıtta macOS quramında avtomatlastırıw quralları paketiniń bir bólimi retinde kiredi. «AppleScript» termini skriptlew tiline, sol tilde jazılǵan skriptke yamasa tildiń tiykarında jatatuǵın macOS Ashıq Skriptlew Arxitekturasına (Open Scripting Architecture) silteme beriwi múmkin.

AppleScript tiykarınan Apple events ti basqarıw mexanizmi bolıp tabıladı — bul qosımshalar arasında maǵlıwmat almasıw hám olardı basqarıwǵa arnalǵan qosımshalar aralıq baylanıs (IAC) texnologiyası. Bunnan tısqarı, AppleScript tiykarǵı esaplawlardı hám tekstti qayta islewdi qollap-quwatlaydı hám tilge funkciyalar qosatuǵın skriptlew qosımshaları arqalı keńeytile aladı. 

AppleScript Windows Script Host-tıń Windows ortalıǵına baylanıslı bolǵanı sıyaqlı, Mac ortalıǵına da tıǵız baylanıslı. Basqasha aytqanda, AppleScript Python sıyaqlı ulıwma maqsetli skriptlew tili emes. AppleScripttiń óz ortalıǵınıń ayrıqsha táreplerine baylanıslı bolıwınıń bir usılı — onıń adreslenetuǵın obyektler hám operaciyalar sózliklerin járiyalaw ushın qosımshalarǵa súyeniwi.

Ádette buyrıq tiline tán bolǵanı sıyaqlı, AppleScript tikkeley intensiv qayta islewdi orınlaw ushın proektlestirilmegen. Mısalı, skript intensiv matematikalıq operaciyalardı yamasa quramalı tekstti qayta islewdi nátiyjeli orınlay almaydı. Degen menen, AppleScript basqa qurallar hám texnologiyalar menen birge qollanılıwı múmkin, bul oǵan anaǵurlım nátiyjeli programmalastırıw kontekstlerinen paydalanıwǵa imkaniyat beredi.

Tildiń strukturalıq, proceduralıq, obyektke baǵdarlanǵan hám tábiyiy til programmalastırıw aspektleri bar, biraq ol bul paradigmalardıń hesh birine qatań sáykes kelmeydi.

## Tariyxı
1980-jıllardıń aqırında Apple kompaniyası HyperCard-tıń HyperTalk skriptlew tilin pútkil kompaniya boyınsha hám óziniń klassikalıq Mac OS operaciyalıq sisteması ishinde aqırǵı paydalanıwshı islep shıǵıwı ushın, sonday-aq Apple hám Apple emes ónimler arasındaǵı processler aralıq baylanıs ushın standart til retinde qollanıwdı qarastırdı. HyperTalk-tı jańa baslawshılar HyperCard stegin programmalastırıw ushın paydalana alatuǵın edi. Apple injenerleri uqsas, biraq anaǵurlım obyektke baǵdarlanǵan skriptlew tiliniń hár qanday qosımsha menen paydalanıw ushın proektlestiriliwi múmkin ekenligin anıqladı, hám AppleScript proekti Macintosh-tı tutas modernizaciyalaw boyınsha izertlew jumısınıń bir tarmaǵı retinde payda boldı hám aqıbetinde System 7-niń bir bólimine aylandı.

AppleScript 1993-jıl oktyabr ayında System 7.1.1 (System 7 Pro, System 7-ge birinshi iri jańalaw) quramında shıǵarıldı. QuarkXPress (ver. 3.2) AppleScriptti qollap-quwatlaǵan birinshi iri programmalıq támiynat qosımshalarınıń biri boldı. Bul, óz gezeginde, AppleScripttiń baspa hám baspaǵa shekemgi tayarlıq dúnyasında keń qabıl etiliwine alıp keldi, kóbinese quramalı jumıs aǵımların bir-birine baylanıstırdı. Bul Macintoshtıń baspa hám baspaǵa shekemgi tayarlıqtaǵı ústem ornın saqlap qalıwda tiykarǵı faktor boldı, hátte QuarkXpress hám basqa baspa qosımshaları Microsoft Windowsqa portlanǵannan keyin de.

AppleScript Appledıń keleshek áwlad operaciyalıq sistemasındaǵı keleshegi haqqındaǵı belgisizlikten keyin, Mac OS X-ke (shama menen 2002-jıl) ótiw hám onıń Cocoa freymvorkları AppleScripttiń paydalılıǵın hám qolaylılıǵın ádewir arttırdı. Cocoa qosımshaları qosımsha islep shıǵıwshılarǵa minimal kúsh penen óz qosımshaları ushın tiykarǵı skriptlew múmkinshiliklerin ámelge asırıwǵa imkaniyat berdi, bul tikkeley skriptlenetuǵın qosımshalardıń sanın keńeytti. Sol waqıtta Unix tiykarlarına ótiw hám AppleScripttiń Unix buyrıqların tikkeley `do shell script` buyrıǵı menen orınlaw qábileti AppleScriptlerge operaciyalıq sistemanıń ózin anaǵurlım jaqsı basqarıwǵa imkaniyat berdi.AppleScript Studio, Mac OS X 10.2-de Xcode quramında shıǵarılǵan, hám keyinirek Mac OS X 10.6-da shıǵarılǵan AppleScriptObjC freymvorkı paydalanıwshılarǵa AppleScriptti paydalanıp Cocoa qosımshaların qurıwǵa imkaniyat berdi.

2006-jılǵı maqalada Macworld jurnalı AppleScriptti Appledıń házirgi waqıtqa shekemgi 30 eń áhmiyetli ónimleriniń reytingine kirgizip, onı 17-orınǵa qoydı.

2013-jılǵı Macworld ushın jazılǵan maqalasında, tájiriybeli Mac programmalıq támiynat baǵdarlamashısı hám kommentatorı Djon Gruber óziniń «AppleScripttiń kútilmegen turaqlılıǵı» haqqındaǵı oylarınıń juwmaǵında bılay dedi: «Teoriyada, AppleScript anaǵurlım jaqsıraq bolıwı múmkin edi; biraq ámeliyatta, ol bizde bar bolǵan eń jaqsı isleytuǵın nárse. Ol Mactıń iOStan artıqmashılıǵın ózgeris kirgiziwshiler hám aldınǵı qatar paydalanıwshılar ushın kórsetedi.»

2016-jıl oktyabr ayında, uzaq waqıt dawamında AppleScript ónim menedjeri hám avtomatlastırıw úgit-násiyatshısı Sal Sogoian onıń lawazımı «biznes sebepleri menen» biykar etilgennen keyin Appledan ketti. Mac birlespesindegi Djon Gruber hám Endi Inatko sıyaqlı veteranlar ulıwma alǵanda uwayım menen juwap berip, Appledıń baǵdarlamashılar birlespesi hám professional paydalanıwshılarǵa bolǵan minnetlemesin gúman astına aldı. Apple programmalıq támiynat injenerligi boyınsha aǵa vice-prezidenti Kreyg Federigi elektron xatında «Biz macOS taǵı ullı avtomatlastırıw texnologiyaların qollap-quwatlawdı dawam etiwge tolıq niyetlimiz!» dep juwap berdi, biraq The Mac Observer jurnalınan Djeff Gamet bul onıń ulıwma Apple avtomatlastırıwınıń keleshegi hám ásirese AppleScript haqqındaǵı gúmanların azaytpadı dep esapladı. Házirshe AppleScript Automator, Shortcuts, Services hám shell skriptlewi menen birge macOS avtomatlastırıw texnologiyalarınıń bir komponenti bolıp qalmaqta.

## Niyeti
AppleScript qoljetimli aqırǵı paydalanıwshı skriptlew tili retinde paydalanıw ushın proektlestirilgen bolıp, paydalanıwshılarǵa qosımshalardı basqarıw hám maǵlıwmatlar menen hújjetlerge kiriw hám modifikaciyalaw ushın aqıllı mexanizm usınadı. AppleScript Apple waqıyaların (Apple events) paydalanadı, bul Macintosh operaciyalıq sisteması tárepinen qosımshalarǵa informaciya jiberiw ushın paydalanılatuǵın standartlastırılǵan maǵlıwmat formatları toplamı bolıp, veb-xızmetler dúnyasındaǵı XML-RPC arqalı XPath sorawların jiberiwge uqsas. Apple waqıyaları skriptke bir waqıtta bir neshe qosımsha menen islesiwge imkaniyat beredi, olar arasında maǵlıwmat almasıp, adamnıń aralasıwısız quramalı wazıypalardı orınlawǵa boladı. Mısalı, ápiwayı veb-galereya jaratıw ushın AppleScript tómendegilerdi orınlawı múmkin:

# Fotonı foto-redaktorlaw qosımshasında ashıw (sol qosımshaǵa Fayldı ashıw Apple event ti jiberiw arqalı).
# Foto-redaktorlaw qosımshasına súwretti manipulyaciyalawdı buyırıw (mısalı, onıń anıqlıǵın tómenletiw, shegara qosıw, avtorlıq belgisin qosıw).
# Foto-redaktorlaw qosımshasına ózgertilgen súwretti basqa bir papkadaǵı faylǵa saqlawdı buyırıw (sol qosımshaǵa Saqlaw hám/yamasa Jabıw Apple event ti jiberiw arqalı).
# Jańa fayl jolın (basqa Apple event arqalı) tekst redaktorı yamasa veb-redaktor qosımshasına jiberiw.
# Sol redaktor qosımshasına HTML faylına foto ushın silteme jazıwdı buyırıw.
# Joqarıdaǵı qádemlerdi pútkil súwretler papkası ushın (júzlegen yamasa hátte mıńlaǵan fotolar) qaytalaw.
# Grafikalıq FTP klientine Apple event lerin jiberiw, ornatılǵan AppleScript buyrıqların paydalanıw yamasa Unix FTP utilitalarına Apple event lerin jiberiw arqalı HTML faylın hám ózgertilgen súwretler papkasın veb-saytqa júklew.

Paydalanıwshı ushın bir neshe qosımshalardaǵı júzlegen yamasa mıńlaǵan qádemler skriptti iske túsiriwdiń bir háreketine shekem qısqartıldı, hám wazıypa anaǵurlım az waqıt ishinde hám tosınarlı adam qáteligi itimalısız orınlanadı. Úlken quramalı skript tek bir ret iske túsiriw ushın jaratılıwı múmkin, al basqa skriptler qayta-qayta qollanıladı.

Qosımshanıń skriptlenetuǵın elementleri qosımshanıń Skriptlew Sózliginde (qosımshanıń bir bólimi retinde tarqatıladı) kórinip turadı, onı hár qanday skript redaktorında kóriwge boladı. Elementler ádette erkin funkcional baylanıslarına sáykes toplamlarǵa (suites) gruppalanadı. Hár qanday toplamda eki tiykarǵı túrdegi element bar: klasslar hám buyrıqlar.

* Klasslar — bul skriptlenetuǵın obyektler — mısalı, tekst redaktorlaw qosımshasında álbette aynalar, hújjetler hám tekstler ushın klasslar boladı — hám bul klasslardıń ózgertiliwi múmkin bolǵan qásiyetleri (ayna ólshemi, hújjet fon reńi, tekst shrift ólshemi hám t.b.) boladı hám basqa klasslardı óz ishine alıwı múmkin (ayna bir yamasa bir neshe hújjetti óz ishine aladı, hújjet tekstti óz ishine aladı, tekst obyekti abzaclar, sózler hám belgilerdi óz ishine aladı).
* Buyrıqlar, kerisinshe, skriptlenetuǵın obyektlerge beriliwi múmkin bolǵan kórsetpeler. AppleScript blogınıń ulıwma formatı — bul skriptlenetuǵın obyektke buyrıqtı orınlawdı buyırıw.

Barlıq skriptlenetuǵın qosımshalar bir neshe tiykarǵı buyrıqlar hám obyektlerdi bólisedi, olar ádette Standart Toplam dep ataladı — fayldı ashıw, jabıw yamasa saqlaw, bir nárselerdi baspadan shıǵarıw, shıǵıw, maǵlıwmatlardı ózgeriwshilerge ornatıw ushın buyrıqlar — sonday-aq qosımshanıń óziniń skriptlenetuǵın qásiyetlerin beretuǵın tiykarǵı qosımsha obyekti. Kóplegen qosımshalar qosımshanıń ózi orınlay alatuǵın hár qanday wazıypanı orınlay alatuǵın kóplegen toplamlarǵa iye. Ayrıqsha jaǵdaylarda, qosımshalar ózleriniń skriptlew sózliklerin óz ishine alatuǵın plaginlerdi qollap-quwatlawı múmkin.

AppleScript paydalanıwshı háreketlerin jazıp alıw arqalı intuitiv túrde skriptler qurıw múmkinshiligi menen proektlestirilgen. Bunday AppleScript jazıp alıw múmkinshiligi qosımshaǵa injenerlik etiliwi kerek — qosımsha Apple waqıyaların hám AppleScript jazıp alıwdı qollap-quwatlawı kerek; Finder AppleScript jazıp alıwdı qollap-quwatlaytuǵınlıqtan, ol silteme ushın paydalı bolıwı múmkin. AppleScript Editor (Script Editor) ashıq bolǵanda hám Jazıp alıw túymesi basılǵanda, jazıp alınıwı múmkin bolǵan qosımshalar ushın paydalanıwshı háreketleri ózleriniń sáykes AppleScript buyrıqlarına aylandırıladı hám Script Editor aynasına shıǵarıladı. Nátiyjesindegi skript dáslepki háreketlerdi qaytalaw ushın saqlanıwı hám qayta iske túsiriliwi múmkin, yamasa ulıwmalıq paydalanıw ushın ózgertiliwi múmkin.

### Tábiyiy til metaforası
Apple waqıyaları (events) qosımshalarǵa xabarlar jiberiwdiń bir usılı bolsa, AppleScript Apple waqıyaların jiberiw ushın proektlestirilgen arnawlı bir til bolıp tabıladı. Jańa baslawshılar ushın qollanıw ańsatlıǵı maqsetine sáykes, AppleScript tili, grafikalıq paydalanıwshı interfeysi desktop metaforasına tiykarlanǵanı sıyaqlı, tábiyiy til metaforasına tiykarlanǵan. Jaqsı jazılǵan AppleScript hár kim tárepinen oqılıwı hám túsiniliwi ushın jetkilikli dárejede anıq bolıwı hám ańsat redaktorlanıwı kerek. Til tiykarınan HyperCard-tıń HyperTalk tiline tiykarlanǵan bolıp, tek HyperCard dúnyasınıń kartaları hám steklerine ǵana emes, al teoriyalıq jaqtan hár qanday hújjetke silteme beriw ushın keńeytilgen. Usı maqsette, AppleScript toparı AppleEvent Obyekt Modelin (AEOM) kirgizdi, ol hárbir belgili qosımshanıń «biletuǵın» obyektlerin anıqlaydı.

AppleScript tiliniń tiykarı — biriktiriliwi múmkin bolǵan atlıqlar hám feyiller retinde isleytuǵın terminlerdi paydalanıw. Mısalı, betti, hújjetti yamasa betlerdiń diapazonın baspadan shıǵarıw ushın hár túrli feyillerdiń (mısalı, printPage, printDocument, printRange) ornına, AppleScript bet, hújjet yamasa betlerdiń diapazonı sıyaqlı obyekt penen biriktiriliwi múmkin bolǵan bir ǵana «print» feyilin paydalanadı.
```applescript
print page 1

print document 2

print pages 1 thru 5 of document 2
```
Ulıwma alǵanda, AEOM bir qatar obyektlerdi — mısalı, «hújjet» yamasa «abzac» — hám sáykes háreketlerdi — mısalı, «kesiw» hám «jabıw» — anıqlaydı. Sistema sonıń menen birge obyektlerdiń qásiyetlerine silteme beriw usılların da anıqlaydı, solay etip ««Jańa kún“ hújjetiniń úshinshi abzacı»na yamasa «aldıńǵı aynanıń sońǵı sóziniń reńi»ne silteme beriwge boladı. AEOM Apple waqıyaların adam oqıy alatuǵın terminler menen baylanıstırıw ushın qosımsha sózligin paydalanadı, bul adam oqıy alatuǵın AppleScript hám bayt-kod Apple waqıyaları arasında keri hám alǵa awdarıwǵa imkaniyat beredi. Programmanıń qaysı elementleriniń skriptlenetuǵının anıqlaw ushın, qollap-quwatlanatuǵın qosımshalar ushın sózliklerdi kóriwge boladı. (Xcode hám Script Editor qosımshalarında bul *File → Open Dictionary* astında jaylasqan.)

Bunday xabardıń maqseti qaysı qosımsha ekenin kórsetiw ushın, AppleScript «tell» konstrukciyasın paydalanadı:
```applescript
tell application "Microsoft Word"
  quit
end tell
```
Alternativ túrde, tell bir qatarda infinitiv paydalanıw arqalı ańlatılıwı múmkin:
```applescript
tell application "Microsoft Word" to quit
```
«Tiykarǵı Toplam»daǵı (Core Suite) waqıyalar (activate, open, reopen, close, print hám quit) ushın qosımsha tranzitiv buyrıqlarǵa tikkeley obyekt retinde beriliwi múmkin:
```applescript
quit application "Microsoft Word"
```
Obyekt ierarxiyası koncepciyası ishki jaylasqan bloklar arqalı ańlatılıwı múmkin:
```applescript
tell application "QuarkXPress"
  tell document 1
    tell page 2
      tell text box 1
        set word 5 to "Apple"
      end tell
    end tell
  end tell
end tell
```
Obyekt ierarxiyası koncepciyası sonday-aq ishki jaylasqan predloglı frazalar yamasa iyelik qatnaslar seriyası arqalı da ańlatılıwı múmkin:
```applescript
pixel 7 of row 3 of TIFF image "my bitmap"
TIFF image "my bitmap"'s 3rd row's 7th pixel
```
bul basqa programmalastırıw tilinde izbe-iz metod shaqırıwları retinde ańlatılıwı múmkin, mısalı, usı psevdokodta:
```javascript
getTIFF("my bitmap").getRow(3).getPixel(7);
```
AppleScript «birinshi abzac» sıyaqlı retlik sanaw ushın, sonday-aq «birinshi abzac» sıyaqlı muǵdarlıq sanaw ushın da sintaksisti óz ishine aladı. Sonday-aq, sanlardıń ózleri de tekst yamasa san retinde kórsetiliwi múmkin, «bes», «besinshi» hám «5» hámmesi qollap-quwatlanadı; olar AppleScriptte sinonim bolıp tabıladı. Sonıń menen birge, «the» sózi oqılıwın jaqsılaw ushın skripttiń qálegen jerinde nızamlı túrde qollanılıwı múmkin: onıń skript funkcionalına hesh qanday tásiri joq.

## Mısallar

### Hello, world!
«Hello, World!» programması bir qatarda jazılıwı múmkin. «OK» hám «Biykarlaw» túymeleri bar modal aynanı kórsetiw ushın:
```applescript
display dialog "Hello, world!"
```
«OK» túymesi hám eskertiw belgisi bar modal aynanı kórsetiw ushın:
```applescript
display alert "Hello, world!"
```
Sintezlengen dawıs járdeminde audio shıǵarıw ushın:
```applescript
say "Hello, world!"
```


## Derekler

__BÖLİDİMÖNDEMEW__