Ada xüsusilə yaxşı proqramlaşdırma dilidir. Ada (proqramlaşdırma dili) Ada'nın ilk formatlaşdırma dili

Cəhənnəm dili həmişə az-çox olub. Məktəbdə onun adına gülürdük, universitetin kurrikulumda ABŞ Müdafiə Nazirliyinin sifarişi ilə hazırlanmış dil kimi quru-quru qeyd olunurdu, lakin sintaksisi və ya tətbiqi öyrənməyə yalnız nadir proqramçılar çatırdı. Bu, Ada dilinin yalnız çoxəsrlik avadanlıqlarda fəaliyyət göstərməsi və təbii modernləşmə ilə birlikdə ona ehtiyacın aradan qalxacağı barədə yanlış rəyə səbəb oldu.

Və bu həqiqətdən çox uzaqdır.

Görünüş

20-ci əsrin 70-ci illərində, soyuq müharibənin qızğın çağında ABŞ Müdafiə Nazirliyi beynəlxalq müsabiqə, nəticələrinə əsasən hərbi məqsədlər üçün istifadə üçün proqramlaşdırma dilini seçmək lazım idi. Lakin, heç biri mövcud dillər komissiya üzvlərinə uyğun gəlmədi, ona görə də uzun seçim və bir neçə dəyişiklik nəticəsində Ada dili yarandı, Ada Lavleysin adını daşıdı. Sonra standartlaşdırma, qeydiyyat ilə uzun illər bürobozluq başladı ticarət nişanı, xüsusi tərcüməçilərə qadağalar və kütləvi auditoriyanı Ada ilə işləməkdən çəkindirən digər hərəkətlər.

Nəticə artan təhlükəsizlik tələbləri ilə mürəkkəb hesablama sistemləri üçün nəzərdə tutulmuş kifayət qədər niş dili oldu. Yenə də, Pentaqonun tələbləri və ciddi standartlara görə, digər proqramlaşdırma dilləri ilə qarşılıqlı əlaqə olduqca çətindir, buna görə də son vaxtlara qədər Ada-nın kütləvi bazara keçmək şansı demək olar ki, yox idi. Amma avadanlıq ucuzlaşdıqca və istifadə olunan texnologiyalar mürəkkəbləşdikcə belə bir şans yaranır.

Sintaksis

Başlanğıcda Ada, Paskal və Alqoldan sintaksisi miras alan, güclü yazmağa malik modul proqramlaşdırma dilidir. Birincisini məktəbdə və ya kollecdə öyrənmisinizsə, o zaman “Salam, Dünya!” nostalji hiss etməlidir:

Ada.Text_IO ilə;

Prosedur Salam
Ada.Text_IO istifadə edin;
başlamaq
Put_Line("Salam, dünya!");
son Salam;

Dilə qoyulan əsas tələblərdən biri onun istifadəsinin etibarlılığı idi. Müvafiq olaraq, bu, quruluşa, növlərə, orfoqrafiyaya və daha çox şeyə ciddi məhdudiyyətlər gətirdi. Bundan əlavə, burada demək olar ki, bütün səhvlər tərtib mərhələsində tutulur.

Başqa bir tələb, kodun çap şəklində maksimum oxunaqlı olması idi ki, bu da nəticədə yaranan dilin ağırlığına və aşağı çevikliyə səbəb oldu.

Sonrakı standartlar bu problemləri qismən həll etdi, lakin məlum səbəblərə görə Cəhənnəmdən ikinci Python yaratmadılar.

Bu gün Ada

Geniş auditoriyanın fikrindən fərqli olaraq, Cəhənnəm dili hələ də nəinki ABŞ-da, nəinki hərbi sənayedə fəal şəkildə istifadə olunur. Məsələn, Beriev Be-200 amfibiya təyyarəsinin proqram təminatının bir hissəsi Ada dilində yazılmışdır. Bir çox böyük şəhərlərdə (Paris, London, Nyu-York və s.) işləyən maşinistsiz metro qatarlarında da ABŞ hərbi dil avadanlıqlarından istifadə edilir.

Bəli, əlbəttə ki, "müştərilər" arasında hərbi və mülki aviasiya (xüsusən, Boeing 777), raketlər, servislər, peyklər - ümumiyyətlə, ən yüksək təhlükəsizlik dərəcəsi tələb edən sonsuz bahalı Amerika məhsullarının demək olar ki, bütün siyahısı var. .

Perspektivlər

“Cəhənnəm dili” həm ortaya çıxdığı vaxt, həm də Pentaqonun möhtəşəm planlarının reallığa tam uyğun gəlmədiyi məlum olanda, hətta indi daha çox tənqid olundu. Bunun səbəbi əlverişsiz dil, 1983 və 1995-ci illərdə yazılmış standartların mürəkkəbliyi, həmçinin Ada dilini kütləvi auditoriyadan məhrum edən tərtibatçıların uzaqgörənliyidir.

Bununla belə, təxminən 40 illik aktiv istifadə Ada dilinin bəlkə də əsas vəzifəsinin öhdəsindən gəldiyini təsdiqləyir - onun köməyi ilə artan təhlükəsizlik tələbləri olan sistemlər üçün etibarlı kod yaratmaq hələ də mümkündür. Ancaq baxsanız müasir tendensiyalar, belə məhsulların sayı durmadan artır: avtopilot və hibrid mühərrikli avtomobillər, şəxsi kosmik gəmi və kiçik təyyarələr, yüksək sürətli qatarlar, eləcə də çoxlu sayda quraşdırılmış sistemlər. Bütün bunlar cəhənnəm dilinin fəaliyyəti üçün potensial sahədir. Buna standartın 2012-ci ildə ciddi şəkildə yenidən baxıldığını və modernləşdirilməsini əlavə edin, iş üçün alətlər də buraxılır və yenilənir.

Beləliklə, cəhənnəm dili həm çox da xoş olmayan keçmişdən bir fraqmentdir, həm də parlaq gələcək qurmaq üçün alətlərdən biridir. Və o, qətiyyən təqaüdə çıxmağı planlaşdırmır.

Bütün proqramlaşdırma dilləri iki qrupa bölünür:

1. “statik” (və ya “güclü”) növləri ilə;

2. “dinamik” (və ya “zəif”) növləri ilə.

Hər iki dil qrupunun öz üstünlükləri və mənfi cəhətləri var. Bu məqalənin əsas tezisi: “Ada ən yaxşı statik tipli dildir”.

