7 Mar 2002 (updated 7 Mar 2002 at 00:32 UTC)
»
It's been a long time without a post, due (mainly) to high
workload... you know, the blisses and woes of a start-up.
Nevertheless, i've not been idle. To begin with, i've come
back to debian. FreeBSD's ports exhausted my patiente,
due to poor dependency handling (i had to install
gnome-pilot as a pre-requisite for mrproject!), an obsolete
libtool version that nobody seems to be updating (more than
a year old) and that prevented my compiling cvs versions of
dia and guile, total lack of up-to-date compiled packages
and some other minor quirks led me to try a fresh install of
debian, and i got hooked again. It's really a pity, for
bsd's kernel is so much better, imho, than linux 2.4 (i'm
using 2.2.10 at home, btw). But, at the end of the day, i
realised that i was using exactly the same applications in
both os's, so that the important thing is the package
management. Debian's is simply better.
i also got tired of waiting for the update of the OCaml
port to 3.04, once i decided that OCaml was the right choice
for my next projects. i finished a fp-and-co-languages
review, incluing OCaml, Haskell (very nice), Scheme
(extremely elegant), ML (well, you've got OCaml) and, last
and very least, Python (please, use Perl instead). At first,
it was hard to get used to OCaml's syntax, but i learnt step
by step to love it... and, oh well, it's just syntax. What
really matters is the new semantic world that functional
programming opens up; each functional language i've tried
came loaded with a handful of little conceptual treasures:
type inference, first-class currying and functors in ocaml;
lazy evaluation and monads in haskell (with the nicest
quicksort evaluation i've ever seen); continuations and
macros in scheme... no wonder that reading the python
tutorial was so disappointing! It is also a pleasure to find
, when using and reading books about, say, ocaml, a direct
map between advanced computer science issues and the
language you're using; you feel like using a tool from the
ground up... imperative languages like C++, Perl or Java are
like folk, pop or rock music: funny and light, with some
harmonic surprises now and then; funcional languages are the
classical music of programming, harmony itself.
As a result of these musings, i don't feel so partial to
C++
against Java: they're more or less on the same
league. So, it's been not that traumatic to use java at
work, a decision we took due to schedule and stuff
constraints. Reading Meyer's Object Oriented Software
Construction (almost finished) has also made me
reconsider some of the relative virtues of both languages,
and i'm beginning to appreciate some java features such as
garbage collection and reflection (i still terribly miss
templates and generic programming features, though). Meyer's
book is, by the
way, worth reading. It's very well written and insightful,
once you factor out his dogmatic defense of Eiffel as the
only true solution to virtually all your problems.