Ang Ada ay isang partikular na mahusay na programming language. Ada (programming language) Ada (programming language) Ada programming language

Kung tatanungin mo ang isang lokal na espesyalista sa IT: "Ano ang Ada?", karamihan ay magkikibit-balikat lamang sa pagkagulat, at ang ilan ay magsasabi pa na ito ay isang patay na wika, na minsang naimbento ng Pentagon, at ngayon ay halos hindi na ginagamit. Sa katunayan, kahit ngayon ang Ada ay isang ganap na maunlad na programming language na aktibong ginagamit sa iba't ibang larangan. Totoo, ang karamihan sa mga programmer ng Russia ay kaunti lamang ang nalalaman tungkol dito.

Marahil ang lahat na kailangang gumamit ng ikalabing-apat na linya ng metro ng Paris ay nagulat nang una nilang makita ang isang tren kung saan walang driver's cabin. Ang paggalaw ng tren sa linyang ito ay ganap na kinokontrol ng programang Ada.

Sa kabila ng lahat, sa ilang mga lugar ng teknolohiya ang Russia ay "nangunguna pa rin sa iba." At isa sa mga ito ay ang disenyo at paggawa ng amphibious aircraft. Ang kinikilalang internasyonal na pinuno sa larangang ito ay ang TANTK na pinangalanan. G.M. Beriev. Ang kumpanya ay nakakuha kamakailan ng mga tool sa pagbuo ng software ng avionics na nakabase sa Ada para magamit sa pag-upgrade ng pinakabagong modelo ng Be-200 nito.

Samantala, ang karamihan ng mga lokal na espesyalista sa IT, sa pinakamainam, ay walang alam tungkol sa wikang Ada, at sa pinakamasama, ay may ganap na hindi tamang ideya ng Ada bilang isang halimaw na wika, na minsang naimbento ng Pentagon para sa pagbuo ng mga sistema ng militar, at ngayon ay tuluyan nang nakalimutan.

Isang maliit na kasaysayan

Ang opisyal na kaarawan ng Ada programming language ay maaaring isaalang-alang noong Pebrero 17, 1983 - ang petsa ng pag-apruba ng pamantayan ng ANSI/MIL-STD-1815-A-1983.

Ang mga teknikal at administratibong hakbang na ginawa ng Ministri ng Depensa bilang bahagi ng proyekto upang lumikha at magpatupad ng Ada ay ganap na napigilan ang paglitaw at pagkalat ng mga diyalekto ng wika. Mula 1983 hanggang sa kasalukuyan, sinusuportahan ng lahat ng industriyal na pagpapatupad ang kasalukuyang pamantayan ng Ada. Pagdating sa mga subset ng Ada, ang mga subset na ito ay tinutukoy hindi sa pamamagitan ng pagpapatupad, ngunit sa pamamagitan ng mga pamantayan sa pag-unlad ng isang partikular na klase ng mga system.

Noong 1987, ang pamantayan ng ANSI ay pinagtibay nang walang isang solong pagbabago bilang isang pamantayang ISO (ISO/IEC 8652), at nang ang pangangailangan para sa pagbabago ng pamantayan ay naging kinakailangan noong unang bahagi ng 1990s, ang gawaing rebisyon ay isinagawa din sa ilalim ng direksyon at pondo ng US Department of Defense. Ang isang bagong internasyonal na proyekto ay inilunsad, na natapos sa pag-apruba sa pagtatapos ng 1994 at ang paglalathala sa simula ng 1995 ng isang bagong bersyon ng pamantayang ISO/IEC 8652 Ito ang dokumentong ito na nagsisilbing kahulugan ng Ada programming language.

Sa USSR, noong unang bahagi ng 80s, isang Working Group sa Ada programming language ang nabuo sa ilalim ng State Committee on Science and Technology. Ang lahat ng bukas na impormasyon tungkol sa proyekto ay maingat na nakolekta at nasuri, at nakuha din ang classified na impormasyon sa pamamagitan ng mga pagsisikap ng mga espesyal na serbisyo. Ang mga proyekto ay inayos upang ipatupad ang Ada para sa halos lahat ng mga arkitektura ng computer na ginagamit noong panahong iyon, at ang ilan sa mga ito ay naging matagumpay. Ang pagbagsak ng USSR ay nagtapos sa aktibidad na ito. Ngayon ang Ada ay ginagamit sa Russia at sa CIS ng mga indibidwal na mahilig.

Ano ba Ada

Ang lahat ng mga modernong wikang pang-industriya ay nagbibigay ng parehong pangunahing hanay ng mga kakayahan, hindi naiiba sa kung ano ang pinapayagan nilang gawin mo, ngunit sa kung paano eksaktong pinapayagan ka nilang gawin ito. Gayunpaman, pinalawak ni Ada, sa hindi bababa sa dalawang aspeto, ang karaniwang hanay ng mga kakayahan para sa mga modernong wika. Una, nagbibigay si Ada ng mataas na antas ng mga tool sa programming para sa mga asynchronous na proseso. Pangalawa, ito ang tanging wika na matatawag na modular nang walang anumang reserbasyon.

Ang ganitong halimbawa ay kailangan lamang upang pabulaanan ang medyo laganap na mito na ang Ada ay isang malaki, masalimuot at "mabigat" na wika, na angkop lamang para sa pagsusulat ng napakalaking at napakakumplikadong mga sistema. Sa katunayan, maaaring gamitin ang Ada upang bumuo ng mga maliliit at katamtamang laki ng mga programa na may parehong tagumpay tulad ng mga modernong clone ng C, Pascal, BASIC at Java. Kaya, isang klasikong halimbawa ng programang "Hello, World!" ganito sa Ada:

Madaling makita na ang Ada code ay katulad ng Pascal code na pinili bilang prototype nito. Ang unang linya ay naglalarawan ng kaugnayan ng pinagsama-samang module na ito sa iba pang mga module - ito ay nagpapahiwatig na ang Hello_World routine ay dapat na pinagsama-sama ng Ada.Text_IO module, na isang bahagi ng paunang-natukoy na library.

Ang sumusunod na programa ay tumutukoy sa dalawang asynchronous na proseso:

Ang seksyon ng mga lokal na deklarasyon ng Tasking_Example na pamamaraan ay naglalarawan sa Outputter na gawain (linya 6; mga linya 8 hanggang 17 ay naglalaman ng katawan ng gawaing ito). Kapag ang kontrol sa proseso na naaayon sa Tasking_Example na pamamaraan ay umabot sa linya 20, ang proseso na naaayon sa Outputter na gawain ay sinimulan bago isagawa ang unang pahayag na ito, pagkatapos nito ang dalawang proseso ay mabubuhay at isagawa nang asynchronous nang hiwalay sa isa't isa. Ang pagpapatupad ng pahayag ng pagkaantala (mga linya 14 at 20) ay binubuo ng pagsususpinde sa kaukulang proseso para sa tinukoy na bilang ng mga segundo. Kaya, ang proseso ng Tasking_Example ay sinuspinde ng 20 segundo habang ang proseso ng Outputter ay nagsisimulang mag-print ng mga incremental na halaga ng counter, na humihinto ng isang segundo pagkatapos mai-print ang bawat halaga. Pagkatapos ng 20 segundo, itinatakda ng proseso ng Tasking_Example ang Finished flag sa true, na nagtatapos sa loop sa proseso ng Outputter. Ang pagtutukoy ng Finished variable bilang isang atomic data object (linya 4) ay ginagawang imposibleng sabay na basahin at baguhin ang halaga ng variable na ito.

Nasa ibaba ang isang function na template na nagbibigay-daan sa iyong magdagdag ng dalawang one-dimensional arrays componentwise. Maaaring itakda ang pattern na ito sa isang arbitrary na uri na isang one-dimensional na array na ang mga bahagi ay may tinukoy na mga pagpapatakbo ng pagtatalaga at pagdaragdag (ang karagdagan ay hindi kailangang isang aritmetika na karagdagan).

Ang mga linya 1-6 ay naglalaman ng deklarasyon ng custom na function, at ang mga linya 8-20 ay naglalaman ng katawan nito. Sa esensya, ang setting na parameter ay isang arbitrary na one-dimensional na regular na uri na may hindi natukoy na hanay ng index (linya 4), kung saan alam lamang na ang uri ng bahagi nito ay arbitrary, ngunit ang pagpapatakbo ng pagtatalaga ay tinukoy para sa mga bahagi (linya 2), ang uri ng index ay arbitrary discrete (linya 4) . Dahil magdadagdag tayo ng dalawang arrays na componentwise, kailangan nating malaman kung ano ang pagpapatakbo ng karagdagan para sa uri ng bahagi. Dahil ito ay isang arbitrary na uri, napipilitan kaming ipasa ang karagdagan para sa uri ng bahagi bilang isang pormal na parameter ng setting (linya 5).

Sa katawan ng function, sinusuri muna namin kung ang mga haba ng mga operand ay pareho (linya 12), kung hindi, ang pagdaragdag ng component ay hindi makatuwiran. Ang pagtutugma ng mga haba ng operand ay hindi ginagarantiyahan ang pagtutugma ng mga saklaw ng index, kaya sa isang loop sa ibabaw ng hanay ng index ng unang argument (linya 15), kailangan nating kalkulahin ang index ng katumbas na bahagi ng pangalawang argumento sa bawat oras. Hindi namin magawa ito para sa uri ng Index, dahil alam lang namin na ito ay discrete, kaya pumunta kami mula sa halaga ng discrete type patungo sa ordinal number nito (attribute?Pos), kalkulahin ang kinakailangang shift para sa ordinal number at bumalik sa katumbas na halaga ng uri ng Index ( attribute?Val).

Tandaan na ang mga parameter ng (custom) function na "+" Kaliwa at Kanan ay idineklara na may uri ng Arr, ang hanay ng index na hindi tinukoy. Gayunpaman, ang Kaliwa at Kanan ay mga pormal na parameter, kung saan ang lugar, kapag tumatawag (ang resulta ng concretization) ang function na "+", ang mga partikular na array na may mga kilalang hanay ng index ay papalitan. Sa katawan ng function na "+", gumagamit kami ng mga attribute ng array (?Range, ?First, ?Length) para makakuha ng impormasyon tungkol sa index range nito mula sa object.

Bakit si Ada?

Ang pagpili ng isang wika para sa isang software project ay dating isang purong teknikal na usapin. Ngayon ito ay naging isang bagay ng estratehikong kahalagahan, na may malalayong kahihinatnan para sa tagumpay ng proyekto. Ilista natin ang ilan sa mga dahilan kung bakit pinili ang wikang Ada para sa pagpapatupad ng mga proyekto ng software ng iba't ibang kumpanya, o ginawang mandatory para sa paggamit sa loob ng mga tender.

  • Ang pagnanais na dagdagan ang pagiging maaasahan ng system na binuo, dahil ang mga depekto ng software ay maaaring magkaroon ng malubhang kahihinatnan para sa kalusugan ng tao, ekonomiya, kapaligiran, atbp. (May mga built-in na feature ng pagiging maaasahan ang Ada.)
  • Ang pagnanais na bawasan ang gastos ng pagpapaunlad at pagpapanatili ng system.
  • Availability ng mga internasyonal na pamantayan at pagkakaroon ng mga compiler ng wika para sa halos anumang platform.
  • Ang mga benepisyo ng isang disiplinadong diskarte sa pagbuo ng software ay nagiging lalong makabuluhan habang lumalaki ang software sa laki at pagiging kumplikado.
