Kaleidoscope

Allikas: Teadmusbaas
Redaktsioon seisuga 7. november 2017, kell 08:38 kasutajalt GonnaScrewUpEverything (arutelu | kaastöö) (Uus lehekülg: 'Kaleidoscope piirangute programmeerimiskeel, mis kinnitab piiranguid sundivasse objekt-orienteeritud keelde. See lisab võtmesõnad ''always'', ''once'', ja ''assert..during'', e...')
(erin) ←Vanem redaktsioon | Viimane redaktsiooni (erin) | Uuem redaktsioon→ (erin)

Kaleidoscope piirangute programmeerimiskeel, mis kinnitab piiranguid sundivasse objekt-orienteeritud keelde. See lisab võtmesõnad always, once, ja assert..during, et teha deklaratsiooni relatsiooniliste invariantide kohta. Objektidel on piirangute konstruktorid, mis ei ole meetodid kasutaja poolt määratud andmetüüpide tähenduste jõustamiseks.

Kaleidoscope'l on kolm versiooni, mis näitavat arengut deklaratiivsest kasvavalt sundivaks stiiliks

Koodi näited

Võrdlus kahe koodilõigu vahel, mõlemad lasevad kasutajal lohistada hiirega elavhõbeda taset lihtsas graafilises termomeetris.

Piiranguteta:

while mouse.button = down do
old <- mercury.top;
mercury.top <- mouse.location.y;
temperature <- mercury.height / scale;
if old < mercury.top then
delta_grey( old, mercury.top );
display_number( temperature );
elseif old > mercury.top then
delta_white( mercury.top, old );
display_number( temperature );
end if;
end while;

Piirangutega:

always: temperature = mercury.height / scale;
always: white rectangle( thermometer );
always: grey rectangle( mercury );
always: display number( temperature );
while mouse.button = down do
mercury.top = mouse.location.y;
end while;


Viited

Artikkel on osaline tõlge siit.


Tõnu Taal TA15 7. november 2017, kell 10:38 (EET)