Kaleidoscope

Allikas: Teadmusbaas

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äitavad 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)