Zur Feier von «Chalandamarz 2025» habe ich meine fast erste Software ausgegraben: die sehr nerdige Berechnung des römischen Datums.
Damals, im Jahr 1990, auf den Macintosh Plus im Computerraum der Kantonsschule Rychenberg in Winterthur, haben wir Pascal programmiert. Unser Lateinlehrer, Prof. Dr. Anton Weilenmann selig, gab uns an jedem Latein-«Ex» einen Pluspunkt, wenn wir das römische Datum auf die Prüfung schrieben. Da war die Motivation natürlich genug gross, dafür ein Programm zu schreiben.
Später, um das Jahr 2000, als Mac OS X auf den Markt kam und ich viel mit Apple Web Objects experimentierte, habe ich das Programm in Java umgeschrieben. (WebObjects mit EnterpriseObjects ORM gilt als eines der ersten grossen Application Server Frameworksl) Das Programm lief auf meinem privaten WebObjects Server - dass meine Homepage das römische Datum anzeigt, hat also eine Tradition.
Jedesmal Anfang März, wenn ich die Bilder von «Chalandamarz» in Scuol sehe, oder wie jetzt, nachdem ich den Film «Schällen-Urli» von Xavier Koller mit Marcus Signer geschaut habe, denke ich an die Kalenden des März und an mein kleines Programm. An diesem «Chalandamarz» habe ich also das Java Programm ausgegraben und 1 zu 1 in einen modernen Quarkus - REST Endpoint eingebaut, der auf kassandra.schumm.ch
läuft - auch das meine alte Tradition. Von WebObjects zu Quarkus - vom ersten zum modernsten Java Framework!
Meine nerdige Tradition - zu sehen ab sofort bei kleinen blauen Seealpsee-Boot auf meiner Homepage.
Oder hier zum Ausprobieren:
Bild: mein Schällen-Ursli-Teller von Rheinfelder Keramik.
Der älteste Teil des Programms, das die römischen Ziffern berechnet.
program RoemischeZiffern;
var
x, ende : integer;
begin
repeat
showtext;
writeln(' Macht aus arabischen Zahlen roemische Zahlen.');
writeln(' Geben Sie die arab. Zahl ein:');
READLN(x);
ende := x;
write(x, ' = ');
while x >= 1000 do {**1000}
begin
write('M');
x := x - 1000
end;
if x >= 500 then {**500}
if X >= 900 then {900}
begin
write('CM');
x := x - 900
end
else
begin
write('D');
x := x - 500
end;
while x >= 100 do {**100}
if x >= 400 then {400}
begin
write('CD');
x := x - 400
end
else
begin
write('C');
x := x - 100
end;
if x >= 50 then {**50}
if x >= 90 then {90}
begin
write('XC');
X := x - 90
end
else
begin
write('L');
x := x - 50
end;
while x >= 10 do {**10}
if x >= 40 then {40}
begin
write('XL');
x := x - 40
end
else
begin
write('X');
x := x - 10
end;
if x >= 5 then {**5}
if x >= 9 then {9}
begin
write('IX');
x := x - 9
end
else
begin
write('V');
x := x - 5
end;
while x >= 1 do {**1}
if x >= 4 then {4}
begin
write('IV');
x := x - 4
end
else
begin
write('I');
x := x - 1
end;
writeln;
writeln;
until ende = -1;
end.
@Path("/calendas")
public class ResourceCalendas {
@GET
@Produces(MediaType.TEXT_PLAIN)
public String hodie() {
return RomDatum.romDatum();
}
}
Hinweis: dieser Blog wiederspiegelt meine persönliche Meinung und hat nichts mit meiner Anstellung als Dozent der zhaw noch mit anderen Anstellungen zu tun.