Programmeerimine Keskkonnauuringud

Original: http://cs.brown.edu/people/spr/research/env.html

Picture of Steven P. Reiss

 

Steven P. Reiss

Ajalugu

Programmeerimine on raske ülesanne. Programmeerimiskeskkonna eesmärk on pakkuda tööriistu, mis aitavad programmeerijat ja lihtsustada ülesannet. Oleme programmeerimisvahendite tugev toetaja ja oleme selliseid vahendeid juba pikka aega arendanud. Kuigi bakalaureuseõppe, ma töötasin Dartmouth Basic runtime süsteemi. Üks peamisi uuendusi siin oli lisada lähtekeelega siluri keskkonnale.

Meie tegelik uurimistöö programmeerimise keskkonnad alustas tekkega tööjaamad (Apollos, Suns, Percs, …). Me (koos mitmete teiste rühmade) arvas, et üks peaks olema võimalik kasutada täiendavaid arvutusvõimsust ja graafikakuvari lihtsustada ja tõhustada programmeerimise kogemus. Meie esialgne katse siin kajastub PECAN süsteemi. PECAN kasutada kompilaatori tehnoloogia, et luua vahend sviit keel. Tööriist suite lisada tekstilist (osaliselt süntaks suunatud) ja graafilise (Nassi-Schneiderman diagrammid, Rothon diagrammid) toimetajad, semantika vaated sümbol tabeli kontrolli voolu ja väljendeid, läbiviimisel vaated virna ja kood. Samuti Objekte lisanduvate koostamise kui kasutaja sisestatud. See oli lõbus süsteem ja õpetas meile palju, kuid see tõesti ei olnud otstarbekas (see mälu sai otsa umbes 1000 rida koodi) ja ei võtnud täielikult ära graafika võimeid tööjaamad.

Selle töö põhjal, me järgmisel püüdnud paremini kasutada graafilise võimeid tööjaamad abil visuaalse keeles. Mõistsime, et visuaalse keeles tavaliselt katavad vaid piiratud osa kavandamist (nt ainult kontrolli voolu või ainult andmevoo), ning et teha tõeline programmeerimine me oleks lasta programmeerija tööd mitme sellise keeles. Selle saavutamiseks oleme välja töötanud, mida me nimetasime kontseptuaalne programmitöö keskkonnas, GARDEN, Et lase programmeerija arendada uue visuaalse või tekstilise keeles (koos asjakohaste visuaalne süntaks ja asjakohane semantika) ja pesa ja muidu intermix nende keelte täieliku süsteemi. Süsteem ette asjakohased graafiline ja tekstiline toimetajad, et Lisp sarnast alust keele täielik ühisobjekt poodi (lasta mitu programmeerijad töötada sama programmi korraga ja toetada hajutatud rakendusi), Smalltalk-nagu brauseritega mitme lõime ja isegi tõlkija. Süsteemi kasutati arendada mitmesuguseid visuaalseid keeles.

Kuigi arengumaade GARDEN, mitu inimest vaidlustada üldine uurimistöö programmeerimise keskkonnad, väites, et kuigi vahendid, mida meie ja teised arenesid olid kena ja võib olla kasulik, midagi oli tegelikult praktiline ja mitte ühtegi projekti võiks tõesti kasutada ise arendamiseks; igapäevaelu arengu programmide UNIX (või muu OS sel ajal) tehti kasutades eraldi ja tekstilist toimetajad, debuggers jne, et ei olnud oluliselt muutunud kümme aastat. Me seega alustas praktiline keskkond tõeline programmeerimine. Mõistsime, et sa ei pea olema ühine poest või keskne esindatus olema integreeritud keskkonnas, samuti ei teil on vaja arendada uusi vahendeid on graafiline otsad. Selle asemel oleme välja töötanud lihtsa sõnumi-põhine integratsioon mehhanism, mis lase tööriistad üksteisega suhelda, ja seeria ümbrised, mis on sätestatud graafiliste liideste olemasolevate vahendite (dbx, gdb, make, rcs, …). Tulemuseks oli FIELD keskkonda. Kuna töötati me laiendada keskkonna erinevaid graafilisi vaateid sealhulgas struktuurne seisukohti (skeem, klassihierarhia) ja dünaamiline seisukohti (andmestruktuur ekraanid, hunnik vizualization, I/O visualiseerimine). FIELD oli üsna edukas. Me kasutasime seda juba mitu aastat meie intro programmeerimine kursused, see oli turustada detsember (nagu FUSE) ja oli kopeeritud HP (Softbench), Sun (Tooltalk), SGI ja teised.

