D - D vs Other Languages
- Alisdair Meredith <alisdair.meredith uk.renaultf1.com> May 30 2003
- "Walter" <walter digitalmars.com> May 30 2003
- "Luna Kid" <lunakid neuropolis.org> May 30 2003
- Alisdair Meredith <alisdair.meredith uk.renaultf1.com> May 30 2003
- "DRS" <drs removethis.ihug.com.au> May 30 2003
- Ilya Minkov <midiclub 8ung.at> May 30 2003
- "Matthew Wilson" <matthew stlsoft.org> May 30 2003
- "Walter" <walter digitalmars.com> May 30 2003
- Georg Wrede <Georg_member pathlink.com> May 30 2003
- Alisdair Meredith <alisdair.meredith uk.renaultf1.com> May 30 2003
- "Matthew Wilson" <matthew stlsoft.org> May 30 2003
- Alisdair Meredith <alisdair.meredith uk.renaultf1.com> May 30 2003
- "Sebastian Moleski" <s.moleski tcu.edu> May 30 2003
- Andy Friesen <andy ikagames.com> May 30 2003
- Ilya Minkov <midiclub 8ung.at> May 30 2003
- C <cc.news gateway.mirlex.com> Jun 01 2003
- Georg Wrede <Georg_member pathlink.com> May 31 2003
- C <cc.news gateway.mirlex.com> Jun 02 2003
- Georg Wrede <Georg_member pathlink.com> Jun 03 2003
- "Walter" <walter digitalmars.com> May 31 2003
- Garen Parham <nospam garen.net> Jun 03 2003
- "Walter" <walter digitalmars.com> Jun 03 2003
- "DRS" <drs removethis.ihug.com.au> May 30 2003
- "Sebastian Moleski" <s.moleski tcu.edu> May 30 2003
- "DRS" <drs removethis.ihug.com.au> May 30 2003
- "Walter" <walter digitalmars.com> May 31 2003
- Ilya Minkov <midiclub 8ung.at> May 31 2003
- "Walter" <walter digitalmars.com> May 31 2003
- Alisdair Meredith <alisdair.meredith uk.renaultf1.com> May 30 2003
- "Sebastian Moleski" <s.moleski tcu.edu> May 30 2003
- Alisdair Meredith <alisdair.meredith uk.renaultf1.com> May 30 2003
- "Sebastian Moleski" <s.moleski tcu.edu> May 30 2003
- Ilya Minkov <midiclub 8ung.at> May 30 2003
- "DRS" <drs removethis.ihug.com.au> May 30 2003
- Alisdair Meredith <alisdair.meredith uk.renaultf1.com> May 30 2003
- "William Meyer" <bill_meyer earthlink.net> Jun 01 2003
- "Sebastian Moleski" <s.moleski tcu.edu> Jun 01 2003
- "Sebastian Moleski" <s.moleski tcu.edu> May 30 2003
- "DRS" <drs removethis.ihug.com.au> May 30 2003
- "Sebastian Moleski" <s.moleski tcu.edu> May 30 2003
- "DRS" <drs removethis.ihug.com.au> May 30 2003
- "Sebastian Moleski" <s.moleski tcu.edu> May 30 2003
- "DRS" <drs removethis.ihug.com.au> May 30 2003
- Ilya Minkov <midiclub 8ung.at> May 30 2003
- "DRS" <drs removethis.ihug.com.au> May 30 2003
- "Walter" <walter digitalmars.com> May 31 2003
- "DRS" <drs removethis.ihug.com.au> Jun 01 2003
- "Sebastian Moleski" <s.moleski tcu.edu> Jun 01 2003
- "Sebastian Moleski" <s.moleski tcu.edu> May 30 2003
- Ignacio Vazquez <Ignacio_member pathlink.com> Jun 11 2003
- "Walter" <walter digitalmars.com> Jun 11 2003
- Alisdair Meredith <alisdair.meredith uk.renaultf1.com> Jun 12 2003
- "DRS" <drs removethis.ihug.com.au> Jun 12 2003
- Alisdair Meredith <alisdair.meredith uk.renaultf1.com> Jun 12 2003
- "DRS" <drs removethis.ihug.com.au> Jun 12 2003
- "Ignacio Vazquez" <ivazquez orioncommunications.com> Jun 12 2003
- "DRS" <drs removethis.ihug.com.au> Jun 12 2003
- Ilya Minkov <webmaster midiclub.de.vu> Jun 13 2003
- "DRS" <drs removethis.ihug.com.au> Jun 14 2003
- Andy Friesen <andy ikagames.com> Jun 14 2003
- "DRS" <drs removethis.ihug.com.au> Jun 14 2003
- "Fabian Giesen" <rygNO SPAMgmx.net> Jun 14 2003
- Alisdair Meredith <alisdair.meredith uk.renaultf1.com> Jun 15 2003
- "DRS" <drs removethis.ihug.com.au> Jun 15 2003
- "Sebastian Moleski" <s.moleski tcu.edu> Jun 15 2003
- Ilya Minkov <webmaster midiclub.de.vu> Jun 15 2003
- "DRS" <drs removethis.ihug.com.au> Jun 16 2003
- "Sean L. Palmer" <palmer.sean verizon.net> Jun 18 2003
- "Walter" <walter digitalmars.com> May 31 2003
- Alisdair Meredith <alisdair.meredith uk.renaultf1.com> May 30 2003
- Garen Parham <nospam garen.net> Jun 03 2003
- "DRS" <drs removethis.ihug.com.au> Jun 03 2003
- Garen Parham <nospam garen.net> Jun 04 2003
- Alisdair Meredith <alisdair.meredith uk.renaultf1.com> Jun 04 2003
- Garen Parham <nospam garen.net> Jun 04 2003
- Georg Wrede <Georg_member pathlink.com> Jun 05 2003
- Helmut Leitner <leitner hls.via.at> Jun 05 2003
- Georg Wrede <Georg_member pathlink.com> Jun 05 2003
- "Walter" <walter digitalmars.com> Jun 05 2003
- Ilya Minkov <midiclub 8ung.at> Jun 08 2003
- "Carlos Santander B." <carlos8294 msn.com> Jun 08 2003
- Ilya Minkov <midiclub 8ung.at> Jun 09 2003
- "DRS" <drs removethis.ihug.com.au> Jun 09 2003
- Ilya Minkov <midiclub 8ung.at> Jun 09 2003
- "DRS" <drs removethis.ihug.com.au> Jun 09 2003
- jerlyn camina <jerlyn_member pathlink.com> Sep 05 2005
I originally sent this to Walter privately, but he suggested I post here so we can get more involved in any discussion <g> Following up some recent debate in the Borland Delphi newsgroups about this page [http://www.digitalmars.com/d/index.html] I would like to query a couple of items in the list. (I expect you will get a message or two with Delphi's capabilities shortly <g>) i/ Huge play is made on the versatility of array type, which seems somewhat unfair to languages that explictly support the listed behaviour in their STANDARD libraries that are expected as part of a conforming implementation. Specifically, C++ does not have 'resizable arrays' as a langauge feature because they are in the standard library, std::vector. There is no likelihood any proposal to add such a feature to the language would ever pass committee because it is already required to be present (in the library) in any conforming C++ implementation. While I can understand your desire to show your own product in the best possible light, I would like to at least see a 3rd option between 'yes' and 'no' for features implemented in the standard library of other languages (rather than 3rd party libraries, no matter how common) Suggest a 'LIB' cell coloured yellow. [otherwise such clear bias on something I do know well will give me doubts about other items I am less clear on, see below] Under OOP you say C++ has module support. News to me, this is one of the most requested extensions to the library and I still don't know anyone with a clear idea how to approach it! I suggest you change this to 'No' Also, Covariant return types is duplicated in OOP and functions sections, is that intentional? Under reliablility I am very surprised that only 'D' rates as unit testable. I would at least like a link to some material explaining why only 'D' qualifies here. A good opportunity for a sales pitch if ever I saw one, this is the detail that caught my attention most!! [Although I don't use Java, I was surprised that its extensive reflection API and unit-testing community did not qualify] Again, a footnote explaining why C++ does not support all 'C' types would be useful. Do you mean C99 here, or are there even more obvious cases I am missing? I would be happy to see 'struct member alignment control' dropped from C++ (and presumably C) as this relies on common compiler extensions, rather than true features of the language itself. If we are going to permit extensions, there are several popular C++ variants supporting delegates, but I would not suggest you add that to the list either <g> Rather, be stricter and say 'no' to struct layout control. Last but not least, it would be really nice to turn the logic on the Macro Preprocessor. The presence of this mis-feature is the cause of endless annoyance to C++, and its lack is certainly another score for 'D'. Oh, and as a cheeky new feature you might want to add 'reference implementation available' given that I am not yet aware of a conforming C++ implementation [although EDG-based solutions are getting very close now] Interesting chart though. If you can find the people to contribute I would be interested in seeing how Eiffel, Python, Smalltalk and Haskell score as well. -- AlisdairM
May 30 2003
"Alisdair Meredith" <alisdair.meredith uk.renaultf1.com> wrote in message news:3ED71CC3.F205F89F uk.renaultf1.com...i/ Huge play is made on the versatility of array type, which seems somewhat unfair to languages that explictly support the listed behaviour in their STANDARD libraries that are expected as part of a conforming implementation. Specifically, C++ does not have 'resizable arrays' as a langauge feature because they are in the standard library, std::vector. There is no likelihood any proposal to add such a feature to the language would ever pass committee because it is already required to be present (in the library) in any conforming C++ implementation.
The idea is that one can do anything with an add-on library with enough effort, so to compare the languages, library add-ons were excluded. Java strings are explicitly handled by the compiler, as operations involving string literals are translated by the compiler into calls to Java.lang.string.While I can understand your desire to show your own product in the best possible light, I would like to at least see a 3rd option between 'yes' and 'no' for features implemented in the standard library of other languages (rather than 3rd party libraries, no matter how common) Suggest a 'LIB' cell coloured yellow. [otherwise such clear bias on something I do know well will give me doubts about other items I am less clear on, see below]
That's a good thought.Under OOP you say C++ has module support. News to me, this is one of the most requested extensions to the library and I still don't know anyone with a clear idea how to approach it! I suggest you change this to 'No'
The namespace feature of C++ coupled with separate compilation duplicates enough of the features of modules I decided to give it the nod.Also, Covariant return types is duplicated in OOP and functions sections, is that intentional?
No, it's a bug.Under reliablility I am very surprised that only 'D' rates as unit testable. I would at least like a link to some material explaining why only 'D' qualifies here. A good opportunity for a sales pitch if ever I saw one, this is the detail that caught my attention most!! [Although I don't use Java, I was surprised that its extensive reflection API and unit-testing community did not qualify]
It's done in Java with add-on libraries. It is not part of the language.Again, a footnote explaining why C++ does not support all 'C' types would be useful. Do you mean C99 here, or are there even more obvious cases I am missing?
I mean C99 types.I would be happy to see 'struct member alignment control' dropped from C++ (and presumably C) as this relies on common compiler extensions, rather than true features of the language itself. If we are going to permit extensions, there are several popular C++ variants supporting delegates, but I would not suggest you add that to the list either <g> Rather, be stricter and say 'no' to struct layout control.
You're right.Last but not least, it would be really nice to turn the logic on the Macro Preprocessor. The presence of this mis-feature is the cause of endless annoyance to C++, and its lack is certainly another score for 'D'.
It is a feature - there will always be some clever thing you can do with a preprocessor that you can't do otherwise.Oh, and as a cheeky new feature you might want to add 'reference implementation available' given that I am not yet aware of a conforming C++ implementation [although EDG-based solutions are getting very close now]
DMD is not a perfect implementation of D, either <g>.Interesting chart though. If you can find the people to contribute I would be interested in seeing how Eiffel, Python, Smalltalk and Haskell score as well.
My problem is I don't know those languages well enough to write a fair comparison. Also, the chart is designed to compare D with the languages it replaces as well as the pretenders to the throne as replacements <g>.
May 30 2003
feature because they are in the standard library, std::vector. There is no likelihood any proposal to add such a feature to the language would ever pass committee because it is already required to be present (in the library) in any conforming C++ implementation.
The idea is that one can do anything with an add-on library with enough effort, so to compare the languages, library add-ons were excluded. Java
I may be wrong, but I'd say, libraries and standard libraries are fundamentally different things in this context. (And nowadays, with extensible languages coming along, the language vs. stdlib thing is going to be even less clear-cut.) Cheers, Sz.
May 30 2003
Luna Kid wrote:I may be wrong, but I'd say, libraries and standard libraries are fundamentally different things in this context. (And nowadays, with extensible languages coming along, the language vs. stdlib thing is going to be even less clear-cut.)
Especially when design goals of some languages (notably C++) are NOT to provide features in the syntax if they can be provided by a library, but to instead make sure said library is part of the standard. C++ does have associative containers and dynamic arrays 'out-the-box', but they will never be native syntax. I think it would do no harm for the chart to reflect this. The langauge/library barrier is even more blurred as you get to some low-level library classes. Most exception-supporting languages require certain library execptions to be thrown when language-construct fail (in C++, bad_alloc, bad_typeid, bad_dog...) Java would be lost without the Object class, etc. This blurring is a deliberate policy of the language designers. As to which libraries to include? In C/C++ it appears simple as there is a clear ISO standard. Where do you draw the line with Java packages though, and the .NET framework for C#? I still think libraries should be considered, but we need to be clear which libraries are indeed 'standard' for each language. -- AlisdairM
May 30 2003
"Alisdair Meredith" <alisdair.meredith uk.renaultf1.com> wrote in message 3ED79A33.AAF47CD1 uk.renaultf1.com [...]Especially when design goals of some languages (notably C++) are NOT to provide features in the syntax if they can be provided by a library, but to instead make sure said library is part of the standard. C++ does have associative containers and dynamic arrays 'out-the-box', but they will never be native syntax. I think it would do no harm for the chart to reflect this.
By that criteria Object Pascal would probably get a few extra ticks. -- A: Top-posters. Q: What is the most annoying thing on Usenet?
May 30 2003
DRS wrote: --- 8< ---(...out-of-the-box...)--- >8 ---By that criteria Object Pascal would probably get a few extra ticks.
How come? Object Pascal has "set", which is an efficient and good thing combined with enumerations, but too weak to be a general container. Dynamic array support has only appeared since Delphi 4.0 and is fairly weak, i.e. no multidimensional arrays. Strings were a strong point till short ago, but how when all flavors of unicode rule the world, it seems more appropriate if it were possible to subclass strings. BTW, other more-or-less interesting but still comparable languages are GNU Pascal and GNU Sather. I shall contribute to the comparison with these languages. -i. -- (all the world are belong to us!) - new media cyclops fighting against space invaders.
May 30 2003
"Alisdair Meredith" <alisdair.meredith uk.renaultf1.com> wrote in message news:3ED79A33.AAF47CD1 uk.renaultf1.com...Luna Kid wrote:I may be wrong, but I'd say, libraries and standard libraries are fundamentally different things in this context. (And nowadays, with extensible languages coming along, the language vs. stdlib thing is going to be even less clear-cut.)
Especially when design goals of some languages (notably C++) are NOT to provide features in the syntax if they can be provided by a library, but to instead make sure said library is part of the standard. C++ does have associative containers and dynamic arrays 'out-the-box', but they will never be native syntax. I think it would do no harm for the chart to reflect this.
Sure, this is a good point ...The langauge/library barrier is even more blurred as you get to some low-level library classes. Most exception-supporting languages require certain library execptions to be thrown when language-construct fail (in C++, bad_alloc, bad_typeid, bad_dog...) Java would be lost without the Object class, etc. This blurring is a deliberate policy of the language designers. As to which libraries to include? In C/C++ it appears simple as there is a clear ISO standard. Where do you draw the line with Java packages though, and the .NET framework for C#? I still think libraries should be considered, but we need to be clear which libraries are indeed 'standard' for each language. -- AlisdairM
May 30 2003
"Luna Kid" <lunakid neuropolis.org> wrote in message news:bb83p8$21ch$1 digitaldaemon.com...feature because they are in the standard library, std::vector. There
no likelihood any proposal to add such a feature to the language would ever pass committee because it is already required to be present (in
library) in any conforming C++ implementation.
effort, so to compare the languages, library add-ons were excluded. Java
are fundamentally different things in this context. (And nowadays, with extensible languages coming along, the language vs. stdlib thing is going to be even less clear-cut.)
Sure. There are a lot of different ways to look at the issue. I personally look at something in the compiler vs something in the library as fundamentally different. Perhaps because I'm a compiler writer <g>. Even with language features, there is plenty of room for argument. For example, I've gotten a lot of email arguing that C++ does not have modules. I view C++ namespaces combined with separate compilation as addressing that issue (however badly), hence I gave it a 'yes' for modules.
May 30 2003
(sorry if this is a repost...) In article <bb85of$24d9$1 digitaldaemon.com>, Walter says...Even with language features, there is plenty of room for argument. For example, I've gotten a lot of email arguing that C++ does not have modules. I view C++ namespaces combined with separate compilation as addressing that issue (however badly), hence I gave it a 'yes' for modules.
..Sure. There are a lot of different ways to look at the issue. I personally look at something in the compiler vs something in the library as fundamentally different. Perhaps because I'm a compiler writer <g>.
There are indeed. But then we should decide on the viewpoint in the comparison list. It probably started as Walter's private note, then gradually got to where it is now. But today, is it for compiler writers, D users, potential D converts, an academic comparison, or advertising? Its position on the web pages entertains the notion of advertising. Which is OK, those pages are _supposed_ to advertise. In that case maybe the point of view shoud be that of a prospective customer. What counts for the customer is - is this genuinely in it? (I get it automatically) - does this come with it? (I have to write extra words to get it) - is this a 3rd party thing? (see below) In the customer's mind the last one reads "heck, so I have to shop all over the Internet to gather bits and pieces before I can do non trivial programming. And probably those bits and pieces don't even work well together, so it's bound to be a mess. So, IMHO, that list being there, the issue is not whether something is "built-in" or "library" or "looks built-in but still library" (like some Java string stuff mentioned in this thread). The issue is what's the effort. An example: You can do module stuff in C++, like Walter said. But, hey, with the same amount of work you can do OO in plain C. (Really? Yes, I talked with this guy who's written programs for the Mars Pathfinder rovers. They did it in OO plain C.)
May 30 2003
Georg Wrede wrote:Its position on the web pages entertains the notion of advertising. Which is OK, those pages are _supposed_ to advertise. In that case maybe the point of view shoud be that of a prospective customer.
What counts for the customer is - is this genuinely in it? (I get it automatically) - does this come with it? (I have to write extra words to get it) - is this a 3rd party thing? (see below)
The other question I ask of every advert is 'Do I trust it?' In order to evaluate this table, I compare the column I know well with my own knowledge. I look at the dynamic array row and say to myself 'heck, this is the C++ standard, a required part of any conforming C++ distribution, but this table flat out says it is not supported' I think about it, and see where Walter is coming from, but it means I am looking for a twist on every entry. OTOH, to simply say 'Yes C++ has dynamic arrays' clearly does dis-service to the D array. No point in having advertising if it doesn't push your product <g> I think a standard library type option would solve a lot of the 'niggly' issues, and make it easier to take the table at face value.You can do module stuff in C++, like Walter said. But, hey, with the same amount of work you can do OO in plain C. (Really? Yes, I talked with this guy who's written programs for the Mars Pathfinder rovers. They did it in OO plain C.)
IIRC, it was a big thing at MS that COM programming should be possible in C, and many of the early COM texts came with decent examples of how you could create a vtable using structs of function pointers. Done this way, OO in C can be as dynamic as Python, where you can override a method for a single instance of a class if you choose <g> I think the comparison to modules in C++ is good too, as it certainly requires the same level of discipline and convention to turn the available language features into something non-C++ fans might recongise as a module system. -- AlisdairM
May 30 2003
"Alisdair Meredith" <alisdair.meredith uk.renaultf1.com> wrote in message news:3ED7B457.9AC9B9A9 uk.renaultf1.com...Georg Wrede wrote:Its position on the web pages entertains the notion of advertising. Which is OK, those pages are _supposed_ to advertise. In that case maybe the point of view shoud be that of a prospective customer.
What counts for the customer is - is this genuinely in it? (I get it automatically) - does this come with it? (I have to write extra words to get it) - is this a 3rd party thing? (see below)
The other question I ask of every advert is 'Do I trust it?' In order to evaluate this table, I compare the column I know well with my own knowledge. I look at the dynamic array row and say to myself 'heck, this is the C++ standard, a required part of any conforming C++ distribution, but this table flat out says it is not supported' I think about it, and see where Walter is coming from, but it means I am looking for a twist on every entry.
Just because there are classes that support certain semantics, residing in standard libraries, does not mean that the language supports the feature inately. Certainly C, C++, C# and Java do not support resizable arrays, albeit that most have common/standard library features that do so. I think Walter is quite correct here.OTOH, to simply say 'Yes C++ has dynamic arrays' clearly does dis-service to the D array. No point in having advertising if it doesn't push your product <g> I think a standard library type option would solve a lot of the 'niggly' issues, and make it easier to take the table at face value.You can do module stuff in C++, like Walter said. But, hey, with the same amount of work you can do OO in plain C. (Really? Yes, I talked with this guy who's written programs for the Mars Pathfinder rovers. They did it in OO plain C.)
IIRC, it was a big thing at MS that COM programming should be possible in C, and many of the early COM texts came with decent examples of how you could create a vtable using structs of function pointers. Done this way, OO in C can be as dynamic as Python, where you can override a method for a single instance of a class if you choose <g>
Some of use still do the occasional bit of COM in C, for the reasons you cite. :)I think the comparison to modules in C++ is good too, as it certainly requires the same level of discipline and convention to turn the available language features into something non-C++ fans might recongise as a module system. -- AlisdairM
May 30 2003
Walter wrote:The namespace feature of C++ coupled with separate compilation duplicates enough of the features of modules I decided to give it the nod.
But namespaces can be reopened at any time, and pre-compiled libraries are very fragile in the face of the preprocessor. Header files are continually reparsed. I am a bona-fide member of the C++ fan club, but feel more than uncomfortable saying C++ has 'units'. I guess that if 'D' relies on the same justification, I want to drop units for 'D' as well. I'm hoping you can find a neater solution though, that would really give D a push!!It is a feature - there will always be some clever thing you can do with a preprocessor that you can't do otherwise.
Yes, but I'm still prejudiced <g> [Boost actually have quite a powerful pre-processor library that can do some amazing things, including confusing the heck out of me! PP programming is a black art, and even with Boost it remains a murky grey...]My problem is I don't know those languages well enough to write a fair comparison. Also, the chart is designed to compare D with the languages it replaces as well as the pretenders to the throne as replacements <g>.
Fair enough, but would be quite nice to have a parallel table covering the less C-like languages if we can find contributors. I expect you will be hearing from some vocal Delphi supporters shortly <g> It would be nice to track down a Python guy too, as that is next langauge on my list-to-learn <gg> -- AlisdairM
May 30 2003
"Alisdair Meredith" <alisdair.meredith uk.renaultf1.com> wrote in message news:3ED79C54.380633B uk.renaultf1.com...Walter wrote:The namespace feature of C++ coupled with separate compilation
enough of the features of modules I decided to give it the nod.
But namespaces can be reopened at any time, and pre-compiled libraries are very fragile in the face of the preprocessor. Header files are continually reparsed. I am a bona-fide member of the C++ fan club, but feel more than uncomfortable saying C++ has 'units'. I guess that if 'D' relies on the same justification, I want to drop units for 'D' as well. I'm hoping you can find a neater solution though, that would really give D a push!!
assemblies. sm
May 30 2003
Alisdair Meredith wrote:[...] It would be nice to track down a Python guy too, as that is next langauge on my list-to-learn <gg>
My pleasure. This comparison isn't as useful as others, though, since Python doesn't do a very good job as a systems language. ;)Garbage Collection
Function overloading
Function delegates
Out function parameters
Nested functions
Function literals
Dynamic closures
Covariant return types
Lightweight arrays
Resizeable arrays
Arrays of bits
Built-in strings Array slicing Array bounds checking
Associative arrays
Strong typedefs
String switches
Aliases
reference to the class. ie. MyAlias = TheClassObject Oriented
Multiple Inheritance
Interfaces
"interface" has a method called doThis, then any object with a doThis will do. So... yes?Operator overloading
Modules
Dynamic class loading
Inner classes
Performance Inline assembler Direct access to hardware
Lightweight objects
Explicit memory allocation control Independent of VM Direct native code gen
Templates
dynamically typed language, since any variable can reference anything anyway.Design by Contract
Unit testing
Static construction order
Guaranteed initialization
RAII
object destruction is deterministic.Exception handling try-catch-finally blocks
Thread synchronization primitives
Algol-style syntax Enumerated types Support all C types Long double floating point
Complex and Imaginary
Direct access to C Use existing debuggers Struct member alignment control Generates standard object files
Macro preprocessor
Other Conditional compilation
And what are other stuff that you can add to this list that is found
not in D?
Variants. Lexical closures. Argument defaults. Keyword arguments. Variable argument lists. Metaclasses. (classes whose instances are actually classes themselves. Amounts to creating object types on the fly) Multiple assignment. (you can swap two variables with "x,y = y,x") List/dictionary (associative array) literals. Portability. Embeddability. (unfair, because D isn't meant to be used that way)
May 30 2003
Comments follow. Andy Friesen wrote:Alisdair Meredith wrote:[...] It would be nice to track down a Python guy too, as that is next langauge on my list-to-learn <gg>
My pleasure. This comparison isn't as useful as others, though, since Python doesn't do a very good job as a systems language. ;) >Garbage Collection Yup.
Automated memory managemenr through refence counting. :)>> Lightweight arrays No?
Standard library defines c-arrays, but i believe that's not what is meant. Walter, did you mean statically sized arrays or something else?>> Interfaces Not explicitly so. Python looks for methods by name. If your "interface" has a method called doThis, then any object with a doThis will do. So... yes?
Multiple inheritance makes interfaces irrelevant, since they are a backdoor to make an object have multiple parents in a single-inheritance typesystem. -i.
May 30 2003
By the looks of your reply and those of others, we need three extra catorgries in the comparason table in addition to the ones already suppiled. Yes - Full support of said feature. No - No support or no direct language support - support added by other means should either result in one of the following options LIB - Supported by the standard library - which must be defined along with the semantic standard (eg. STL dynamic arrays in C++) - support supplied by third party libraries should result in a No. N/A - Not applicable - this feature would be useless in light of another feature (eg. Templates are normally useless with dynamic typing or generic programming) Part - Partial support - some aspects of this feature are available but not everything (eg. asserts vs. full design by contract) - to many languages supplying partial support would indicate the feature needs to be split into subfeatures - as is probably the case with DBC vs asserts Specifying such options would result in a more fair comparason which would not detract from the appeal of D - such fairness may even enhance said appeal, with people being less suspicious of such advertising. However, due to the more complex nature of the resulting table a definition of these terms would be required, one similar to the aforementioned proposal should suffice. (Oh, and a note to email you, or post to this group correcting any errors in the comparason would also help - it such a request has not been made explicit elsewhere. C 2003/5/31 'I see in the near future a crisis approaching that unnerves me and causes me to tremble for the safety of my country ... corporations have been enthroned and an era of corruption in high places will follow.' -- Abraham Lincoln
Jun 01 2003
'I see in the near future a crisis approaching that unnerves me and causes me to tremble for the safety of my country ... corporations have been enthroned and an era of corruption in high places will follow.' -- Abraham Lincoln
The world is a kind of Yin-Yang thing. Two powers struggling eternally. In times of war or need, the able see to our needs, and their offspring prevail. In times of stagnation and safety it is the socially adept who prevail. That leads to nepotism and corruption. A time of democracy is only to be found fleetly at the transition from the ables' time to the socially adepts' time. What Today is, is for you to ponder. -- Georg Wrede (Sorry, I couldn't resist! The above is donated to Public Domain: all I ask is to be credited.)
May 31 2003
Georg Wrede wrote:(Sorry, I couldn't resist! The above is donated to Public Domain: all I ask is to be credited.)
Ack, thats what you get for leaving the random signature file option on the favourate quotes section :-) Always detracts from the issues discussed. I, however, would like to discuss your comments further; but to reply here would be far too offtopic. Could you send your email address to cc *at* gateway.mirlex.com as your supplied address is not working (550 / user not found) C 2003/6/1 (Please ignore the quote behind the curtain). "Emancipate yourself from mental slavery, None but ourselves can free our minds ..." -- Bob Marley (Redemption Song)
Jun 02 2003
In article <bbbat8$2ot3$1 digitaldaemon.com>, Georg Wrede says...'I see in the near future a crisis approaching that unnerves me and causes me to tremble for the safety of my country ... corporations have been enthroned and an era of corruption in high places will follow.' -- Abraham Lincoln
The world is a kind of Yin-Yang thing. Two powers struggling eternally. In times of war or need, the able see to our needs, and their offspring prevail. In times of stagnation and safety it is the socially adept who prevail. That leads to nepotism and corruption. A time of democracy is only to be found fleetly at the transition from the ables' time to the socially adepts' time. What Today is, is for you to ponder.
I've found out that not everybody recognized this as a travesty of Fortune quotes.-- Georg Wrede (Sorry, I couldn't resist! The above is donated to Public Domain: all I ask is to be credited.)
Not even this rang a bell with some. Ah, well, what can you do.
Jun 03 2003
"Alisdair Meredith" <alisdair.meredith uk.renaultf1.com> wrote in message news:3ED79C54.380633B uk.renaultf1.com...Walter wrote:The namespace feature of C++ coupled with separate compilation
enough of the features of modules I decided to give it the nod.
are very fragile in the face of the preprocessor. Header files are continually reparsed.
You're right. But namespaces do provide the biggest feature of modules.I am a bona-fide member of the C++ fan club, but feel more than uncomfortable saying C++ has 'units'. I guess that if 'D' relies on the same justification, I want to drop units for 'D' as well. I'm hoping you can find a neater solution though, that would really give D a push!!
I'm not sure what you mean by 'units' in D.It is a feature - there will always be some clever thing you can do with
preprocessor that you can't do otherwise.
[Boost actually have quite a powerful pre-processor library that can do some amazing things, including confusing the heck out of me! PP programming is a black art, and even with Boost it remains a murky grey...]
The C preprocessor is a difficult thing to understand when you get into the details of nested macros and their arguments. I suspect most people just flail away at it until it produces what they want, and never dare change it <g>.My problem is I don't know those languages well enough to write a fair comparison. Also, the chart is designed to compare D with the languages
replaces as well as the pretenders to the throne as replacements <g>.
the less C-like languages if we can find contributors. I expect you will be hearing from some vocal Delphi supporters shortly <g> It would be nice to track down a Python guy too, as that is next langauge on my list-to-learn <gg>
I know next to nothing about Delphi, other than it being in the Pascal camp.
May 31 2003
Walter wrote: ...The namespace feature of C++ coupled with separate compilation duplicates enough of the features of modules I decided to give it the nod.
I'd be in the "C++ doesn't have a module system" camp. One thing that might be interesting to point out is that there's a proposal that aims to add a module system to C++ (can't find the URL atm, but its from ...Pete(r?) Becker). Within the C++ community it's also thought that C++ doesn't have a module system - though the std goes to some effort not to exclude it as a future possibility AFAICT.My problem is I don't know those languages well enough to write a fair comparison. Also, the chart is designed to compare D with the languages it replaces as well as the pretenders to the throne as replacements <g>.
Care to elaborate on the pretenders? :)
Jun 03 2003
"Garen Parham" <nospam garen.net> wrote in message news:bbij5j$190e$1 digitaldaemon.com...Walter wrote:The namespace feature of C++ coupled with separate compilation
enough of the features of modules I decided to give it the nod.
be interesting to point out is that there's a proposal that aims to add a module system to C++ (can't find the URL atm, but its from ...Pete(r?)
Within the C++ community it's also thought that C++ doesn't have a module system -
Well, I have to have something controversial in there <g>. I freely concede that the chart reflects my professional opinion.though the std goes to some effort not to exclude it as a future possibility AFAICT.
The C++ standards group missed a golden opportunity to add modules by instead of introducing: #include <cstdio> they should have introduced: import stdio; and explicitly stated it was a symbolic include rather than a textual one. But at this point, I don't see that there's much profit in layering still more stuff on top of C++. Time to reengineer the language - D!My problem is I don't know those languages well enough to write a fair comparison. Also, the chart is designed to compare D with the languages
replaces as well as the pretenders to the throne as replacements <g>.
Java, C# of course :-)
Jun 03 2003
"Alisdair Meredith" <alisdair.meredith uk.renaultf1.com> wrote in message 3ED71CC3.F205F89F uk.renaultf1.com [...]Following up some recent debate in the Borland Delphi newsgroups about this page [http://www.digitalmars.com/d/index.html] I would like to query a couple of items in the list. (I expect you will get a message or two with Delphi's capabilities shortly <g>)
Note: Delphi in Borland's parlance means both the language and the package which includes the compiler, RAD IDE, standard libraries (VCL for Win32, CLX for cross-platform), and sundry other bits. For that reason I shall refer to the language by the older name of Object Pascal. As best I can make out, this is the current consensus over at borland.public.delphi.non-technical:Garbage Collection
No (and we like it that way!).Function delegates Function overloading Out function parameters Nested functions
YesFunction literals
No.Dynamic closures
No?Covariant return types
No.Lightweight arrays Resizeable arrays
Yes.Arrays of bits
No.Built-in strings Array slicing Array bounds checking
Yes.Associative arrays
No.Strong typedefs
Yes.String switches
No.Aliases Object Oriented
Yes.Multiple Inheritance
No.Interfaces
Yes.Operator overloading
Yes (custom variants).Modules
Yes.Dynamic class loading
Yes (via RegisterClass).Inner classes
No.Performance Inline assembler Direct access to hardware
Yes.Lightweight objects
Yes (deprecated).Explicit memory allocation control Independent of VM Direct native code gen
Yes.Templates
No.Design by Contract
Yes (assert).Unit testing
No.Static construction order
Yes (modules only).Guaranteed initialization
Yes (consts only).RAII
No.Exception handling try-catch-finally blocks
Yes.Thread synchronization primitives
No?Algol-style syntax Enumerated types Support all C types Long double floating point
Yes.Complex and Imaginary
No.Direct access to C Use existing debuggers Struct member alignment control Generates standard object files
Yes.Macro preprocessor
No.Other Conditional compilation
Yes.And what are other stuff that you can add to this list that is found in OP
not in D?
Set types Variant records True constants Default parameters Open array parameters Reintroduce Dynamic Return value as variable vs. return Run-Time Type Information (RTTI) operators Ur-types Packages This stuff you probably wouldn't accept without referring to libraries, but Delphi was practically designed around them: Native UI librar(y/ies) Interactive UI design Native DB librar(y/ies) We're still arguing about some of the definitions. :-) -- A: Top-posters. Q: What is the most annoying thing on Usenet?
May 30 2003
"DRS" <drs removethis.ihug.com.au> wrote in message news:bb85ot$24dv$1 digitaldaemon.com...Variant records
True constants
sm
May 30 2003
"Sebastian Moleski" <s.moleski tcu.edu> wrote in message bb8686$254h$1 digitaldaemon.com"DRS" <drs removethis.ihug.com.au> wrote in message news:bb85ot$24dv$1 digitaldaemon.com...
[...]True constants
here.
I think Ignacio might have been trying to distinguish between true constants and OP's variable constants. :-) Perhaps you should ask him, I just tried to make sense out of all the stuff in the thread. -- A: Top-posters. Q: What is the most annoying thing on Usenet?
May 30 2003
"DRS" <drs removethis.ihug.com.au> wrote in message news:bb86gp$25d2$1 digitaldaemon.com...I think Ignacio might have been trying to distinguish between true
and OP's variable constants. :-)
variable constants? Dare I ask? <g>
May 31 2003
Walter wrote:and OP's variable constants. :-)
"Mutable constants" Turbo Pascal could not draw any wisdom of constants being constant. They were just global variables, assignable, with a slight difference that they could be used in any context, where constants could. For example, as array boundaries. Dynamite. :> Since Delphi 1.0, the const-ness of constants is enforced in a strong manner by a compiler, exactly like in D, they are even inlined. But for compatibility reasons, there is a switch which allows for the Turbo pascal treatment of constants. -i.
May 31 2003
"Ilya Minkov" <midiclub 8ung.at> wrote in message news:bbakhk$1veg$1 digitaldaemon.com...Walter wrote:and OP's variable constants. :-)
"Mutable constants" Turbo Pascal could not draw any wisdom of constants being constant. They were just global variables, assignable, with a slight difference that they could be used in any context, where constants could. For example, as array boundaries. Dynamite. :> Since Delphi 1.0, the const-ness of constants is enforced in a strong manner by a compiler, exactly like in D, they are even inlined. But for compatibility reasons, there is a switch which allows for the Turbo pascal treatment of constants.
I wouldn't call that a feature of the Delphi language, then.
May 31 2003
DRS wrote:Operator overloading
Does this mean you can only overload operators for a small subset of classes (i.e. only through Variants) I'm not convinced Delphi support is complete enough to claim this, but am ready to be proven wrong (the last version of Delphi I used predated this support)Design by Contract
Many languages on the table support asserts <g> I don't think this qualifies as DBC.Static construction order
Guaranteed initialization
Erm, doesn't 'XXX only' mean that initialization is NOT guaranteed then? <g>RAII
And I still maintain Delphi supports this, but it isn't practiced!! It is a side effect of the Delphi interface mechanism. All RAII needs is a guaranteed function call when something leaves scope, and the ability to provide your own cleanup in that function call.Support all C types
I think this is intended for C99 support, and I doubt anything but C99 will ever support the full range! [Correction, I just checked the chart and D has them!]And what are other stuff that you can add to this list that is found in OP and not in D?
To take highlights from the list...Set types
Variant records
True constants
'fake-constants' might be more the language feature <g> but I'd simply drop thisDefault parameters
Open array parameters
Reintroduce
plus for Delphi syntax.Dynamic
Return value as variable vs. return
[For those that don't know Delphi] Delphi, as a language level feature, allows you to assume a variable called 'result' in every function. You can simply assign to result through the function call and this value will automatically be returned as the function exits. After you have assigned the value, you can (of course) query and use result just like any other local variable. Alternatively, you can return a value at any point with a return statement, just as in the other languages.Run-Time Type Information (RTTI) operators
C++ has dynamic_cast, Java does similar with its casting. [Not sure how C#/'D' handle RTTI]Ur-types
[So Java/C# score, C/C++ don't, 'D' I need Walter again]Packages
[I think Units and Packages are simply different kinds of modules]This stuff you probably wouldn't accept without referring to libraries, but Delphi was practically designed around them:
Interactive UI design
I think this is as core to Delphi as Design-by-contract is to D, so it would be nice to sneak it in somehow <g> Besides, it at least requires linker-level support (if not language) to support the .dfm format (a text file associated with the gui-integration) -- AlisdairM
May 30 2003
"Alisdair Meredith" <alisdair.meredith uk.renaultf1.com> wrote in message news:3ED7A688.15D9FD43 uk.renaultf1.com...DRS wrote:Operator overloading
Does this mean you can only overload operators for a small subset of classes (i.e. only through Variants) I'm not convinced Delphi support is complete enough to claim this, but am ready to be proven wrong (the last version of Delphi I used predated this support)
Borland documentation page and download the D6 help files. It has all the information in it.Default parameters
annoying misfeature in both .NET and Java.Open array parameters
would be.Return value as variable vs. return
[For those that don't know Delphi] Delphi, as a language level feature, allows you to assume a variable called 'result' in every function. You can simply assign to result through the function call and this value will automatically be returned as the function exits. After you have assigned the value, you can (of course) query and use result just like any other local variable. Alternatively, you can return a value at any point with a return statement, just as in the other languages.
Run-Time Type Information (RTTI) operators
C++ has dynamic_cast, Java does similar with its casting. [Not sure how C#/'D' handle RTTI]
Ur-types
[So Java/C# score, C/C++ don't, 'D' I need Walter again]
sm
May 30 2003
Sebastian Moleski wrote:Ur-types
[So Java/C# score, C/C++ don't, 'D' I need Walter again]
Yes, but what about them?! I'm guessing the Object in Java and the equivalent in C# do the same, but what is it they do? -- AlisdairM Team Thai Kingdom
May 30 2003
"Alisdair Meredith" <alisdair.meredith uk.renaultf1.com> wrote in message news:3ED7A9D7.5592D5BF uk.renaultf1.com...Sebastian Moleski wrote:Ur-types
[So Java/C# score, C/C++ don't, 'D' I need Walter again]
Yes, but what about them?! I'm guessing the Object in Java and the equivalent in C# do the same, but what is it they do?
If you have one common root in your inheritance tree, you can expect certain things of all objects that you can't if you have multiple user-defined ultimate base classes (like C++ offers). Personally, I prefer single-base languages to multi-base languages just because it makes object-handling much easier. I know that that's in direct conflict with what a lot of OOP "gurus" say in regards to C++. sm
May 30 2003
Alisdair Meredith wrote:No. He was referring to TObject and IInterface.
Yes, but what about them?! I'm guessing the Object in Java and the equivalent in C# do the same, but what is it they do?
You can get TObject in a function, and dispatch dynamically based on object type. :) This usage gives trouble if non-tagged types don't get boxing! -i.
May 30 2003
"Sebastian Moleski" <s.moleski tcu.edu> wrote in message bb89br$29k5$1 digitaldaemon.com"Alisdair Meredith" <alisdair.meredith uk.renaultf1.com> wrote in message news:3ED7A688.15D9FD43 uk.renaultf1.com...DRS wrote:
[...]Return value as variable vs. return
Hey! I'm doing a lot of cutting and pasting![For those that don't know Delphi] Delphi, as a language level feature, allows you to assume a variable called 'result' in every function. You can simply assign to result through the function call and this value will automatically be returned as the function exits. After you have assigned the value, you can (of course) query and use result just like any other local variable. Alternatively, you can return a value at any point with a return statement, just as in the other languages.
For *ages*. At least since D4 (see D4 OP reference manual, p 6-4). My example: function foo : boolean; begin Result := false; end; -- A: Top-posters. Q: What is the most annoying thing on Usenet?
May 30 2003
DRS wrote:Return statement? Since when does Delphi have that?
For *ages*. At least since D4 (see D4 OP reference manual, p 6-4).
I remember using it in Delphi2, not sure about Delphi 1 -- AlisdairM Team Thai Kingdom
May 30 2003
oN 30-May-03, Alisdair Meredith said:I remember using it in Delphi2, not sure about Delphi 1
You're right -- it surfaced in D2. -- Bill Posted with XanaNews Version 1.15.2.2
Jun 01 2003
"William Meyer" <bill_meyer earthlink.net> wrote in message news:bbe6ed$27l$1 digitaldaemon.com... oN 30-May-03, Alisdair Meredith said:I remember using it in Delphi2, not sure about Delphi 1
You're right -- it surfaced in D2.
Huh? Am I blind? I have Delphi 7 and there's no return statement to be seen. Any pointers? sm
Jun 01 2003
"Sebastian Moleski" <s.moleski tcu.edu> wrote in message news:bbe6hc$29g$1 digitaldaemon.com..."William Meyer" <bill_meyer earthlink.net> wrote in message news:bbe6ed$27l$1 digitaldaemon.com... oN 30-May-03, Alisdair Meredith said:I remember using it in Delphi2, not sure about Delphi 1
You're right -- it surfaced in D2.
Huh? Am I blind? I have Delphi 7 and there's no return statement to be
Any pointers?
There isn't one. The traditional way to return a value from a function in Pascal was to assign it to the functoin name. Cheers, Ignacio
Jun 12 2003
"DRS" <drs removethis.ihug.com.au> wrote in message news:bb8ab5$2ave$1 digitaldaemon.com...[For those that don't know Delphi] Delphi, as a language level feature, allows you to assume a variable called 'result' in every function. You can simply assign to result through the function call and this value will automatically be returned as the function exits. After you have assigned the value, you can (of course) query and use result just like any other local variable. Alternatively, you can return a value at any point with a return statement, just as in the other languages.
For *ages*. At least since D4 (see D4 OP reference manual, p 6-4).
No. Read again. The OP was saying that Delphi has two ways to pass a value: via Result or "with a return *statement*, just as in the other languages". What you showed me was using Result. I am posing that Delphi has no such "return statement, just as in the other languages" although it has been requested for quite some time. sm
May 30 2003
"Sebastian Moleski" <s.moleski tcu.edu> wrote in message bb8b3u$2c33$1 digitaldaemon.com [...]No. Read again. The OP was saying that Delphi has two ways to pass a value: via Result or "with a return *statement*, just as in the other languages". What you showed me was using Result. I am posing that Delphi has no such "return statement, just as in the other languages" although it has been requested for quite some time.
You know what? It's 5:35am and I'm going to bed. :-) -- A: Top-posters. Q: What is the most annoying thing on Usenet?
May 30 2003
"DRS" <drs removethis.ihug.com.au> wrote in message news:bb8bp7$2d0u$1 digitaldaemon.com...No. Read again. The OP was saying that Delphi has two ways to pass a value: via Result or "with a return *statement*, just as in the other languages". What you showed me was using Result. I am posing that Delphi has no such "return statement, just as in the other languages" although it has been requested for quite some time.
You know what? It's 5:35am and I'm going to bed. :-)
5:35 AM? Hmm, I wonder where you are located now. It's 2:49 PM here at GMT-6. So that would place you at GMT+9, e.g. Japan, the Koreas or parts of Australia. Right? sm
May 30 2003
"Sebastian Moleski" <s.moleski tcu.edu> wrote in message bb8cou$2ee8$1 digitaldaemon.com"DRS" <drs removethis.ihug.com.au> wrote in message news:bb8bp7$2d0u$1 digitaldaemon.com...
[...]You know what? It's 5:35am and I'm going to bed. :-)
5:35 AM? Hmm, I wonder where you are located now. It's 2:49 PM here at GMT-6. So that would place you at GMT+9, e.g. Japan, the Koreas or parts of Australia. Right?
I'm on the east coast of Australia. *And* *I* *am* *going* *to* *bed*. -- A: Top-posters. Q: What is the most annoying thing on Usenet?
May 30 2003
"DRS" <drs removethis.ihug.com.au> wrote in message news:bb8d25$2er2$1 digitaldaemon.com..."Sebastian Moleski" <s.moleski tcu.edu> wrote in message bb8cou$2ee8$1 digitaldaemon.com"DRS" <drs removethis.ihug.com.au> wrote in message news:bb8bp7$2d0u$1 digitaldaemon.com...
[...]You know what? It's 5:35am and I'm going to bed. :-)
5:35 AM? Hmm, I wonder where you are located now. It's 2:49 PM here at GMT-6. So that would place you at GMT+9, e.g. Japan, the Koreas or parts of Australia. Right?
I'm on the east coast of Australia. *And* *I* *am* *going* *to* *bed*.
Sweet dreams.
May 30 2003
"Alisdair Meredith" <alisdair.meredith uk.renaultf1.com> wrote in message 3ED7A688.15D9FD43 uk.renaultf1.comDRS wrote:
I'm not necessarily competent to argue all the finer points of Delphi's language constructs, particularly against other languages with which I am less familiar. My post was primarily a compilation of the thread in b.p.d.non-technical at the time and in the absence here of many who contributed to that it probably should be continued over there. Or we get them over here and take over. :-)Operator overloading
Does this mean you can only overload operators for a small subset of classes (i.e. only through Variants)
I think so.I'm not convinced Delphi support is complete enough to claim this, but am ready to be proven wrong (the last version of Delphi I used predated this support)
Tsk, tsk. Native variants were introduced in D6 as part of the introduction of CLX and Kylix, and variants as a whole underwent a lot of changes. Prior to that variants were a fudge. [...]And what are other stuff that you can add to this list that is found in OP and not in D?
To take highlights from the list...
[...]Ur-types
[So Java/C# score, C/C++ don't, 'D' I need Walter again]
TObject, IInterface, and IUnknown. So Java would score but not C/C++. I don't know about D. [...]This stuff you probably wouldn't accept without referring to libraries, but Delphi was practically designed around them:
Interactive UI design
I think this is as core to Delphi as Design-by-contract is to D, so it would be nice to sneak it in somehow <g> Besides, it at least requires linker-level support (if not language) to support the .dfm format (a text file associated with the gui-integration)
.dfms can also be binary (they can be both since D5). What version of Delphi are you using? -- A: Top-posters. Q: What is the most annoying thing on Usenet?
May 30 2003
DRS wrote:.dfms can also be binary (they can be both since D5). What version of Delphi are you using?
Actually the last Delphi I used was V2 <g> I've been on BCBuilder since then, so my Delphi knowledge is more by-association these days. I think there is enough Delphi-specific info in this thread now for Walter, unless he wants to query something. Probably best to take detailed discussion back over to the borland forum, or we'll drown out the 'D' discussion! -- AlisdairM
May 30 2003
I have to correct. :) DRS wrote:Arrays of bit
No.
(YES!) You are wrong: arrays of boolean turn out to be bit-arrays.Built-in strings Array slicing Array bounds checking
Yes.
Array slicing? Really? HOW? Please explain. (I guess NO)Aliases
(NO?)Operator overloading
Unusable! Painfully slow! a standard complex type is implemented this way, and is (according to rumors) 10-100 times slower than IN PYTHON!!!Dynamic class loading
Interesting. :)Performance Inline assembler
YES.Lightweight objects
The turbo pascal ones? I don't even know how they work. Is it that terrible kludge that mimics C++ in a most inappropriate manner?Explicit memory allocation control
YES.Independent of VM
YES.Unit testing
This is not exactly true. Units have initalisation section. Fill it with asserts - and there you have it.Guaranteed initializatio
Wait... class fields and something else also always have default values (0 numerics, "" strings, ...). This is however not true in other Object Pascal compilers, only in Delphi.Thread synchronization primitives
(YES, i believe.) I remember, when writing something that belongs to the main thread (GUI stuff, etc.), you must write something like syncronize(DoYourWritesToOtherThreadsHere);Algol-style syntax
Dunno algol :) I'm too young for this. :)Enumerated types
YES.Support all C types
(Yes?)Complex and Imaginary
(YES.) Complex, since version 6, VERY SLOW.Direct access to C
YES.Use existing debuggers
YES.Struct member alignment control
YES. Usually structs are aligned in a system-dependant manner. But if declaration specifies "packed", the fields are placed after each other with byte-alignment. You can then control alighnment by selecting corresponding data types. Until data is "packed", not even the ordering of fields is specified. This ability applies not only to structs, but also to arrays.Generates standard object files
(more or less) :)Macro preprocessor
(Partial) IIRC only {$INCLUDE} and conditional compilation features. GNU Pascal also adds a complete C-like pre-processor, with both case-sensitive and case-agnostic multi-line macro definitions. Thus, Templates can be somewhat emulated. Unlike CPP, where you make a multi-line macro by using "\" at the end of each line, GNU Pascal defines macros inside comments. This makes macro definitions automatically span as many lines as requiered.And what are other stuff that you can add to this list that is found in OP and not in D?
Set types
Variant records
True constants
before Delphi. :)Default parameters
Open array parameters
Reintroduce
Dynamic
Return value as variable vs. return
Run-Time Type Information (RTTI) operators
any other compiled language! You can even walk classes' fields for types.Ur-types
Packages
We're still arguing about some of the definitions. :-)
-i.
May 30 2003
"Ilya Minkov" <midiclub 8ung.at> wrote in message bb8bbe$2cbs$1 digitaldaemon.comI have to correct. :) DRS wrote:Arrays of bit
No.
(YES!) You are wrong: arrays of boolean turn out to be bit-arrays.
So are sets. [...]Lightweight objects
The turbo pascal ones? I don't even know how they work. Is it that terrible kludge that mimics C++ in a most inappropriate manner?
I think this refers to the deprecated Object type, replaced by the Class. [...]Algol-style syntax
Dunno algol :) I'm too young for this. :)
There's no question of it. As I said in b.p.d.non-technical (where this discussion should return), any OP programmer can look at the Algol-60 spec and will see huge chunks of it still in use in OP today. The Pascal family arguably has greater claim to being Algol-like than the C family but that's not an argument I want to get into. [...]Macro preprocessor
(Partial) IIRC only {$INCLUDE} and conditional compilation features.
It's a no. OP's compiler directives are nothing like C/C++'s macros. [...]Reintroduce
Reintroduce allows you to hide an inherited virtual method with a new one: procedure DoSomething; reintroduce; // the ancestor class also has a DoSomething method It is the opposite of override: procedure DoSomething; override; // inherit the DoSomething method MyClass.DoSomething; begin ... do stuff inherited DoSomething; // call the ancestor method end; [...]We're still arguing about some of the definitions. :-)
Yes, but some of the terminology is not the same and not all of us are intimately familiar with the other languages, so there are cases where we need to be careful that we know what we're talking about. Also, there are a lot of things which Delphi can kinda-sorta do (for example, it can kinda-sorta do multiple inheritance via interfaces but it's not the same as C++'s genuine multiple inheritance) or there are things which are library dependant (since every Delphi unit by default uses the System unit does that mean everything in Sytem constitutes part of the language?) and so on. This discussion really belongs back in the borland groups, I think. -- A: Top-posters. Q: What is the most annoying thing on Usenet?
May 30 2003
"DRS" <drs removethis.ihug.com.au> wrote in message news:bb8ci1$2dtl$1 digitaldaemon.com...Yes, but some of the terminology is not the same and not all of us are intimately familiar with the other languages, so there are cases where we need to be careful that we know what we're talking about. Also, there are
lot of things which Delphi can kinda-sorta do (for example, it can kinda-sorta do multiple inheritance via interfaces but it's not the same
C++'s genuine multiple inheritance) or there are things which are library dependant (since every Delphi unit by default uses the System unit does
mean everything in Sytem constitutes part of the language?) and so on.
That's one reason I'd have a problem including Delphi in the chart - I simply don't know enough about Delphi to make such calls in a consistent manner with the other languages. Not to say the rest is perfect, either.
May 31 2003
"Walter" <walter digitalmars.com> wrote in message bb9s9i$18pa$2 digitaldaemon.com [...]That's one reason I'd have a problem including Delphi in the chart - I simply don't know enough about Delphi to make such calls in a consistent manner with the other languages. Not to say the rest is perfect, either.
You can't reasonably leave it out. It's a major player despite the fact that Borland can't market water in the desert, especially outside the US where it suffers less from the "not made by Microsoft" syndrome. -- A: Top-posters. Q: What is the most annoying thing on Usenet?
Jun 01 2003
"DRS" <drs removethis.ihug.com.au> wrote in message news:bbddpu$2em0$1 digitaldaemon.com...that Borland can't market water in the desert, >
ROFL That was a good one. And sadly true. sm
Jun 01 2003
"Ilya Minkov" <midiclub 8ung.at> wrote in message news:bb8bbe$2cbs$1 digitaldaemon.com...Aliases
(NO?)
type MyInt = Integer; declares an alias names MyInt to the Integer type. sm
May 30 2003
In article <bb8bbe$2cbs$1 digitaldaemon.com>, Ilya Minkov says...Lightweight objects
The turbo pascal ones? I don't even know how they work. Is it that terrible kludge that mimics C++ in a most inappropriate manner?
No, records.Generates standard object files
(more or less) :)
It can generate both C and C++ .obj files, as well as C DLLs/SOs.Macro preprocessor
(Partial) IIRC only {$INCLUDE} and conditional compilation features.
That's not a macro preprocessor. Slight difference, but enough. Cheers, Ignacio PS, is there an free NNTP server anywhere that hosts this newsgroup? I don't want to have to go through this web interface...
Jun 11 2003
"Ignacio Vazquez" <Ignacio_member pathlink.com> wrote in message news:bc8117$2q5p$1 digitaldaemon.com...PS, is there an free NNTP server anywhere that hosts this newsgroup? I
want to have to go through this web interface...
I access it using Outlook Express as news.digitalmars.com
Jun 11 2003
"Walter" <walter digitalmars.com> wrote in message news:bc82pf$2s1v$1 digitaldaemon.com..."Ignacio Vazquez" <Ignacio_member pathlink.com> wrote in message news:bc8117$2q5p$1 digitaldaemon.com...PS, is there an free NNTP server anywhere that hosts this newsgroup? I
want to have to go through this web interface...
I access it using Outlook Express as news.digitalmars.com
Ah yes, figured it out. Thanks, Ignacio
Jun 12 2003
Ignacio Vazquez wrote:The turbo pascal ones? I don't even know how they work. Is it that terrible kludge that mimics C++ in a most inappropriate manner?
No, records.
Records are not objects though, as they do not support member fucntions/methods. The deprecated OP objects do count, though, I think. [Perhaps a 'depracated' flag to further complicate the table!!][Delphi] can generate both C and C++ .obj files, as well as C DLLs/SOs.
Not quite: Delphi does NOT generate C++ .obj files, only 'C' although these do conform to whatever the prevalant standard is. [I am a C++ guy, not C, so can't remember the name of the format] -- AlisdairM
Jun 12 2003
"Alisdair Meredith" <alisdair.meredith uk.renaultf1.com> wrote in message 3EE87BEC.43A521B4 uk.renaultf1.comIgnacio Vazquez wrote:
[...][Delphi] can generate both C and C++ .obj files, as well as C DLLs/SOs.
Not quite: Delphi does NOT generate C++ .obj files, only 'C' although these do conform to whatever the prevalant standard is. [I am a C++ guy, not C, so can't remember the name of the format]
Not true. Start a project in Delphi and go to Project > Options... > Linker. You get three options for linker output, "Generate DCUs", "Generate C object files" and "Generate C++ object files". -- A: Top-posters. Q: What is the most annoying thing on Usenet?
Jun 12 2003
DRS wrote:Not true. Start a project in Delphi and go to Project > Options... > Linker. You get three options for linker output, "Generate DCUs", "Generate C object files" and "Generate C++ object files".
I guess that's what I get for posting without checking against the latest version <g> Do you have any references I can look this up on? [Other than the manuals] While it makes sense to create standard 'C' .objs (where I believe there ARE standards) what does it mean to create C++ .objs? Which C++ linkers do they work with? The .obj format is very non-portable in the C++ world, although I beleive there are efforts under way on Linux to agree a common binary model. -- AlisdairM
Jun 12 2003
"Alisdair Meredith" <alisdair.meredith uk.renaultf1.com> wrote in message 3EE8D502.ADAB4392 uk.renaultf1.comDRS wrote:Not true. Start a project in Delphi and go to Project > Options... > Linker. You get three options for linker output, "Generate DCUs", "Generate C object files" and "Generate C++ object files".
I guess that's what I get for posting without checking against the latest version <g> Do you have any references I can look this up on? [Other than the manuals]
What's wrong with the help files?While it makes sense to create standard 'C' .objs (where I believe there ARE standards) what does it mean to create C++ .objs? Which C++ linkers do they work with?
From the D6 help files: -Generate DCUs: Output standard Delphi DCU format files. -Generate C object files: Create a C object file for linking with a C program (no name mangling). -Generate C++ object files: Create a C++ object file for linking with C++Builder (uses C++ name mangling). Choosing to generate C++ object files activates two other options: -Include namespaces: Puts information into namespaces and mangles the namespace (the name of the unit) into the symbol. This must be checked if sharing code with C++Builder. (This option is enabled if Generate C++Object files is checked.) -Export all symbols: Creates DLL exports for exported functions in the project. It is for use when generating OBJs for packages that will be linked into C++Builder applications. (This option is enabled if Generate C++Object files is checked.) Don't ask me what it all means. I don't do C++. -- A: Top-posters. Q: What is the most annoying thing on Usenet?
Jun 12 2003
"Alisdair Meredith" <alisdair.meredith uk.renaultf1.com> wrote in message news:3EE87BEC.43A521B4 uk.renaultf1.com...Ignacio Vazquez wrote:The turbo pascal ones? I don't even know how they work. Is it that terrible kludge that mimics C++ in a most inappropriate manner?
No, records.
Records are not objects though, as they do not support member fucntions/methods. The deprecated OP objects do count, though, I think. [Perhaps a 'depracated' flag to further complicate the table!!]
The thing about 'object' is that it's the same as 'class', the only difference being that it instantiates in the stack instead of the heap and doesn't support dynamic functions. OTOH, records can contain function and procedure variable types, they just don't have a 'self' to them. Cheers, Ignacio
Jun 12 2003
"Ignacio Vazquez" <Ignacio_member pathlink.com> wrote in message bc8117$2q5p$1 digitaldaemon.comIn article <bb8bbe$2cbs$1 digitaldaemon.com>, Ilya Minkov says...Lightweight objects
The turbo pascal ones? I don't even know how they work. Is it that terrible kludge that mimics C++ in a most inappropriate manner?
No, records.
No, objects. The "object" was deprecated in favour of "class". -- A: Top-posters. Q: What is the most annoying thing on Usenet?
Jun 12 2003
DRS wrote:"Ignacio Vazquez" <Ignacio_member pathlink.com> wrote in message bc8117$2q5p$1 digitaldaemon.comIn article <bb8bbe$2cbs$1 digitaldaemon.com>, Ilya Minkov says...Lightweight objects
Yes (deprecated).
The turbo pascal ones? I don't even know how they work. Is it that terrible kludge that mimics C++ in a most inappropriate manner?
No, records.
No, objects. The "object" was deprecated in favour of "class".
Records *can* be considered "lightweight object". Look at the left part of the table, it says C:YES, C++:YES, Java: NO (IIRC). And guess what's the only thing next to the objects is which C supports? -i.
Jun 13 2003
"Ilya Minkov" <webmaster midiclub.de.vu> wrote in message bcdnsu$1ule$1 digitaldaemon.com [...]Records *can* be considered "lightweight object". Look at the left part of the table, it says C:YES, C++:YES, Java: NO (IIRC). And guess what's the only thing next to the objects is which C supports?
Pascal records do not encapsulate both data and code; they do not have methods. They therefore are not objects in any meaningful sense. The deprecated "object" type is an object in the OO sense but inferior to the current "class" type. -- A: Top-posters. Q: What is the most annoying thing on Usenet?
Jun 14 2003
DRS wrote:"Ilya Minkov" <webmaster midiclub.de.vu> wrote in message bcdnsu$1ule$1 digitaldaemon.com [...]Records *can* be considered "lightweight object". Look at the left part of the table, it says C:YES, C++:YES, Java: NO (IIRC). And guess what's the only thing next to the objects is which C supports?
Pascal records do not encapsulate both data and code; they do not have methods. They therefore are not objects in any meaningful sense. The deprecated "object" type is an object in the OO sense but inferior to the current "class" type.
Neither do C structs, but they obviously qualify.
Jun 14 2003
"Andy Friesen" <andy ikagames.com> wrote in message bcfu95$10g9$1 digitaldaemon.comDRS wrote:"Ilya Minkov" <webmaster midiclub.de.vu> wrote in message bcdnsu$1ule$1 digitaldaemon.com [...]Records *can* be considered "lightweight object". Look at the left part of the table, it says C:YES, C++:YES, Java: NO (IIRC). And guess what's the only thing next to the objects is which C supports?
Pascal records do not encapsulate both data and code; they do not have methods. They therefore are not objects in any meaningful sense. The deprecated "object" type is an object in the OO sense but inferior to the current "class" type.
Neither do C structs, but they obviously qualify.
Why obviously? -- A: Top-posters. Q: What is the most annoying thing on Usenet?
Jun 14 2003
Neither do C structs, but they obviously qualify.
Why obviously?
Because C is listed as having "lightweight objects" in the comparision chart while not having any higher-level object-alike primitives than structs and unions.
Jun 14 2003
Fabian Giesen wrote:Because C is listed as having "lightweight objects" in the comparision chart while not having any higher-level object-alike primitives than structs and unions.
I'll pur the counter-argument: This is another error in the table, like C++ modules <gdr> -- AlisdairM Team Thai Kingdom
Jun 15 2003
"Alisdair Meredith" <alisdair.meredith uk.renaultf1.com> wrote in message 3EEC8705.4E9D68D6 uk.renaultf1.comFabian Giesen wrote:Because C is listed as having "lightweight objects" in the comparision chart while not having any higher-level object-alike primitives than structs and unions.
I'll pur the counter-argument: This is another error in the table, like C++ modules <gdr>
I'd agree. What is a "lightweight" object anyway? At the minimum an object must provide encapsulation, polymorphism and inheritance, otherwise you might as well say that Visual Basic's "class" is an object! -- A: Top-posters. Q: What is the most annoying thing on Usenet?
Jun 15 2003
"DRS" <drs removethis.ihug.com.au> wrote in message news:bcig8b$2b5$1 digitaldaemon.com..."Alisdair Meredith" <alisdair.meredith uk.renaultf1.com> wrote in message 3EEC8705.4E9D68D6 uk.renaultf1.comFabian Giesen wrote:Because C is listed as having "lightweight objects" in the comparision chart while not having any higher-level object-alike primitives than structs and unions.
I'll pur the counter-argument: This is another error in the table, like C++ modules <gdr>
I'd agree. What is a "lightweight" object anyway? At the minimum an
must provide encapsulation, polymorphism and inheritance, otherwise you might as well say that Visual Basic's "class" is an object!
I assume that by light-weight objects they were referring to stack-based OOP like C, C++, C# and Delphi (with object) offer. sm
Jun 15 2003
DRS wrote:I'd agree. What is a "lightweight" object anyway? At the minimum an object must provide encapsulation, polymorphism and inheritance, otherwise you might as well say that Visual Basic's "class" is an object!
Nope. I believe that you very often need a simple agregate, which has only a handful of fields and involves as little overhead as possible. That means: - fast handling on stack, as well as by pointer or reference. Obviuosly polymorphic objects incur more overhead, because the space which they need cannot be determined at compile-time, making stack copy allocation impossible. - no VTable pointer -- since this would be a significant overhead for agregates consisting of only 2 or 3 fields. this obviously kills polymorphism to 100%, and inheritance stops making much sense in this context either. But look at the source of DMD itself: i believe most of the "objects" there are lightweights, and as such are only a way to better organize the code operating on usual C structs. These have an extremely wide use in C++ projects, especially in those highly focused on performace. -i.
Jun 15 2003
"Ilya Minkov" <webmaster midiclub.de.vu> wrote in message bcimlj$7js$1 digitaldaemon.comDRS wrote:I'd agree. What is a "lightweight" object anyway? At the minimum an object must provide encapsulation, polymorphism and inheritance, otherwise you might as well say that Visual Basic's "class" is an object!
Nope. I believe that you very often need a simple agregate, which has only a handful of fields and involves as little overhead as possible.
Whatever they are they're manifestly not objects. -- A: Top-posters. Q: What is the most annoying thing on Usenet?
Jun 16 2003
"DRS" <drs removethis.ihug.com.au> wrote in message news:bckrp7$24ov$1 digitaldaemon.com..."Ilya Minkov" <webmaster midiclub.de.vu> wrote in message bcimlj$7js$1 digitaldaemon.comDRS wrote:I'd agree. What is a "lightweight" object anyway? At the minimum an object must provide encapsulation, polymorphism and inheritance, otherwise you might as well say that Visual Basic's "class" is an
Nope. I believe that you very often need a simple agregate, which has only a handful of fields and involves as little overhead as possible.
Whatever they are they're manifestly not objects.
I disagree. It's basically an object without virtual functions. You can still do a LOT of OO that way. You still gain many of the OO "benefits"... encapsulation, inheritance, data hiding (not in C); just not polymorphism. More than half of the classes I write are these kind of lightweight classes. I do like to package datatypes with the code that works on them. However I'm not 100% sold that OO-style syntax is a good idea, as many times it's unclear which class should be promoted to "this" status, if a function works with several different class parameters. SeanA: Top-posters. Q: What is the most annoying thing on Usenet?
Isn't this a FAQ? You get the answers before you ask the questions. Sean
Jun 18 2003
"DRS" <drs removethis.ihug.com.au> wrote in message news:bb85ot$24dv$1 digitaldaemon.com...Design by Contract
assert is a basic building block for design by contract, but design by contract is so much more. It really starts coming into its own by the addition of class invariants and the inheritance of in and out contracts. Being able to turn the whole thing on or off with a compile switch makes it nearly painless to load up your code with DbC. I'll wager that you'll start seeing all the major languages adding in DbC.
May 31 2003
Oh, and another language I know nothing about but may be part of the same C/C#/C++/D family. Anyone able to supply an Objective-C column? -- AlisdairM
May 30 2003
Alisdair Meredith wrote: Agree with most of what you said...Under reliablility I am very surprised that only 'D' rates as unit testable. I would at least like a link to some material explaining why only 'D' qualifies here. A good opportunity for a sales pitch if ever I saw one, this is the detail that caught my attention most!! [Although I don't use Java, I was surprised that its extensive reflection API and unit-testing community did not qualify]
Perhaps a poor choice of words, but unit testing is a native concept in D AFAICT and not in those other languages.Oh, and as a cheeky new feature you might want to add 'reference implementation available' given that I am not yet aware of a conforming C++ implementation [although EDG-based solutions are getting very close now]
EDG claims 100% conformity. (And, in a mere 350K lines of C.) The Comeau compiler is the only one to use 'export' iirc though.Interesting chart though. If you can find the people to contribute I would be interested in seeing how Eiffel, Python, Smalltalk and Haskell score as well.
Wouldn't that be stretching it a bit? The audience for D is primarily for the C-derivative languages and I think thats what Walter was shooting for.
Jun 03 2003
"Garen Parham" <nospam garen.net> wrote in message bbibft$118r$1 digitaldaemon.com [...]Wouldn't that be stretching it a bit? The audience for D is primarily for the C-derivative languages and I think thats what Walter was shooting for.
Then why is one of the boxes in the language comparison labelled "Algol-style syntax" and not "C-style syntax?" -- A: Top-posters. Q: What is the most annoying thing on Usenet?
Jun 03 2003
DRS wrote:Then why is one of the boxes in the language comparison labelled "Algol-style syntax" and not "C-style syntax?"
Don't know, Walter? In any case I'm pretty sure Walter has said he wanted D to appeal to your typical C-derivitveish language programmers.
Jun 04 2003
Garen Parham wrote:Wouldn't that be stretching it a bit? The audience for D is primarily for the C-derivative languages and I think thats what Walter was shooting for.
Well, my languages were chosen for a reason <g> Eiffel is the poster-child for Design-By-Contract, one of the big draws of D. So it would be interesting to see a comparison here (with a language I know nothing about other than it has DbC and 'repeated' inheritance) Python because I am looking to broaden out from my largely C++ base, and it is definitely a language I would consider ahead of Java when looking for a simple to use, garbage collected, OO language. Delphi because its evolution from Pascal to OO Pascal is quite similar to C -> C++/Java, and Pascal and C are close enough in constructs to be dialects within a broader family of languages. Comparisons between Delphi and C++/Java are quite straightforward, so it is not unreasonable on a D list. Smalltalk is the early playgroud of OO, so it is interesting to see what routes its successors have taken. Haskell was just mischief making <g> I agree that Python/Delphi/Smalltalk (and probably Eiffel, don't know syntax) are not in the 'C' langauge family that the table covers at the moment, but they are also close enough to make comparison interesting, and maybe shed new light on the way you think about using D. Simply putting a name on a feature can open up new avenues of thought. Look at the explosion in template metaprogramming in C++, or policy based design, once the terms entered common usage. Sure people were doing these things before, but once we had language to describe the ideas, EVERYONE is doing it <g> -- AlisdairM Team Thai Kingdom
Jun 04 2003
Alisdair Meredith wrote:Well, my languages were chosen for a reason <g> Eiffel is the poster-child for Design-By-Contract, one of the big draws of D. So it would be interesting to see a comparison here (with a language I know nothing about other than it has DbC and 'repeated' inheritance)
That could be okay then, since you'd be comparing 'comparable' features.Python because I am looking to broaden out from my largely C++ base, and it is definitely a language I would consider ahead of Java when looking for a simple to use, garbage collected, OO language.
Yeah me too, but it's got a lower ceiling w.r.t. potential uses due to performance reasons.Delphi because its evolution from Pascal to OO Pascal is quite similar to C -> C++/Java, and Pascal and C are close enough in constructs to be dialects within a broader family of languages. Comparisons between Delphi and C++/Java are quite straightforward, so it is not unreasonable on a D list.
Those aren't too far out there. I didn't see you mention those ones though.Smalltalk is the early playgroud of OO, so it is interesting to see what routes its successors have taken. Haskell was just mischief making <g>
I agree that Python/Delphi/Smalltalk (and probably Eiffel, don't know syntax) are not in the 'C' langauge family that the table covers at the moment, but they are also close enough to make comparison interesting, and maybe shed new light on the way you think about using D. Simply putting a name on a feature can open up new avenues of thought. Look at the explosion in template metaprogramming in C++, or policy based design, once the terms entered common usage. Sure people were doing these things before, but once we had language to describe the ideas, EVERYONE is doing it <g>
If such accidents occur with D we could actually change the language to support the style too. :)
Jun 04 2003
I agree that Python/Delphi/Smalltalk (and probably Eiffel, don't know syntax) are not in the 'C' langauge family that the table covers at the moment, but they are also close enough to make comparison interesting, and maybe shed new light on the way you think about using D.
Maybe such a table should be on an unofficial site? I agree that making such a comparison could give new insight into where D stands, but if it were on Digital Mars' site then it would have to be correct from the start, and this would be a totally unnecessary burden on Walter.
Jun 05 2003
Georg Wrede wrote:I agree that Python/Delphi/Smalltalk (and probably Eiffel, don't know syntax) are not in the 'C' langauge family that the table covers at the moment, but they are also close enough to make comparison interesting, and maybe shed new light on the way you think about using D.
Maybe such a table should be on an unofficial site? I agree that making such a comparison could give new insight into where D stands, but if it were on Digital Mars' site then it would have to be correct from the start, and this would be a totally unnecessary burden on Walter.
You can use <http://www.prowiki.org/wiki4d/wiki.cgi?LanguagesVersusD> Click on edit and you will see how the wiki works. The formatseparator separates parameters from field content. 3 means that 3 cells are connected horizontally ...#color colors a single cell, you may use simple names (#red) or typical HTML rrggbb values (#f37921) -- Helmut Leitner leitner hls.via.at Graz, Austria www.hls-software.com
Jun 05 2003
In article <3EDF7052.90DD838D hls.via.at>, Helmut Leitner says...Georg Wrede wrote:Maybe such a table should be on an unofficial site?
<http://www.prowiki.org/wiki4d/wiki.cgi?LanguagesVersusD> Click on edit and you will see how the wiki works.
For those interested and knowledgeable, I already filled in the data from the Official comparison (hope I'n not getting sued for copyright), and put in a few other language columns. I assume at least the Delphi column will get filled soon?
Jun 05 2003
"Georg Wrede" <Georg_member pathlink.com> wrote in message news:bbo8f6$kk0$1 digitaldaemon.com...In article <3EDF7052.90DD838D hls.via.at>, Helmut Leitner says...Georg Wrede wrote:Maybe such a table should be on an unofficial site?
<http://www.prowiki.org/wiki4d/wiki.cgi?LanguagesVersusD> Click on edit and you will see how the wiki works.
For those interested and knowledgeable, I already filled in the data from the Official comparison (hope I'n not getting sued for copyright), and put in a few other language columns.
No problem, make your own version of the table, as long as it is identified as unofficial.I assume at least the Delphi column will get filled soon?
Jun 05 2003
I'm looking at the comparison on Helmut's WIKI: http://www.prowiki.org/wiki4d/wiki.cgi?LanguagesVersusD Who found function overloading in Delphi? I believe it's not possible. -i.
Jun 08 2003
"Ilya Minkov" <midiclub 8ung.at> escribió en el mensaje news:bc0ccj$203u$1 digitaldaemon.com... | | Who found function overloading in Delphi? I believe it's not possible. | Isn't there an "overload" keyword in Delphi? ------------------------- Carlos Santander --- Outgoing mail is certified Virus Free. Checked by AVG anti-virus system (http://www.grisoft.com). Version: 6.0.488 / Virus Database: 287 - Release Date: 2003-06-05
Jun 08 2003
Carlos Santander B. wrote:"Ilya Minkov" <midiclub 8ung.at> escribi=F3 en el mensaje news:bc0ccj$203u$1 digitaldaemon.com... | | Who found function overloading in Delphi? I believe it's not possible=
| =20 Isn't there an "overload" keyword in Delphi?
"overload"? First time i hear. It's not in my Delphi 2.0 book. =2E..wait... searching the net... You were right. Starting with Delphi 4.0 (which was a great step forward for various=20 reasons), Function/Method overloading and Default parameter values have=20 been added. -i.
Jun 09 2003
"Ilya Minkov" <midiclub 8ung.at> wrote in message bc0ccj$203u$1 digitaldaemon.comI'm looking at the comparison on Helmut's WIKI: http://www.prowiki.org/wiki4d/wiki.cgi?LanguagesVersusD Who found function overloading in Delphi? I believe it's not possible.
function Divide(X, Y: Real): Real; overload; begin Result := X/Y; end; function Divide(X, Y: Integer): Integer; overload; begin Result := X div Y; end; -- A: Top-posters. Q: What is the most annoying thing on Usenet?
Jun 09 2003
DRS wrote:"Ilya Minkov" <midiclub 8ung.at> wrote in messageWho found function overloading in Delphi? I believe it's not possible.
Yeah, yeah, i know already. It just wasn't yet there as i learned Delphi, and i have not made a step past 3.0 -- and this feature was added in 4.0. -i.
Jun 09 2003
"Ilya Minkov" <midiclub 8ung.at> wrote in message bc290l$ks1$1 digitaldaemon.comDRS wrote:"Ilya Minkov" <midiclub 8ung.at> wrote in messageWho found function overloading in Delphi? I believe it's not possible.
Yeah, yeah, i know already. It just wasn't yet there as i learned Delphi, and i have not made a step past 3.0 -- and this feature was added in 4.0.
D8 will be out around the end of the year. You have a lot of catching up to do! -- A: Top-posters. Q: What is the most annoying thing on Usenet?
Jun 09 2003
In article <bc2bgf$nft$1 digitaldaemon.com>, DRS says..."Ilya Minkov" <midiclub 8ung.at> wrote in message bc290l$ks1$1 digitaldaemon.comDRS wrote:"Ilya Minkov" <midiclub 8ung.at> wrote in messageWho found function overloading in Delphi? I believe it's not possible.
Yeah, yeah, i know already. It just wasn't yet there as i learned Delphi, and i have not made a step past 3.0 -- and this feature was added in 4.0.
D8 will be out around the end of the year. You have a lot of catching up to do! hey waz up you are welling to have a friend.
-- A: Top-posters. Q: What is the most annoying thing on Usenet?
Sep 05 2005









Ilya Minkov <midiclub 8ung.at> 