views:

725

answers:

20

Delphi (the language) has its own syntax and features, and other languages have their own too.

As a Delphi developer, what would you like to have in the win32 Delphi compiler? And if you are not a Delphi developer, what features would make you starting using Delphi?

Here's my short list

Main Features:

  1. Cross platform compiler (Revive Kylix) Windows/Linux/Mac.
  2. Native support for 64bit Processors (it may be in the next Delphi version as mentioned in Delphi roadmap).
  3. Advanced support for newer multi cores CPUs.
  4. Inline declaration of variables such as: var MyObj := new TMyClass.Create() (Similar to C);
  5. Multiples assignment: X := Y := Z := 1;
  6. Lambda expressions (same as C# 3).
  7. Automatic properties (same as C# 3).

I'm sure many have their own list, so let's start dreaming ;-)

+11  A: 

Uhm, only two items on my list:

  1. fix existing bugs
  2. crash/hang-free IDE

PS: x64 support will be nice too ;)

DiGi
Instead of adding new features which introduces new bugs they should fix the existing ones, seriously.I get AV on dcc100.dll several times a day :(
Fabio Gomes
Me too :/ And some "OS Function failed - press Enter and go to hell" (with lost all your unsaved work)
DiGi
What bugs do you think need fixing?Can you get Delphi 2009's IDE to hang or crash? How?
Nick Hodges
I get so many bugs with Delphi that I've abandoned the IDE. I no longer think it a quality product. If it becomes stable, maybe I'll think about it. Maybe.
The Wicked Flea
Not with 2009, just my employee is not going to buy new version of IDE every year. So I have to stay with older and hoping for some hotfixes...
DiGi
@Nick, it's always through *standard use.* Doing whatever we do and all of a sudden you get these weird AVs and critically looping errors.
The Wicked Flea
My Delphi 2006 IDE is so bad that it's silly. The people responsible should be ashamed.
mliesen
@Nick - It crashes so much and has eaten so much of my work that I trust MS more than I trust the Delphi IDE. 2009 is better but not much. I am seriously down to editing code in VIM and compiling via NANT for everything but debugging
MikeJ
2007 and more so with 2009 are much better then the previous versions. I don't think I have lost any work due to an IDE error in either and I program full time in them. I did some hard time with Visual Studio, and it has its own share of bugs and isn't any more stable.
Jim McKeeth
@Jim - that can be true, but my employee will not buy new IDE version *every year*. And I just can't afford to buy that upgrade for whole team from my pocket. If is 2007 much more stable that 2005/6, Borland/Codegear/whatever should give that update for free or less expensive.
DiGi
DiGi, I do agree, but nevertheless - D2007 is so much more stable than 2005/2006 than it's definitely worth the upgrade. And D2009 is even better (but we're not prepared yet to make a full switch to Unicode so we're still using D2007 internally).
gabr
@Nick Hodges sorry I was a bit generalist, the AV on dcc100.dll happens on Delphi 2007, its quite annoying but I don't know if it happens on Delphi 2009, hope it was fixed.
Fabio Gomes
My D2007 crashes all day. No, I can't get the steps to reproduce. I really hope D2009 is better.
Erick Sasse
@DiGi If you get Software Assurance then you can get the new versions for free, and then just renew the SA, which is much cheaper then buying each new version. Check it out.
Jim McKeeth
HaHaha. For free, you crack me up. The decent thing would be to make each end every version solid through bug fixes.
mliesen
Well, please report any bugs you guys find. If we don't know about them, we can't fix them. The compiler itself seems to me to be quite stable, so I don't know of any problems in that area.
Nick Hodges
+3  A: 

I was a long time Delphi developer but switched to .NET a few years ago. Still use Delphi from time to time, but feel it has fallen behind C# as a language.

IMHO Delphi needs to set it self apart, so CrossPlatform would definitely be what would bring me back. Would have to be all three: Windows/Mac/Linux maybe they could use something like wxWidgets.

Inline variable declaration would be high on my list too - hate having to declare vars at the top of a procedure.

Managed Memory model in Win32 would be awesome.

Better refactoring tools in the IDE - although haven't used the latest one, so it could be better than the last IDE I have (2006)

KiwiBastard
Kylix was cross-platform but never sold. IIRC the basis of the GUI toolkit was the rendering layer of QT.
ConcernedOfTunbridgeWells
+1  A: 

Garbage collection.

JosephStyons
You can get Garbage collection in Delphi win32 today: http://cc.codegear.com/Item/21646For more information listen to this podcast:http://www.delphi.org/2008/09/episode-3-barry-kelly/
Jim McKeeth
Since the question doesn't specify which Delphi compiler: The .Net Delphi compiler already has Garbage Collection. Well, not the compiler exactly, but you know what I mean.
Lars Truijens
Absolutely agree. Full and complete garbage collection in the Win32 version is needed, not just for classes but for any and all items allocated at any time. Programmers should only need to allocate stuff and not ever have to worry about releasing it. And this must be done efficiently!
lkessler
Garbage collection can only safely be done when you have lots of knowledge about the code, hence why it rarely rears its head except for in managed/interpreted languages. Yes, you can *scan for pointers* but that can easily not work or produce problems as well.
Lasse V. Karlsen
You ask the impossible, Ikessler. The only efficient garbage collection is manual garbage collection. Any GC not based on reference counting has obnoxious speed problems,and reference counting doesn't work well with objects. Give me FastMM's leak detection and I'll be content.
Mason Wheeler
+5  A: 

Definitely 64-bit support (but we'll get it soon, I hope, maybe even next year ...).

Automatic property getters/setters (I proposed this two years ago).

Less verbose syntax for the anonymous methods. I hate the current approach oh so much.

Profiler.

I don't care much about multithreading support. I'm writing my own. I also don't care much about GC. I don't imagine how I would find stuff-that-should-be-released-but-is-not in the GC program. I still remember how it was to work without FastMM.

gabr
A less verbose syntax will come, but it needs type inference in the compiler to really reduce the need for various incantations.Re GC, I don't think you've had enough experience. It's trivial e.g. to discover all living objects in a .NET application and show all the roots for any given instance.
Barry Kelly
Yes, I'll the first to admit that I have not enough experience (e.g. none) in GC programming. The question is - if we get GC to the Win32 world, will we also get this support?Thanks for the information!
gabr
i dont know if this is what you ment by Auto Matic Property Getters/setters but Ctrl + Shift + C, adds private read and write specifiers to the property declaration, then adds skeleton code in the implementation section
Christopher Chase
The Delphi for .Net compiler already does 64 bit
Lars Truijens
I know and I don't care. I don't do .NET.
gabr
The question did not mention any specific Delphi compiler. Now that it does I understand .Net is not an answer here.
Lars Truijens
+2  A: 

I miss the post-increment and ternary conditional operators when I use Delphi.

Inc() and IfThen() just do not cut it.

Blorgbeard
+3  A: 

I would concentrate on the Mac instead of Linux for Delphi/Kylix dreaming.

The reason Kylix failed was that Linux people will not pay money for development tools. With the rise of the Mac over the past few years, a Delphi that makes native Mac binaries might make business sense for them.

Jeff Cuscutis
While people won't pay for Linux compiler that doesn't mean they won't pay for a Windows/Linux compiler. Having an easy port path to Linux would be of value to a Windows developer.
Loren Pechtel
The good news is that if they go down the Mac cross-compiling road then it would seem Linux would be simple to include as well.
Jim McKeeth
A: 

When I look at newer languages such as Perl and Ruby the obvious difference that strikes me is the support for hash tables and their associated ability (especially in Ruby) to iterate, concatenate and otherwise process the hash tables (or just an arrays) contents.

Okay, so I can create an iterator in Delphi but having to create a new class todo it is too unwieldy for everyday use.

Related to this is a more extensive VCL for lists and collections. For example I should be able to sort a StringList using an anonymous method or a callback function (which may have been added in D2009).

In general I'd say a more extensive collection of data structures is needed in the language and VCL.

Mike Sutton
Most all of that is in Delphi 2009, and it is really well done. Check it out.
Jim McKeeth
And in Delphi for .Net
Lars Truijens
A: 

Forwards that work across units. The problem comes with classes that need to work together.

Permit a forward declaration inside a class in the interface. Add a keyword "CompletedBy", similar to Uses but when a filename is found there it is NOT compiled until the very end unless otherwise called for normally.

I do not favor the previously mentioned prefix/postfix operators, I'm not too happy with inline variables other than loop variables and I do not like multiple assignment.

Loren Pechtel
re Forwards that work across units. This is not really a problem that can't be corrected using interfaces..they work well and aren't just good for COM development.
skamradt
+1  A: 

From the Compiler

  • Generation of assemblies that aren't so badly mangled that C# or VB can barely add references and make use of them.

From the IDE

  • An IDE that only crashes 1 week (if that) - delphi 6/7 where did you go??
  • Doesn't leaks GIGs of memory
  • Doesn't eat markup in .ASPX

From Codegear itself

  • Come clean about support for the "new" .NET technologies - silverlight, .NET 3.x etc. If there is no future support comming, just tell us so we can move on.
  • Get realistic pricing. Delphi is more expensive than an MSDN Premium (exclude TFS costs)
MikeJ
A: 

1) At all places where the compiler expects a list of stuff, allow the last element to be followed with the list separator. This makes is easier to move stuff around. It's in C# and I really like it!.

const
mydata:array[0..2] of string=(
   'one',
   'two',
   'three',
);

2) String litterals like in C#,

