Ada (programmalastırıw tili)

**Ada** — bul Pascal hám basqa tillerden ilhamlanǵan, strukturalı, statikalıq tiplestirilgen, imperativ hám obyektke baǵdarlanǵan joqarı dárejeli programmalastırıw tili. Ol shártnama boyınsha proektlestiriw (DbC), júdá kúshli tiplestiriw, anıq parallellik, wazıypalar, sinxron xabar almasıw, qorǵalǵan obyektler hám deterministlik emeslik ushın ornatılǵan til dárejesindegi qollap-quwatlawǵa iye. Ada orınlanıw waqtındaǵı qátelerdiń ornına kompilyator arqalı qátelerdi tabıw jolı menen kodtıń qáwipsizligi hám qollap-quwatlanıwın jaqsılaydı. Ada - bul Xalıqaralıq Standartlastırıw Shólkemi (ISO) hám Xalıqaralıq Elektrotexnika Komissiyası (IEC) tárepinen birgelikte anıqlanǵan xalıqaralıq texnikalıq standart. 2023-jıldıń may ayına kelip, ISO/IEC 8652:2023 standartı rásmiy emes túrde Ada 2022 dep ataladı.

Ada dáslep 1977-jıldan 1983-jılǵa shekem Amerika Qurama Shtatları Qorǵanıw Ministrligi (DoD) menen dúzilgen shártnama tiykarında, sol waqıtta DoD tárepinen qollanılıp atırǵan 450-den aslam programmalastırıw tilin almastırıw ushın franciyalı kompyuter ilimpazı Jan Ishbia basshılıǵındaǵı Honeywell toparı tárepinen islep shıǵılǵan. Ada birinshi kompyuter baǵdarlamashısı retinde moyınlanǵan Ada Lavleys (1815–1852) húrmetine Ada dep atalǵan.

## Ózgeshelikleri
Ada dáslep ornatılǵan hám real waqıt sistemaları ushın proektlestirilgen. 1992-jıldan 1995-jılǵa shekem Intermetrics kompaniyasınan S. Taker Taft tárepinen islep shıǵılǵan Ada 95 redakciyası sistemalı, sanlı, finanslıq hám obyektke baǵdarlanǵan programmalastırıwdı (OBP) qollap-quwatlawdı jaqsıladı.

Adanıń ózgesheliklerine tómendegiler kiredi: kúshli tiplestiriw, modulli programmalastırıw mexanizmleri (paketler), orınlanıw waqtındaǵı tekseriwler, parallel qayta islew (wazıypalar, sinxron xabar almasıw, qorǵalǵan obyektler hám deterministlik emes tańlaw operatorları), ayrıqsha jaǵdaylardı qayta islew hám djenerikler. Ada 95 obyektke baǵdarlanǵan programmalastırıwdı, sonıń ishinde dinamikalıq dispetcherlewdi qollawdı qostı.

Adanıń sintaksisi tiykarǵı operaciyalardı orınlaw usılların tańlawdı minimallastıradı hám simvollardıń (|| hám && sıyaqlı) ornına inglisshe gilt sózlerin (or else hám and then sıyaqlı) qollanıwdı maqul kóredi. Ada tiykarǵı arifmetikalıq operatorlardı +, -, * hám / qollanadı, biraq basqa simvollardı qollanıwdan qashadı. Kod blokları declare, begin hám end sıyaqlı sózler menen sheklengen, bunda end (kóp jaǵdaylarda) ózi jabatuǵın bloktıń gilt sózi menen birge keledi (mısalı, if ... end if, loop ... end loop). Shártli bloklar jaǵdayında bul C yamasa Java sıyaqlı basqa tillerde nadurıs if-ke baylanısıp qalıwı múmkin bolǵan «ildiriwli else» máselesinen saqlaydı.

Ada júdá úlken programmalıq támiynat sistemaların islep shıǵıw ushın proektlestirilgen. Ada paketlerin bólek kompilyaciyalaw múmkin. Sáykeslikti tekseriw ushın Ada paketiniń specifikaciyaların (paket interfeysin) da realizaciyasız bólek kompilyaciyalawǵa boladı. Bul mashqalalardı ámelge asırıw baslanbastan aldın, proektlestiriw basqıshında-aq anıqlawǵa múmkinshilik beredi.

