Back to article
Borland's Kylix: turbocharging Linux development
Not Your Father's TurboPascal
April 9, 2001
"Yep," said Grandpa, "I remember back when floppies were over five inches wide! You could get the whole operating system on just one, but it was a squeeze, yessiree. There was this little company called Borland, and they put a whole compiler on one of those floppies. Called it, um, TurboPascal. It was a screamer, too. You could get twenty-thousand lines a minute compiled, and that was on an XT. Not like them whippersnapper gigahertz Athlon things like you youngsters are running these days. Nosiree. Back then, when rocks were soft, we had to run our programs one at a time. But that TurboPascal, yessir, that was something else."
Okay, I'll admit it. I'm old enough to remember (fondly, I might add) the original TurboPascal that came on a floppy disk for $39.95. It was a little sobering to realize, as I did when starting this review, that there are thousands of coders today who were in grade school when TurboPascal 1.0 shipped in November of 1983. Heck, there are programmers who weren't born yet. So, for those too young to recall, TurboPascal made a big splash because it fit on a single floppy (when its major competitor needed half a dozen), ran lightning fast even on an XT (I clocked it at over 20,000 lines per minute compiling on a 4.77 MHz 8088), and was the closest thing to free (beer) around (selling for $39.95, if I recall). TurboPascal was from this really hip company called Borland International, run by a sax-playing barbarian named Kahn. The code itself was written by Anders Hejlsberg in Denmark, but Philippe Kahn's audacious personality caught the imagination of young programmers, myself included.
Was TurboPascal any good? Let me put it this way: Using version 3.0, I once wrote a real-time monitoring system for the HVAC (environmental control) system of a machine shop. The thing talked at 9600 baud over a serial port to an Allen- Bradley programmable logic controller (PLC), using the weirdest serial protocol you ever heard of. It showed (on a Hercules monochrome graphics card -- remember those?) a drawing of the shop with temperature and humidity readings from numerous data points. It communicated with the PLC and updated the screen in realtime, using a multithreading mini-scheduler that I hacked together myself from scratch, because the underlying operating system was DOS. There were even interrupt handlers for the serial port and keyboard. Everything -- and I mean everything -- was written in TurboPascal, with inline assembly language used only for the CLI and STI instructions to manage the 8088's interrupt enable flag and a little stack management. All of this ran on a 4.77 megahertz 8088 with 640K of RAM. So, Bill Gates was right, and 640K was enough. And TurboPascal was as good as it gets.
I stayed with TurboPascal until about verion 5.5, then abandoned it in favor of Watcom C and later REXX, Java, PHP, and others. TurboPascal didn't go away, though -- it just changed its name to Delphi and went after the Windows crowd with a serious rapid application development (RAD) environment. I've heard about Delphi for years, and even received mailings from time to time from Borland -- excuse me, Inprise -- about how great it was. Every one of these went into the trash, usually followed by a snarky comment like, "I don't want your Windows crap -- come back when you port this thing to a real operating system!"
Apparently, an anomoly in the space-time continuum caused my snarling to be piped directly to the brains of Inprise management, because they did exactly that. Maybe they even read my thoughts, because in January they announced that they were dumping the Inprise name, which I never liked, to go back to their Borland roots. Well, maybe they thought of it on their own. Anyway, it came to pass that LinuxWorld Expo in NYC saw the announcement of Kylix, which will eventually have both a C++ and a Pascal version but which today is basically Delphi for Linux.
A lot of the reviews and commentary on Kylix seemed to be written from the viewpoint of an experienced Delphi user: "Hey, look, now we Delphi gurus can move our code to Linux." I wanted to take a look at Kylix as a new user, someone who has never even seen Delphi before, and who is used to coding without a RAD. Hence this review, which I hope you will find informative and interesting. First, You Have To Install It
Kylix comes in a thick box which, unlike a lot of software these days, isn't just full of air to consume retail shelf space and make life hard on shoplifters. Inside the box are the two CDs (one for Kylix itself, one for "companion tools" which are not part of this review), along with three softbound manuals. There is a little "Quick Start Guide" which is really a programming tutorial and which, surprisingly, contains no installation instructions whatsoever. The "Object Pascal Language Guide" does for the Borland's Pascal dialect what the original K&R book does for C. I found it to be well-organized and very readable. The third book, a rather thick tome, is the "Kylix Developer's Guide." This manual is extremely comprehensive and covers the philosophical and practical aspects of Kylix programming, focusing on specific tasks in many cases but also explaining the concepts behind the examples. The examples are real, meaningful code that illustrate some rather tricky concepts, such as rubberbanding graphic selection and multithreading. To say that I was impressed with this book would be an understatement, though I should mention that it does not contain a "dictionary" style reference to the Kylix standard object classes. Rounding out the package is a poster-sized class tree for all the built-in objects, of which there are many.
The installation instructions are on the main CD, and the README file is quite insistent about the need to have very recent versions of system libraries. Kylix is extremely fussy about its environment, and I spent half a day updating my system (which I had previously thought was pretty close to current) as each library upgrade led to a dependency of something else. I ended up with glibc 2.2.1 and libjpeg 6.2.0. To their credit, the folks at Borland provide a pre- test script that examines your machine to see what you need to update before Kylix will install. The script is on the distribution media or can be freely downloaded from the company's web site (see References at the end of this review). My advice is to get your system accepted by the pre-tester before you buy Kylix. I didn't mind bringing my system up to date, but I must admit a little puzzlement at why so many other applications were running just fine on the libraries that I had previously while Kylix wouldn't even install. Kylix is more finicky than either Apache or MySQL, neither of which are exactly trivial programs.