Meie järgmine keskkonna DESERT Püüdis laiendada FIELD mitmel viisil. Esiteks tahtsime pakkuda programmeerija kõrge kvaliteediga väljapaneku koodi. Seda tehti, pikendades FrameMaker programmina toimetaja. Laiendus Objekte Baeker-Marcus stiil kood vormingu, mis oli tehtud nagu kasutaja sisestatud mis sisaldas semantilise otsingu sümbolite kogu süsteemi (ja mitte ainult praeguse faili). Teiseks tahtsime lasta programmeerija vaadata süsteemiga erinevatel viisidel, on võimalik isoleerida kood asjakohasuse teatud muutus või funktsiooni. Seda tehti jagades programmi osakesteks ja millel on toimetaja töö virtuaalne faile, mis koosneb erinevatest fragmendid kogutud tegelik allikas faile. Programmeerija võib täpsustada komplekt fragements kasutades sobivaid päringuid. Killud olid konfiguratsioonijuhtimises tehtud muudatused virtuaalne faile integreeritud algallikast faile kui virtuaalne failid on salvestatud. Lõpuks tahtsime pakkuda kvaliteetsemat visualiseerimine koodi ja täitmise ning seega välja töötanud 3D visualiseerimine süsteemi, mis oli integreeritud keskkonnas.

Meie uuemate jõupingutused on keskendunud toetada arengut ja tarkvara kooskõla mitte ei püüa luua terviklik programmitöö keskkonnas. See pakett, CLIME, Võtab on vahendid luua ja säilitada kõiki erinevaid esemeid, mis kaasnevad tarkvara süsteem: kirjeldused, disain, allikas, test juhtudel, dokumentatsiooni, jne semantika kõik need artefaktid Seejärel määratletakse kogum metaconstraints suhtes teiste esemeid. Disain on vaadelda contraints allika (ja vastupidi), nii et on klassi UML diagramm peab olema vastav klassi allikas; keelekasutuse reegleid piirata kujul allikas; dokumendid peavad olema kooskõlas kood; test juhtudel peab katma kood ja teha uuesti, kui kood muutub. Kõik see on märgitud sammhaaval nagu kasutamise toimetab esemeid ja mis tahes vastuolud kuvatakse kasutades graafilise kasutajaliidese.

Kuigi CLIME keskendub staatiline struktuur allikast ja erinevate tarkvara esemeid, mõistsime, et mõned kirjeldused ja disain esemeid, mis on seotud käitumise kohaldamise asemel koodi ise. Et mahutada seda, oleme välja töötanud CHET, vahend kontrollimiseks klassi ja raamatukogu kirjeldused reaalses tarkvara süsteemid. CHET võib kasutada nii sisendit põhineb pikendatud automaatide toimuva üle (mis võib pärineda UML interaktsiooni diagrammid, klass lepingute jms), leida kõik samal spetsifikatsiooni suur süsteem, ja seejärel kontrollida igal üksikjuhul.

Meie viimaste tööde hõlmab uue esiotsa programmeerimise keskkonnad,  Kood Mullid. See töö läheb gback kõrbe silmas näitab fragmendid faile, näiteks üksikute funktsioonide ja on konstrueeritud nii, et programmeerija saab näha kõiki asjakohaseid kood oma praegust ülesannet tõhusalt oma praeguse töö kogum, ekraanil korraga.