Basqa tillerde orınlanıw waqtına shekem anıqlanbaytuǵın yamasa derek kodına anıq tekseriwler qosıwdı talap etetuǵın qátelerdi boldırmawǵa járdem beriw ushın kóplegen kompilyaciya waqtındaǵı tekseriwler qollap-quwatlanadı. Mısalı, sintaksis sáykes kelmeytuǵın end tokenleri sebepli payda bolatuǵın qátelerdiń aldın alıw ushın bloklardı anıq atı menen jabıwdı talap etedi. Kúshli tiplestiriwge ámel etiw kóplegen ulıwma programmalıq támiynat qátelerin (qáte parametrler, diapazonnan shıǵıw, jaramsız siltemeler, sáykes kelmeytuǵın tipler hám t.b.) ya kompilyaciya waqtında, ya bolmasa orınlanıw waqtında anıqlawǵa múmkinshilik beredi. Parallellik til specifikaciyasınıń bir bólegi bolǵanlıqtan, kompilyator ayırım jaǵdaylarda potencial tıǵılıslardı (deadlocks) anıqlay aladı. Kompilyatorlar ádette nadurıs jazılǵan identifikatorlardı, paketlerdiń kórinisligin, artıqsha járiyalanıwlardı hám t.b. tekseredi hám qáteni qalay dúzetiw boyınsha eskertiwler menen paydalı usınıslar bere aladı.

Ada sonday-aq bólinbegen yadqa kiriwden, buferdiń tolıp ketiwi qátelerinen, diapazonnan shıǵıw, bir birlikke qátelesiw, massivke kiriw qáteleri hám basqa anıqlanatuǵın qátelerden qorǵaw ushın orınlanıw waqtındaǵı tekseriwlerdi qollaydı. Bul tekseriwlerdi orınlanıw waqtındaǵı ónimdarlıq ushın óshirip qoyıwǵa boladı, biraq kóbinese olardı nátiyjeli kompilyaciyalaw múmkin. Ol sonday-aq programmanı verifikaciyalawǵa járdem beretuǵın qurallardı da óz ishine aladı. Usı sebepten, Ada geyde kritikalıq sistemalarda qollanıladı, bul jerde hár qanday anomaliya júdá awır aqıbetlerge, mısalı, abaylamastan júdá awır aqıbetlerge, jaraqatlanıwǵa yamasa awır finanslıq zıyanǵa alıp keliwi múmkin. Ada qollanılatuǵın sistemalarǵa mısallar: avionika, hawa qatnasın basqarıw, temir jollar, bank isi, áskeriy hám kosmoslıq texnologiyalar.

Adanıń dinamikalıq yad basqarıwı joqarı dárejeli hám tipke qáwipsiz. Adada ulıwma yamasa tipsiz kórsetkishler joq; hám ol hesh qanday kórsetkish tipin bildirmesten járiyalamaydı. Onıń ornına, barlıq dinamikalıq yad ayırıw hám bosatıw anıq járiyalanǵan kiriw tipleri arqalı ámelge asırılıwı kerek. Hárbir kiriw tipiniń yad basqarıwdıń tómengi dárejeli detalların basqaratuǵın óziniń saqlaw pulı bar; baǵdarlamashı standart saqlaw pulın paydalana aladı yamasa jańaların anıqlay aladı (bul ásirese Bir Tekli Emes Yadqa Kiriw ushın áhmiyetli). Hátte birdey tipti kórsetetuǵın, biraq hár túrli saqlaw pulların paydalanatuǵın bir neshe hár túrli kiriw tiplerin járiyalaw da múmkin. Sonıń menen bir qatarda, til kompilyaciya waqtında da, orınlanıw waqtında da kiriw múmkinshiligin tekseriwdi támiyinleydi, bul kiriw mánisiniń ózi kórsetip turǵan obyekt tipinen uzaǵıraq «jasamawın» támiyinleydi.

Tildiń semantikası qoljetimsiz obyektlerdi avtomat túrde shıǵındı jıynawǵa ruqsat berse de, kóp implementaciyalar bunı standart boyınsha qollap-quwatlamaydı, sebebi bul real waqıt sistemalarında boljawǵa bolmaytuǵın minez-qulıqqa alıp keler edi. Ada regionǵa tiykarlanǵan yad basqarıwdıń sheklengen formasın qollaydı hám Adada saqlaw pulın joq etiw sol puldaǵı barlıq obyektlerdi de joq etedi.

