Computer Science and Software Engineering (cont.)
kilmo: I agree with most of what you said in your entry. I agree that the CS department should teach theoretical computer science, because these are the foundations that a good programmer eventually needs to know or at least understand. I don't agree that the definition of Computer Science is "the science that deals with the study, implementation and creation of algorithms". This is more like the definition of Algorithmics which is a subset of Computer Science. CS is more inclusive and also talks about writing modular code, computer language design, OS design, and everything else that has to do with writing software for a computer. (hence the name).
Between the time the algorithm is written in paper in pseudo-code, to the time it runs inside the computer, many choices can be made that will affect its performance and ease of integration. I remember one time where two optimizations I implemented in Freecell Solver made the program run about 50 times as fast (in brute, with the overhead of executing a separate process for each of the inputs), while not decreasing the overall complexity at all.
And naturally, there is the art of designing a software right: choosing the right tools and APIs, creating good interfaces, writing modular code, etc. Then, of course, there is software management: working as a team, building a schedule, writing tests for the software, using version control, bug tracking procedures, and so on. All of these fall under Computer Science. Unless, of course you want to claim that they (and CS) are included under Software Engineering, and then we can continue the argument over the meaning of terms ad infinitum. :-)
I wrote a Mission Statement for Doclanx. I don't intend to publish it until I have some serious content to show for, but at least it's there to organize my thoughts. Next, I wrote a small section about how to learn Perl in the first place, so people can understand the reference.
Meanwhile, there was a lot of messages posted to perl5-porters on the original thread. Most of them were bashing me, but some came with bizarre albeit perhaps useful suggestions.
IGLU Jobs Tracker
Worked a bit on the IGLU Jobs tracker. I converted it to use CGI::Application and fixed some bugs and made the interaction a bit nicer (added colours to the table rows, etc).
Someone reported a bug in which transmitting an illegal parameter in the area, caused the server to display an "Internal Error" error. He initially thought it was an SQL injection bug, but I realized it was a non-harmful Perl bug, that could have been caused with any area that's not on the list.
Next on my agenda is a small redirect bug that someone else has discovered (relatively by mistake), and converting the code to use Tangram. And then ton of other stuff. :-). So many things to do, so little time.
In Java's Cover Paul Graham says: "Sun's business model is being undermined on two fronts. Cheap Intel processors, of the same type used in desktop machines, are now more than fast enough for servers. And FreeBSD seems to be at least as good an OS for servers as Solaris. ". Of course, what he said was true, only that Linux became the most common operating system for Intel servers.
This reminded me of a similar prediction in the C++ Programming HOWTO: "As memory (RAM) prices are dropping and CPU speeds are increasing, scripting language like PIKE will EXPLODE in popularity. PIKE will become most the widely used scripting language as it is object oriented and it's syntax is very identical to that of C++ language. " Obviously, Perl, Python, PHP, Ruby and Tcl are more popular than Pike is, and there isn't a visible trend of Pike becoming more popular. Guess that similarity to C++ is not the top priority when choosing a scripting language.