str:=@'This is line one
this is the second line';

Have not used Delphi 2009, so perhaps this is already onboard.

mliesen
+1  A: 
  • Option to inline finalized virtual methods.
  • Extending generic constrains to class (record) operators.
  • “Managed records”
  • 32/64bit cross-platform compiler + RTL.
"Managed record" as in "old Borland Pascal style 'object'"? That still works.
gabr
+2  A: 

Remembered one more: inlining of pure assembler procedures.

gabr
There wouldn't be that much gain, since you still need to set up a stack frame and such, or do you propose that the compiler rewrites the assembler code to get rid of stack/register references/assumptions the original programmer made?
Lasse V. Karlsen
+1  A: 

Smarter record operators!

I totally hate that I have to define both Equal and NotEqual. If one of them is missing, the compiler could use the other one and negate the result!

Same goes for LessThan, LessThanOrEqual, GreaterThan ...

gabr
+2  A: 
  • Set operations that work on strings, object references etc.
  • Remove limit on the number of items in sets (even if performance suffers)
  • Attributes and reflection in the native compiler
Jozz
Seconding the motion for attributes in the native compiler!You alredy have lots of reflection support via RTTI.
gabr
+1  A: 

look here

Osama ALASSIRY
Thanks for the Nice list, I wasn't aware of it, even some of them already have implemented in the recent Delphi releases.
Mohammed Nasman
+1  A: 