Em sızıqshasına uqsas qos sızıqsha (--) kommentariya tekstin bildiredi. Kommentariyalar qatardıń aqırında toqtaydı; ashıq qalıp qoyǵan kommentariyalardıń tosattan derek kodınıń úlken bólimlerin biykarlawınıń aldın alıw ushın kommentariyanı bir neshe qatarǵa sozıwdıń qasaqana jolı joq. Sonlıqtan pútkil kod blogın óshirip qoyıw hárbir qatardı (yamasa baǵananı) jeke-jeke -- belgisi menen baslawdı talap etedi. Bul óshirilgen kodtı bet boylap qaytalanatuǵın -- baǵanasın jaratıw arqalı anıq kórsetse de, ol bloklı kommentariya qollap-quwatlawı joq redaktorlarda úlken bloklardı eksperimental túrde óshirip/qayta qosıwdı uzaǵıraq processke aylandıradı.

Noqatlı útir (;) operator juwmaqlawshısı bolıp tabıladı, al null yamasa hesh qanday operaciya joq operatorı null; boladı. Juwmaqlanatuǵın operatorsız jalǵız ; ruqsat etilmeydi.

Kóp ISO standartlarınan ayırmashılıǵı, Ada tiliniń anıqlaması (Ada Reference Manual yamasa ARM, yamasa geyde Language Reference Manual yamasa LRM dep te ataladı) biypul kontent bolıp tabıladı. Solay etip, bul tek Ada kompilyatorların ámelge asıratuǵın baǵdarlamashılar ushın ǵana emes, al Ada baǵdarlamashıları ushın da ulıwma anıqlama deregi. Anıqlama qollanbasınan basqa, til proektlestiriliwin hám hár túrli til konstrukciyalarınıń qollanılıwın túsindiretuǵın keń kólemli tiykarlawshı hújjet te bar. Bul hújjet te baǵdarlamashılar tárepinen keńnen qollanıladı. Til qayta kórip shıǵılǵanda, jańa tiykarlawshı hújjet jazıldı.

Kóp Ada baǵdarlamashıları tárepinen Ada derek kodın jazıwǵa járdem beriw ushın qollanılatuǵın bir belgili biypul programmalıq támiynat quralı - bul GNAT Programming Studio hám GNU Compiler Collection quramına kiretuǵın GNAT.

Alire - bul Ada ushın paketler hám qurallar shınjırın basqarıw quralı.

## Tariyxı
1970-jılları AQSH Qorǵanıw Ministrligi (DoD) óziniń ornatılǵan kompyuter sistemaları proektleri ushın qollanılıp atırǵan hár túrli programmalastırıw tilleriniń sanına táshwishlene basladı, olardıń kópshiligi gónergen yamasa apparatlıq támiynatqa ǵárezli edi hám hesh qaysısı qáwipsiz modulli programmalastırıwdı qollap-quwatlamaytuǵın edi. 1975-jılı bul sandı qısqartıw maqsetinde ministrliktiń hám Ullı Britaniya Qorǵanıw Ministrliginiń talaplarına ulıwma sáykes keletuǵın programmalastırıw tilin tabıw yamasa jaratıw niyeti menen Joqarı Dárejeli Til Boyınsha Jumısshı Topar (HOLWG) dúzildi. Dáslepki usınıstan baslanǵan kóplegen iteraciyalardan keyin, aqırǵı programmalastırıw tili Ada dep ataldı. Bunday proektler ushın qollanılatuǵın joqarı dárejeli programmalastırıw tilleriniń ulıwma sanı 1983-jılı 450-den aslam bolǵan bolsa, 1996-jılǵa kelip 37-ge tústi.

HOLWG programmalastırıw tili qanaatlandırıwı kerek dep esaplaǵan talaplardı bayan etetuǵın hújjetler seriyası Steelman til talapların islep shıqtı. Kóplegen bar tiller rásmiy túrde kórip shıǵıldı, biraq topar 1977-jılı heshbir bar til specifikaciyalarǵa sáykes kelmeydi degen juwmaqqa keldi. Talaplar 1978-jılı Amerika Qurama Shtatları Qorǵanıw Ministrligi tárepinen Qorǵanıw Ministrliginiń Ulıwma Joqarı Dárejeli Til baǵdarlaması sheńberinde jaratıldı. Bul hújjettiń aldınǵıları izbe-izlikte «Strawman», «Woodenman», «Tinman» hám «Ironman» dep atalǵan. Talaplar ornatılǵan kompyuter qosımshalarınıń mútájliklerine itibar qaratıp, isenimlilik, qollap-quwatlanıw hám ónimdarlıqqa ayrıqsha áhmiyet berdi. Atap aytqanda, olarǵa ayrıqsha jaǵdaylardı qayta islew quralları, orınlanıw waqtındaǵı tekseriwler hám parallel esaplawlar kiritilgen edi.

