I've written my first program in Python: it's a cgi script which computes and displays the Gregorian solar and lunar calendars for any given year. I had started writing it in Perl, but I realized that Perl has no operator for integer division (!!!) and I need a lot of integer divisions in that script. So I gave up on Perl and decided to use Python instead.
Incidentally, I'm amazed by how few programming languages have a
“sane” behavior for integer division and integer modulus
when the dividend is negative: namely for (-2)/5
to be
-1
(and not 0
) and for (-2)%5
to be 3
(and not -2
); apparently this is
because (most?) silicon implementations have the totally ludicrous
behaviour which makes (-2)/5
equal to 0
(so
that (3-5)/2
is not equal to 3/2-1
, which is
really stupid). Anyway, Python has the sane behavior, whereas C does
not.
I'm not enthusiastic: Python has some annoying misfeatures, for
example the lack of the ternary
x?y:z
construction of
C/C++/Perl, or a print
construct which automatically adds
a newline. On the other hand, Python is definitely cleaner
than Perl (that's not too hard, though!) and has some nice features (I
very much like the formatting %
operator).
Anyway, you can
see, with the names I had
suggested for the lunar months, that today (November 8 of 2003) is
Novil 14 of 2003. Consequently, it is a full moon (theoretical full
moons fall on the 14th of every lunar month, and they agree more or
less accurately with real full moons: typically to within a day).
Actually, it is better than that: there is a full lunar eclipse
tonight (maximality is at 2003-11-09T01:19Z). (For those who wonder
why I'm not writing Full Moon
next to this 'blog's entry, it is
because I align the Moon phases indications on universal time and the full
moon is ever so slightly past midnight GMT.)