T++ | |
---|---|
Semantiikka | moniparadigma : oliosuuntautunut , yleinen , proseduaalinen , metaohjelmointi , toiminnallinen , rinnakkaisohjelmointi _ |
Kieliluokka | ohjelmointikieli |
Toteutustyyppi | koottu |
Esiintyi | 1980-luku |
Tekijä | Institute of Program Systems RAS |
Tiedostotunniste _ | .tpp |
Tärkeimmät toteutukset | omistusoikeus |
T++ on ohjelmointikieli , joka ilmaisee rinnakkaislaskennan tarpeen syntaksilla ja semantiikkalla , joka laajentaa C++-kieltä , nimittäin laajentamalla sitä muutamalla sanalla, joka ilmaisee rinnakkaislaskennan mahdollisuuden. Itse laskelmien rinnastaminen suoritetaan T-järjestelmän integroidun ympäristön ajonaikaisen kirjaston toimesta automaattisesti ohjelman suorituksen aikana, eli dynaamisesti, mikä laajentaa Microsoft Visual Studio C++ -integroitua ympäristöä korjaustiedoston avulla . [1] Laskelmien rinnakkaistarpeen ilmaisemiseksi funktio, sen ulkoiset muuttujat ja käytetyt osoittimet on merkitty vastaavilla avainsanoilla. Ilmeisten sivuvaikutusten puuttuessa kääntäjä ei laatii funktiota prosessiohjelmoinnin elementiksi, vaan toiminnalliseksi , eli puhtaaksi (jolla ei ole sivuvaikutuksia ). Jos havaitaan ilmeisiä sivuvaikutuksia, kuten I/O:n käyttö, kääntäjä havaitsee ne ja antaa virheilmoituksen.
Esimerkkiohjelma Fibonacci-luvun laskemiseen :
tfun int fib ( int n ) { paluu n < 2 ? n : fib ( n - 1 ) + fib ( n - 2 ); } tfun int main ( int argc , char * argv []) { if ( argc != 2 ) { printf ( "Käyttö: fib <n> \n " ); paluu 1 ; } int n = atoi ( argv [ 1 ]); printf ( "fib(%d) =%d \n " , n , ( int ) fib ( n )); paluu 0 ; }Kuten esimerkistä voidaan nähdä, T++-kieli on tehnyt pieniä muutoksia C++-kielen syntaksiin, nimittäin: osoittimet tfunrinnakkaislaskennan mahdollistamiseksi. Huolimatta tällaisen Fibonacci-luvun laskemisen tehottomuudesta , tämä ohjelma ei osoita vain T-järjestelmän yksinkertaisuutta ja selkeyttä, vaan osoittaa myös kiihtyvyyttä, kun se suoritetaan useilla prosessoreilla, eikä ohjelmoijan tarvitse tietää niistä. numeroita ja jakaa hyötykuorma niiden välillä.
T-järjestelmä tarjoaa integroidun kehitysympäristön laajentamalla Microsoft Visual Studio C ++ -ympäristöä . T-järjestelmän kehitysympäristö tarjoaa mahdollisuuden mahdollistaa esiprosessorin , joka suodattaa T++- lähdekoodia (muuntaa T++-lähdekoodin C++:ksi), jotta ohjelma voidaan suorittaa sarjatilassa (C++-koodin virheenkorjausta varten). Sarjatilassa suoritetun virheenkorjauksen jälkeen voit korjata T++-lähdekoodin ja kääntää sen sitten : lähdekoodi optimoidaan ja muunnetaan, rinnakkaisen laskennan ajonaikaiset kirjastot [2] yhdistetään ja C++-koodi käännetään. T-System on työkalu ohjelmien automaattiseen dynaamiseen rinnakkaisohjelmaan , joka on suunniteltu helpottamaan monimutkaisten rinnakkaisten ohjelmien kehittämistä ja käyttöä sekä niiden tehokasta käyttöä erilaisissa, mukaan lukien heterogeenisissä laitteissa. Se kehitettiin Venäjän tiedeakatemian tietojärjestelmien instituutissa, ja sitä kehitetään parhaillaan Venäjän tiedeakatemian tietojärjestelmien instituutissa ja Moskovan valtionyliopistossa.
OpenTS (Open T-System, T-järjestelmä avoimella arkkitehtuurilla ) on T-järjestelmän moderni toteutus. Se tarjoaa ohjelmien automaattisen dynaamisen rinnastamisen ja tarjoaa suoritusympäristön korkean tason ohjelmointikielelle T++ , joka on C++-kielen rinnakkaismurre [3] .
OpenTS käyttää kevyitä säikeitä nopealla vaihdolla (muutama nanosekunti) ja pystyy käsittelemään yli miljoona kevyttä säiettä prosessoria kohden. Näiden säikeiden pohjalta toteutetaan useita ominaisuuksia, kuten mobiilisäikeet, objektit ja viittaukset, hajautettu roskienkeräys, ilmoitustaulu tietojen ja tehtävien vaihtoa varten jne.
OpenTS:ää on testattu menestyksekkäästi monenlaisissa tehtävissä ja erikokoisissa laskenta-asennuksissa: moniprosessoritietokoneista eri arkkitehtuuri- ja kapasiteetin tietokonejärjestelmiin (eri moniprosessori Windows / Linux Intel / AMD-klusterit, venäläinen teraflop-asennus MVS-1000 M , jne.). OpenTS tukee laajaa valikoimaa rinnakkaisia alustoja: moniytimisprosessorit, SMP-järjestelmät, klusterit, metaklusterit ja GRID-järjestelmät.
Idea T-Systemistä syntyi 1980-luvun lopulla Venäjän tiedeakatemian ohjelmajärjestelmäinstituutissa [1] . Pääajatuksena oli T-funktioiden käsitteen käyttöönotto niin sanottujen unready - arvojen tarjoajina, mikä mahdollisti useiden T-funktioiden suorittamisen samanaikaisesti eri prosessoreilla ja siten rinnakkaisuuden saavuttamisen.
Vuonna 1998 projekti sai toisen syntymän Moskovan valtionyliopiston aktiivisella osallistumisella . Vuonna 2000 venäläis-valko-Venäjän SKIF -projektin puitteissa aloitettiin työ T-Systemin uudella toteutuksella , koodinimeltään GRACE . Ensimmäisen kehitysvuoden jälkeen tässä toteutuksessa havaittiin kuitenkin merkittäviä puutteita. Järjestelmän huono rakenne, selkeän ideologian ja arkkitehtuurin puute johti lukuisiin virheisiin, jumiutumiseen ja pinon ylivuotoon . Mutta mikä tärkeintä, lukuisat ongelmien ratkaisuyritykset heikensivät usein jo kirjoitettujen ohjelmien nopeutta ja tehokkuutta ja joissain tapauksissa tekivät niistä käyttökelvottomia.
Vuonna 2002 päätettiin kirjoittaa T-Systemille uusi toteutus. Sen nimi oli OpenTS tai Open Architecture T-System . Toisin kuin kahdessa aikaisemmassa toteutuksessa, OpenTS asetti alun perin tietyn arkkitehtuurin, joka perustui järjestelmän aikaisempien versioiden kehittämisestä saatuihin kokemuksiin. OpenTS on läpäissyt onnistuneesti SKIF-projektin tilatestit klusteritason ohjelmistojen kriteerien noudattamisesta.
Tällä hetkellä MSU työskentelee kahden itsenäisen OpenTS:n haaran parissa ehdollisella nimellä NewTS.
1. Avainsanalla ilmoitettu funktio tfun(ns. T-funktio) on rinnakkaisuuden pääobjekti ( rae ). Kirjoita merkintä:
tfun int f ( int a , tupla b )kuvaa T-funktiota, jossa on kaksi argumenttia ja yksi lähtöarvo.
2. T-funktion kutsu ei estä ohjelmaa ennen kuin T-funktio on valmis. Puhelun tulos on raaka-arvo (T-arvo).
3. T-muuttujalle voidaan antaa odottamaton arvo . Toiminta, jossa T-muuttujalle asetetaan epävalmiit arvo, ei estä ohjelmaa. T-muuttuja kuvataan avainsanalla tval(ei tvar, tämä on seurausta perinteen noudattamisesta, OpenTS-ytimen vastaava luokka on nimeltään TVar). Äänite
tval int x ;kuvaa T-muuttujan tyyppiä int .
4. T-funktion laskennan lopussa vastaava unready-arvo tulee valmiiksi ja toistaa sitten perustyypin normaaliarvon käyttäytymisen.
5. T-muuttujien arvon ottaminen tai kantatyyppiin johtaminen estää funktion suorittamisen, kunnes T-muuttujan arvo on valmis.