Statik tipli dillərin üstünlükləri (və buna görə də Ada'nın avtomatik üstünlükləri, çünki Ada statik tipli bir dildir):

1. proqramın icrasının çox (çox vaxt yüzlərlə) dəfə daha yüksək sürəti (yeri gəlmişkən, prosessorun yararsız qızdırılması üçün elektrik sərfiyyatı eyni miqdarda azalır);

2. "qarışıq" nömrələr və sətir dəyişəni (simvollar ardıcıllığı) kimi "axmaq" səhvlərə daha etibarlı nəzarət imkanı (Ada-da tam şəkildə həyata keçirilir).

Ada, müəyyən mənada, güclü tipli dillər arasında "ən güclü" növlərə malik olan dildir. Beləliklə, avtomatik nəticələr:

1. Ada bütün proqramlaşdırma dilləri arasında ən sürətli proqramlaşdırma dillərindən biridir. Proqram həqiqətən dinamik proqramlaşdırma dilləri ilə müqayisədə yüz dəfə daha sürətli işləyə bilər.

2. Ada qarışıq məlumat növləri ilə "axmaq" səhvləri tamamilə rədd edir. Bunu aşağıda daha ətraflı müzakirə edəcəyik.

Adanın hekayəsi

Adanın görünüş hekayəsi ayrıca nəzərdən keçirməyə layiqdir.

Pentaqon (Amerika Müdafiə Nazirliyi belə adlandırılır, çünki onlar Pentaqon formasına bənzər bir binada yerləşirlər) hərbi problemləri həll etmək üçün proqramlaşdırma dili yaratmaq üçün müsabiqə elan etdi. Dil proqramların yüksək etibarlılığını təmin etməli, böyük mürəkkəb sistemlərin işlənib hazırlanmasına imkan verməli, proqramçılar üçün yüksək sürətli və “oxunaqlı” olmalı (proqram mətni başqa proqramçı tərəfindən yazılmış olsa belə), həmçinin çoxprosessorlu sistemlərdən səmərəli istifadəni dəstəkləməli idi. (Bu yaxınlarda çoxnüvəli prosessorlar şəklində geniş yayılmışdır - tərtibatçıların gələcəyə necə baxdıqlarına diqqət yetirin!)

Müsabiqənin qalibi "Ada" dili (19-cu əsr qadın riyaziyyatçısı Ada Lavleysin adını daşıyır). 1983-cü ilə qədər Ada-nın sözdə formal spesifikasiyası yazıldı və Ada83 kimi tanındı.

Ada83 müasir proqramlaşdırma dili üçün tələblərə cavab vermirdi. Buna görə də, onun əsasında artıq müasir dil adlandırıla bilən Ada95 (1995), daha sonra Ada2005 və Ada2012 (hansı illər aydındır) yaradıldı.

Ada, artan etibarlılıq tələb edən sahələrdə (hərbi sənaye, maliyyə, infrastrukturun idarə edilməsi və s.) Geniş yayılmışdır, məsələn, F-16 təyyarəsi Ada üzərində hazırlanmışdır.

Adanın üstünlüklərinin siyahısı

Adanın əsas üstünlüklərinin siyahısı:

1. Ada ən sürətli proqramlaşdırma dillərindən biridir. Proqram əslində yüz dəfə daha sürətli işləyə bilər.

2. Ada qarışıq məlumat növləri ilə "axmaq" səhvləri tamamilə rədd edir.

3. Hətta daha az ciddi səhvlərə qarşı yaxşı nəzarət dəstəyi. (Bu, Ada proqramlarında dörd dəfə az səhv verir). Bu barədə aşağıda daha ətraflı dayanacağıq.

4. Modul quruluş dil. Böyük və mürəkkəb proqramlara dəstək.

5. Müasir çoxnüvəli prosessorlar, eləcə də birdən çox prosessorlu superkompüterlər üçün çox yaxşı dəstək.

6. “Güclü” müasir proqramlaşdırma dili: obyekt yönümlü proqramlaşdırma, şablonlar, çevik seçim nəzarəti dinamik yaddaş və s. (Terminologiyanı başa düşmürsənsə, narahat olmayın: bu, sadəcə olaraq, Ada dilinin güclü müasir dil olduğunu bildirir).

7. Olduqca sürətli kompilyasiya (proqramçı Ada-nın .exe faylını yaratmasını daha az gözləyir və proqramlaşdırma və səhvləri tapmaq üçün daha çox boş vaxta malikdir).

8. Bütün növ cihazları dəstəkləyin: kompüterlər, quraşdırılmış elektronika, kosmik gəmilər və s.

9. Dil elədir ki, nəinki yazmaq, hətta oxumaq (proqramçısınızsa) üçün rahatdır.

10. Pulsuz, lakin yaxşı inkişaf mühiti (proqramçılar üçün proqramlar) mövcuddur.

11. Beynəlxalq standart var.

12. Ondalıklar məsələn, maliyyə məlumatları ilə işləməyə imkan verir.

Etibarlılıq və ya sürət

Etibarlılıq və sürət tələbləri arasında təbii ziddiyyət var:

Proqramın mümkün olan ən yüksək sürətlə işləməsi üçün proqramın işlədiyi müddətdə düzgünlüyünü yoxlamaqdan imtina etmək lazımdır.

Məsələn, 10 rəqəmdən ibarət bir siyahı var. Əgər proqram bu siyahıda 12-ci rəqəmi dəyişməyə çalışırsa, bu cəfəngiyyatdır. Əgər yoxlama aparılmayıbsa, bu proqram bizim 12-ci nömrəmizi, texniki terminologiya ilə “hər yerdə” yazacaq və proqram hətta özünü korlaya və mənasız bir şey etməyə başlaya bilər.

Buna görə də etibarlılığı təmin etmək üçün proqram bu cür mənasız hərəkətlərə qarşı yoxlamalar aparmalıdır. Lakin yoxlamalar CPU vaxtı tələb edir.

Adada bu ziddiyyətin həlli belədir: İki iş rejimi var: çekli və çeksiz (daha doğrusu, daha çox rejim var, çünki bəzi çek növlərini seçmə olaraq işə salmaq, bəzilərini isə qeyri-aktiv etmək mümkündür). Çeklərlə proqram bir neçə dəfə daha yavaş işləyə bilər, lakin yoxlamalar zamanı proqram tam cəfəngiyat etməyə başlayır ki, dəfələrlə daha az olur.

Proqramın ilkin sazlanması (səhvlərin axtarılması və düzəldilməsi) zamanı yoxlamalar tez-tez açıq qalır və proqram sürəti artırmaq və prosessorun qızdırılması üçün elektrik enerjisinin dəyərini azaltmağa hazır olduqda söndürülür. Mənə Ada-da proqramlaşdırmağı tapşırsanız, bitmiş proqramı sizə təhvil verdikdən sonra çeklərin aktiv olub-olmaması barədə razılığa gələ bilərik.

Yeri gəlmişkən, Ada nəinki ən görkəmli cəfəngiyyatı (məsələn, 10 rəqəmin siyahısındakı 12-ci element və ya sıfıra bölmə kimi), həm də daha az ciddi səhvləri yoxlamağa hazırdır. Adadakı unikal "güclü" növlərin sistemi avtomatik olaraq ayın həmişə 1..12 intervalında olduğunu (məsələn, 14-cü ayda deyil) avtomatik olaraq yoxlaya bilir. Bu yoxlamalar proqramı digər proqramlaşdırma dillərindəki proqramlardan daha etibarlı edir. Ada-nın son versiyaları üstəlik proqramçıya istədiyi hər cür yoxlamanı etməyə imkan verir.

Cəhənnəm haqqında miflər

Mif 1: Ada “qədim” proqramlaşdırma dilidir

Əslində, bu mif yalnız 1983-cü ildə hazırlanmış Ada-nın ilk versiyası olan Ada83 üçün doğrudur.

Ada spesifikasiyasının ən son versiyası olan Ada2012, obyekt yönümlü proqramlaşdırma və şablon növləri kimi müasir xüsusiyyətlərə malik tamamilə yeni və müasir proqramlaşdırma dilidir.

Mən deyərdim ki, Ada hətta digər müasir proqramlaşdırma dillərindən daha “daha ​​müasir” bir dildir.

Mif 2: Ada yalnız böyük sistemlər üçündür

Bəli, Ada əsasən üçün nəzərdə tutulmuşdur böyük sistemlər Pentaqonun kompleks müdafiə layihələri kimi.

Lakin bu “böyük” imkanlar daha az mürəkkəb sistemlər üçün də faydalıdır. Onlar ümumiyyətlə proqramlaşdırmanı daha kiçik proqramlar üçün belə daha asan və etibarlı edir. Onlar ayıklama vaxtını azaldır (səhvləri axtarır) və beləliklə azaldır ümumi vaxt inkişaf. Bu o deməkdir ki, mən eyni işi daha az vaxta görürəm.

Mif 3: Ada elektronika üçündür

Həqiqətən, Ada - yaxşı dil"yerləşdirilmiş" sistemlər (elektronika) üçün proqramlaşdırma, lakin adi üçün də yaxşıdır fərdi kompüterlər. Sadəcə universaldır.

Mif 4: Ada bahalı texnologiya tələb edir

Əslində, əksər müasir əməliyyat sistemləri üçün pulsuz Ada kompilyatoru (GNAT) mövcuddur. Peşəkar proqramçı üçün bütün proqram təminatı ilə gəlir.

Mən əsasən Linux ilə işləyirəm. Və əlbəttə ki, Linux üçün GNAT var.

Adanın mənfi cəhətləri

Ola bilsin ki, yalnız üstünlüklərdən danışmaq, mənfi cəhətləri qeyd etməmək ədalətsizlik olardı.

Ada aşağıdakı çatışmazlıqlara malikdir:

1. Ada güclü peşəkar vasitədir və ona görə də ondan məharətlə istifadə etmək üçün sizə yüksək ixtisaslı mütəxəssis lazımdır (mənim kimi!)

2. Təəssüf ki, Ada çox populyar bir dilə çevrilmədi. Nəticədə, bir çox tapşırıqlar üçün "komponentlər" (hazır proqram fraqmentləri) yoxdur. Məsələn, Ada-da veb saytları inkişaf etdirmək üçün həqiqətən yaxşı komponentlər yoxdur.

3. Adadakı proqram digər proqramlaşdırma dillərindən bir qədər uzun ola bilər; buna görə də mətnin bir səhifəsinə uyğun gələn, deyək ki, Python dilində (yeri gəlmişkən, mən Pythonda proqramlaşdırma ilə məşğulam), Adada bir səhifəyə sığmaya bilər.

4. Bəzi başqa çatışmazlıqlar da var (belə söhbət üçün xüsusi terminologiya tələb olunduğu üçün bu haqda ətraflı danışmayacam), lakin digər proqramlaşdırma dillərinin çatışmazlıqları fonunda onlar üstünlük kimi görünə bilər.

(Ada 2005), Eyfel (Ada 2012)

C++, Şapel, "Draqo". , Eyfel, "Qriffin". , Java , Nim , qayıq arxasında paraşüt , PL / SQL , PL / PgSQL , ruby ​​, Seed7 , "SPARforte" . , Sparkel , SQL / PSM , VHDL

Ada xüsusiyyətlərinə aşağıdakılar daxildir: güclü yazma, modulluq mexanizmləri (paketlər), iş vaxtının yoxlanılması, paralel emal (tapşırıqlar, sinxron mesaj ötürülməsi, qorunan obyektlər və qeyri-deterministik seçim ifadələri), istisnaların idarə edilməsi və generiklər. Ada 95 dinamik göndərmə də daxil olmaqla obyekt yönümlü proqramlaşdırma üçün əlavə dəstək verdi.

Ada sintaksisi əsas əməliyyatları yerinə yetirmək yollarının seçimini minimuma endirir və ingilis dilinə üstünlük verir açar sözlər(“və ya” və “sonra” kimi) simvollara (“||” və “&&” kimi). Ada əsas arifmetik operatorlardan "+", "-", "*" və "/" istifadə edir, lakin digər simvolların istifadəsindən yayınır. Kod blokları "bəyan et", "başlamaq" və "son" kimi sözlərlə ayrılır, burada "son" (əksər hallarda) bağladığı blokun identifikatoru gəlir (məs. əgər sondursa, əgər... , döngə... dövrün sonu). Şərti bloklar vəziyyətində bu, qarşısını alır hələ də yırtılmış, C və ya Java kimi digər dillərdə yanlış iç-içə if ifadələri ilə cütləşə bilər.

Ada çox böyük inkişaf üçün nəzərdə tutulmuşdur proqram sistemləri. Ada paketləri ayrıca tikilə bilər. Ada paketinin spesifikasiyası (paket interfeysi) uyğunluğu yoxlamadan da ayrıca tərtib edilə bilər. Bu, problemlərin layihələndirmə mərhələsində, icraya başlamazdan əvvəl aşkarlanmasına imkan verir.

Bəzi digər dillərdə icra müddətinə qədər aşkar edilməyəcək və ya mənbə koduna açıq yoxlamaların əlavə edilməsini tələb edən xətaların qarşısını almaq üçün çoxlu sayda tərtib vaxtı yoxlamaları dəstəklənir. Məsələn, uyğun olmayan son markerlər səbəbindən səhvlərin qarşısını almaq üçün sintaksis açıq blok adı tələb edir. Ciddi yazıya riayət etmək standart səhvlərin mövcudluğunu aşkar etməyə imkan verir proqram təminatı(pis parametrlər, diapazon pozuntuları, etibarsız arayışlar, uyğun olmayan növlər və s.) ya tərtib zamanı, ya da başqa cür işləmə zamanı. Paralellik dil spesifikasiyasının bir hissəsi olduğundan, kompilyator bəzi hallarda potensial çıxılmazlıqları aşkar edə bilər. Kompilyatorlar həmçinin adətən identifikatorların səhv yazılmasını, paketin görünməsini, lazımsız bəyannamələri və s. faydalı məsləhətlər xətanı necə düzəltmək barədə.

Ada həmçinin bölüşdürülməmiş yaddaş girişi, bufer daşması xətaları, diapazon pozuntuları, sıradan kənar xətalar, massiv giriş xətaları və digər aşkar edilə bilən xətalardan qorunmaq üçün iş vaxtı yoxlamalarını dəstəkləyir. Bu çeklər icranın səmərəliliyi baxımından aradan qaldırıla bilər, lakin çox vaxt səmərəli şəkildə yığıla bilər. Buraya proqramı yoxlamağa kömək edən alətlər də daxildir. Bu səbəblərə görə, Ada hər hansı bir anomaliyanın təsadüfən ölüm, xəsarət və ya ciddi maliyyə itkisi kimi çox ciddi nəticələrə səbəb ola biləcəyi kritik sistemlərdə geniş istifadə olunur. Ada-dan istifadə edən sistemlərə misal olaraq avionika, hava hərəkətinə nəzarət, dəmir yolları, bankçılıq, hərbi və aerokosmik sənaye daxildir.

Ada-nın dinamik yaddaş idarəetməsi yüksək səviyyəlidir və tip üçün təhlükəsizdir. Ada ümumi və ya yazılmamış göstəricilərə malik deyil; və dolayısı ilə heç bir göstərici növünü elan etməyin. Bunun əvəzinə, bütün dinamik yaddaşın ayrılması və boşaldılması açıq şəkildə elan edilmiş şəkildə baş verməlidir giriş növləri. Hər bir giriş növü müvafiqdir saxlama hovuzu, yaddaş idarəçiliyinin aşağı səviyyəli detallarını idarə edən; proqramçı ya standart saxlama hovuzundan istifadə edə və ya yenilərini təyin edə bilər (bu, xüsusilə qeyri-vahid Yaddaş Girişi üçün doğrudur). Siz hətta bir neçə elan edə bilərsiniz müxtəlif növlər hamısı eyni növü ifadə edən, lakin müxtəlif saxlama hovuzlarından istifadə edən girişlər. Bundan əlavə, dil təmin edir çeklərin mövcudluğu, həm kompilyasiya zamanı, həm də işləmə zamanı, bu da bunu təmin edir giriş dəyəri müəyyən etdiyi obyektin tipini silə bilməz.

Dilin semantikası əlçatmaz obyektlərin avtomatik zibil yığılmasına imkan versə də, əksər tətbiqlər onu standart olaraq dəstəkləmir, çünki bu, real vaxt sistemlərində gözlənilməz davranışa gətirib çıxaracaq. Ada yaddaş idarəçiliyinə əsaslanan məhdud əhatə dairəsini dəstəkləyir; Əlavə olaraq, saxlama hovuzlarının yaradıcı istifadəsi məhdud avtomatik zibil yığılmasını təmin edə bilər, çünki saxlama hovuzunun məhv edilməsi hovuzdakı bütün obyektləri də məhv edir.

hekayə

Dilin texniki məzmununun təkmilləşdirilməsi və yenilənməsi istiqamətində işlər davam etdirilir Ada proqramlaşdırma. Ada 95-ə texniki korrigendum 2001-ci ilin oktyabrında nəşr olundu və əsas düzəliş ISO/IEC 8652:1995/Amd 1:2007 9 mart 2007-ci ildə nəşr olundu. Stokholmda keçirilən Ada-Avropa 2012 konfransında Ada Resurs Assosiasiyası (ARA) və Ada-Europe dizaynın tamamlandığını elan etdilər son versiya Ada proqramlaşdırma dili və təqdimatı istinad bələdçisi təsdiq üçün Beynəlxalq Standartlaşdırma Təşkilatına (ISO) göndərilir. ISO/IEC 8652:2012 2012-ci ilin dekabrında nəşr edilmişdir.

Digər müvafiq standartlara ISO 8651-3:1988 daxildir İnformasiya emal sistemləri, kompüter qrafikası, qrafik nüvəsi sistemlər (GKS) bağlama dili-3-cü hissə: Ada .

Dil konstruksiyaları

"Salam Dünya!" Adada

Sintaksisdə belə bir dilin tipik nümunəsi Salam dünya proqramıdır: (hello.adb)

Ada.Text_IO ilə; Ada.Text_IO istifadə edin; prosedur Hello is begin Put_Line ( "Salam, dünya!" ); son Salam;

Bu proqramı işlətməklə pulsuz və açıq mənbəli GNAT kompilyatorundan istifadə etməklə tərtib etmək olar

gnatmake hello.adb

Məlumat növləri

Ada tipli sistem əvvəlcədən təyin edilmiş primitiv tiplər toplusuna əsaslanmır, lakin istifadəçilərə özlərini elan etməyə imkan verir. yerli növlər. Bu ifadə, öz növbəsində, növün daxili təmsilinə deyil, əldə ediləcək məqsədin təsvirinə əsaslanır. Bu, kompilyatora uyğun yaddaş ölçüsünü təyin etməyə imkan verir bu tipdən, və tərtib zamanı və icra müddətində tip tərifinin pozulmasının olub-olmadığını yoxlamaq (yəni, diapazonun pozulması, buferin daşması, tip ardıcıllığı və s.). Ada diapazonda, modul tiplərində, ümumi tiplərdə (qeydlər və massivlər) və sadalama növləri ilə müəyyən edilmiş ədədi növləri dəstəkləyir. Giriş növləri müəyyən bir növün nümunəsinə istinad müəyyən edir; tipsiz göstəricilərə icazə verilmir. Tapşırıq tipli dildə və qorunan növlərdə təqdim olunan xüsusi növlər.

Məsələn, bir tarix aşağıdakı kimi təqdim edilə bilər:

type Day_type diapazon 1 .. 31 ; növü Ay_növü diapazon 1 .. 12 ; type Year_type diapazondur 1800 .. 2100 ; saat növü mod 24; növü Həftə içi (bazar ertəsi, çərşənbə axşamı, çərşənbə, cümə axşamı, cümə, şənbə, bazar günləri); type Tarix qeyd olunur Gün : Day_type ; Ay: Ay_növü; İl: İl_növü; son qeyd;

Alt tipləri elan etməklə növləri daha da təkmilləşdirmək olar:

alt növü İş_Saatları Saat diapazonu 0 .. 12 ; -- gündə ən çox 12 saat işləmək alt növü İş_Günü Həftə içi aralığı Bazar ertəsi .. Cümə ; -- İş günü İş_Yük : İş_Saatlarının daimi massivi (İş_Günü ) -- gizli tipli bəyannamə := (Cümə => 6 , Bazar ertəsi => 4 , digərləri => 10 ); -- başlatma ilə iş saatları üçün axtarış cədvəli

Növlər kimi dəyişdiricilərə malik ola bilər məhdud, mücərrəd, özəl və s. Şəxsi növlərə daxil olmaq olar və məhdudlaşdırılmış növlər yalnız onları müəyyən edən paket daxilində dəyişdirilə və ya kopyalana bilər. Ada 95 əlavə edir əlavə funksiyalar obyekt yönümlü tip genişləndirilməsi üçün.

Nəzarət strukturları

Ada da təklif edir qorunan obyektlər qarşılıqlı istisna üçün. Qorunan obyektlər dizayn baxımından monitora bənzəyir, lakin siqnalizasiya üçün şərt dəyişənləri əvəzinə qoruyuculardan istifadə edin (şərti kritik sahələrə bənzər). Mühafizə olunan obyektlər məlumatların inkapsulyasiyasını və monitorlardan qarşılıqlı xaric edilməsini, həmçinin şərti kritik sahələrdən mühafizə girişini birləşdirir. Klassik monitorlar üzərində əsas üstünlüyü ondan ibarətdir ki, vəziyyət dəyişənləri siqnalları ötürmək üçün tələb olunmur, səhv kilidləmə semantikası səbəbindən potensial çıxılmaz vəziyyətlərdən qaçın. Tapşırıqlar kimi, qorunan da daxili məhdudlaşdırılmış növdür və onun həm də bəyannamə hissəsi və gövdəsi var.

Mühafizə olunan obyekt kapsullaşdırılmış fərdi məlumatlardan (bunlara yalnız qorunan obyekt daxilində daxil olmaq olar), o cümlədən bir-birini istisna edən prosedurlar, funksiyalar və qeydlərdən ibarətdir (yalnız bir tərəf kimi olması tələb olunan funksiyalar istisna olmaqla). təsiri pulsuz Beləliklə, və digər funksiyalarla eyni vaxtda işləyə bilər). Qorunan obyektə zəng etmək tapşırığı başqa bir tapşırıq işlədiyi halda bloklanır Bu an eyni təhlükəsiz obyektdə və həmin digər tapşırıq qorunan obyekti tərk etdikdə buraxılır. Bloklanmış tapşırıqlar sifarişli gəliş vaxtının qorunan obyektində növbəyə qoyulur.