Si Ada at Si

Kapag nagsasagawa ng mga paghahambing na pagsusuri ng mga tanyag na wika, napakaraming kopya ang nasira anupat sa ngayon ang paksang ito ay madalas na nauuri bilang "mga digmaang panrelihiyon." Samakatuwid, lilimitahan natin ang ating mga sarili sa isang sanggunian lamang sa isang kilalang artikulo, na gumagawa ng maraming mahuhusay na konklusyon.

  1. Ang pagbuo ng mga programa sa wikang Ada ay nagkakahalaga ng 60% na mas mababa kaysa sa mga katulad na proyekto ng software na ipinatupad sa C.
  2. Ang isang programa sa Ada ay may 9 na beses na mas kaunting mga depekto kaysa sa isang programa sa C; Ang isang C++ program ay may mas mababang katangian kaysa sa isang C program.
  3. ay mas gusto sa C para sa parehong may karanasan at walang karanasan na mga programmer, gayundin para sa mga programmer na may parehong maximum at minimum na mga rating sa kanilang grupo.
  4. Ang pagiging kumplikado ng pag-aaral ng wikang Ada ay hindi mas mataas kaysa sa pagiging kumplikado ng pag-aaral ng C.
  5. Ang mga programang Ada ay mas maaasahan kaysa sa mga programang C.

Upang ilarawan ang mga konklusyong ito, nagbibigay kami ng isang halimbawa ng pagbuo ng on-board software para sa C-130J aircraft alinsunod sa mga kinakailangan ng Level A ng DO-178B standard. Kasabay nito, ang kalidad ng code ay 10 beses na mas mataas kaysa sa average para sa Level A na software ay tumaas ng apat na beses kumpara sa maihahambing na mga proyekto ng software.

Ada at Java

Napilitan ang Microsoft na isama ang sumusunod na sugnay sa mga kasunduan sa lisensya para sa mga operating system nito ( www.microsoft.com/msdownload/ieplatform/ie/license.txt): "Isang tala tungkol sa suporta sa wikang Java... Ang teknolohiya ng Java ay hindi mapagparaya at hindi nilayon... para sa paggamit sa mga real-time na sistema ng kontrol... kung saan ang pagkabigo ng wikang Java ay maaaring magresulta sa kamatayan, pinsala, o matinding pinsala sa imprastraktura o kapaligiran. Sun Microsystems, Inc. Kinakailangan ng Microsoft na i-post ang babalang ito."

Ituturo din namin ang mga artikulo at nagpapakita ng mga pakinabang ng wikang Ada sa Java.

"Impiyerno" mga alamat

Kadalasan, ang Ada ay nauugnay sa isang hanay ng mga patuloy na maling kuru-kuro na humahadlang sa parehong pagkalat ng wika at ang sinasadyang pagpili ng Ada bilang isang wika sa pagpapatupad ng proyekto.

Ang Ada ay isang patay na wika ngayon; Sa katunayan, may kumpiyansa na sinasakop ni Ada ang angkop na lugar ng malalaking naka-embed na system na may mas mataas na mga kinakailangan sa pagiging maaasahan. Kung ikukumpara sa mga produktong "naka-box" para sa Windows, ang mga naturang sistema ay hindi gaanong kapansin-pansin, dahil sila ay umiiral sa isang kopya (ano ang punto ng pagkopya ng isang programa na kumokontrol sa paggalaw ng mga tren sa subway), o ipinamamahagi bilang bahagi ng system sa kung saan sila ay binuo (on-board software).

Ang Ada ay isang wikang eksklusibong inilaan para sa mga aplikasyong militar. Ang Ada ay talagang binuo kasama ang paglahok ng US Department of Defense, ngunit walang teknikal, administratibo o iba pang dahilan na pumipigil sa paggamit ng Ada para sa pagbuo ng mga sistemang sibilyan. Ang bilang ng mga proyektong "sibilyan" batay sa wikang ito ay maihahambing ngayon sa bilang ng mga proyektong "militar".

Ang Ada ay masyadong malaki at kumplikadong wika na magagamit sa isang maliit na proyekto. Ang dami at pagiging kumplikado ng lahat ng mga modernong wikang pang-industriya ay halos pareho, at upang kumbinsihin ito, sapat na ihambing lamang ang dami ng kanilang mga paglalarawan. Ang alamat na ito ay nagsimula noong unang bahagi ng dekada 80, nang ikumpara si Ada sa Pascal, Fortran 77 o BASIC.

Mayroong ilang mga programmer na nakakaalam ng Ada; ang pag-aaral ng wika mula sa simula ay nangangailangan ng labis na pagsisikap at oras. Sa katunayan, ang tunay na kahirapan ay ang paghahanap ng mga espesyalista na nakakaunawa sa mga detalye ng mga naka-embed na system at nakakagawa ng mga de-kalidad na programa para sa kanila. Halimbawa, ang BAE, isa sa mga aktibong gumagamit ng wikang Ada, ay hindi nangangailangan ng mga kandidato na malaman ang wikang ito; sa halip, hinahanap ang mga taong pamilyar sa mga naka-embed na system at proseso para sa paggawa ng software na may kalidad na industriyal. Pagkatapos kumuha ng mga ganoong tao, dalawang linggo lamang ang kailangan para ituro sa kanila ang wika ng Impiyerno.

Ang aming personal na karanasan ay nagpapakita na ang mga programmer na pamilyar sa isa o ibang lasa ng Pascal ay nangangailangan lamang ng ilang araw upang simulan ang pagbuo ng mga simpleng programa sa Ada.

Ang mga kasalukuyang teknolohiya ng Ada ay hindi epektibo; Parehong nailalarawan ang mga tagasalin at ang code na nabuo nila sa mababang pagganap. Ang alamat na ito ay nagsimula rin noong unang kalahati ng dekada 80, nang lumitaw ang mga unang pagpapatupad ng Ada, na sa katunayan ay pinatunayan lamang ang "theorem ng pagkakaroon ng isang tagasalin ng Ada na sumusunod sa pamantayan." Ito ay sapat na upang magsagawa ng isang serye ng mga simpleng eksperimento sa pamamagitan ng pagprograma ng ilang problema sa modelo sa Ada, Pascal at C/C++, at pagkatapos ay paghahambing (na may maihahambing na mga parameter ng compiler) ang bilis ng compilation, ang dami ng nabuong code at ang bilis ng pagpapatupad nito. sigurado na walang mga tiyak na inefficiencies , katangian ng Ada, ay hindi umiiral. Mapapansin din na ang GNAT programming system, na may source text volume na higit sa 40 MB, ay 90% na ipinatupad sa Ada, at ang pagbuo nito mula sa mga source na teksto (sa panahon ng kurso nito ay ini-compile nito ang sarili ng tatlong beses) sa isang modernong PC ay tumatagal. hindi hihigit sa kalahating oras.

