Want to read Slashdot from your mobile device? Point it at m.slashdot.org and keep reading!

 



Forgot your password?
typodupeerror
Programming

Journal Sanity's Journal: Progluminators 11

For millennia before the invention of the printing press, people known as "Illuminators" were responsible for the manual copying of religous and other manuscripts. Of course they didn't just copy the books, they would adorn the documents with elaborate paintings and illustrations, often spending weeks just working on the first letter of a chapter. It may have taken months or even years to copy a book - but by golly! - the result was perfect - not just because of its beauty, but because you knew just how much time had gone into its creation.

Back in the early days of the computer, people devoted similar (by today's standards) exacting care and attention to the preparation of punched cards, which contained hundreds or even thousands of painstakingly planned and constructed instructions, which they would feed to the machine which would eventually spit out a response.

Imagine the horror of the medieval illustrators when they first saw the printing press. Now, rather than taking months or years, a book could be created in just hours, not by an artist, but by anyone capable of operating the press! The new machine had automated the sacred task of carefully painting each beautifully crafted letter on the page! Rather than the infinite possibilities where characters are drawn with the flexible tip of the illuminator's brush - each is now stamped out, each identical, forced to conform. Suddenly books were no-longer works of art, each representing vast amounts of personal labor - they were mass-produced to a quality no greater than that which was required to convey their meaning to the reader!

The punched card gave way to terminals where a faulty program could be modified in minutes, rather than the hours necessary to repunch the cards and await one's turn at the altar of the great computer. The binary programming languages were replaced by assembly, and later by compilers - which automated the sacred task of deciding which register should be used to store which byte of data.

It is the same Illuminator's revulsion that we occasionally see in response to modern languages such as Java which (shock horror!) dare to automate tasks like deciding when particular areas of a computer's memory are no longer required. No more can the progluminator carefully craft the exact combination of operating system function calls required to send a byte to the network, now they are forced to conform to the artistically uninspired methods of the cross-platform API!

Of course, just as the printing press - despite upsetting the old and honored profession of illumination - gave birth to a new era of learning and scientific progress, so will programming languages like Java and C# lead to a richer diversity of ideas in computer science, despite upsetting the progluminators of our industry forever regretting the passing of the days when it took two weeks to create a linked list - but by golly it was perfect!

Now, I have - in my time - heard criticism from C++ advocates for my decision to implement Freenet in Java. This always struck me as ironic since generally their opinions were typically reminiscent of the progluminator argument, yet the incredible inelegance of C++, in my view, makes it much more deserving of progluminator scorn than Java could ever be. C++ is essentially an elaborate macro pre-processor for C*, which attempts to crudely duplicate concepts such as Object Orientation and templates, while hammering them into something that can convinently be translated into C. The result is predictably ugly - sure, you can have templates, but be sure you are familiar with the 101 caveats they bring with them due to their underlying implementation. Sure, have your classes and objects, but woe to the programmer that forgets that ultimately they are using an elaborate macro preprocessor.

The bottom line? Don't bother telling me that Freenet should be implemented in C++ unless you are willing to spend months illustrating your code on stretched leather with a carefully prepared pheasant feather while paying particular attention to the initial "#".

* In fact Bjarne Stroustrup's original implementation was just-that, it took C++ code and converted it to C prior to compilation by a C compiler

This discussion has been archived. No new comments can be posted.

Progluminators

Comments Filter:
  • ...but I do care about having a horrible bloated non-free piece of software installed on my server. I speak about the Java Virtual Machine, of course.

    I do run Freenet, and the disproportionate memory usage of Sun's JVM is sucking my poor server dry and forcing me to not have Freenet on all the time. There are plenty of good programming languages out there that a) have a decent Free implementation and b) have smaller virtual machines. How about Python? Ruby? Scheme?

    Anyway, perhaps gcj or kaffe will one d

    • but I do care about having a horrible bloated non-free piece of software installed on my server. I speak about the Java Virtual Machine, of course.
      So use Kaffe [kaffe.org].
      I do run Freenet, and the disproportionate memory usage of Sun's JVM is sucking my poor server dry and forcing me to not have Freenet on all the time
      The recent NIO improvements will make a big difference to CPU and memory usage.
      • Kaffe, up until very recently, was not useful for anything but playing around. RedHat even shipped it a long time ago, but changed their mind. Maybe it is better now, but recent postings on the freenet mailing list seem to indicate that kaffe and freenet do not always get along nicely.
        • Maybe it is better now, but recent postings on the freenet mailing list seem to indicate that kaffe and freenet do not always get along nicely.

          The Kaffe project was dormant for quite a while, but recently it has reawakened. Kaffe can run Freenet, some of Freenet's developers use it exclusively, but it does run into problems every now and then (99% of the time it is due to bugs in Kaffe, not Freenet).

          It isn't unusual for the price of relying 100% on free software to be some added inconvenience.

      • Is Java NIO real non-blocking I/O, or just more "hidden" threads blocking on what is essentially a blocking I/O interface and then issuing wakeups to the threads you know/care about? If the latter (which is common) I wouldn't get my hopes up too much about it improving performance for real applications.
        • No, it is real non-blocking IO. We haven't converted all of Freenet to NIO yet, but we have already halved the number of threads Freenet uses. Theoretically, using NIO, the whole of Freenet could run in one thread (it is unlikely we will take things to that extreme though).
    • I wholeheartedly agree with this. I have access to a couple of dedicated servers, on which I was going to let freenet run. I was really unhappy to see the impact of freenet (or rather the JVM) had.

      The performance of the network is dependent on the speed of the program of course, but definately also on how many nodes participate on the network. You'd think the creators of freenet would have made it have a very low overhead in terms of dependencies, memory, bandwidth, etc., so that admins everywhere who are
  • I don't particularly have a problem with using Java, just with using Java where it's not appropriate. If you need to write something that has good and predictable performance, Java is the wrong choice - not because it's interpreted, that's a myth in the modern world of JIT compilers, but because of its voracious appetite for memory and its thoroughly non-deterministic garbage collection (an implementation artifact, but apparently a universal one). If your code might ever go into the kernel, or has to inte
  • I'm a Java guy myself, but I use it almost exclusively server side - that whole jatooie kablooie.

    The only reason I don't like Java client-side is because Swing really, really sucks, compared to native interfaces, especially if you're using keyboard navigation like I do all the time.

    That said, I've heard good things about parts of Eclipse, which (IIRC) lets you use native widgetsets etc. on a variety of platforms while still using SWT.

  • I think you are partially wrong about the medieval part.

    Illuminators were tasked with the illustrations, including big "illuminated" capital letters. The rest of the text was a task for other specialists (amanuenses?).

If you aren't rich you should always look useful. -- Louis-Ferdinand Celine

Working...