Heshbir bar til bul kriteriyalarǵa jetkilikli dárejede sáykes kelmeydi degen juwmaqqa kelindi, sonlıqtan olarǵa jaqınıraq til jaratıw ushın tańlaw járiyalandı. Bul tańlawdı jeńip shıqqan dizayn Ada programmalastırıw tili boldı. Nátiyjedegi til Steelman talaplarına tolıq bolmasa da, jaqınnan sáykes keldi.

Jańa programmalastırıw tili ushın usınıslarǵa soraw jiberildi hám tórt shártnama dúziwshi óz usınısların Red (Benjamin Brosgol basshılıǵındaǵı Intermetrics), Green (Jan Ishbia basshılıǵındaǵı Honeywell), Blue (Djon Gudenaf basshılıǵındaǵı SofTech) hám Yellow (Djay Spitsen basshılıǵındaǵı SRI International) atları menen islep shıǵıw ushın jallandı. 1978-jılı aprelde, jámiyetshilik talqılawınan keyin, Red hám Green usınısları kelesi basqıshqa ótti. 1979-jılı mayda, Honeywell kompaniyasında Jan Ishbia tárepinen islep shıǵılǵan Green usınısı tańlandı hám ádette Ada Lavleys atı menen belgili bolǵan Lavleys grafinyası Avgusta Ada King húrmetine Ada dep ataldı. Bul usınıs Ishbia hám onıń toparı 1970-jılları islep shıqqan LIS tiliniń tásirinde bolǵan. Dáslepki Ada anıqlama qollanbası 1979-jılı iyunda ACM SIGPLAN Notices jurnalında basıp shıǵarıldı. Áskeriy Standart anıqlama qollanbası 180-jılı 10-dekabrde (Ada Lavleystiń tuwılǵan kúninde) maqullandı hám Ada Lavleystiń tuwılǵan jılı húrmetine MIL-STD-1815 nomeri berildi. 1981-jılı Toni Xoar óziniń Tyuring sıylıǵı bayanatınan paydalanıp, Adanı júdá quramalı hám sol sebepli isenimsiz dep sınǵa aldı, biraq keyinirek Ada sabaqlıǵı ushın jazǵan alǵı sózinde bul pikirinen qaytqanday boldı.

Ada óziniń dáslepki kúnlerinde pútkil programmalastırıw jámiyetshiliginiń úlken itibarın tarttı. Onıń qollap-quwatlawshıları hám basqalar onıń tek qorǵanıw menen baylanıslı jumıslar ushın ǵana emes, al ulıwma maqsetli programmalastırıw ushın da ústem tilge aylanıwı múmkinligin boljaǵan edi. Ishbia on jıl ishinde tek eki programmalastırıw tili qalatuǵının: Ada hám Lisp bolatuǵının járiyalaǵan edi.  Dáslepki Ada kompilyatorları úlken, quramalı tildi ámelge asırıwda qıynaldı, hám kompilyaciya waqtındaǵı da, orınlanıw waqtındaǵı da ónimdarlıq ásten bolıwǵa beyim edi hám qurallar ápiwayı edi.   Kompilyator óndiriwshileri óz kúshleriniń kóp bólegin Ada tili háreketiniń taǵı bir jańa qásiyeti bolǵan, húkimet tárepinen talap etiletuǵın úlken, tildiń sáykesligin testlewshi Ada Kompilyatorın Validaciyalaw Múmkinshiligi (ACVC) validaciya jıynaǵınan ótiwge jumsadı.