Delphi is an incredible language, but it could be better. I've posted this a few other places, but it needs to be said, repeatedly, until it gets implemented. This is all stuff that's not in D2009, and should be. There's more, of course, but these are my major wish-list issues:

  • Properties are wonderful. But why are we stuck with an implementation that's only halfway complete? Give me one good reason why you should ever be unable to pass a read/write property to a var parameter. If they both refer to the same data member, it's simple. If not, retrieve the read value and make a copy of it, pass the copy, get the result, and send it to the appropriate write.
  • Likewise, array properties need to be fixed. Why should they require get/set methods instead of direct access? If I wanted to work with mandatory get/set methods to access the private members of my objects, I'd code in C++. I use Delphi to get away from that sort of syntactic diarrhea.
  • Bring some of the syntactic sugar introduced in Oxygene/Prism over to native Delphi. Some of it's dependent on a managed code framework, but stuff like the colon operator and double comparison ("if 5 < x < 12") are just automagical compiler tricks, and I'd love to have access to them without all the overhead the CLR imposes. Also, if they could find some way to bring parallel FOR loops and Futures in without the CLR, I'd be ever-so-grateful.
Mason Wheeler
One reason for no var-passing has to do with threading and volatility. If you pass a variable to a var parameter, changes to the parameter in the method is reflected in the original variable, whilst a property/copy would not be.
Lasse V. Karlsen
Yeah, but the same thing goes for any variable, and the solution is the same: the programmer needs to be careful with his threads and manage shared variables and objects correctly. This shouldn't be any different.
Mason Wheeler
A: 

Inline (local) variables, like this :

// some code
var i: Integer;
// some more code
PatrickvL
+2  A: 

Qualified 'with' statements, like this :

with s: TStringList.Create do
try
  s.Add('Hello world!');
  ShowMessage(s.Text);
finally
  s.Free;
end;
PatrickvL
This is nice one, and I prefer it more than the current with now
Mohammed Nasman
A: 

Language features are important to get others to use Delphi, but the IDE is equally important and having a good editor for your code is mandatory. Delphi's editor is pretty good, but it is omitting something you see in other editors:

It needs allow split screen or multiple windows, so you can see, scroll and edit independently two (or more) views of one unit at once.

and similarly:

It needs multiple windows so that you can see, scroll and edit multiple units at once. The tabbed editor window interface doesn't allow this.

lkessler
I will not vote this down, but you should consider removing it: Both in Delphi 4 (old UI style) and Delphi 2007 (Visual Studio docked UI style) there is the "New Edit Window" command in the View menu, which allows for exactly what you want.
mghie
A: 

MikeJ: Delphi 6/7 is gone forever and ever.

Let me elaborate on that a little bit. So like, there was a good IDE and compiler, Delphi 7. It had nice-looking GUI, was responsible, stable (I'm guessing that this is the reason it still ships in some countries :D). And then there was a huuuuge void and nothing usable after that.

So what I'd love to see is Delphi 7 revived and kicking with new language features (like shorthands for properties as in C# 3 or maybe anonymous classes / methods - that'd help a lot).

Matthias Hryniszak
Delphi 7 is stable? Crashes far too often for me.
Blorgbeard