Kuro5hin.org: technology and culture, from the trenches
create account | help/FAQ | contact | links | search | IRC | site news
[ Everything | Diaries | Technology | Science | Culture | Politics | Media | News | Internet | Op-Ed | Fiction | Meta | MLP ]
We need your support: buy an ad | premium membership

The Kylix Quandary

By hulver in Op-Ed
Fri Jan 04, 2002 at 01:24:54 PM EST
Tags: Technology (all tags)

I'm a Delphi developer by trade, although I use Linux heavily at home. When Kylix came out at a reasonable price I snapped it up. Here was a tool that was very familiar to the one I spend all day in. It will allow me to write applications for an OS I love, in a language I love. What's not to like?

OK, so Kylix has got a few bugs. Yes, Borland have released version 2 before a year was even up and before they release any bug fixes for version 1. They've dropped the ball a bit and annoyed some people who spent a lot of money on version 1.

None of these thing really bother me, but I'm becoming increasingly reluctant to carry on using Kylix to develop software.

First the good points about Kylix.
  1. It's Object Pascal
    I like object pascal. It's a clean, well implemented language.
  2. The IDE
    Delphi IDE is like a welcoming friend to me. I know it well, I don't have to learn a new set of keystrokes to use it. CodeInsight is a wonderful invention. The parameters for a function pop up under your cursor. You rarely have to use the help system, because the information you need pops up when you need it.
  3. Compile speed
    Kylix compiles stuff very very quickly
  4. No need to RYO make system
    It's all taken care of for you

Now, the bad points

  1. It's Object Pascal
    Huh? I thought you liked object pascal?
    I do, but it's not as popular a language as say, C or Perl. That means if you want to do an open source program, you've cut out a lot of people who might be interested in helping you.
  2. There are big differences between the Open edition and the Pay-for edition
    The open edition exists so someone can just download it, and use it to compile Kylix code. There are some big differences between the two.
    Borland uses the open edition as a teaser to make you pay for the proper edition. You can only develop GPL applications with the open edition.
    The open edition has lots of units missing, like database access, internet classes.
    The open edition automatically adds a nag screen. You cannot disable this. It even does this for cli applications. Imagine if ls reminded you it was a GPL application every time you ran it? It would if it was written in Kylix OE.
    This causes more problems with collaborative development. You already have to work around the different unit availability problems, now exactly the same code behaves differently depending what version of Kylix you compile it with.
  3. i386 only. Linux only
  4. It's not open source
    Well Duh. Of course it's not. The source is available for all the units you use to compile your applications (if you pay for the right version), but it is not available for the compiler or the IDE.
    Borland are not going to give away the family jewels now are they. They put a lot of money into developing Kylix, and they are not just going to give it away.

This, however creates a problem. Linux moves a lot faster the Kylix can keep up with. Shortly after Kylix was released, the 2.4 kernel was also released. This broke the Kylix debugger. Whoops. Not really a problem, drop back to the 2.2 kernel until it's fixed. Here is the problem. It's still not fixed, not officially. Kylix 2 has been released, and Kylix 1 still does not run correctly under the 2.4 kernel. There is a beta release, but is this good enough? It appears as if Borland can't keep up.

In creating Kylix, Borland have opened up a world of opportunity. Once you start coding on *nix, you love it. I know I'm hooked, but I've started to want more. I don't just want my application to run on i386 Linux, what about *BSD, or Solaris? What do I do when the 64bit chips come out? Do I wait for Borland to release a 64bit version of Kylix, they might never get around to it.

Borland appear to have shot themselves in the foot. Kylix is good. It's very good, but it's not enough, not for me. Looks like I need to start learning C.


Voxel dot net
o Managed Hosting
o VoxCAST Content Delivery
o Raw Infrastructure


Related Links
o Also by hulver