Birinshi validaciyalanǵan Ada implementaciyası 1983-jılı 11-aprelde sertifikatlanǵan NYU Ada/Ed translyatorı boldı. NYU Ada/Ed joqarı dárejeli kóp-aǵzalıqlar tili SETL-de ámelge asırılǵan. Bir neshe kommerciyalıq kompaniyalar, sonıń ishinde Alsys, TeleSoft, DDC-I, Advanced Computer Techniques, Tartan Laboratories, Irvine Compiler, TLD Systems hám Verdix, Ada kompilyatorların hám tiyisli islep shıǵıw quralların usına basladı. Qorǵanıw, aerokosmoslıq yamasa baylanıslı tarawlarda áhmiyetli bizneske iye bolǵan kompyuter óndiriwshileri de óz platformalarında Ada kompilyatorların hám quralların usındı; olarǵa Concurrent Computer Corporation, Cray Research, Inc., Digital Equipment Corporation, Harris Computer Systems hám Siemens Nixdorf Informationssysteme AG kiredi.

1991-jılı AQSH Qorǵanıw ministrligi barlıq programmalıq támiynatlar ushın Ada tilin paydalanıwdı talap ete basladı (Ada mandatı), degen menen bul qaǵıydadan shetleniwlerge kóbinese ruqsat beriletuǵın edi. Qorǵanıw ministrliginiń Ada mandatı 1997-jılı nátiyjeli túrde biykar etildi, sebebi Ministrlik tayar kommerciyalıq (COTS) texnologiyalardı qabıl ete basladı. Uqsas talaplar basqa NATO mámleketlerinde de bar edi: Ada buyrıq hám basqarıw hám basqa funkciyalardı óz ishine alǵan NATO sistemaları ushın talap etildi, hám Ada Shveciya, Germaniya hám Kanada sıyaqlı mámleketlerde qorǵanıwǵa baylanıslı qosımshalar ushın májbúriy yamasa maqul kórilgen til boldı.

1980-jıllardıń aqırına hám 1990-jıllardıń basına kelip, Ada kompilyatorlarınıń ónimdarlıǵı jaqsılandı, biraq Ada tiliniń imkaniyatlarınan tolıq paydalanıwǵa ele de tosqınlıqlar bar edi, sonıń ishinde kópshilik real waqıt rejiminde isleytuǵın baǵdarlamashılar úyrengen modelden ózgeshe bolǵan wazıypalar modeli de bar edi.

Adanıń qáwipsizlik ushın áhmiyetli qollap-quwatlaw ózgeshelikleri sebepli, ol házir tek áskeriy qosımshalar ushın ǵana emes, al programmalıq támiynattaǵı qáte awır aqıbetlerge alıp keliwi múmkin bolǵan kommerciyalıq proektlerde de qollanıladı, mısalı, avionika hám hawa qatnasın basqarıw, Ariane 4 hám 5 sıyaqlı kommerciyalıq raketalar, sputnikler hám basqa kosmoslıq sistemalar, temir jol transportı hám bank iskerligi. Mısalı, Boeing 777 samolyotındaǵı Ushıwdı Baslawshı Basqarıw Sisteması, yaǵnıy elektron basqarıw sisteması (fly-by-wire) programmalıq támiynatı Ada tilinde jazılǵan, sonday-aq aerodinamikalıq turaqsız Eurofighter Typhoon, Saab Gripen, Lockheed Martin F-22 Raptor samolyotleri hám Grumman F-14 Tomcat ushın DFCS almastırıwshı ushıwdı basqarıw sisteması ushın da elektron basqarıw sistemaları Adada jazılǵan. Kanadanıń Avtomatlastırılǵan Hawa Qatnası Sisteması 1 million qatar Ada kodında jazılǵan (SLOC sanı). Ol óz ishine aldınǵı qatar bólistirilgen qayta islewdi, bólistirilgen Ada maǵlıwmatlar bazasın hám obyektke baǵdarlanǵan dizayndı qamtıdı. Ada basqa hawa qatnası sistemalarında da qollanıladı, mısalı, Ullı Britaniyanıń keleshek áwlad Interim Future Area Control Tools Support (iFACTS) hawa qatnasın basqarıw sisteması SPARK Ada járdeminde proektlestirilgen hám ámelge asırılǵan.
Ol sonıń menen birge Franciyanıń TGV joqarı tezlikli temir jol sistemasındaǵı TVM kabina ishindegi signalizaciyalaw sistemasında hám Parij, London, Gonkong hám Nyu-York qalalarınıń metro qala átirapı poezdlerinde de qollanıladı.

