Rémy Schumm blog ingénieur

Kalendis Martiis MMXXV

publiziert am 01. 03. 2025 um 20:00

Zur Feier von «Chalandamarz 2025» habe ich meine fast erste Software ausgegraben: die sehr nerdige Berechnung des römischen Datums.

Kalendis Martiis MMXXV - 1. März 2025

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:

tempta!

Ursin Bild: mein Schällen-Ursli-Teller von Rheinfelder Keramik.

1990 : Pascal

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.

2025 : Java Quarkus Endpoint

@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.


zurück zum Seitenanfang