Display: Sort:
The Kylix Quandary | 34 comments (33 topical, 1 editorial, 0 hidden)
Waiting for Builder (4.50 / 2) (#2)
by wiredog on Fri Jan 04, 2002 at 11:01:14 AM EST

Kylix is a step in the right direction. One thing that Linux needs is a powerful, easy to use, and complete, IDE. I didn't start doing Windows programming until C++ Builder came out. Probably won't start doing serious Linux C++ work until Builder for Linux comes out (Real Soon Now, according to Borland). The VCL/CLX is wonderful, beats hell out of MFC. So is the debugger. If you're doing Windows GUI programming, use Builder.

I always liked Borland's license. They didn't care how many machines you installed the tools on, as long as only one person at a time used them. Which was nice if you traveled and used both a laptop on the road and a desktop at home. I had Builder on my laptop and desktop at work, and my desktop at home. And I only had to buy one copy. Other companies get uptight if you do that.

Peoples Front To Reunite Gondwanaland: "Stop the Laurasian Separatist Movement!"

C++ (4.00 / 1) (#3)
by hulver on Fri Jan 04, 2002 at 11:09:52 AM EST

I'm not sure whether to start learning C, or C++. I like OOP, but I like the power of C as well. I don't think you can be a master of both.

At the moment, a lot of C/C++ just looks like line noise to me. All that && || >> stuff just makes my eyes glaze over. I'm sure, if I actually made an effort to learn it, I wouldn't find it that hard, but it's finding time for the initial effort.

[ Parent ]

One can master both (5.00 / 3) (#5)
by Anonymous 242 on Fri Jan 04, 2002 at 11:30:58 AM EST

C and C++ are two entirely different languages. Many people get confused, however, because it is possible to write C programs with C++. C++ can be used strictly as a superset of the C programming language. I've seen this done and on very large projects. The project I'm currently on is almost ten years old and with a few notable exceptions, C++ is only used as C with better memory management.

That said, one can master both languages as long as one understands that they are different. Some C syntax skills will immediately transfer to C++, but mastering a language goes far past syntax. C and C++ have entirely different programming paradigms.

If you want to learn C, pick up Kernighan and Ritchie's The C Programming Language. Be certain to get the second edition, which covers ANSI C. The first edition covers pre-standards C that is very seldom used in the wild. I would also reccomend Stroustrup's The C++ Programming Language for C++, but many people would beg to differ with me. Stroustrup is neither as concise nor as dense as Kernighan and Ritchie. Sometimes less is more. That said, Stroustrup is head over heals better than any other C++ book I've read.

And I'd point out that if one doesn't know either, it might be a better move to just go to C#. My instinct says that C# is going to take over the world. Of course my instinct and US $1.00 will buy you a cup of coffee.


Lee Irenæus Malatesta

This comment posted from a public library internet terminal.

[ Parent ]

C# (none / 0) (#8)
by hulver on Fri Jan 04, 2002 at 12:08:44 PM EST

I don't fancy swapping one proprietry language for another. Espescially when its controlled by Microsoft.

I'm leaning towards C++, just because it's OOP, and I like OOP. It's very complicated OOP though, which puts me off a bit. Object pascal OOP is simple, which makes it lack some functionality (like templates, they sound handy) but obeys the principle of least suprise. I've got a feeling that some of the more complicated things in C++ could jump up and bite you on the arse if you don't have a really indepth understanding of just how they should work in your version of the compiler.

Then again, since I don't know C++, I'm not really qualified to comment.

[ Parent ]

bite you on the arse (none / 0) (#9)
by wiredog on Fri Jan 04, 2002 at 12:20:25 PM EST

Yup. The price of power. C/C++ assumes you know exactly what you are doing and that, yes, you really do want to change the value of that pointer (rather than the object pointed to). Want to de-reference the NULL pointer? Go ahead! Turbo Pascal, and Pascal in general, assumes that you may be a newbie, and need to be prevented from doing anything that might possibly be dangerous. IIRC, Turbo Pascal doesn't even have pointers.

Templates are handy. I find that <vector>, for instance, is very useful.

Peoples Front To Reunite Gondwanaland: "Stop the Laurasian Separatist Movement!"
[ Parent ]

Object pascal (3.00 / 1) (#10)
by hulver on Fri Jan 04, 2002 at 12:29:07 PM EST

OP also presumes you know what you are doing. OP does have pointers (very useful they are to, once you get your head around the whole pointer thing). Yes, you can change the value of the pointer (rather than the object/memory pointed to). You can dereference a NULL pointer (the only difference being, I presume, you have to cast it to something first). Want to write self modifing code, yup, you can do that as well. You'd better make damm sure you know exactly what you are changing though, don't go modifing that v-table unless you know it's not going to blow up the program.

Things that are missing, multiple inheritance. Don't really miss it, but interfaces are not a replacement, no matter how many times Team Borland tell you they are.

Erm, don't really miss anything else.

[ Parent ]

You couldn't be more wrong. (3.00 / 1) (#13)
by ghjm on Fri Jan 04, 2002 at 02:45:27 PM EST

When it first came out, Turbo Pascal drew fire from the ISO Pascal community precisely because it allowed all sorts of dangerous or convenient things that ISO Pascal generally didn't. In its day Borland was accused (quite heatedly at times) of "embrace and extend" techniques very similar to what Microsoft does today.

For the record, here's a null-pointer exception, coded in Turbo Pascal:

p: pointer;

p := pointer(0);
p := p^; // GPF

And here's a nice way of handling it in Object Pascal:

p: pointer;

p := pointer(0);
p := p^; // GPF
on e: exception do

For those of you still holding copies of incorrect memes like "Pascal doesn't have pointers," please know that Delphi and Kylix are modern, full-featured languages comparable to anything else out there. Object Pascal is similar to C++ in that it is a hybrid procedural/object language, features manual allocation/deallocation (rather than garbage collecting as in, say, Java), and has a syntax somewhat more verbose than C++ but largely equivalent semantically. Object Pascal lacks multiple inheritance (by design, and you don't miss it) and templates (which I wish it had). It also has a few unique features of its own, like a set datatype, subprocedures, and a better module system (one file describes both interface and implementation; there's no equivalent to a .h file because all source files are self-describing).

All that being said, I have to say I agree with a lot of the comments made about Kylix. It's a sweet little language but there are some real roadblocks to its adoption. It's the same problem Borland fans have faced for the past several years: great technology, sucking management & marketing. I used to say some other company should buy Borland, until they proved just how much worse it could get (i.e. Corel). At this point I don't know what the answer is.


[ Parent ]
A nice quote... (5.00 / 1) (#19)
by arafel on Fri Jan 04, 2002 at 07:02:57 PM EST

"C is the language that believes that the programmer knows what he wants and deserves to get it, good and hard."
-- H.L. Menken, paraphrased

[ Parent ]
Re: bite you on the arse (none / 0) (#28)
by asincero on Sat Jan 05, 2002 at 07:55:15 PM EST

> IIRC, Turbo Pascal doesn't even have pointers.

Not only did Turbo Pascal have pointers, but even ISO/ANSI Pascal had pointers!


[ Parent ]
Haven't you ever heard of -Wall ? (none / 0) (#29)
by scanman on Sat Jan 05, 2002 at 08:38:03 PM EST

"[You are] a narrow-minded moron [and] a complete loser." - David Quartz
"scanman: The moron." - ucblockhead
"I prefer the term 'lifeskills impaired'" - Inoshiro

[ Parent ]

Nuh-uh (4.00 / 1) (#23)
by fluffy grue on Fri Jan 04, 2002 at 09:28:44 PM EST

C++ isn't a strict superset of C. Its struct semantics are entirely different, for example (a C++ struct is just a C++ class with default public instead of private, and structs don't exist in their own namespace) (though most C++ compilers just ignore the struct namespace when it's used in a variable declaration). To properly use a C-style struct from within C++ you have to wrap it in a extern "C" block (especially when linking it with C code using the same struct definition). I'm sure there's other things which aren't upwardly-compatible, but struct is the big one.
"Is not a quine" is not a quine.
I have a master's degree in science!

[ Hug Your Trikuare ]
[ Parent ]

All that && || >> stuff (5.00 / 1) (#6)
by wiredog on Fri Jan 04, 2002 at 11:33:22 AM EST

What's fun with C/C++ is that >> can have multiple meanings. It's both the left shift operator and the input operator. In an if() expression, && is 'and' and || is 'or'. In logical expressions, 'and' is & and 'or' is |.

And weren't those fun sentences to write! "And is and and or is or". My last job, I was doing a lot of setting/getting bits. Much anding, oring, and xoring. Amazing how important endianness can be.

Peoples Front To Reunite Gondwanaland: "Stop the Laurasian Separatist Movement!"
[ Parent ]

C++ (4.00 / 1) (#12)
by kungfooguru on Fri Jan 04, 2002 at 02:22:58 PM EST

"What's fun with C/C++ is that >> can have multiple meanings. It's both the left shift operator and the input operator." Correction! i am a C programmer who knows C++, i dont know why, i never use it. And i must say i am appalled by what u wrote. >> is an input operator only in C++, in C its just for left shift of bits. Please dont mix these up, it hurts me. Input and output in C++ are one of the reasons i hate it so much, if i ever code in C++ i still use printf (), gets (), and fscanf () for all input ouput, its just the way to go.

[ Parent ]
Even more fun (none / 0) (#14)
by decaf_dude on Fri Jan 04, 2002 at 03:30:37 PM EST

When you overload those operators in C++, use them for something completely unexpected in your fancy-schmancy classes. Combine that with non-existant documentation and watch your colleagues convulse in pain :D


BCFL (Bastard Coder From Hell)


[ Parent ]
Loren? (none / 0) (#16)
by Whyaduck on Fri Jan 04, 2002 at 03:35:52 PM EST

Loren, is that you?

Oh Lydia, oh Lydia, say, have you met Lydia?
Lydia The Tattooed Lady.
She has eyes that folks adore so,
and a torso even more so.

[ Parent ]
Clarification (2.00 / 1) (#15)
by newellm on Fri Jan 04, 2002 at 03:34:54 PM EST

"In an if() expression, && is 'and' and || is 'or'. In logical expressions, 'and' is & and 'or' is |."

This statement is partly misleading and partly wrong. '&&' is always a "logical" AND comparitor. '||' is always a "logical" OR comparitor. Both return a boolean value of true or false. '&' on the other hand, is a "bitwise" AND operator. '|' is a "bitwise" OR operator.

The only time when this is not true is if you overload the operators in C++. While this can be very error prone, it can also be very powerfull.

if a and b are integers. (( a && b ) == (a & b)) will always return true. This is why so many people get these operators confused.

[ Parent ]
Um, ((a && b) == (a & b)) isn't always (none / 0) (#17)
by BlaisePascal on Fri Jan 04, 2002 at 04:19:28 PM EST

Using my copy of The C++ Programming Language (2nd ed) as a reference...

&& returns 1 if both operands are nonzero, 0 otherwise. & yields a bitwise and of the operands.

So 1 && 2 == 1, and 1 & 2 == 0, so ((1 && 2) == (1 & 2)) is false.

[ Parent ]

true and false in C/C++ (none / 0) (#32)
by alder on Tue Jan 08, 2002 at 02:52:23 PM EST

You simply (or the book you are using) are not correct. C/C++ defines only value for FALSE as being 0. TRUE has a NOT FALSE value, which could be 1 but rather often then not it's just ~0, and though it's compiler dependent, I believe "often" could be safely changed to "typical".

Taking into account what code for compiler is easier to generate on most platforms (I hope I'm not too of base - at least it's true for those architectures I'm familiar with) at the low (machine code) level && is implemeted as &

[ Parent ]

oops... (none / 0) (#33)
by alder on Tue Jan 08, 2002 at 02:57:58 PM EST

that was supposted to be || and |...

[ Parent ]
& and && in C/C++ (none / 0) (#34)
by BlaisePascal on Thu Jan 24, 2002 at 05:58:34 PM EST

I didn't mention TRUE or FALSE, I simply talked about what the language reference I'm using says about the operators.

The language reference I'm using is The C++ Programming Language, 2nd edition by Bjarne Stroustrup, specifically sections r.5.11 adn r.5.14, both on page 505.

I agree that the 2nd edition is not the current version, but the claim was about behavior in C/C++, which would imply that the behavior would be the same in both languages -- and would be the same in C++ 2.0 and ANSI C++. If you think that Dr. Stroustrup got the language wrong in his book, then I will be unable to convince you.

r.5.12 Bitwise Exclusive AND Operator...The usual arithmetic conversions are preformed; the result is the bitwise AND function of the operands. The operator applies only to integral operands.

To me, this would imply that (0xA9 & 0x0F) would evaluate to 0x09, based on simple bitwise ANDing of the results.

This would also imply that ('A' & '2') would evaluate to 0 (assuming ASCII), because the binary representation of those two characters share no bits in common.

r.5.14 Logical AND Operator...The && operator groups left-to-right. It returns 1 if both its operands are nonzero, 0 otherwise. Unlike &, && guarantees left-to-right evaluation; moreover the second operand is not evaluated if the first operand evaluates to 0. The operands need not have the same type, but each must have arithmetic type or be a pointer. The result is an int. All side effects of the first expression happen before the second expression is evaluated.

From that, I would assume that (0xA9 && 0x0F) would evaluate to 1, simply because both 0xA9 and 0x0F are nonzero.

In a boolean context, I fully understand that any non-zero value is considered "true" and zero is considered "false", but that doesn't matter in this case.

Consider the following two implementations of strcmp():

char *longer1(char *pin, char *qin) { char *p = pin; char *q = qin; while (*p && *q) { p++; q++; } if (*p) return pin; return qin; }


char *longer2(char *pin, char *qin) { char *p = pin; char *q = qin; while (*p & *q) { p++; q++; } if (*p) return pin; return qin; }

The two functions are identical except for the use of && versus & in loop condition. The problem is that longer1("ABCDE","01234567") will say that the digit string is longer, but longer2("ABCDE","01234567") will say that "ABCDE" is longer -- because ('A' && '0') is true, and ('A' & '0') is false.

As far as your assertion that || is implemented as |... That -could- work, except that || is guaranteed to have left-right short-circuit evaluation, which | does -not- have. Oh, and Stroustrup does say that (2 | 4) evaluates to 6 and (2 | 4) evaluates to 1, by definition, so that's another reason why it won't work.

[ Parent ]

&& vs & (none / 0) (#20)
by PresJPolk on Fri Jan 04, 2002 at 08:35:08 PM EST

The values as integers can differ, but (bool)(a & b) == (bool)(a && b) should always be true.

[ Parent ]
Untrue (5.00 / 2) (#22)
by fluffy grue on Fri Jan 04, 2002 at 09:15:34 PM EST

Example: a=2, b=4. (a&b) = 0, (a&&b) != 0 (but it's unspecified what it will actually be equal to).

Also, even though logically you can use | instead of ||, semantically you can't, since || follows short-circuit evaluation. So, the statement if (a|b) will evaluate the same as if (a||b), but the statement if (a() | b()) will not evaluate the same as if (a() || b()).
"Is not a quine" is not a quine.
I have a master's degree in science!

[ Hug Your Trikuare ]
[ Parent ]

oops (none / 0) (#26)
by PresJPolk on Sat Jan 05, 2002 at 12:04:52 AM EST

yup, never mind. :-)

[ Parent ]
How I made that transition (4.00 / 1) (#25)
by dennis on Fri Jan 04, 2002 at 11:06:57 PM EST

I grew up on Turbo Pascal, myself. I seriously considered Kylix for a project I'm working on now, but ended up with C++ for some of the reasons you describe. Besides which, there are so many books written for C++, and so much sourcecode written in it, that I got tired of feeling illiterate. Here are the books that have helped me so far...

For a very fast introduction to C, just to take off some of the eyeglaze, C in Plain English by Brian Overland was great. I know, real programmers read K&R, yadayada. But I just wanted to get the syntax and flavor, and after a couple hours reading through Overland's book I was writing C code for a simulation I was working on.

Personally, though, I recommend quickly moving to C++. C is a simpler language, but you end up writing your own code to do things that are already there in C++. People say you don't really need templates, or multiple inheritance, or operator overloading...but if you know what you're doing, the combination of all three is amazingly powerful. I still get nostalgic for nice clean Pascal (and haven't totally abandoned it), and I still don't enjoy reading that messy-looking C++ syntax, but I have to admit it can do things that Pascal never dreamed of.

The first book that really helped me get started was Accelerated C++ by Koenig and Moo. These two have been involved with C++ since everyone who knew it could fit in one room. They start you right off using the Standard Template Library (generic linked lists, etc), which saves an awful lot of effort. This is not a simplified introductory text, it's fairly rigorous, but it's also slim and fast-paced.

However, about halfway through I got frustrated. For most of the book they focus on generic programming, and don't get to object-oriented stuff until near the end. But all the sourcecode I was trying to read used objects, and hardly any templates. So I switched to another book, C++ In Action by Bartosz Milewski. He starts with object-oriented programming in the first chapter. After a pleasant read through chapter four, I could finally read most C++ without glazing eyes. Milewski also covers a lot of interesting techniques, like smart pointers and exception-safe resource management. He doesn't do so much with templates, so the two books are pretty complementary.

After that there's plenty more, if you want it. One great thing about C++ is that there's a community of expert programmers who publish a lot of journal articles and books about writing good, large-scale software. It seems all the best books are published by Addison-Wesley - look for Scott Meyers and Herb Sutter. Design Patterns is a classic on object-oriented design that assumes knowledge of C++, and it really opened my eyes. But to really get your mind blown, pick up Modern C++ Design by Andrei Alexandrescu. Your eyes will glaze again until you've read a few of the other books and played for a while, but Andrei shows you how to make C++ absolutely sing. Don't get thrown off by Scott Meyer's foreward - I assumed I wasn't ready for the book because I didn't understand the foreward, but Andrei takes it a step at a time.

I'm a relative beginner, working on my first really large project that's not web/database stuff. But these books are so good I feel like I've got a team of expert programmers hanging around giving me tips.

[ Parent ]

Borland's getting uptight now (4.00 / 1) (#11)
by Whyaduck on Fri Jan 04, 2002 at 01:14:09 PM EST

C++ Builder 5 license:
You may install a copy of the Software on a computer and freely move the Software from one computer to another, provided that you are the only individual using the Software. If you are an entity, Inprise grants you the right to designate one individual within your organization ("Named User") to have the right to use the Software in the manner provided above.
Their license seems to be different for JBuilder 6:
Subject to the terms and conditions of this Agreement, Borland grants to you a personal, nonexclusive, nontransferable and limited license to install and execute the Product on one (1) computer for use by you or, if you are an entity, one (1) person in your organization ("Named User") solely to create, compile (including byte code compile), test and deploy, in source or object code form, your own application programs and other works ("Works").
I was also surprised to find that the JB 6 is node locked. It generates a hash of some sort that's (probably semi-)unique to the box it's running on and requires an online or phone registration to run more than 30 days. In other words, if I need to work late, I need to stay at the office :( The CBuilder 5 license is much less restrictive, and it certainly isn't node locked. Does anyone know if all Borland's future releases will be node locked?

Oh Lydia, oh Lydia, say, have you met Lydia?
Lydia The Tattooed Lady.
She has eyes that folks adore so,
and a torso even more so.

[ Parent ]
I miss their old license (none / 0) (#21)
by fluffy grue on Fri Jan 04, 2002 at 09:06:16 PM EST

Their old license was great. They called it the "Like a book" license - "Like a book, only one person can use one copy of the software at a time. You may install it on as many computers as you like as long as you can guarantee that only one person will be using your copy at once." Technically the license allowed me to send a copy of it to someone else so that they could compile some code I just sent them.

In practice it ends up being like an unenforced version of the Quake 3 key authentication stuff, which is (IMO) the Right Way to restrict software copying through a technological mechanism. Too bad id's implementation of the Q3 key stuff is kinda ick, and they get mad if you share the key with others because the actual software license isn't the "like a book" license like it (IMO) should be.

I think "like a book" is the best way to license proprietary software, and using a secure, lightweight and anonymous authentication protocol for enforcing it (and not requiring enforcement if there's no network access) is the best way to enforce it.
"Is not a quine" is not a quine.
I have a master's degree in science!

[ Hug Your Trikuare ]
[ Parent ]

I'm forced to agree (5.00 / 3) (#4)
by japhar81 on Fri Jan 04, 2002 at 11:21:29 AM EST

I love delphi. I wish I could find a job doing delphi. That said, Borland dropped the ball when Kylix 1 first shipped (see my story back in May 2001). Basically, they rushed through it, which is understandable, but they should have been patching. Quickly. What did they do instead? Focus on their revenue stream and release 2.0. Yes, companies exist to make money, but in reality, Kylix, even at 2.0 is still largely unusable. There are still frequent crashes, and in one instance it actually compiled the statement:


For those of you that dont know pascal, it allowed me to change the value of 1. Wanna talk about a bug? Imagine my surprise when my program returned some ungodly negative number and I traced it to that.

To the team at borland (several of whom I know personally, and know they read k5). Kylix had potential. It still does. But for gods sake, make a stable, usable product. If you cant keep up with kernel patches, pick a couple and dont support the rest. You bit off more than you could chew, cut your losses, do it right. Please. </RANT>

<H6>Rome is always burning, and the younger generation never respects its elders. The time of your second coming, japhar81, is no exception. -- Aphasia</H6&gt
I agree (none / 0) (#7)
by hulver on Fri Jan 04, 2002 at 11:50:11 AM EST

Kylix 2 is what Kylix 1 should have been. If they had left it any longer though, it would never have been released.

I can't fault them for Kylix 1. I've not found any bugs in the language, plenty with the IDE & the debugger, but nothing that can't be worked around. No great showstoppers.

For what it does, Kylix is a great product, but it's got a lot of limitations. The biggest of which I think is the closed source nature of the IDE and the Compiler. I know the source for those are never going to be released while Borland still views Delphi/Kylix as a revenue stream, and I don't fault them for it. They've never even hinted that they would release the source for them.

In Delphi, I don't use a third party component unless there is source available that I can look at to fix bugs. Unfortunatly, on Linux, this has also become the case for the compiler.

I wish them luck with it, and I'm still using it (see the Reagent project) but I don't think V2 of Re-agent will be wholy Kylix. I'm going to have to start migrating away from it if I want to support more than 2 platforms (Windows & Linux i386).

[ Parent ]

Kylix compiler (none / 0) (#27)
by Trepalium on Sat Jan 05, 2002 at 07:16:25 PM EST

I get the feeling that more people would be willing to use Kylix for serious work, if there was a free compiler to go with it. As it stands, it's very inconvenient to have to distribute binary only packages that may or may not be compatible with the libc, and so on, native to their platform. Borland has released parts of CLX under the GPL license (or under Borland's No Nonsense license if you buy a retail package). Unfortunately neither GNU Pascal or FPC can compile Delphi-ish object pascal code right now.

I think that if a free compiler existed, it would greatly help Borland's vision of Kylix becoming a definitive platform for cross platform development. Unfortunately because of it's limitations, most "open source" projects that make use of Kylix tend to have it as an afterthought, with the Windows based version compiled with Delphi is more or less the only version that sees extensive use.

Short of writing Java code, it's still difficult to write code that runs similarily on different platforms, sadly.

[ Parent ]

Kylix is a great concept (5.00 / 2) (#18)
by scorbett on Fri Jan 04, 2002 at 04:40:14 PM EST

As a former Delphi developer, I agree with your points about Object Pascal and the Delphi IDE. I worked with every version of Delphi up to and including 4, before switching to C++ and eventually Java. I miss the Delphi IDE, and even though Object Pascal is not as clean a language as Java, it's certainly preferable to C++. I'm disappointed to hear these negative comments about Kylix. It's a shame that Borland doesn't seem to be putting enough effort into maintaining and improving it. Kylix could be a huge boon to developers who are aiming to enter the Linux world but only have Windows development experience, or for those developers who just simply prefer a RAD IDE to the traditional Unix/Linux make system.

Are you aware of the Lazarus free pascal project? It claims to be able to compile (some) Delphi code on several platforms (Win32, Linux, OS/2, 68K, etc). Lazarus, being a free open source project, doesn't have the spit and polish of Borland's Kylix, but it shows a lot of potential as a possible future replacement for Kylix (though it's still under heavy development).

Need More Information (none / 0) (#24)
by selkirk on Fri Jan 04, 2002 at 10:04:12 PM EST

My question to you is what type of software do you intend to write?

I used to be on a committee that evaluated and recommended development tools for a very large company. The company had standardized on Delphi as its windows development language with Delphi 1.0. In my job I went to the Borland conferences, participated in beta testing programs, had contact with various programmers inside Borland and had a series of Borland representatives come to our headquarters to explain their future plans and sell their products.

I am not familiar with Kylix, but I am familiar with Borland.

If you want to write open source software, you might want to stay away from Kylix. Aside from the difficulty of attracting other programmers, the risk of Borland abandoning Kylix is very high. The amount of money Borland makes from Kylix is simply not enough to sustain their interest in the product. They will neglect it.

Choosing Kylix depends on what you want to write and your tolerance for risk. More information please.

I See Stupid People (3.00 / 4) (#30)
by codepunk on Sun Jan 06, 2002 at 05:16:57 PM EST

This has got to be the biggest load of bull I have ever seen. Yes go ahead and drop object pascal in favor of a non oop language such as C, makes perfect sense to me.

First of all there is nothing that you cannot obtain for kylix OE that exists for enterprise version.

Net Components Download Indy from nevrona.com
Postgres download PGOEDB
Mysql download TMySql

To get rid of the nag screen start your app with the -ns switch and bingo it is gone. If you want to get rid of it when you are running in the ide add it to your run parameters.

I386 only does not bother me in the least

So yes I am suggesting that the article is nothing more than a troll. We use Kylix extensively where I work and have absolutely zero problems with it, unless you call very fast development a problem.

I am amazed at the number of idiots walking the earth!
Use Free Pascal (none / 0) (#31)
by Marcov on Mon Jan 07, 2002 at 05:03:30 AM EST

CVS version is nearly D6 compatible in Object Pascal (could compile CLX I think with some changes)

GUI might be harder though.

Available for a range of i386 platforms, and experimental m68k support.
Also visit lazarus.freepascal.org for a GUI classes
set and IDE.

FPC is not a Kylix substitute in every way, but can
be in a lot of cases, depending on what you do.

The Kylix Quandary | 34 comments (33 topical, 1 editorial, 0 hidden)
Display: Sort:


All trademarks and copyrights on this page are owned by their respective companies. The Rest 2000 - Present Kuro5hin.org Inc.
See our legalese page for copyright policies. Please also read our Privacy Policy.
Kuro5hin.org is powered by Free Software, including Apache, Perl, and Linux, The Scoop Engine that runs this site is freely available, under the terms of the GPL.
Need some help? Email help@kuro5hin.org.
My heart's the long stairs.

Powered by Scoop create account | help/FAQ | mission | links | search | IRC | YOU choose the stories!