Tildiń Ada 95 redakciyası Steelman talaplarınan da asıp, ornatılǵan sistemalar menen bir qatarda ulıwma maqsetli sistemalarǵa da baǵdarlanıp, obyektke baǵdarlanǵan programmalastırıwdı qollap-quwatlaytuǵın ózgesheliklerdi qostı.

## Standartlastırıw

Dáslepki Adanı ACM Sigplan Notices Vol 14, No 6, Iyun 1979 basılımınan tabıwǵa boladı.

Ada birinshi ret 1980-jılı ANSI standartı ANSI/MIL-STD 1815 retinde járiyalandı. Bul eń birinshi versiyada kóplegen qáteler hám sáykes emeslikler bolǵanlıqtan, qayta kórip shıǵılǵan basılımı 1983-jılı ANSI/MIL-STD 1815A retinde járiyalandı. Basqa ózgerisler kirgizilmesten, ol 1987-jılı ISO standartına aylandı. Tildiń bul versiyası ANSI tárepinen qabıl etilgen sánesine baylanıslı kóbinese Ada 83 dep ataladı, biraq geyde ISO tárepinen qabıl etilgen sánesine baylanıslı Ada 87 dep te ataladı. Onıń francuz tiline awdarması da bar; DIN onı 1988-jılı nemis tiline DIN 66268 retinde awdardı.

Ada 95, birlesken ISO/IEC/ANSI standartı ISO/IEC 8652:1995 1995-jıl fevralda járiyalandı hám ol birinshi ISO standartına iye obyektke baǵdarlanǵan programmalastırıw tili boldı. Standarttı qayta kórip shıǵıwǵa hám keleshekte qabıl etiliwine járdem beriw ushın, AQSH Hawa-kúshleri GNAT Kompilyatorın islep shıǵıwdı qarjılandırdı. Házirgi waqıtta GNAT Kompilyatorı GNU Kompilyatorlar Toplamınıń (GNU Compiler Collection) bir bólimi bolıp tabıladı.

Ada tiliniń texnikalıq mazmunın jaqsılaw hám jańalaw boyınsha jumıslar dawam etti. Ada 95-ke Texnikalıq Dúzetiw 2001-jıl oktyabrde járiyalandı, al úlken Ózgeris, ISO/IEC 8652:1995/Amd 1:2007 2007-jıl 9-martta járiyalandı, ol kóbinese Ada 2005 dep ataladı, sebebi jańa standart boyınsha jumıslar sol jılı tamamlanǵan edi.

Stokgolmda ótkerilgen Ada-Europe 2012 konferenciyasında Ada Resurslar Associaciyası (ARA) hám Ada-Europe shólkemi Ada tiliniń sońǵı versiyasınıń dizaynı tamamlanǵanın hám silteme qollanbası Xalıqaralıq Standartlastırıw Shólkeminiń (ISO) hám Xalıqaralıq Elektrotexnika Komissiyasınıń (IEC) ISO/IEC JTC 1/SC 22/WG 9 komitetine tastıyıqlaw ushın jiberilgenin járiyaladı. ISO/IEC 8652:2012 (qarań Ada 2012 RM) 2012-jıl dekabrde járiyalandı hám Ada 2012 dep ataldı. Texnikalıq dúzetiw, ISO/IEC 8652:2012/COR 1:2016, járiyalandı (qarań RM 2012 with TC 1).

2023-jıl 2-mayda Ada birlespesi programmalastırıw tili standartınıń Ada 2022 basılımın járiyalawdı rásmiy tastıyıqladı.

Ada 83, 95 hám t.b. atlarına qaramastan, nızamlı túrde tek bir ǵana Ada standartı bar, ol da sońǵı ISO/IEC standartı: jańa standart versiyası qabıl etilgennen keyin, aldınǵısı kúshin joytadı. Basqa atamalar tek belgili bir basılımǵa silteme beretuǵın rásmiy emes atlar bolıp tabıladı.

Basqa baylanıslı standartlarǵa ISO/IEC 8651-3:1988 Informaciyalıq qayta islew sistemaları — Kompyuter grafikası — Grafikalıq Yadro Sisteması (GKS) til baylanısları — 3-bólim: Ada kiredi.

