Invested in a copy of The C++ Programming Language last weekend.
My other language is OCaml.
Tinkering with OCaml. An example in Chapitre 12 of the O'Reilly OCaml book shows how blocks allocated in external C code using malloc() can be reclaimed automatically by the OCaml GC using a finalisation function that calls free(). This would be very convenient for writing an OCaml interface to GSL.
Working on extending the loop modelling program. Had a brief flirtation with doing it in Eiffel but decided to switch to C++ for mercenary reasons. Suspect that if I'd done it in Eiffel, I'd have a working program by now instead of being bogged down in the myriad details of C++.
Made my first foray into the world of GUIs with a Tcl script to build an interface to MolScript that partially automates the tedious cycle of writing a script, feeding it to MolScript and then reloading the image file. It's really nothing more than a glorified text editor but it does the job.
Installed Mozilla 0.9.6. It seems that they fixed the problem that resulted in a crash when using the Back button to move backwards within www.oreillynet.com. It still doesn't display the bookmarklet link on the Blogger Settings page.
There's an interesting interview with Lincoln Stein on perl.com. He says that computer scientists find it much harder to learn biology than biologists do to learn computer science because computer scientists need to learn a new paradigm while biologists are just picking up another skill.
He makes it sound so easy. I tell you it is not.
tk pointed me to Psyco, a compiler designed to execute Python at near the speed of compiled languages. Erann Gat proposed Lisp as an Alternative to Java; Psyco offers the prospect of being able to propose Python as an alternative to C but it'd be worthwhile even it only allowed Python to be substituted for Java . Python is attractive because the Pmv project is using Python to develop components for structural bioinformatics.
It's occurred to me - after a mere four years - that I've spent much more time writing code for extracting propensity tables and loop modelling than I have actually running it. Since the output of the programs is what I'm really interested in, it's obvious that I should be trying to minimise the development time.
Using Perl or Python would certainly reduce development times but at a cost in terms of performance. However, if it saves a lot of development time, this might actually offset the increased running time to the extent of reducing the overall time to get results. And there's always the option of using SWIG to drop down into C for the heavy-lifting bits.
This of course still means having to write the heavy-lifting bits in C or C++.
I really like functional languages: they let you write high-level code and write it quickly, and then compile it to get optimal performance. The problem with functional languages is that the paradigm is very different to imperative programming so there might be problems persuading coworkers that they're a good idea. There's also the perennial problem of people not wanting to use lesser-used languages that add little or no value to a CV.
I suspect I'm going to end up with a compromise solution such as gcj-compiled Java, a language whose only selling point for me is that it eliminates a lot of the complexity of C++ (while also eliminating some of the good features of C++).
My first attempt to read Damian Conway's Exegesis 3 left me with a spinning head and serious doubts about Perl 6. Piers Cawley's Not just for Damians acknowledges that a lot of people feel the same way but makes a good case for the new features and inspired me to have another go at Exegesis 3. I liked what I found: the features discussed in the Exegesis have a distinctly functional flavour to them that will make it possible to write Perl code that is more concise but also more readable.
Keep up with the latest Advogato features by reading the Advogato status blog.