Ang mga kasalukuyang pagpapatupad ng Ada ay napakamahal. Ito ay totoo, ngunit tandaan na mayroong pampublikong magagamit na bersyon ng GNAT programming system na malayang makukuha at legal mula sa NYU software repository ( ftp://cs.nyu.edu/pub/gnat) kasama ang mga pinagmulang teksto

Libreng keso at kung paano maiwasan ang bitag ng daga

Ang GNAT (GNu Ada Translator) ay isang multi-platform na pagpapatupad ng wikang Ada na umiiral sa halos lahat ng modernong pang-industriya na platform at sumusuporta sa pagbuo ng code para sa mga sikat na naka-embed na arkitektura. GNAT ( www.gnat.com) ganap na nagpapatupad ng pamantayan ng Ada, kabilang ang mga aklatan na inuri bilang opsyonal ayon sa pamantayan. Bilang karagdagan sa mismong tagasalin ng Ada, ang GNAT ay may kasamang mga tool na may kasamang binuong pinagsama-samang kapaligiran ng developer at isang multilingual na graphical debugger, na nagbibigay-daan, bukod sa iba pang mga bagay, upang suriin ang gawi ng mga program na may mga asynchronous na proseso. Ang tagasalin at mga kaugnay na tool ay maaaring gamitin nang isa-isa, pagtawag sa kanila mula sa command line, o bilang bahagi ng pinagsama-samang graphical development environment para sa mga programang Ada. Ang lahat ng bahagi ng GNAT, kabilang ang development environment, ay may parehong interface sa lahat ng platform. Bilang karagdagan sa buong pagpapatupad ng mga tool na inilarawan ng pamantayan, nag-aalok ang GNAT ng maraming hanay ng mga extension na pinapayagan ng pamantayan. Ang GNAT ay isang pagpapatupad ng Ada sa gcc multilingual programming system, na binubuo ng isang hanay ng mga front-end compiler para sa iba't ibang wika ng pag-input na may isang karaniwang generator ng code, na lubos na nagpapadali sa pagbuo ng mga programa na naglalaman ng mga bahagi na ipinatupad sa iba't ibang mga wika ng programming.

Ang GNAT ay binuo at ipinamahagi sa ilalim ng lisensya ng GPL mula pa sa simula. Sa kasamaang palad, mayroon ding maraming mga alamat na nauugnay sa GPL. Kaya, marami ang naniniwala na ang mga programa sa ilalim ng GPL ay binuo ng mga hindi organisadong grupo ng mga mahilig at ganap na ibinahagi nang walang bayad; Bilang resulta, ang pagiging maaasahan at pag-andar ng mga naturang programa ay nag-iiwan ng maraming naisin at hindi pinapayagan ang kanilang paggamit sa anumang seryosong mga proyekto. Sa kaso ng GNAT ito ay malayo sa totoo. Upang i-verify ito, tingnan lamang ang listahan ng mga kumpanyang pumasok sa mga kontrata ng teknikal na suporta sa mga developer nito: Boeing, British Aerospace, Lockheed, Ericsson, SAAB, Avionics, atbp.

Ang malayang pagbibigay ng mga bersyon ng demo ay isang karaniwang kasanayan ng maraming mga developer ng software. Ang GNAT ay naiiba dahil ang malayang magagamit na pampublikong bersyon ay isang ganap na kumpletong bersyon ng teknolohiya, nang walang anumang legal o teknikal na paghihigpit sa paggamit nito. Ang ilang mga seryosong proyekto ay matagumpay na naipatupad batay sa mga pampublikong bersyon ng GNAT. Software ng Beagle 2 lander ng European automatic station Mars Express, kasalukuyang papunta sa Mars ( www.beagle2.com/index.htm), awtomatikong istasyon ng komunikasyon sa dokumentaryo ng Ministry of Defense ng Russian Federation ( www.ada-ru.org/prj_doc.html). Ang tanging disbentaha ng mga pampublikong bersyon ay ang developer ay hindi nagbibigay ng teknikal na suporta para sa kanila.

Konklusyon

Bilang buod, ang wikang Ada ay nagbibigay sa mga developer ng perpektong kumbinasyon ng integridad, pagkakapare-pareho, pagiging maaasahan at kahusayan. Sinusuportahan ng wika ang malikhaing pagkamalikhain at pagbabago habang nagbibigay ng disiplina at pang-industriya na antas ng pagbuo ng software na kailangan upang ipatupad ang mga sistema ng software na napakahalaga.

Panitikan
  1. Benjamin Brosgol, Panimula sa Ada 95. www.embedded.com/story/OEG20021211S0034
  2. Stephen Zeigler, Paghahambing ng Mga Gastos sa Pag-unlad ng C at Ada. www.adaic.com/whyada/ada-vs-c/cada_art.html www.ada-ru.org. Ang isang annotated na bibliograpiya ng mga libro sa wikang Ada na inilathala sa Russian ay matatagpuan sa website

Abstract sa paksa:

Ada



Plano:

    Panimula
  • 1 Mga katangian ng wika
  • 2 "Kumusta, mundo!" kay Ada
  • 3 Kasaysayan
  • 4 Impiyerno sa USSR at Russia
  • 5 Pagpuna
  • 6 Pamamahagi, mga prospect
  • 7 Mga operating system na nakasulat sa Ada
    • 7.1 Mga Naka-embed na Sistema
    • 7.2 Mga sistema sa pag-unlad
    • 7.3 Wala nang mga umiiral na sistema
  • 8 Tagapagtipon ng Impiyerno
  • 9 Mga wikang hinango
  • 10 Interesanteng kaalaman
  • Mga Tala
    Panitikan

Panimula

Ada (Ada) ay isang programming language na nilikha noong 1979-1980 bilang resulta ng isang proyektong isinagawa ng US Department of Defense upang bumuo ng isang pinag-isang programming language para sa mga naka-embed na system (iyon ay, mga control system para sa mga automated system na tumatakbo sa real time). Ang ibig sabihin, una sa lahat, ay mga on-board control system para sa mga bagay na militar (mga barko, eroplano, tangke, missile, shell, atbp.). Ang mga developer ay hindi nahaharap sa gawain ng paglikha ng isang unibersal na wika, kaya ang mga desisyon na ginawa ng mga may-akda ng Ada ay dapat gawin sa konteksto ng mga katangian ng napiling lugar ng paksa. Ang wika ay ipinangalan kay Ada Lovelace.


1. Mga katangian ng wika

Sa orihinal nitong anyo, na-standardize noong 1983, ang Ada ay isang structured, modular na programming language na naglalaman ng mataas na antas ng parallel process programming na mga kakayahan. Ang syntax ni Ada ay minana mula sa mga wika tulad ng Algol o Pascal, ngunit pinalawak, at ginawang mas mahigpit at lohikal. Ang Ada ay isang malakas na pag-type ng wika, hindi kasama ang trabaho sa mga bagay na walang mga uri, at ang mga awtomatikong uri ng conversion ay binabawasan sa isang ganap na minimum. Sa 1995 standard, ang mga pangunahing object-oriented programming tool ay idinagdag sa wika sa 2007 standard, ang mga tool na ito ay dinagdagan, kaya ang modernong Ada ay isang object-oriented na programming language.

Ang mga tampok ng syntax ay kinabibilangan ng:

  • Ang wika ay case-insensitive.
  • Ang mga programa ay modular, ang mekanismo para sa pagkontrol sa pag-import-export ng mga paglalarawan sa pagitan ng mga module ay may kasamang dalawang magkakaibang mga direktiba: isa para sa pagkonekta sa isa pang module (kasama), ang isa para sa pag-import ng mga paglalarawan nito (gamitin). Posible ring palitan ang pangalan ng isang module sa panahon ng pag-import (rename) - pinapayagan ka ng opsyong ito na gumamit ng higit pang mga programmer-friendly na identifier upang italaga ang package.
  • Ang mga pakete (isa sa mga uri ng mga module) ay maaaring maglaman ng isang header at isang pribadong bahagi - kung ano ang nilalaman nito ay hindi na-export at hindi magagamit sa iba pang mga module.
  • Ang isang mekanismo ng pangkalahatan (nako-customize) na mga module ay suportado: mga pakete, pamamaraan at pag-andar na nagbibigay-daan sa iyong ilarawan ang mga pangkalahatang algorithm sa pagpoproseso ng data nang hindi tinukoy ang isang partikular na uri.
  • Isang binuo na sistema ng mga uri, parehong built-in at binuo ng programmer. Maraming paraan para gumawa ng mga bagong uri, at sinusuportahan ng wika ang dalawang magkaibang konsepto: "subtype" at "derived type". Ang mga variable ng isang uri at ang subtype nito ay magkatugma, ang mga variable ng isang uri at ang hinangong uri nito ay hindi.
  • Exception handling facility.
  • Binuo na paraan ng pag-access sa mga pamamaraan at pag-andar: sumusuporta sa mga parameter ng input at output, pagpasa ng aktwal na mga parameter sa anumang pagkakasunud-sunod na may indikasyon ng mga pormal na pangalan, mga parameter na may mga default na halaga.
  • Sinusuportahan ang muling pagtukoy sa mga pamamaraan, function at operator - paggawa ng ilang variant ng procedure, function o operator na may parehong pangalan, ngunit magkaibang mga lagda (mga uri at bilang ng mga parameter).
  • Parallel programming support structures built in the language: ang mga konsepto ng "task" (isang parallel executed program fragment), "task input" (isang paraan ng pag-synchronize at komunikasyon ng parallel running tasks) ay sinusuportahan, ang "rendezvous" na mekanismo ay sinusuportahan ( isang protocol para sa pakikipag-ugnayan ng mga parallel running na gawain sa pamamagitan ng input ng isa sa mga ito ), mayroong isang SELECT operator para sa pag-aayos ng conditional inter-thread interaction (pagpili ng isang parallel na gawain kung saan makikipag-ugnayan, depende sa kahandaan para sa isang rendezvous at ilang iba pang kundisyon ). Sa prinsipyo, ang mga parallel programming tool na magagamit sa wika ay sapat upang malutas ang isang malaking klase ng mga problema na nangangailangan ng parallel processing, nang hindi gumagamit ng mga panlabas na tool, tulad ng mga karagdagang library o operating system API.

Upang matugunan ang mga kinakailangan sa pagiging maaasahan, ang wika ay binuo sa paraang ang pinakamaraming error hangga't maaari ay nakita sa yugto ng compilation. Bilang karagdagan, ang isa sa mga kinakailangan sa pagbuo ng wika ay ang mga teksto ng programa ay dapat na madaling basahin hangga't maaari, kahit na sa kapinsalaan ng kadalian ng pagsulat. Ang resulta ng diskarteng ito ay isang medyo "mabigat" na syntax at maraming mga paghihigpit na wala sa mga pinakakaraniwang pang-industriya na wika (C at C++) at madalas na nakikita ng mga propesyonal na programmer bilang kalabisan, halimbawa, ang parehong mahigpit na pag-type. Ito ay humantong sa pagbuo ng ideya ng Ada bilang isang kumplikado, malabo at hindi maginhawang wika na gamitin.


2. “Kumusta, mundo!” kay Ada

Maraming iba't ibang bersyon ng programang "Hello, world!" makikita sa Wikibooks. Ang mga pagkakaiba ay dahil sa pangangailangang gamitin ang Put_Line library function - ang wikang ito ay may tatlong magkakaibang paraan ng pag-aayos ng paggamit na ito.

Sa Ada.Text_IO ; procedure Hello is use Ada.Text_IO ; begin Put_Line("Hello, world!" ); wakas Hello;

Dito, para magamit ang Put_Line function, ang Ada.Text_IO package na naglalaman nito ay ini-import gamit ang use construct, na ginagawang posible na tawagan ang function sa pamamagitan ng pangalan nang walang kwalipikasyon - tinutukoy ang pangalan ng package na naglalaman ng function sa tawag.


3. Kasaysayan

Ang pagbuo ng wika ay isinagawa bilang bahagi ng isang internasyonal na kompetisyon na inorganisa at pinondohan ng US Department of Defense. Ang layunin ng pag-unlad ay upang makakuha ng isang programming language na maaaring maging pinag-isa para sa pagbuo ng mga proyekto para sa mga order mula sa departamento ng militar, pangunahin para sa pagbuo ng mga naka-embed na sistema para sa mga layunin ng militar at para sa mga malalaking computer ng militar (batay sa processor ng iAPX 432 mula sa Intel). Nagsimula ang gawain noong 1975, kasama ang pagbuo ng isang hanay ng mga kinakailangan sa wika na ganap na makakatugon sa mga developer ng ganitong uri ng mga sistema. Ang unang listahan ng mga kinakailangan, na may codenamed na "Straw", ay isinumite para sa pagsusuri sa isang bilang ng mga organisasyon at kumpanya, at unti-unting pino sa loob ng dalawang taon, sa huli ay naging panghuling dokumento na tinatawag na "Steel".

Matapos makumpleto ang mga kinakailangan, isang pagsusuri ang isinagawa na nagpakita na wala sa mga umiiral na programming language ang sapat na nasiyahan sa mga kinakailangan, kaya ang desisyon ay ginawa upang bumuo ng isang bagong wika. Ang isang kompetisyon para sa paglikha nito ay inihayag noong 1977 ang mga developer ay hiniling na gumamit ng isa sa tatlong wika: Pascal, Algol-68 o PL/1.

Sa 15 na proyektong isinumite sa kompetisyon, 4 ang napili (lahat ay batay sa Pascal). Ang mga proyektong ito ay ipinadala para sa karagdagang pag-unlad. Sa susunod na yugto, sa 4 na proyekto, dalawa ang napili, kung saan, pagkatapos ng karagdagang pagpipino, isa ang napili. Ang wikang ito ay pinangalanang "Ada" - ang pangkat na bumuo nito, na pinamumunuan ng Pranses na si Jean Ishbia, ay nagbigay ng pangalan sa wika bilang parangal kay Augusta Ada King Lovelace (1815-1852), ang anak ng makata na si J. Byron, na bumuo mga programa para sa computer ni Babbage at itinuturing na unang programmer sa mundo.

Noong 1983, ang wika ay opisyal na istandardize ng ANSI. Ang pamantayan ng wika na ANSI/MIL-STD-1815-A-1983 ay naaprubahan noong Pebrero 17, 1983. Ginawa ng US Department of Defense ang pangalang "Ada" bilang isang rehistradong trademark, na nagbabawal sa pagpapalabas ng mga tagapagsalin ng wika na hindi nakapasa sa opisyal na pamamaraan ng pagsubok para sa pagsunod sa mga pamantayan. Ang pamamaraan ay binubuo ng pagpapatakbo ng isang malaking bilang (higit sa 1000) na mga programa sa pagsubok (ang tinatawag na ACVC set) sa pamamagitan ng compiler sa ilalim ng pagsubok, para sa bawat isa kung saan ang resulta ng pagsubok ay malinaw na tinukoy: alinman sa matagumpay na compilation o ang paggawa ng isang napaka-espesipikong maling mensahe. Ang pagsubok ay isinagawa ayon sa "lahat o wala" na prinsipyo - kung mayroong isang error sa pagproseso ng hindi bababa sa isang halimbawa ng pagsubok, ang compiler ay itinuturing na nabigo sa pagsubok, at ang pagsubok ay wasto lamang sa hardware at software platform kung saan ito ay isinagawa. Kaya't ang posibilidad ng pagbuo ng "mga bersyon" o "diyalekto" ng wika ng Ada ay naputol sa simula.

Noong 1987, ang wikang Ada ay opisyal na na-standardize ng ISO. Mula sa sandaling iyon, ginawang magagamit ng Kagawaran ng Depensa ng US ang wika sa publiko.

Noong 1990, mayroon nang humigit-kumulang 200 compiler sa mundo na nakakatugon sa pamantayan ng wikang Ada.

Noong 1995, isang bagong pamantayan ng Ada na kilala bilang Ada95 ang pinagtibay. Ang mga tool sa programming ng object ay ipinakilala sa wika. Bilang karagdagan, ang wika ay dinagdagan ng mas binuo na mga tool para sa pakikipag-ugnayan sa mga programang nakasulat sa ibang mga wika.

Noong Marso 2007, inilathala ang mga pagbabago sa pamantayang Ada. Pangunahin nilang hinawakan ang mga kakayahan ng object-oriented na programming: ang mga interface ay ipinakilala, ang method call syntax na karaniwan sa karamihan ng mga hybrid na wika ay pinagtibay, at maraming iba pang mga pagdaragdag ang ginawa.


4. Ada sa USSR at Russia

Sa USSR noong 80s, isang Working Group sa Wika ng Ada ang inorganisa sa ilalim ng State Committee on Science and Technology. Pinag-aralan ng grupo ang lahat ng bukas (pati na rin, ayon sa mga alingawngaw, lihim na nakuha ng katalinuhan) na data sa wikang Ada at sinisiyasat ang posibilidad at pagiging posible ng pag-unlad at paggamit ng Ada sa USSR. Ang mga aktibidad ng pangkat na ito ay humantong sa pagtatapos ng 80s sa pagbuo ng mga compiler ng Ada para sa halos lahat ng mga computer na ginagamit sa USSR. Maraming mga libro sa wika ng Ada ang nai-publish sa Russian.

Ang Moscow State University ay nagtrabaho upang lumikha ng sarili nitong mga pakete para sa pagsubok sa mga tagasalin ng Ada para sa pagsunod sa mga pamantayan. Sa Leningrad State University, upang lumikha ng Ada system, ginamit ang Pallada system, na dati nang binuo para sa pagpapatupad ng Algol-68, na inilipat sa Ada. Ang system ay naglalaman ng pinagsama-samang development environment, compiler, text editor, debugger, library, version control system at command interpreter.

Matapos ang pagbagsak ng USSR, ang trabaho sa pamamahagi ng Ada ay halos naantala. Totoo, tatlong programa para sa pagpapaunlad ng software development sa Ada ang pinagtibay (sa Ministry of Defense, Ministry of Civil Aviation at Ministry of Education and Science), ngunit ang kanilang pag-unlad ay mabagal at hindi magkakaugnay. Bilang resulta, ang wikang Ada ay hindi gaanong kilala sa Russia ang karamihan sa mga modernong Ruso na programmer ay itinuturing itong isang "patay na wika" at walang alam tungkol dito. Ang Ada ay ginagamit sa Russia at sa CIS ng mga indibidwal na mahilig. Gayunpaman, ang wika ay ginagamit para sa pang-industriyang software development. Mayroong ilang mga kilalang proyekto na binuo sa Ada at tumatakbo sa Russia. Sa kanila:

  • Dokumentaryo na istasyon ng komunikasyon ng RF Ministry of Defense. Ang pangunahing gawain ay upang matiyak ang pagpapalitan ng impormasyon ng dokumentaryo sa mga network ng data ng Ministry of Defense ng Russian Federation. Ang software at hardware complex ay magkasamang binuo ng Production Organization "Computer Technology and Automation" (hardware) at isang grupo ng mga programmer mula sa off-road sector ng North Caucasus Air Traffic Control Center "Strela". Ang software ng complex ay nakasulat sa Ada programming language gamit ang GNAT compiler. Ang suporta para sa distributed computing ay ibinibigay ng karagdagang bahagi ng GLADE.
  • Isang set ng standard na flight, navigation at communications equipment para sa isang Russian amphibious aircraft Beriev Be-200. Ang pag-unlad ay isinagawa ng Research Institute of Aviation Equipment sa Zhukovsky, kasama ang American company na Allied Signal, Florida, USA. Ginamit ang Ada-systems development complex mula sa DDC-I sa Intel 80486 platform.

5. Pagpuna

Mula nang lumitaw ito, ang Ada ay binatikos ng ilang kinikilalang awtoridad sa larangan ng pag-unlad ng programming language, pangunahin para sa pagiging kumplikado ng syntax at malaking volume nito. Sa partikular, ang wika ay pinuna nina Charles Hoare at Niklaus Wirth (na lumahok sa kanilang proyekto sa kumpetisyon na ito, ngunit bumaba pagkatapos ng unang yugto), pati na rin ni Edsger Dijkstra.

Nag-alinlangan si Dijkstra na ang isang wikang kasing kumplikado ng Ada ay maaaring maobserbahan at mapapamahalaan.

Kung maglalabas si Ada ng isang pamantayan, nais nitong maging malinaw na dokumentado. Hindi bababa sa dalawang grupo ang nagtangka nito; bilang resulta, parehong nakagawa ng humigit-kumulang 600 mga pahina ng pormal na teksto. Ito ay higit pa sa kinakailangan upang matiyak na imposibleng maging matatag na itatag na ang parehong mga dokumento ay tumutukoy sa parehong wika. Ang kasalanan sa maliwanag na kawalan ng kontrol ng dalawang dokumentong ito ay wala sa dalawang grupo na nagtipon sa kanila, hindi sa pormalismo na kanilang pinagtibay, ngunit sa mismong wika lamang: nang hindi nagbibigay ng pormal na kahulugan, maaaring itago ng kanilang mga developer ang katotohanan na sila ay nagmumungkahi isang halimaw na hindi mapigil. Na babawasan ni Ada ang mga problema sa programming at pataasin ang pagiging maaasahan ng aming mga disenyo sa mga katanggap-tanggap na limitasyon ay isa lamang sa mga fairy tale na tanging mga taong may background sa militar ang maaaring paniwalaan.

Science fiction at siyentipikong katotohanan sa computer science (Edsger W. Dijkstra, EWD952)

Ikinalungkot ni Hoar na "ang mga kampanilya at sipol ay nanguna sa mga pangunahing pangangailangan ng pagiging maaasahan at kaligtasan" at nagbabala laban sa "isang armada ng mga missiles na papunta sa maling paraan dahil sa isang hindi natukoy na bug sa Ada compiler." Si Niklaus Wirth ay nagsalita nang mas pinigilan, ngunit negatibo rin. Aniya: “Masyadong marami ang ibinabato sa programmer. Hindi ko akalain na pagkatapos mong pag-aralan ang ikatlong bahagi ng Ada, maaari kang magtrabaho nang normal. Kung hindi mo master ang lahat ng mga detalye ng wika, maaari kang matisod sa mga ito sa hinaharap, at ito ay hahantong sa hindi kasiya-siyang mga kahihinatnan." Si Jean Ishbia, ang pinuno ng development team ni Ada, habang ipinapahayag ang kanyang "paggalang at paghanga" para kay Wirt, ay hindi sumang-ayon, at sinabing, "Naniniwala si Wirth sa mga simpleng solusyon sa mga kumplikadong problema. Hindi ako naniniwala sa mga ganitong himala. Ang mga kumplikadong problema ay nangangailangan ng mga kumplikadong solusyon."

Ang pamamaraan para sa pagsuri sa pagsunod ng compiler sa pamantayan ng wika sa pamamagitan ng pagsubok ay nagdudulot din ng mga pagdududa. Bilang pangkalahatang usapin, malinaw na ang pagsubok ay makakahanap ng mga hindi pagkakapare-pareho, ngunit hindi magagarantiya ng tama. Ang praktikal na kumpirmasyon nito ay ang katotohanan na ang mga sertipikadong compiler, kapag sinubukan sa ibang hanay ng mga pagsubok, ay natagpuan ang hindi pagsunod sa pamantayan.

Ang mga tagapagtaguyod ng Ada ay nangangatwiran na ang tanging alternatibo sa isang malaki at kumplikadong wika sa malalaking proyekto ay ang paggamit ng ilang mga compact na wika, na hindi maiiwasang magdulot ng mga problema sa compatibility na inimbento ni Ada upang alisin. Napansin din nila na ang ideya ng kahirapan sa pagbuo sa Ada ay bahagyang totoo lamang: ang pagsulat ng isang simpleng programa sa Ada ay tumatagal ng mas maraming oras kaysa sa iba, hindi gaanong pormal na mga wika tulad ng C, ngunit ang pag-debug at pagpapanatili ng mga programa, lalo na. malaki at kumplikado, ay lubos na pinasimple. Ayon kay Stephen Zeiger mula sa Rational Software Corporation, ang pagbuo ng software sa Ada ay karaniwang 60% na mas mura, at ang binuo na programa ay may 9 na beses na mas kaunting mga depekto kaysa kapag gumagamit ng wikang C.


6. Pamamahagi, mga prospect

Sa pagsasagawa, lumabas na si Ada, na sinakop ang inilaan nitong angkop na lugar sa militar at mga kaugnay na pag-unlad ng mga naka-embed na sistema, ay hindi kailanman lumampas sa angkop na lugar na ito, ni sa Kanluran, o sa USSR, o sa post-Soviet space. Maraming dahilan para dito. Ang mga kalaban ng wika ay nakatuon sa pagiging kumplikado at mga pagkukulang nito, una sa lahat, ang tungkol sa mga layunin na kalagayan ng paglitaw ng wika at ang mga negatibong aspeto ng proseso ng pagpapatupad nito. Ang opinyon ni S.I. Rybin, senior researcher sa Research Computing Center ng Moscow State University, consultant ng AdaCore EU, eksperto sa wikang Ada ng ISO working group sa pamantayan ng wika, ay kawili-wili. Naniniwala siya na may utang si Ada sa mga kabiguan nito sa dalawang pangunahing dahilan:

  • Sa panahon ng disenyo ng wika, ipinapalagay ng Pentagon na ang lahat ng bagong software ay gagawin lamang sa Ada. Dahil dito, nakatanggap si Ada ng napaka primitive na paraan ng pakikipag-ugnayan sa mga programa sa ibang mga wika. Sa pagsasagawa, lumabas na ang pagsusulat ng lahat sa Ada ay hindi makatotohanan (kung dahil lamang sa pangangailangan na makipag-ugnayan sa mga nakahanda nang pag-unlad sa ibang mga wika). Samakatuwid, sa mga industriya kung saan walang mahigpit na pangangailangan na "magsulat lamang sa Ada," mas gusto nila ang iba pang mga wika na mas inangkop sa isang multilingual na kapaligiran. Nalutas ng pamantayan ng 1995 ang problema ng interoperability sa ibang mga wika, ngunit nawala ang oras.
  • Kabalintunaan, ang pagkalat ng Ada ay napigilan ng suportang pinansyal at organisasyon ng Pentagon. Ang mga programang Ada na isinulat para sa militar ay tumatakbo sa pinakamakapangyarihang computing hardware na magagamit, kaya ang mga developer ng compiler ay pangunahing nag-aalala sa pagpasa sa mga pagsusulit sa ACVC, at pagkatapos lamang sa kahusayan ng compiler at ang code na ginawa nito. Noong unang bahagi ng 1980s, nagsimula ang isang boom sa microcomputers, at ang mga tagapagsalin para sa mga karaniwang wika (Pascal, C, BASIC) ay mabilis na na-optimize para sa mga low-power system. Para sa Ada, walang insentibo para sa naturang modernisasyon, bilang isang resulta, ang mga personal na computer, na pagkaraan ng ilang taon ay naging bulto ng computing fleet sa mundo, ay natagpuan ang kanilang mga sarili na walang mataas na kalidad na tagasalin ng Ada. Natural, nawala ni Ada ang market segment na ito. Relatibong kamakailan lamang ay lumitaw ang GNAT compiler, mataas ang kalidad at produktibo, ngunit dito rin nawala ang oras.

Sa kasalukuyan, ang Ada ay medyo matatag na itinatag sa pagbuo ng mga malalaking naka-embed na sistema ng mas mataas na pagiging maaasahan dito ay halos walang malakas na kakumpitensya. Ang paggamit ng wika ay unti-unting tumataas, bagama't medyo mabagal. Ayon sa ilang maingat na pagtataya [ ], na may mas murang hardware at ang pagkalat ng mga naka-embed na system na may kumplikadong software, ang merkado para sa mga programang Ada ay maaaring lumago nang malaki, at ang paggamit ng wika ay lalago din.

Bilang karagdagan, ang Ada ay, kahit na napakalimitado, na aplikasyon sa mas mataas na edukasyon. Ang mga espesyal na kurso sa Ada ay itinuturo sa Moscow State University at Kharkov University. Gayunpaman, ayon sa parehong S.I. Rybin,

... ngayon sa post-Soviet space sa larangan ng industriya ng software at edukasyon, isang malinaw na mabisyo na bilog ang nabuo: sa industriya halos hindi nila alam ang tungkol kay Ada, nang naaayon, mula sa industriya ay walang kahilingan para sa edukasyon sanayin ang mga espesyalista sa Ada, at ang mga bagong tao ay nagmumula sa mga unibersidad patungo sa industriya, na halos walang alam tungkol kay Ada.


7. Mga operating system na nakasulat sa Ada

7.1. Mga Naka-embed na Sistema

  • MARTE
  • Ang RTEMS ay isang open source OS na binuo ng DARPA ng US Department of Defense
  • Ravenskar
  • RTOS-32 - pagmamay-ari na OS

7.2. Mga sistema sa pag-unlad

  • AuroraUX (isang proyekto upang muling isulat ang OpenSolaris kernel, at pagkatapos ay DragonFly BSD sa wikang Ada)
  • Lovelace (L4 core operating system)

7.3. Wala nang mga umiiral na sistema

  • BiiN™
  • Pulse™
  • AdaOS

8. Tagapagtipon ng Impiyerno

Pangalan kumpanya Bersyon operating system Website
AdaMagic SofCheck Ada 95 ? www.sofcheck.com
AdaMULTI Green Hills Software Ada 83, Ada 95, C, C++, Fortran Solaris SPARC, GNU/Linux x86, Windows www.ghs.com
DEC Ada Hewlett Packard Ada 83 OpenVMS h71000.www7.hp.com
GNAT AdaCore Ada 83, Ada 95, Ada 2005, Si Solaris SPARC, Linux x86/x86-64, Windows, iba pa libre.adacore.com
ICC Irvine Compiler Corporation Ada 83, Ada 95 DEC VAX/VMS, HP 9000/700, Solaris SPARC, DEC Alpha OSF/1, PC Linux, SGI IRIX, Windows www.irvine.com
Janus/Ada RR Software Ada 83, Ada 95 SCO, UnixWare, Interactive, MS-DOS, Windows www.rrsoftware.com
MAXada Kasabay Ada 95 Linux/Xeon, PowerPC www.ccur.com
ObjectAda Aonix Ada 95 Solaris SPARC, HP-UX, IBM AIX, Linux, Windows www.aonix.com
PowerAda Mga Sistema ng OC Ada 83, Ada 95 Linux, AIX (Ada 95); IBM System 370/390 (Ada 83) www.ocsystems.com
Makatwirang Tugatog IBM Rational Ada, C, C++ Solaris SPARC, Linux www-01.ibm.com
ISKOR DDC-I Ada 83, Ada 95, C, Fortran Solaris SPARC, Windows www.ddci.com
XD Ada SWEP-EDS Ada 83 OpenVMS Alpha/VAX www.swep-eds.com
XGC Ada XGC Software Ada 83, Ada 95, Si Solaris SPARC, PC Linux, Windows (Cygwin) www.xgc.com

Maliban sa GNAT at XGC (para sa ilang platform), binabayaran ang mga compiler sa itaas. Ang ilang mga kumpanya, tulad ng Aonix, ay nag-aalok ng mga libreng bersyon ng demo na limitado sa alinman sa oras ng paggamit o pag-andar.

Ang mga kapaligiran ng pag-unlad ng NetBeans at Eclipse ay may mga plugin para sa pagtatrabaho sa Ada.


9. Mga wikang hango

Ginagamit ang syntax ng wika ng Ada sa mga wika tulad ng:

  • PL/SQL

10. Kawili-wiling mga katotohanan

  • Sa pormal na paraan, ang kumpetisyon sa pagpapaunlad ng wika na nagresulta sa paglikha ng Ada ay hindi nakikilala - isinumite ng mga development team ang kanilang mga proyekto sa ilalim ng mga pangalan ng code upang hindi isaalang-alang ng komite ng kumpetisyon ang mga pagkakakilanlan ng mga developer kapag pumipili ng panalo. Ngunit sa pagsasagawa, tulad ng isinulat ng isa sa mga miyembro ng komisyon, ang mga panlasa ng mga developer ay ibang-iba na hindi mahirap matukoy ang may-akda ng proyekto.
  • Ang lahat ng mga wika na umabot sa mga huling round ng kompetisyong ito ay batay sa Pascal. Kaugnay nito, pansamantalang mailalarawan ang Ada bilang Pascal, na binuo na isinasaalang-alang ang ibinigay na limang pangunahing kinakailangan. Kasabay nito, pangunahing sinundan ng mga may-akda ang landas ng pagpapalawak ng Pascal na may mga bagong elemento. Ang resulta ay isang makabuluhang mas kumplikadong wika.
  • Sa wikang Ruso, may mga biro na may kaugnayan sa kalabuan ng ekspresyong "Wika ng Impiyerno", kabilang ang mga batay sa mga parallel sa Russian Algorithmic Language, na kilala rin bilang "Language of HEAVEN". Ang pagtatapos ng isang artikulo ng propagandista ng Sobyet na si Melor Sturua (1984) ay pumasok din sa mga alamat ng programming:

Ang wika ng Pentagon ay ang kaaway ng kapayapaan. Ang wika ng “Ada” ay ang tinig ng thermonuclear hell... Sa wika ng “Ada” ay maririnig ang isang sumpa sa sangkatauhan.


Mga Tala

  1. Ada Gabay sa Sanggunian sa Wika 83. Kabanata 1.3. Mga layunin at pinagmumulan ng pag-unlad - www.ada-ru.org/arm83/ch01s03.html
  2. Vadim Stankevich. Lady Ada - www.kv.by/index2006451104.htm
  3. Na-update na pamantayan sa iso.org - www.iso.org/iso/en/CatalogueDetailPage.CatalogueDetail?CSNUMBER=45001
  4. Bryabrin V. M. Software para sa mga personal na computer. M.: Nauka, 1988.
  5. 1 2 Panayam kay S.I. Rybin - www.ada-ru.org/wiki/rybin
  6. , Object-oriented programming language, NET platform programming language, Ada, Mga Artikulo na may mga halimbawa ng code ng Ada.
    Ang teksto ay makukuha sa ilalim ng lisensyang Creative Commons Attribution-ShareAlike.

Ang wika ng Impiyerno ay halos palaging nasa paligid. Sa paaralan ay pinagtawanan namin ang pangalan nito, sa kurikulum ng unibersidad ito ay tuyo na binanggit bilang isang wika na binuo sa kahilingan ng US Department of Defense, ngunit bihirang mga programmer lamang ang aktwal na nakapag-aral ng syntax o aplikasyon. Ito ay humantong sa maling opinyon na ang wikang Ada ay gumagana lamang sa mga kagamitang lumang siglo, at ang pangangailangan para dito ay mawawala kasama ng natural na modernisasyon.

At ito ay napakalayo sa katotohanan.

Hitsura

Noong 70s ng ika-20 siglo, sa kasagsagan ng Cold War, ang Kagawaran ng Depensa ng US ay nag-organisa ng isang internasyonal na kumpetisyon, batay sa mga resulta kung saan kinakailangan na pumili ng isang programming language para sa paggamit para sa mga layuning militar. Gayunpaman, wala sa mga umiiral na wika ang nasiyahan sa mga miyembro ng komisyon, kaya sa pamamagitan ng mahabang pagpili at ilang mga pagbabago, ang wikang Ada ay ipinanganak, na pinangalanang Ada Lovelace. Pagkatapos ay nagsimula ang maraming taon ng red tape na may standardisasyon, pagpaparehistro ng trademark, mga pagbabawal sa mga custom na tagasalin at iba pang mga aksyon na nagpapahina ng loob sa mass audience mula sa pakikipagtulungan kay Ada.

Ang resulta ay isang medyo angkop na wika na inilaan para sa mga kumplikadong sistema ng computing na may mas mataas na mga kinakailangan sa seguridad. Muli, dahil sa mga kinakailangan ng Pentagon at mahigpit na pamantayan, ang pakikipag-ugnayan sa iba pang mga programming language ay napakahirap, kaya hanggang kamakailan ay halos walang pagkakataon si Ada na lumipat sa mass market. Ngunit habang ang mga kagamitan ay nagiging mas mura at ang mga teknolohiyang ginagamit ay nagiging mas kumplikado, ang gayong pagkakataon ay lilitaw.

Syntax

Sa una, ang Ada ay isang modular programming language na may malakas na pag-type, na minana ang syntax mula sa Pascal at Algol. Kung natutunan mo ang una sa paaralan o kolehiyo, pagkatapos ay tumingin sa "Hello, World!" dapat makaramdam ng nostalhik:

kasama si Ada.Text_IO;

Pamamaraan Hello ay
gamitin ang Ada.Text_IO;
magsimula
Put_Line("Kumusta, mundo!");
wakas Hello;

Ang isa sa mga pangunahing kinakailangan para sa wika ay ang pagiging maaasahan ng paggamit nito. Alinsunod dito, nagsasangkot ito ng mahigpit na paghihigpit sa istraktura, mga uri, pagbabaybay at marami pang iba. Bilang karagdagan, halos lahat ng mga error dito ay nakuha sa yugto ng compilation.

Ang isa pang kinakailangan ay ang maximum na kakayahang mabasa ng code sa naka-print na anyo, na nagresulta sa bigat ng resultang wika at mababang flexibility.

Ang mga pamantayan sa ibang pagkakataon ay bahagyang nalutas ang mga problemang ito, ngunit para sa malinaw na mga kadahilanan, hindi sila gumawa ng pangalawang Python mula sa Impiyerno.

Ada ngayon

Taliwas sa opinyon ng malawak na madla, ang wika ng Impiyerno ay aktibong ginagamit, hindi lamang sa Estados Unidos at hindi lamang sa industriya ng militar. Halimbawa, ang bahagi ng software ng Beriev Be-200 amphibious aircraft ay nakasulat sa Ada. Gumagamit din ng kagamitan sa wikang militar ng US ang mga walang pagmamaneho na tren sa subway na tumatakbo sa maraming pangunahing lungsod (Paris, London, New York, atbp.).

At oo, siyempre, kabilang sa mga "kliyente" ay ang militar at sibil na aviation (lalo na, ang Boeing 777), mga rocket, shuttle, satellite - sa pangkalahatan, halos ang buong listahan ng walang katapusang mahal na mga produktong Amerikano na nangangailangan ng pinakamataas na antas ng kaligtasan .

Mga prospect

Ang Wika ng Impiyerno ay binatikos kapwa sa oras ng paglitaw nito at nang maging malinaw na ang mga magagarang plano ng Pentagon ay hindi masyadong akma sa katotohanan, at higit pa sa ngayon. Ang dahilan nito ay ang hindi maginhawang wika, ang pagiging kumplikado ng mga pamantayang isinulat noong 1983 at 1995, pati na rin ang kakulangan ng paningin ng mga developer na nag-alis ng wikang Ada ng isang mass audience.

Gayunpaman, halos 40 taon ng aktibong paggamit ay nagpapatunay na ang wikang Ada ay marahil ay nakayanan ang pangunahing gawain nito - sa tulong nito posible pa ring lumikha ng maaasahang code para sa mga system na may mas mataas na mga kinakailangan sa seguridad. Kasabay nito, kung titingnan mo ang kasalukuyang mga uso, ang bilang ng mga naturang produkto ay patuloy na lumalaki: mga kotse na may mga autopilot at hybrid na makina, pribadong spacecraft at maliit na sasakyang panghimpapawid, mga high-speed na tren, pati na rin ang isang malaking bilang ng mga naka-embed na system. Ang lahat ng ito ay isang potensyal na larangan para sa aktibidad ng wika ng Impiyerno. Idagdag dito ang katotohanan na ang pamantayan ay seryosong binago at na-moderno noong 2012, ang mga tool para sa trabaho ay inilabas at ina-update din.

Kaya, ang wika ng Impiyerno ay parehong isang fragment mula sa isang hindi masyadong kaaya-ayang nakaraan, at isa sa mga tool para sa pagbuo ng isang maliwanag na hinaharap. At tiyak na wala siyang planong magretiro.

Sergei Bobrovsky

Ang kasaysayan ng wikang ito ay hindi nagsisimula noong 1975, nang ang US Department of Defense (DoD) ay nagpasya na simulan ang pagbuo ng isang pinag-isang programming language para sa armadong pwersa ng Amerika, at pagkatapos ay para sa buong NATO. Ang kasaysayan nito ay nagsisimula sa pangalan, dahil ang Ada ay ang pangalan ni Augusta Ada Lovelace, na itinuturing na unang programmer, ang anak na babae ng makatang Ingles na si Byron at isang tiyak na Anabella Milbank, kung saan naghiwalay ang kanyang asawa magpakailanman isang buwan pagkatapos ng kapanganakan ng kanyang anak na babae, na ipinanganak noong Disyembre 10, 1815. Sa pangkalahatan, ang kasaysayan ng cybernetics ay nababalot ng isang madilim na misteryo, at mula lamang sa mga pira-pirasong katotohanan ay mahuhusgahan ng isa na ang mga nagtatag ng agham na ito sa huling dalawang daang taon ay iba't ibang mystics at occultists, simula kay Augustus de Morgan, isa sa mga guro ni Ada. , at nagtatapos sa mga kasama ni Norbert Wiener, na nag-aral ng mga paraan ng pagbuo ng pampublikong opinyon at pagmamanipula nito.

Matapos itayo ni Charles Babbage ang kanyang mekanikal na computer, isinulat ni Ada ang unang programa para sa pagkalkula ng mga coefficient ng Bernoulli. Kasunod nito, bumuo siya ng isang tunay na teorya ng programming, ipinakilala ang konsepto ng isang cycle at ilang iba pang mahahalagang termino na halos pinag-aaralan ng mga estudyante ng cybernetic faculty ngayon! Ngayon, si Ada ay kilala sa lahat bilang ang unang programmer - at iyon lang, ngunit ang isa ay nagtataka kung saan ang isang batang babae ay nakakakuha ng gayong kakaibang kakayahan? Siya mismo ang sumagot sa tanong na ito nang tapat: "Isinusumpa ko sa Diyablo na sa loob ng 10 taon ay sisipsipin ko ang isang tiyak na dami ng dugo ng buhay mula sa mga misteryo ng Uniberso, at sa paraang hindi magagawa ng ordinaryong mortal na mga isip at labi na walang nakakaalam anong nakakatakot na enerhiya at lakas ang hindi pa nagagamit sa aking maliit na nababaluktot na nilalang...". Gayunpaman, walang mga sponsor para sa proyekto ng computer - wala pang nuclear missiles, at si Ada, na nawala ang lahat ng kanyang kapalaran sa mga karera at napunta sa isang maruming kuwento, ay namatay sa edad na 37, tulad ng kanyang sikat na ama.

Samakatuwid, kung dapat bang purihin nang husto ng mga Amerikano si Ada, gamit ang kanyang pangalan bilang pangalan para sa naturang ambisyosong proyekto, ay isang napakakontrobersyal na isyu.

Ngunit bumalik tayo sa kasaysayan ng wika mismo. Limang taon pagkatapos ng pagsisimula ng proyekto, pinili ng daan-daang eksperto mula sa 17 opsyon ang tanging wikang nakakatugon sa mga kinakailangan ng ML, na binuo ng isang maliit na pangkat na pinamumunuan ng mahuhusay na siyentipiko na si Jean Ishbia. Ang huling bersyon ng internasyonal na pamantayang ISO 8652:1987 ay nai-publish noong 1987. Ayon sa mga opisyal na ulat, ang lahat ng pinakamahusay na mga espesyalista sa programming sa mundo ay lumahok sa paglikha at pagpipino ng wikang ito, na, gayunpaman, ay nagdaragdag ng mga pagdududa. Ito, halimbawa, ay nakumpirma sa pamamagitan ng kawalan ng konsepto ng isang bagay sa orihinal na bersyon ng Ada at ang hindi paglahok, para sa mga malinaw na kadahilanan, ng mga programmer ng Sobyet sa proyektong ito.

Sampu-sampung bilyong dolyar ang namuhunan sa pagbuo ng imprastraktura ni Ada sa buong mundo. Ito ay humantong sa paglitaw ng mga ambisyosong pahayag tulad ng "Ang ika-20 siglo ay lilipas sa ilalim ng tanda ni Ada," gayunpaman, gaya ng dati, inilalagay ng buhay ang lahat sa lugar nito.

Sa kasamaang palad para sa Kagawaran ng Depensa ng Estados Unidos (at, nang naaayon, sa kabutihang-palad para sa "mga potensyal na kalaban" ng America), ang pagbuo ng isang malinaw na pamantayan para sa wikang ito at ang paglikha ng mga epektibong compiler ay nakumpleto nang eksakto sa oras (unang bahagi ng 80s) nang ang industriya ng software nagsimulang lumitaw sa abot-tanaw ang isang bagong C++ na wika na may isang object ideology. Ngayon ay mahirap sabihin kung ano ang naramdaman ng komite sa pag-unlad ng Ada, nakikita kung paano lumalago ang kasikatan ng C++ at ang luma, nakalimutan nang mabuti, batay sa object na paradigm sa pag-iisip. Ngunit ang inilaan na pondo ay ginastos na, ang pamantayan ay nilikha, at walang pagbabalik.

Ang istraktura ng Ada ay halos kapareho sa Pascal, at mas tiyak, sa Modula. Ang syntax ng karamihan sa mga pahayag at paglalarawan ay halos magkapareho sa syntax ng Modula, bagaman ito ay lumitaw halos kasabay ng Ada, at mahirap sabihin kung sino ang nakaimpluwensya kung kanino, kung mayroon man. Sa Ada, sa partikular, medyo maraming iba't ibang mga extension ang idinagdag, kaya ang wikang ito ay hindi matatawag na compact kung ihahambing sa Pascal. Sa mga tuntunin ng bilang ng mga posibilidad, ito ay mas malamang na maging katulad ng PL/1. Ngunit dahil ang mga tagalikha ng Ada ay naglagay ng pangunahing diin sa pagtugon sa mga kagustuhan ng mga "unang departamento" ng mga Amerikano, ang paraan ng pagsasara ng data (visibility) at ang kakayahang lumikha ng hiwalay na mga bloke gamit lamang ang mga pagtutukoy (mga paglalarawan ng interface ng mga module) ng iba pang mga developer ay ang pinaka-advanced para sa kanilang panahon. Halimbawa, ang programmer na aktuwal na sumulat ng code upang kalkulahin ang landas ng paglipad ng isang cruise missile ay walang ideya kung saan at para sa anong layunin gagamitin ang kanyang module, bagama't mayroon siyang access sa mga kinakailangang detalye ng ibang mga empleyado at maaaring i-debug ang kanyang seksyon ng ang code nang walang anumang problema. Dahil sa mahigpit na pagkakaiba-iba ng pag-access sa iba't ibang antas ng mga pagtutukoy, kung minsan ay imposibleng matukoy kung bakit at sa pamamagitan ng anong paraan tatawagin ang isang ibinigay na pamamaraan. Gayunpaman, ang pagnanais na ito para sa independiyenteng pag-unlad ng programa ay humantong sa isang napakakomplikadong sistema ng mga ugnayan sa pagitan ng mga detalye ng module at ang paglitaw ng ilang "mga butas" na maaaring magdulot ng mga side effect, ang pagkakaroon nito, gayunpaman, ay itinuturing na kapaki-pakinabang ng US Department of Defense. .

Ang mga elemento ng pag-type ng data ay lubos na pinalakas, at ang mga uri mismo ay naging mas pormal. Inalis ang lahat ng function ng I/O sa karaniwang syntax, at naging mahalagang bahagi ng wika ang paghawak ng exception. Bilang karagdagan, ang kapangyarihan ng mga istruktura ng kontrol ay dinala sa limitasyon, na ginawa ang Ada ang pinaka-advanced sa iba pang mga wikang tulad ng Pascal.

Hindi nagtagal ay inilabas ng Borland ang Turbo Pascal nito, kung saan naka-built-in ang konsepto ng isang module, at inilapit ang bersyon nito ng Pascal sa mga kakayahan sa Ada, ngunit sa kabutihang palad, walang karagdagang pagtatangka ang ginawa upang lumikha ng 3rd generation non-objective programming languages ​​​​nilayon para sa pagbuo ng napakalaking proyekto. Samakatuwid, minarkahan ni Ada ang pagtatapos ng isang mahabang linya ng mga simpleng pamamaraang wika, simula sa Fortran at Algol. Sa katunayan, lahat ng bagay na maaaring isipin sa loob ng balangkas ng ideolohiya ng structured programming ay nakapaloob sa Impiyerno. Pagkatapos ay sumabog ang object programming at nawala si Ada sa background.

Gayunpaman, ang wikang ito ay sumasakop pa rin sa isang angkop na lugar kung saan wala pa itong katumbas. Bilang karagdagan sa hiwalay na pagsasama-sama ng mga module at pagtiyak ng hierarchical na lihim ng mga detalye, ipinatupad ng wikang ito ang isang katangian bilang suporta para sa parallel programming. Isinagawa sa mas mataas o mas mataas na antas sa ALGOL-68, pagkatapos ay binuo sa Module-2, ito ay nakapaloob sa napakalakas na mga tool ng Ada, na tinatawag na mga gawain na maaaring isagawa nang nakapag-iisa sa bawat isa sa mga parallel na computer. Ito ay humantong sa pagsilang ng isang buong ideolohiya ng programming batay sa mga gawain na maaaring gawin "pseudo-parallel" - sa isang computer na may isang solong processor. Kasabay nito, ang problemang nalutas ay nahahati sa isang hanay ng sabay-sabay na mga pamamaraan sa pagtatrabaho na nakapag-iisa na nakikipag-ugnayan sa isa't isa. Ito ay medyo nakapagpapaalaala sa paraan upang malutas ang isang problema sa Prolog: ang isang tiyak na virtual na mundo ay simpleng inilarawan, at pagkatapos ito ay, kumbaga, "inilunsad" sa pagpapatakbo, at ang solusyon ay matatagpuan sa kanyang sarili.

Ito ay higit na nakakagulat na ang US Defense Ministry, para sa isang kadahilanan o iba pa, ay inabandona ang layunin na ideolohiya, na ganap na nakapaloob sa

60s sa Simula-67, at malamang na pinagsisihan ito ng higit sa isang beses. Totoo, ang isang tiyak na kalunus-lunos na kapalit para sa isang bilang ng mga posibilidad na ibinigay ng object-oriented na programming ay ipinakilala sa wikang Ada - ang tinatawag na mga template, iyon ay, mga pamamaraan na may mga parameter ng hindi natukoy na mga uri. Ngunit gayon pa man, ang mga pangunahing bentahe ng Ada, na nagpapahintulot na makatiis sa pagsalakay ng mas maunlad na mga wika ngayon, ay, bilang karagdagan sa malakas na pagpopondo, built-in na suporta para sa parallel na pagpapatupad ng mga gawain at malakas na paraan ng pag-uugnay ng kanilang pakikipag-ugnayan. Dapat tandaan na ang pangunahing pokus ni Ada ay hindi ang mga sistema ng automation ng accounting sa US Department of Defense, ngunit puro mga misyon ng labanan tulad ng, halimbawa, real-time na microprocessor navigation ng isang homing missile, kung saan kinakailangan na sabay-sabay na iproseso ang impormasyon na patuloy na natatanggap. mula sa iba't ibang mga sensor. Noong nakaraan, ang mga naturang gawain ay isinulat sa assembler, na humantong sa maraming mga pagkakamali at mga paghihirap sa pagpapanatili. Para sa gayong mga gawain, si Ada, siyempre, ay ganap na angkop.

Gayunpaman, ang Ada ay patuloy na nakaposisyon bilang isang mahusay na tool para sa pagbuo ng malalaking software system. Totoo, ngayon ang mga tinig na sumusuporta sa wikang ito ay parang mas tahimik, tulad nito: "Ada, hindi bababa sa, ay hindi mas masama kaysa sa C." Ang Kagawaran ng Depensa ng US, na isinasaalang-alang ang pangunahing pagkakamali nito - ang kakulangan ng mga bagay, alinsunod sa mga modernong kinakailangan para sa teknolohiya ng pagbuo ng programa, ay bumuo ng isang bagong pamantayan ng wika na ISO/IEC 8652:1985(E). Inilalarawan nito ang Ada95 (o Ada9X) na bersyon ng wika. Ang pinaka-kagiliw-giliw na bagay ay ang bersyon na ito ay ang unang object-oriented programming system sa mundo, kung saan ipinakilala ang isang pang-internasyonal na pamantayan, tila sa pamamagitan ng pagkakasunud-sunod (sa C++ hindi pa ito gumagana). Bilang karagdagan, pinahusay ng wika ang sistema para sa pag-coordinate ng visibility ng data sa mga detalye ng module at nagdagdag ng mga tool upang mapabuti ang kahusayan ng mga parallel na gawain.

Ang US Department of Defense ay medyo naninibugho sa mamahaling brainchild nito at nairehistro pa ang salitang "Ada" bilang trademark nito. Gayunpaman, nang maglaon, sa halip na ang trademark, nagpasya ang Rehiyon ng Moscow na gamitin ang "Ada" bilang panloob na sertipikadong marka nito. Ang US Department of Defense ay hindi partikular na natutuwa tungkol sa paglitaw ng mga komersyal na bersyon ng wikang ito. Siyempre, walang sinuman ang may karapatang pagbawalan kang magsulat ng iyong sariling compiler, ngunit upang makatanggap ito ng komersyal na pagkilala, dapat itong matugunan ang isang pamantayang militar, at ang pagsubok ay isinasagawa lamang ng komite ng AJPO ng US Department of Defense. , na napakahigpit na sinusuri ang pagsunod ng compiler sa maraming mga kinakailangan, kabilang, malinaw naman, at purong pampulitika.

Gayunpaman, ang iba't ibang mga bersyon ng Ada ay maaaring makuha, tulad ng karaniwang kaso sa mga programming language, nang libre, iyon ay, para sa wala, ngunit hindi sa isang pirated na paraan, ngunit simpleng mga bersyon ng freeware, at, siyempre, para sa pera.

Sa mga malayang ipinamahagi na bersyon, kailangan munang i-highlight ang GNAT compiler - GNU Ada95. Ito ay makukuha sa source code mula sa proyekto ng GNU (libreng software). Maaari rin itong gumana sa isang computer na may iisang processor, ngunit kailangang suportahan ng operating system ang multitasking. Ito ay maaaring, halimbawa, ilang bersyon ng UNIX o OS/2. Tulad ng para sa MS DOS - hulaan para sa iyong sarili. Gayunpaman, kung gusto mo talagang magpatakbo ng isang daan o dalawang magkatulad na proseso sa iyong personal na computer sa ilalim ng MS DOS 6.x, maaari mong subukan ang Ada/Ed - isang compiler at interpreter para sa 1987 na bersyon ng wika, na, gayunpaman, ay ganap na hindi tugma sa pamantayan at walang ilang mahahalagang elemento.

Kung mayroon kang pera, kung gayon ang sitwasyon, siyempre, ay nagiging mas madali. Sa loob ng buwanang suweldo ng isang karaniwang programmer ng Russia, maaari kang bumili, halimbawa, FirstAda at magsulat ng isang sistema ng kontrol sa refrigerator. Maaari mong subukang bumili ng mas mahal na mga sistema para sa Windows, OS/2 o UNIX, na sertipikado ng Kagawaran ng Depensa ng US, nang direkta mula sa mga kumpanya ng pag-unlad, kung saan mayroong halos isang dosenang.

Ito ay kagiliw-giliw na hindi lamang ang wika mismo ang na-standardize, na naging posible upang lumikha ng madaling portable na mga programa, kundi pati na rin ang isang hanay ng mga tulong ng developer - iba't ibang mga library ng input-output at mga graphical interface na organisasyon, preprocessors, verifiers, code generators, source code logical structure analyzers, testing programs compiler, atbp. Siyempre, may malalaking pakete na kasama ang lahat ng standardized development tools, ngunit mukhang napakamahal ng mga ito.

Ito ay magiging lubhang kawili-wiling malaman kung ang USSR ay nagtatrabaho sa mga wika na idinisenyo upang malutas ang mga katulad na problema sa militar. O ang aming mga espesyalista ay sumulat lamang sa Assembly?

Mga katangian ng wika

"Hello, mundo!" kay Ada

Maraming iba't ibang bersyon ng programang "Hello, world!" ay makikita sa Wikibooks (Ingles). Ang mga pagkakaiba ay dahil sa pangangailangang gamitin ang Put_Line library function - ang wikang ito ay may tatlong magkakaibang paraan ng pag-aayos ng paggamit na ito.

kasama si Ada.Text_IO;

pamamaraan Hello ay

Gamitin ang Ada.Text_IO;

Put_Line("Kumusta, mundo!");

wakas Hello;

Dito, para magamit ang Put_Line function, ang Ada.Text_IO package na naglalaman nito ay ini-import gamit ang use construct, na ginagawang posible na tawagan ang function sa pamamagitan ng pangalan nang walang kwalipikasyon - tinutukoy ang pangalan ng package na naglalaman ng function sa tawag.

Kwento

Ang pagpapaunlad ng wika ay isinagawa bilang bahagi ng isang internasyonal na kumpetisyon na inorganisa at pinondohan ng Kagawaran ng Depensa ng Estados Unidos. higit sa lahat para sa pagbuo ng mga naka-embed na system para sa mga layuning militar at para sa malalaking computer ng militar (batay sa iAPX 432 processor mula sa Intel). Nagsimula ang trabaho noong 1975, kasama ang pagbuo ng isang hanay ng mga kinakailangan sa wika na ganap na masisiyahan ang mga developer ng mga sistema ng ganitong uri. Ang unang listahan ng mga kinakailangan, na may codenamed na "Straw", ay isinumite para sa pagsusuri sa isang bilang ng mga organisasyon at kumpanya, at unti-unting pino sa loob ng dalawang taon, sa huli ay naging panghuling dokumento na tinatawag na "Steel".

Matapos makumpleto ang mga kinakailangan, isang pagsusuri ang isinagawa na nagpakita na wala sa mga umiiral na programming language ang sapat na nasiyahan sa mga kinakailangan, kaya ang desisyon ay ginawa upang bumuo ng isang bagong wika. Ang isang kumpetisyon para sa paglikha nito ay inihayag noong 1977 ay hiniling sa mga developer na ibase ito sa isa sa tatlong wika: Pascal, Algol-68 o PL/1.

Sa 15 na proyektong isinumite sa kompetisyon, 4 ang napili (lahat ay batay sa Pascal). Ang mga proyektong ito ay ipinadala para sa karagdagang pag-unlad. Sa susunod na yugto, sa 4 na proyekto, dalawa ang napili, kung saan, pagkatapos ng karagdagang pagpipino, isa ang napili. Ang wikang ito ay pinangalanang "Ada" - ang pangkat na bumuo nito, na pinamumunuan ng Pranses na si Jean Ishbia, ay nagbigay ng pangalan sa wika bilang parangal kay Augusta Ada King Lovelace (anak ng makata na si J. Byron), na itinuturing na unang programmer sa ang mundo para sa pagbuo ng mga programa para sa computer ni Babbage.

Si Dijkstra, sa isa sa kanyang mga artikulo, ay nag-alinlangan na ang isang wika na napakakumplikado gaya ng Ada ay maaaring maobserbahan at mapapamahalaan. Sinabi niya: "Kung maglalabas si Ada ng isang pamantayan, nais nitong maging malinaw na dokumentado. Hindi bababa sa dalawang grupo ang nagtangka nito; bilang resulta, parehong nakagawa ng humigit-kumulang 600 mga pahina ng pormal na teksto. Ito ay higit pa sa kinakailangan upang matiyak na imposibleng maging matatag na itatag na ang parehong mga dokumento ay tumutukoy sa parehong wika. Ang kasalanan sa maliwanag na hindi makontrol ng dalawang dokumentong ito ay hindi nakasalalay sa dalawang grupo na bumuo sa kanila, o sa pormalismo na kanilang pinagtibay, ngunit sa mismong wika lamang: nang hindi sila nagbibigay ng pormal na kahulugan kung ang mga developer nito ay maaaring itago ang katotohanan na sila ay nagmumungkahi ng isang hindi mapigil na halimaw. Na bawasan ni Ada ang mga problema sa programming at dagdagan ang pagiging maaasahan ng aming mga disenyo sa mga katanggap-tanggap na limitasyon ay isa lamang sa mga fairy tale na tanging mga taong may background sa militar ang maaaring paniwalaan."

Ikinalungkot ni Hoar na "ang mga kampanilya at sipol ay nanguna sa mga pangunahing pangangailangan ng pagiging maaasahan at kaligtasan" at nagbabala laban sa "isang armada ng mga missiles na papunta sa maling paraan dahil sa isang hindi natukoy na bug sa Ada compiler." Si Niklaus Wirth ay nagsalita nang mas pinigilan, ngunit negatibo rin. Aniya: “Masyadong marami ang ibinabato sa programmer. Hindi ko akalain na pagkatapos mong pag-aralan ang ikatlong bahagi ng Ada, maaari kang magtrabaho nang normal. Kung hindi mo master ang lahat ng mga detalye ng wika, maaari kang matisod sa mga ito sa hinaharap, at ito ay hahantong sa hindi kasiya-siyang mga kahihinatnan." Si Jean Ishbia, ang pinuno ng development team ni Ada, habang ipinapahayag ang kanyang "paggalang at paghanga" para kay Wirt, ay hindi sumang-ayon, at sinabing, "Naniniwala si Wirth sa mga simpleng solusyon sa mga kumplikadong problema. Hindi ako naniniwala sa mga ganitong himala. Ang mga kumplikadong problema ay nangangailangan ng mga kumplikadong solusyon."

Ang pamamaraan para sa pagsuri sa pagsunod ng compiler sa pamantayan ng wika sa pamamagitan ng pagsubok ay nagdudulot din ng mga pagdududa. Bilang pangkalahatang usapin, malinaw na ang pagsubok ay makakahanap ng mga hindi pagkakapare-pareho, ngunit hindi magagarantiya ng tama. Ang praktikal na kumpirmasyon nito ay ang katotohanan na ang mga sertipikadong compiler, kapag sinubukan sa ibang hanay ng mga pagsubok, ay natagpuan ang hindi pagsunod sa pamantayan.

Ang mga tagapagtaguyod ng Ada ay nangangatwiran na ang tanging alternatibo sa isang malaki at kumplikadong wika sa malalaking proyekto ay ang paggamit ng ilang mga compact na wika, na hindi maiiwasang magdulot ng mga problema sa compatibility na inimbento ni Ada upang alisin. Napansin din nila na ang ideya ng pagiging kumplikado ng pag-unlad sa Ada ay bahagyang totoo: ang pagsulat ng isang simpleng programa sa Ada ay tumatagal ng mas maraming oras kaysa sa iba, hindi gaanong pormal na mga wika, tulad ng C, ngunit ang pag-debug at pagpapanatili ng mga programa, lalo na ang malaki at kumplikado, ay lubos na pinasimple. Ayon kay Stephen Zeiger mula sa Rational Software Corporation, ang pagbuo ng software sa Ada ay karaniwang 60% na mas mura, at ang binuo na programa ay may 9 na beses na mas kaunting mga depekto kaysa kapag gumagamit ng wikang C.

Pamamahagi, mga prospect

Sa pagsasagawa, lumabas na si Ada, na sinakop ang inilaan nitong angkop na lugar sa militar at mga kaugnay na pag-unlad ng mga naka-embed na sistema, ay hindi kailanman lumampas sa angkop na lugar na ito, ni sa Kanluran, o sa USSR, o sa post-Soviet space. Maraming dahilan para dito. Ang mga kalaban ng wika ay nakatuon sa pagiging kumplikado at mga pagkukulang nito, una sa lahat, ang tungkol sa mga layunin na kalagayan ng paglitaw ng wika at ang mga negatibong aspeto ng proseso ng pagpapatupad nito. Ang opinyon ni S.I. Rybin, senior researcher sa Research Computing Center ng Moscow State University, consultant ng AdaCore EU, eksperto sa wikang Ada ng ISO working group sa pamantayan ng wika, ay kawili-wili. Naniniwala siya na may utang si Ada sa mga kabiguan nito sa dalawang pangunahing dahilan:

  • Sa panahon ng disenyo ng wika, ipinapalagay ng Pentagon na ang lahat ng bagong software ay gagawin lamang sa Ada. Dahil dito, nakatanggap si Ada ng napaka primitive na paraan ng pakikipag-ugnayan sa mga programa sa ibang mga wika. Sa pagsasagawa, lumabas na ang pagsusulat ng lahat sa Ada ay hindi makatotohanan (kung dahil lamang sa pangangailangan na makipag-ugnayan sa mga nakahanda nang pag-unlad sa ibang mga wika). Samakatuwid, sa mga industriya kung saan walang mahigpit na pangangailangan na "magsulat lamang sa Ada," mas gusto nila ang iba pang mga wika na mas inangkop sa isang multilingual na kapaligiran. Nalutas ng pamantayan ng 1995 ang problema ng interoperability sa ibang mga wika, ngunit nawala ang oras.
  • Kabalintunaan, ang pagkalat ng Ada ay napigilan ng suportang pinansyal at organisasyon ng Pentagon. Ang mga programang Ada na isinulat para sa militar ay tumatakbo sa pinakamakapangyarihang computing hardware na magagamit, kaya ang mga developer ng compiler ay pangunahing nag-aalala sa pagpasa sa mga pagsusulit sa ACVC, at pagkatapos lamang sa kahusayan ng compiler at ang code na ginawa nito. Noong unang bahagi ng 1980s, nagsimula ang isang boom sa microcomputers, at ang mga tagapagsalin para sa mga karaniwang wika (Pascal, C, BASIC) ay mabilis na na-optimize para sa mga low-power system. Para sa Ada, walang insentibo para sa naturang modernisasyon, bilang isang resulta, ang mga personal na computer, na pagkaraan ng ilang taon ay naging bulto ng computing fleet sa mundo, ay natagpuan ang kanilang mga sarili na walang mataas na kalidad na tagasalin ng Ada. Natural, nawala ni Ada ang market segment na ito. Kamakailan lamang ay lumitaw ang GNAT compiler, de-kalidad at produktibo, ngunit dito rin nawala ang oras.

Sa kasalukuyan, ang Ada ay medyo matatag na itinatag sa pagbuo ng mga malalaking naka-embed na sistema ng mas mataas na pagiging maaasahan dito ay halos walang malakas na kakumpitensya. Ang paggamit ng wika ay unti-unting tumataas, bagama't medyo mabagal. Ayon sa ilang maingat na pagtataya, na may mas murang hardware at ang pagkalat ng mga naka-embed na system na may kumplikadong software, ang merkado para sa mga programang Ada ay maaaring lumago nang malaki, at ang paggamit ng wika ay lalago din.

Bilang karagdagan, ang Ada ay, kahit na napakalimitado, na aplikasyon sa mas mataas na edukasyon. Ang mga espesyal na kurso sa Ada ay itinuturo sa Moscow State University at Kharkov University. Gayunpaman, ayon sa parehong S.I. Rybin,

... ngayon sa post-Soviet space sa larangan ng industriya ng software at edukasyon, isang malinaw na mabisyo na bilog ang nabuo: sa industriya halos hindi nila alam ang tungkol kay Ada, nang naaayon, mula sa industriya ay walang kahilingan para sa edukasyon sanayin ang mga espesyalista sa Ada, at ang mga bagong tao ay nagmumula sa mga unibersidad patungo sa industriya, na halos walang alam tungkol kay Ada.

Mga operating system na nakasulat sa Ada

Mga Naka-embed na Sistema

  • Ang RTEMS ay isang open source OS na binuo ng DARPA ng US Department of Defense
  • Ravenskar
  • RTOS-32 - pagmamay-ari na OS

Mga sistema sa pag-unlad

  • AuroraUX (isang proyekto upang muling isulat ang OpenSolaris kernel sa Ada)
  • Lovelace (kernel operating system)

Wala nang mga umiiral na sistema

  • BiiN™
  • Pulse™
  • AdaOS

Mga Compiler ng Impiyerno

PangalankumpanyaBersyonoperating systemWebsite
AdaMagicSofCheckAda 95 ? www.sofcheck.com
AdaMULTIGreen Hills SoftwareAda 83, Ada 95,