## Til konstrukciyaları
Ada — bul ALGOLǵa uqsas programmalastırıw tili bolıp, if, then, else, while, for hám t.b. sıyaqlı rezervlengen sózleri bar basqarıw strukturalarına iye. Biraq, Adada sonıń menen birge tip anıqlamaları, jazıwlar, kórsetkishler, sanap ótiwler sıyaqlı dáslepki ALGOL 60 quramına kirmegen kóplegen maǵlıwmatlardı strukturalastırıw quralları hám basqa abstrakciyalar bar. Bunday konstrukciyalar biraz Paskaldan miyras alınǵan yamasa onnan ilhamlanǵan.

### Ada tilinde "Hello, world!"
Tildiń sintaksisiniń keń tarqalǵan mısalı "Hello, World!" programması bolıp tabıladı: (hello.adb)

```ada
with Ada.Text_IO;
procedure Hello is
begin
   Ada.Text_IO.Put_Line ("Hello, world!");
end Hello;
```

Bul programmanı biypul ashıq kodlı GNAT kompilyatorı járdeminde tómendegini orınlaw arqalı kompilyaciyalawǵa boladı:

```bash
gnatmake hello.adb
```


### Maǵlıwmat tipleri
Adanıń tip sisteması aldınnan anıqlanǵan primitiv tipler toplamına tiykarlanbaǵan, kerisinshe paydalanıwshılarǵa ózleriniń tiplerin járiyalawǵa imkaniyat beredi. Bul járiyalaw, óz gezeginde, tiptiń ishki kórinisine tiykarlanbaǵan, al erisiw kerek bolǵan maqsetti táriyiplewge tiykarlanǵan. Bul kompilyatorǵa tip ushın sáykes keletuǵın yad ólshemin anıqlawǵa hám kompilyaciya hám orınlanıw waqtında tip anıqlaması buzılıwların tekseriwge imkaniyat beredi (yaǵnıy, diapazon buzılıwları, buferdiń tolıp ketiwi, tiplerdiń sáykesligi hám t.b.). Ada diapazon menen anıqlanǵan sanlı tiplerdi, modul tiplerin, agregat tiplerdi (jazıwlar hám massivler) hám sanaw tiplerin qollaydı. Kiriw tipleri belgili bir tiptiń nusqasına siltemeni anıqlaydı; tipsiz kórsetkishlerge ruqsat etilmeydi. Til tárepinen usınılǵan arnawlı tipler - bul wazıypa tipleri hám qorǵalǵan tipler.

Mısalı, sáneni tómendegishe kórsetiwge boladı:


```ada
type Day_type   is range    1 ..   31;
type Month_type is range    1 ..   12;
type Year_type  is range 1800 .. 2100;
type Hours is mod 24;
type Weekday is (Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday);

type Date is
   record
     Day   : Day_type;
     Month : Month_type;
     Year  : Year_type;
   end record;
```


Itibar beriw áhmiyetli: Day_type, Month_type, Year_type, Hours — bular sáykes kelmeytuǵın tipler, yaǵnıy, mısalı, tómendegi ańlatpa nızamsız:


```ada
Today: Day_type := 4;
Current_Month: Month_type := 10;
... Today + Current_Month ...  -- illegal
```


Aldınnan anıqlanǵan qosıw operatorı tek birdey tiptegi mánislerdi ǵana qosa aladı, sonlıqtan ańlatpa nızamsız.

Tipler kishi tiplerdi járiyalaw arqalı anıqlastırıwǵa boladı:


```ada
subtype Working_Hours is Hours range 0 .. 12;            -- kúndelikli jumıs ushın eń kóp 12 saat
subtype Working_Day is Weekday range Monday .. Friday;   -- Jumıs kúnleri

Work_Load: constant array(Working_Day) of Working_Hours  -- jasırın tip járiyalaw
   := (Friday => 6, Monday => 4, others => 10);           -- dáslepki mánis beriw menen jumıs saatları ushın izlew kestesi
```


Tiplerdiń sheklengen, abstrakt, jeke hám t.b. sıyaqlı modifikatorları bolıwı múmkin. Jeke tipler ózleriniń ishki strukturasın kórsetpeydi; sheklengen tiplerdiń obyektlerin kóshiriwge bolmaydı. Ada 95 tiplerdi obyektke baǵdarlanǵan keńeytiw ushın qosımsha ózgeshelikler qosadı.

## Derekler

__BÖLİDİMÖNDEMEW__