Qorunan obyekt məlumatları prosedurlara bənzəyir, lakin əlavə olaraq var təhlükəsizlik. Mühafizəçi yalanı qiymətləndirirsə, çağırış tapşırığı bloklanır və həmin girişin növbəsinə əlavə edilir; İndi qoruna bilən obyektə başqa bir tapşırığa icazə verilə bilər, çünki qoruna bilən obyektin daxilində hazırda heç bir tapşırıq işləmir. Mühafizə olunan obyekti tərk edəndə mühafizəçilərə həddən artıq qiymət verilir, çünki bu, mühafizəçinin reytinqinin dəyişdirilə biləcəyi yeganə dəfədir.

Zənglər qeyd edilə bilər xahiş etdi eyni imza ilə digər qeydlər üçün. Tələb olunan tapşırıq bloklanır və hədəf giriş növbəsinə əlavə edilir; bu o deməkdir ki, qorunan obyekt buraxılır və başqa tapşırığın qəbul edilməsinə imkan verir.

seçin Ada operatoru bloklanmayan giriş zəngləri və qəbulları, qeyri-müəyyən şəkildə seçilməyən girişləri (həmçinin qorunur), fasilələr və abortları həyata keçirmək üçün istifadə edilə bilər.

Aşağıdakı nümunə Ada-da paralel proqramlaşdırmanın bəzi konsepsiyalarını göstərir.

Ada.Text_IO ilə; Ada.Text_IO istifadə edin; prosedur Trafik növü Təyyarə_ID üçündür 1. . 10; -- 10 təyyarə tapşırıq növü Təyyarə (ID: Airplane_ID);-- başlanğıc parametri kimi ID ilə təyyarələri təmsil edən tapşırıq tip Airplane_Access - giriş Təyyarə ; -- Təyyarə qorunan tipli uçuş-enmə zolağına istinad növü-- paylaşılan uçuş-enmə zolağı (eyni zamanda girişə icazə vermək üçün qorunur) giriş Assign_Aircraft (ID : Təyyarə_ID );-- bütün girişlərə qarşılıqlı eksklüziv zəmanət verilir giriş Cleared_Runway(ID: Airplane_ID); giriş Wait_For_Clear ; özəl Clear: Boolean := Doğrudur;-- qorunan şəxsi məlumatlar - ümumiyyətlə bayraqdan daha çox... eniş zolağının sonu; növü Runway_Access bütün Uçuş zolağına girişdir; tapşırıq növü Nəzarətçi (My_Runway : Runway_Access ) -dir -- sinxron mesaj ötürülməsi üçün tapşırıq qeydləri giriş Request_Takeoff (ID: Airplane_ID-də; Kalkış: out Runway_Access); giriş Request_Approach (ID : Təyyarə_ID-də; Yanaşma : Uçuş-Uçuş-Girişi çıxışı); endController; -- nümunələrin bölüşdürülməsi Uçuş zolağı1: ləqəbli Uçuş zolağı; -- uçuş-enmə zolağının Nəzarətçi1 yaradılması: Nəzarətçi (Uçuş zolağı1 " Giriş); -- və onu idarə etmək üçün nəzarətçi ------bu yuxarıda göstərilən növlərin həyata keçirilməsi ------ qorunan orqan Təmiz olduqda uçuş-enmə zolağı Təyinat_Aircraft (ID : Təyyarə_ID ) girişidir -- giriş gözətçisi - şərt doğru olana qədər çağırış tapşırıqları bloklanır start Clear := False ; Put_Line (Təyyarə_ID " Şəkil (ID ) & " uçuş-enmə zolağında " ); son ; giriş Təmizlənmiş_Uçuş zolağı (ID : Təyyarə_ID ) Təmizlənmədikdə Başlanır Təmiz := Doğrudur ; Qoyma_Xətti (Təyyarə_ID " Şəkil (ID ) & " Uçuş zolağından təmizlənmiş " ); son; Clear başlayanda Wait_For_Clear entry null ; -- burada heç nə etməyə ehtiyac yoxdur - tapşırıq yalnız "Clear" doğru olduqda daxil ola bilər son; eniş zolağının sonu; tapşırıq orqanı Nəzarətçi başlanğıc döngəsidir My_Runway . Wait_For_Clear ; -- uçuş zolağı mövcud olana qədər gözləyin (zəngin bloklanması) seçin -- iki növ sorğu gözləyin (hansı birinci yerinə yetirilə bilər) Tələb_Yanışması " sayı = 0 => olduqda -- mühafizə bəyanatı - yalnız Request_Approach-da növbədə duran tapşırıqlar olmadıqda qəbul edin Request_Takeoff qəbul edin (ID: Airplane_ID-də; Kalkış: out Runway_Access) edin -- My_Runway sinxronlaşdırılmış hissəsinin başlanğıcı. Təyyarə_təyin (ID); -- ehtiyat uçuş-enmə zolağı (mühafizə olunan obyekt məşğul olduqda və ya giriş qoruyucusu yalan olarsa, potensial olaraq zəngi bloklayır) Uçuş := My_Runway ; -- uçuş-enmə zolağına hansı təyyarəni bildirmək üçün "out" parametr dəyərini təyin edin end Request_Akeoff ; -- sinxronlaşdırılmış hissənin sonu və ya Request_Approach qəbul edin (ID : Airplane_ID-də; Approach : out Runway_Access ) My_Runway-i edin. Təyyarə_təyin (ID); Yanaşma:= My_Runway; Son Sorğu_Yanlaşışı ; və ya -- zəng edə biləcək heç bir tapşırıq qalmadıqda dayandırın dayandırmaq; son seçimi; son döngə; son; tapşırıq orqanı Təyyarə Rwy-dir: Runway_Access; Nəzarətçi1 başlayın. Request_Takeoff(ID, Rwy); -- Nəzarətçi tapşırığı qəbul blokunu qəbul edib tamamlayana qədər bu zəng bloklanır Put_Line (Təyyarə_İD "Şəkil (İD ) & " uçuş..." ); gecikmə 2.0 ; Rwy . Təmizlənmiş_Uçuş zolağı (ID ); -- zəng bloklanmayacaq, çünki Rwy-də "Clear" indi yanlışdır və qorunan obyekt daxilində başqa tapşırıqlar olmamalıdır gecikmə 5.0; -- bir az ətrafında uçun... loop seçin -- uçuş-enmə zolağı Controller1 tələb etməyə çalışın. Request_Approach(ID, Rwy); -- bu bloklama çağırışıdır - qəbul blokuna çatan nəzarətçidə işləyəcək və tamamlandıqdan sonra qayıdacaqçıxış; -- Zəng geri qaytarılsa, biz eniş üçün hazırıq - bloku seçin və davam edin... və ya gecikmə 3.0; -- zaman aşımı - 3 saniyə ərzində cavab yoxdursa, başqa bir şey edin (hər şey aşağıdakı blokda) Put_Line (Təyyarə_ID "Şəkil (ID ) & " saxlanılma nümunəsində" ); -- sadəcə olaraq son seçim mesajını çap edin ; son dövrə ; gecikmə 4.0 ; -- eniş yaxınlaşmasını edin... Qoyma xətti (Təyyarə_ID " Şəkil (ID ) & " toxundu aşağı!"); Rwy. Cleared_Runway(ID); -- uçuş-enmə zolağına bizim burada işimizin bitdiyini bildirin. son; New_Airplane : Airplane_Access ; Airplane_ID " Range loop-da I üçün başlayın -- bir neçə təyyarə tapşırığı yaradın New_Airplane := new Airplane (I ); -- yaradıldıqdan sonra birbaşa işə başlayacaq gecikmə 4.0; son döngə; Son Trafik;

Praqmalar

Praqma, tərtib edilmiş məhsulun xüsusi manipulyasiyasına imkan vermək üçün məlumatı tərtibçiyə ötürən kompilyator direktividir. Bəzi psevdo-şərhlər dildə qurulur, digərləri isə həyata keçirilir.

Nümunələr ümumi istifadə Kompilyator praqması müəyyən funksiyaları, məsələn, iş vaxtı növünün yoxlanılması və ya massiv indeksinin yoxlanılması kimi funksiyaları söndürəcək və ya kompilyatora funksiyanı çağırmaq əvəzinə obyekt kodunu daxil etməyi tapşıracaq (C/C++-da daxili funksiyalarla işləyir).

  • APSE - Ada proqram təminatının işlənməsini dəstəkləmək üçün proqramlaşdırma mühiti üçün spesifikasiya
  • Ravenscar profili təhlükəsizlik baxımından kritik çətin real vaxt hesablamalarını təmin etmək üçün nəzərdə tutulmuş Ada multitasking funksiyalarının bir hissəsidir.
  • SPARK (proqramlaşdırma dili) - komponentin arzuolunan davranışını və fərdi iş vaxtı tələblərini təsvir edən meta məlumatlarla qeyd olunan çox məhdud Ada alt dəstindən ibarət proqramlaşdırma dilidir.

Sergey Bobrovski

Bu dilin tarixi 1975-ci ildə, ABŞ Müdafiə Nazirliyi (DoD) Amerika silahlı qüvvələri, daha sonra isə bütün NATO üçün vahid proqramlaşdırma dilini hazırlamağa qərar verdikdə başlamır. Onun tarixi adla başlayır, çünki Ada ilk proqramçı hesab edilən, ingilis şairi Bayronun və ərinin qızı doğulduqdan bir ay sonra əbədi ayrıldığı müəyyən Anabella Milbankın qızı hesab edilən Augusta Ada Lovelace-in adıdır. 1815-ci il dekabrın 10-da anadan olub. Ümumiyyətlə, kibernetika tarixi qaranlıq bir müəmma ilə örtülmüşdür və yalnız fraqmentli faktlara əsasən mühakimə etmək olar ki, son iki yüz ildə bu elmin baniləri Ada müəllimlərindən biri olan Avqust de Morqandan başlayaraq müxtəlif mistiklər və okkultistlər olublar. və ictimai rəyin formalaşdırılması üsullarını və onun manipulyasiyasını tədqiq edən Norbert Vinerin həmkarları ilə bitir.

Çarlz Bebbic öz mexaniki kompüterini qurduqdan sonra Ada Bernulli əmsallarının hesablanması üçün ilk proqramı yazdı. Sonradan o, real proqramlaşdırma nəzəriyyəsini inkişaf etdirdi, dövr konsepsiyasını və kibernetik fakültə tələbələrinin bu gün demək olar ki, hərfi öyrəndikləri bir neçə digər əsas terminləri təqdim etdi! Bu gün Ada hər kəsə ilk proqramçı kimi tanınır - və hamısı budur, amma bir gənc qızın belə unikal qabiliyyətləri haradan əldə etdiyinə təəccüblənirsiniz? O, özü bu suala açıq şəkildə cavab verdi: “İblisə and içirəm ki, 10 il ərzində Kainatın sirlərindən müəyyən miqdarda həyat qanı çəkəcəyəm və adi ölümcül ağılların və dodaqların edə bilməyəcəyi bir şəkildə Mənim kiçik çevik məxluqumda hələ də istifadə olunmamış nə dəhşətli enerji və güc var...". Ancaq layihənin sponsorları kompüter tapılmadı - o vaxt heç bir nüvə raketləri yox idi və yarışlarda bütün var-dövlətini itirərək çirkli bir hekayəyə girən Ada məşhur atası kimi 37 yaşında öldü.

Buna görə də, amerikalıların Adanı bu qədər tərifləməli olub-olmaması, onun adını belə iddialı bir layihənin adı kimi istifadə etmələri çox mübahisəli məsələdir.

Ancaq dilin özünün tarixinə qayıdaq. Layihənin başlanmasından 5 il sonra yüzlərlə ekspert 17 variant arasından istedadlı alim Jan İşbiyanın rəhbərlik etdiyi kiçik komanda tərəfindən hazırlanmış ML tələblərinə cavab verən yeganə dili seçdi. ISO 8652:1987 beynəlxalq standartının son versiyası 1987-ci ildə nəşr edilmişdir. Rəsmi məlumatlara görə, bu dilin yaradılmasında və təkmilləşdirilməsində dünyanın bütün ən yaxşı proqramlaşdırma mütəxəssisləri iştirak edib, lakin bu, şübhələr yaradır. Bu, məsələn, Adanın orijinal versiyasında obyekt anlayışının olmaması və məlum səbəblərdən sovet proqramçılarının bu layihədə iştirak etməməsi ilə təsdiqlənir.

Bütün dünyada Ada infrastrukturunun inkişafına on milyardlarla dollar sərmayə qoyulmuşdur. Bu, “XX əsr Ada işarəsi altında keçəcək” kimi iddialı ifadələrin ortaya çıxmasına səbəb oldu, lakin həyat həmişəki kimi hər şeyi öz yerinə qoydu.

Təəssüf ki, ABŞ Müdafiə Nazirliyi (və müvafiq olaraq Amerikanın “potensial düşmənləri” üçün xoşbəxtlikdən) bu dil üçün aydın standartın hazırlanması və effektiv tərtibçilərin yaradılması məhz proqram təminatı sənayesinin inkişaf etdiyi vaxtda (80-ci illərin əvvəllərində) tamamlandı. üfüqdə görünməyə başladı yeni dil Obyekt ideologiyası ilə C++. İndi C++ və köhnə, yaxşı unudulmuş, obyekt əsaslı düşünmə paradiqmasının populyarlığının necə artdığını görən Ada inkişaf komitəsinin nə hiss etdiyini söyləmək çətindir. Amma ayrılan vəsait artıq xərclənmişdi, standart yaradılmışdı, geriyə dönüş yox idi.

Ada quruluşu Paskal, daha dəqiq desək, Modula ilə çox oxşardır. Əksər ifadələrin və təsvirlərin sintaksisi Modula sintaksisi ilə demək olar ki, eynidir, baxmayaraq ki, o, Ada ilə demək olar ki, eyni vaxtda meydana çıxdı və kimin kimə təsir etdiyini söyləmək çətindir. Xüsusilə Adada kifayət qədər çoxlu müxtəlif uzantılar əlavə edildi, ona görə də Paskal dili ilə müqayisədə bu dili yığcam adlandırmaq olmaz. İmkanların sayı baxımından PL/1-ə bənzəmə ehtimalı daha çoxdur. Lakin Ada yaradıcıları əsas diqqəti Amerikanın "birinci şöbələrinin" istəklərinə cavab verməyə qoyduğundan, məlumatların bağlanması (görünürlük) vasitələri və yalnız digər tərtibatçıların spesifikasiyalarından (modulların interfeys təsvirləri) istifadə edərək ayrı bloklar yaratmaq imkanı idi. öz dövrü üçün ən qabaqcıl. Məsələn, qanadlı raketin uçuş yolunu hesablamaq üçün əslində kodu yazan proqramçı, modulunun harada və hansı məqsədlər üçün istifadə olunacağı barədə heç bir fikri yox idi, baxmayaraq ki, o, digər işçilərin tələb olunan spesifikasiyalarına çıxışı var idi və öz bölməsində debug edə bildi. kodu heç bir problem olmadan. Müxtəlif səviyyəli spesifikasiyalara girişin ciddi şəkildə diferensiallaşdırılması səbəbindən, verilmiş prosedurun niyə və hansı vasitələrlə çağırılacağını müəyyən etmək bəzən mümkün olmur. Bununla birlikdə, müstəqil proqram hazırlamaq istəyi modulun spesifikasiyası ilə yan təsirlərə səbəb ola biləcək bəzi "deşiklərin" görünüşü arasında çox mürəkkəb bir əlaqə sisteminə səbəb oldu, lakin bunların olması ABŞ Müdafiə Nazirliyi tərəfindən hətta faydalı hesab edildi. .

Məlumatların yazılması elementləri əhəmiyyətli dərəcədə gücləndirilib, növlərin özləri daha rəsmiləşdirilib. Bütün I/O funksiyaları standart sintaksisdən çıxarıldı və istisnaların idarə edilməsi dilin ayrılmaz hissəsinə çevrildi. Bundan əlavə, idarəetmə strukturlarının gücü son həddə çatdırıldı ki, bu da Ada dilini digər Paskala bənzər dillər arasında ən qabaqcıl etdi.

Borland tezliklə modul konsepsiyasının yerləşdiyi Turbo Pascal-ı buraxdı və Paskal versiyasını imkanlarına görə Ada-ya yaxınlaşdırdı, lakin xoşbəxtlikdən, 3-cü nəsil qeyri-obyektiv proqramlaşdırma dillərini yaratmaq üçün başqa cəhdlər edilmədi. çox böyük layihələrin inkişafı üçün nəzərdə tutulub. Buna görə də, Ada Fortran və Alqol dillərindən başlayaraq sadə prosedur dillərinin uzun bir xəttinin sonunu qeyd etdi. Əslində ideologiya çərçivəsində düşünülə bilən hər şey strukturlaşdırılmış proqramlaşdırma, Cəhənnəmdə təcəssüm olundu. Sonra obyekt proqramlaşdırması partladı və Ada arxa plana keçdi.

Bununla belə, bu dil hələ də tayı-bərabəri olmayan bir yeri tutur. Modulların ayrıca tərtib edilməsi və spesifikasiyaların iyerarxik məxfiliyinin təmin edilməsi ilə yanaşı, bu dil paralel proqramlaşdırmaya dəstək kimi bir xüsusiyyət həyata keçirdi. Az və ya çox cəhd etdi yüksək səviyyə ALGOL-68-də, sonra Modul-2-də işlənib hazırlanmışdır, o, çox güclü Ada alətlərində, bir-birindən asılı olmayaraq yerinə yetirilə bilən tapşırıqlar adlanan alətlərdə təcəssüm edilmişdir. paralel kompüterlər. Bu, tək prosessorlu kompüterdə "psevdoparalel" yerinə yetirilə bilən tapşırıqlara əsaslanan bütöv bir proqramlaşdırma ideologiyasının doğulmasına səbəb oldu. Eyni zamanda, həll olunan problem bir-biri ilə müstəqil şəkildə qarşılıqlı əlaqədə olan eyni vaxtda işləyən prosedurlar toplusuna bölündü. Bu, Proloqda problemin həlli yolunu bir az xatırladırdı: müəyyən bir virtual dünya sadəcə təsvir olunur, sonra o, sanki, işə salınır və həlli öz-özünə tapılır.

Təəccüblüdür ki, ABŞ Müdafiə Nazirliyi bu və ya digər səbəblərdən mükəmməl şəkildə təcəssüm etdirdiyi obyektiv ideologiyadan imtina etdi.

60-cı illərdə Simula-67-də və yəqin ki, bir dəfədən çox peşman oldum. Düzdür, obyekt yönümlü proqramlaşdırmanın təmin etdiyi bir sıra imkanların müəyyən pafoslu əvəzetməsi Ada dilinə - sözdə şablonlar, yəni müəyyən edilməmiş tiplərin parametrləri olan prosedurlar tətbiq edildi. Ancaq yenə də Ada'nın bu gün daha inkişaf etmiş dillərin hücumuna tab gətirməyə imkan verən əsas üstünlükləri, güclü maliyyələşdirməyə əlavə olaraq, tapşırıqların paralel icrası üçün daxili dəstək və onların qarşılıqlı əlaqəsini əlaqələndirmək üçün güclü vasitələr idi. Qeyd etmək lazımdır ki, Ada-nın əsas diqqəti ABŞ Müdafiə Nazirliyindəki mühasibat avtomatlaşdırma sistemləri deyil, məsələn, qəbul edilən məlumatları eyni vaxtda emal etmək lazım olan, məsələn, real vaxt rejimində təyinatlı raketin mikroprosessor naviqasiyası kimi sırf döyüş missiyalarıdır. müxtəlif müxtəlif sensorlardan. Əvvəllər bu cür tapşırıqlar assemblerdə yazılırdı ki, bu da bir çox səhvlərə və texniki xidmətdə çətinliklərə səbəb olurdu. Bu cür tapşırıqlar üçün Ada, əlbəttə ki, mükəmməl uyğun gəlir.

Bununla belə, Ada özünü mövqeləndirməyə davam edir yaxşı çarə böyük inkişafı üçün proqram sistemləri. Düzdür, indi bu dili dəstəkləyən səslər daha sakit səslənir, buna bənzər bir şey: "Ada, heç olmasa, C-dən pis deyil." ABŞ Müdafiə Nazirliyi özünün əsas səhvini - proqramların hazırlanması texnologiyası üçün müasir tələblərə uyğun olan obyektlərin çatışmazlığını nəzərə alaraq, yeni standart ISO/IEC 8652:1985(E) dili. O, dilin Ada95 (və ya Ada9X) versiyasını təsvir edir. Ən maraqlısı odur ki, bu versiya dünyanın ilk obyekt yönümlü proqramlaşdırma sistemidir ki, onun üçün beynəlxalq standart, yəqin sifarişlə təqdim olunub (C++ ilə bu hələ işləmir). Bundan əlavə, dil modul spesifikasiyalarında məlumatların görünməsinin əlaqələndirilməsi sistemini təkmilləşdirdi və paralel tapşırıqların səmərəliliyini artırmaq üçün alətlər əlavə etdi.

ABŞ Müdafiə Departamenti onun bahalı ideyasına olduqca qısqanclıqla yanaşır və hətta “Ada” sözünü ticarət nişanı kimi qeydiyyata alıb. Lakin sonradan, əmtəə nişanının əvəzinə, Moskva vilayəti daxili sertifikatlaşdırılmış marka kimi "Ada" dan istifadə etmək qərarına gəldi. ABŞ Müdafiə Nazirliyi bu dilin kommersiya versiyalarının ortaya çıxmasından o qədər də sevinmir. Əlbəttə ki, heç kimin öz tərtibçinizi yazmağınızı qadağan etmək hüququ yoxdur, lakin onun kommersiya baxımından tanınması üçün o, hərbi standarta cavab verməlidir və sınaq yalnız ABŞ Müdafiə Nazirliyinin AJPO komitəsi tərəfindən həyata keçirilir. , bu, tərtibçinin bir çox tələblərə, o cümlədən açıq-aşkar və sırf siyasi tələblərə uyğunluğunu çox ciddi şəkildə yoxlayır.

Buna baxmayaraq, Ada-nın müxtəlif versiyalarını, adətən proqramlaşdırma dillərində olduğu kimi, pulsuz, yəni heç bir şey üçün, lakin pirat şəkildə deyil, sadəcə pulsuz versiyaları və əlbəttə ki, pulla əldə etmək olar.

Sərbəst şəkildə yayılan versiyalardan ilk növbədə GNAT kompilyatorunu - GNU Ada95-i vurğulamaq lazımdır. O, GNU (pulsuz proqram təminatı) layihəsindən mənbə kodunda mövcuddur. O, bir prosessorlu kompüterdə də işləyə bilər, sadəcə olmalıdır əməliyyat sistemi multitasking dəstəklənir. Bu, məsələn, UNIX və ya OS/2-nin bəzi versiyası ola bilər. MS DOS-a gəldikdə - özünüz üçün təxmin edin. Bununla belə, əgər siz həqiqətən də fərdi kompüterinizdə MS DOS 6.x altında yüz və ya iki paralel prosesi işə salmaq istəyirsinizsə, onda siz Ada/Ed - dilin 1987-ci il versiyası üçün tərtibçi və tərcüməçini sınaya bilərsiniz. standarta tamamilə uyğun gəlmir və bir sıra vacib elementlərə malik deyil.

Əgər pulunuz varsa, o zaman vəziyyət, əlbəttə ki, asanlaşır. Orta rus proqramçısının aylıq əmək haqqı daxilində, məsələn, FirstAda satın ala və soyuducuya nəzarət sistemi yaza bilərsiniz. Siz ABŞ Müdafiə Departamenti tərəfindən təsdiq edilmiş Windows, OS/2 və ya UNIX üçün daha bahalı sistemləri birbaşa inkişaf şirkətlərindən almağa cəhd edə bilərsiniz.

Maraqlıdır ki, təkcə dilin özü standartlaşdırılmadı ki, bu da asanlıqla daşınan proqramlar yaratmağa imkan verdi, həm də bir sıra tərtibatçı alətləri - müxtəlif giriş-çıxış kitabxanaları və təşkilatları. GUI, preprosessorlar, yoxlayıcılar, kod generatorları, məntiqi struktur analizatorları mənbə kodu, kompilyatorların sınaqdan keçirilməsi üçün proqramlar və s. Əlbəttə ki, bütün standartlaşdırılmış inkişaf alətlərini özündə birləşdirən böyük paketlər var, lakin onlar çox bahalı görünür.

SSRİ-nin oxşar hərbi problemləri həll etmək üçün hazırlanmış dillər üzərində işlədiyini bilmək çox maraqlı olardı. Yoxsa bizim mütəxəssislər yalnız Məclisdə yazıblar?


Kateqoriyalar