Why We Use the .Net Framework for Our IDE
A couple of years ago, we released a product called C#Builder. It was the first release using our new IDE framework called Galileo. Since then we’ve used Galileo to produce Delphi 8, BDS2005, and BDS2006. Galileo was the first major overhaul of our Windows IDE since Delphi 1 was released. It started out as a single personality IDE, but BDS2005 saw it become a multi-personality release, including C#, Delphi for Win32, Delphi for .Net and C++Builder. It’s has served us fairly well so far, and I expect it to do so going forward.
One key feature of Galileo is that it relies on the .Net Framework. All the versions so far rely on the 1.1 version of the framework, but the forthcoming version will use the .Net 2.0 framework. This fact has caused a certain amount of consternation for some folks, particularly Win32 developers who, for whatever reason, disdain .Net.
There are really two ways to look at .Net. Both of those ways come into play for us. One comes into play if you look at us as a producer of development tools. The other if you look at us as a company that sells a rather complicated software package.
First, .Net is a platform against which developers write code. It is a large library of functionality that is exposed in a way that makes it pretty easy for developers to build applications on top of. As a Developer Tools vendor, we want to produce tools that you can use to code for .Net. Thus, for us, .Net is a place where our customers want to go, and so we produce tools so that hey can create .Net applications. To do that, of course, we naturally have to install the .Net framework on your machine. Makes sense — you can’t develop for the .Net framework without have it installed on your development machine.
But the second way to look at .Net is as a really powerful library of code. There’s tons of functionality in it that is useful and obviously reusable. And of course, the .Net framework is a whole lot of functionality that a developer of a large software package doesn’t have to reproduce or build themselves. Sort of like the VCL/RTL in Delphi, the .Net framework does a lot of heavy lifting when it comes to providing a lot of code that developers want to use.
It is this second reason that Galileo uses the .Net framework. There is just simply too much great stuff in there not to take advantage of it. If we didn’t use it, we’d have to reproduce a ton of the functionality that already exists, and that we’d have to deliver anyway. We’d have to maintain it and continue developing it. By using it, we don’t have to do that. And that’s the whole point of code libraries, right? In addition, if we are going to support .Net development, then it makes sense to use a common code base so that we don’t have to implement the same thing on Win32 and on .Net.
So, if you are a Win32 developer only, yes, you have to load up the .Net framework to run the IDE. But if you just think of it as a code library, maybe it won’t be as bad as you think. (You also have to load up a bunch of VCL packages as well. There’s really no way to get around code libraries when you get right down to it.) The .Net framework comes installed as part of Vista, and so it is pretty much going to be part of the operating system going forward. And why wouldn’t we want to take advantage of the operating system rather than creating our own libraries? In addition, it runs natively – it’s not a virtual machine or interpreted code. The assemblies are JITed into asm code native to your machine.
So if you look at the .Net Framwork that way — as a code library that is part of the OS — it makes sense to take advantage of it and use it to build a complicated piece of software like our Developer Studio.
Updated: Steve Trefethen of the BDS R&D team blogged about this very topic a couple of years ago. His blog goes a bit more specifically into what the IDE uses from the .Net framewor and the benefits gained from it. (Thanks, Steve, for pointing that out.)
I guess the only reason why there are some argues about this is because most Delphi developers see .NET as some kind of "competitor" to Delphi and the way stuff always have worked, which is totally wrong. It also tend to be that many Delphi developers in their ages 40 to 55 dont like new technology very much. (I guess I will be lynched now)
My father is 51 years old and gets upset when he dont understand the new things that keep popping up all the time - and I can understand him. It’s the "If it aint broke, why fix it"-mentality.
December 14th, 2006 at 3:01 pmThanks for taking time to comment this topic. Besides .NET runtime, Turbo Win32 IDE requires 2 more runtime packages to be installed to work.
Why I use Win32 and not .NET is because of control I have over my applications. They are fast, robust and work. I can change them to do exactly what I need. If I need to write more code, I will, because it will result better application. It is easy to deploy and update — the less 3rd party external dependencies you have, the better.
Why I don’t like that IDE uses these additional runtimes is that I see you have just wanted to cut corners on some lines of code, instead of spending some more time and effort to build more robust stand-alone Delphi application. I think this is contrary to the original Delphi concept (robust, integrated, independent).
If I see big applications for download on the Internet that I know can be done much better and smaller, I just don’t use or buy them (see ATI Catalyst Control Center for example of bloatware). I know they are made by people who don’t care about me, otherwise they should have put a bit more effort into their product. Delphi IDE looks about the same now to me, sorry to say.
December 14th, 2006 at 3:05 pmEven I know the answer in advance I can not stop saying this.
Sorry to insists but making the IDE based on .NET will make the posibility to migrate to LINUX/OSX more diffcult isn’t it?
I’m sure many Delphi Community guys will be happy to help CodeGear to get the same result without .Net
December 14th, 2006 at 3:24 pmAnother week, another (different) story, and just as unconvincing as the others to date.
On the one hand .net is used because the product started out in life as a .net development tool so it just kind makes obvious sense.
Then on the other hand .net is used because Borland decided that that is what their customers wanted : "FOR US .net is where our customers want to go", not "our customers have told us .net is where they want to go".
Then on a third hand, .net is just this insanely great idea that only an idiot would ignore, and to make this point the same arguments come up again - ones that really don’t stand any form of intelligent scrutiny.
".net is native" - hogwash.
This was said about .net 1.0 yet each major new release of .net proclaims performance improvements as one of the advances in that release.
So .net 1.0 was just as fast as native, and .net 2.0 is just as fast as native, yet .net 2.0 is faster than .net 1.0
Something does not compute.
The "we do not need to maintain" it argument is complete nonesense as well.
That only works if the thing you don’t need to maintain does not itself intrinsically need any maintenance - as soon as it does, then the "not maintaining it yourself" benefit becomes a huge disadvantage - you have to wait for someone else to maintain it for you.
Are we really saying that .net represents the state of the art in all things that it delivers?
If so, why are any of us bothering to write any code at all? We should be leaving it to Microsoft to deliver the components from which applications can be assembled by business analysts.
And for that matter - if the Microsoft library is the best there can be, doesn’t it also rather naturally follow that their tools would be too?
Are we sure this is the message CodeGear want to send?
Just imho, as ever.
December 14th, 2006 at 4:14 pmPerhaps some people blame the AV’s and general errors in BDS (2005 was BAD, still see them sometimes in 2006, though not nearly as bad) on the fact that .net is mixed in? Personally I do not, but I could see that mentality from hardcore win32 developers when those issues did not occur in a pure win32 IDE like Delphi 7.
BTW, I use Turbo Win32 Delphi 2006 and enjoy my refactoring (one of the many pieces written in .Net from what I hear).
December 14th, 2006 at 5:25 pmNick, you claim that .NET is so useful (in building the IDE), but you don’t mention a single specific thing that the IDE gains from .NET. It is a credit to the Delphi team at DevCo, and the Delphi community in general, that Delphi Win32 is such a powerful development tool. I find it hard to believe that .NET really helped you build the (newer features of the) IDE, but I have an open mind. Just give a couple of specific examples. That might go a good way to convincing folks. So far you haven’t convinced me.
December 14th, 2006 at 5:25 pmNick -> I suppose some people feel the same way about dotNet as others do about Java (oh Java, how I hate thee!) The most rational excuse I hear is about the delay involved in JITing. You might want to consider adding a pre-JIT of required assemblies into the GAC as a speed improvement. It would make sense for the core borland assemblies.
Jolyon Smith -> how can someone smart enough to notice the symantic issues be so dumb? Of course there are speed improvements with each version - improvements in JIT means better native code that runs more efficiently, better optimized framework means the same thing. I don’t know about you, but I try to improve the performance of my apps as they go even if they ARE native code. How you write code can have a significant impact on performance. Deliberately ignoring obvious facts like that to support a dubious argument undermines your credibility when do you make a valid point.
DotNet does indeed have some very good points, but people have embraced framework religiously in the same way they approach OS and language. It is stupid, petty and just absurd. In fact, if anyone except MS had come up with dotNet, it would probably get a fraction of the hate it currently does. Each tool, each framework, each OS has areas in which it performs best.
Yes, dotNet’s framework IS a competitor to the VCL, and yes, that can be scarey to members of a small, insular community like Delphi Developers. However, you should at least investigate it HONESTLY as a possiblity for coding just like you did for Delphi. Maybe there are some projects that work better in dotNet than Delphi, and vice versa.
Daniel Luyo -> good point. However, I suspect that IDE on alternate platforms is no longer the plan. It has failed multiple times now after all. That said, there is always MONO, so maybe it isn’t as large a barrier as you might think.
December 14th, 2006 at 5:48 pmI’ll probably never understand these people that complain about the fact that the BDS uses .NET. They can still create stand-alone Win32 applications that don’t require .NET. They don’t have to "drink the KoolAid" if they don’t want to.
Even before Borland tools started requiring the installation of .NET to run the installations were long. It doesn’t seem to me that .NET being used in BDS has really qualitatively changed the installation process, and as far as the operation of the IDE is concerned, I find it quite satisfactory for the most part.
I think a ilttle perspective is needed. Basic economics tells us that if the Delphi team only has to write functionality once that we will get twice as much new functionality than if they have to write everything twice, once for the .NET version of the IDE and once for a non-.NET version of the IDE. I myself would rather see twice as much new functionality and live through the .NET run-time download. In fact, I have a hard time understanding why anyone would prefer to get half as much new functionality just to save themselves a few minutes at installation time.
December 14th, 2006 at 5:50 pmYOU (borland/codegear) made a choice, but did not let US(me/other developer) to make a similar choice: how dificult it is for BORLAND/CODEGEAR to check the .NET framework presence at the end of the setup, and if not found, disable .NET dependent parts of IDE?

December 14th, 2006 at 9:30 pmThis should give everyone a chance to understand the "need" for .NET framework, and choose between the IDE functionality and a .NET free computer
If IDE allows us to write native WIN32 and .NET applications, provided it provides all functionality then it’s up to you to write your IDE in any platform.
As for me, I like native code without any Microsoft’s JIT’ers. Experience shows us that Microsoft changes things drammatically without thinking of developers, even their own developers. There is a fresh example: VB developers.
I know that the most part of developers use .NET only for creating ASP.NET pages. The reason for it is that there is a design support for creating ASP.NET pages. Though I’d like design support in Delphi for WIN32, too. Yes, of course, there is Intraweb and I sould say I like it. For other things people use native code.
I think you should provide developers with all functionalities in all platforms. It’s up to them to deside which way they prifer. Give them freedom and they will appreciate what you do. You compiler team do this. Thanks them for it. But your Web technologies need to be improved, espesially in WIN32. I remember, once I liked WEB broker, Websnap. For their time they were great. There is a long time we don’t see any improvement in this area. You’ve cut Apachie support. Statistics shows that it’s the most widespread Web server and it’s the only one running on other platforms.
It doesn’t mean that I want to teach you what you should and what not. These are thoughts of a developer who like writing in Delphi, who lives with it.
December 14th, 2006 at 10:32 pmWell, it seems this is the right path !
December 15th, 2006 at 12:13 amThe number one problem with .Net for desktop apps is security. I was thinking of writing a Firebird BDP however when I used Reflector.exe on the Interbase assembly to get some clues, I found that the code was so open (even having been obfurscated) that I feared a copyright problem.
Also there is backward compatibility, execution speed, memory footprint, redistribution of linked assemblies… Totally a non starter.
Maybe ASP.Net and Mono are plus points if you want to go this way and I am glad that CodeGear are supporting the technology however Win64 support is more likely to make me put my hand in my pocket to upgrade my BDS.
December 15th, 2006 at 12:25 amPs The Interbase BDP uses a DLL for a lot of functionality - so so when is .Net actually .Net anyway?
December 15th, 2006 at 12:30 amShouldn’t it be "Eat your own dogfood"?
Isn’t that like implying: look, .NET is so much cooler, so much better than the VCL?
Instead of advancing the VCL (because you need new stuff for the VCL-IDE) that could be reused by every other Delphi developer, you improve your .NET skills?
What kind of message is that sending?
How many people would start a new .NET project using a Borland IDE? I wouldn’t, I’d use C# and the MS IDE.
December 15th, 2006 at 12:37 amI have been developing in .NET (C# and C++) for 3 years now. I also have been developing in Delphi for 7 years now. I know both Win32/VCL/NET/ worlds, and I still do not understand why people are so resistant to .NET since it is clearly the way to go.
All arguments against .NET are purely psychological based. I call it the “BIG SCARE” of new technology. Afraid to realize that everything you have learned so far, that all your expertise is being swapped with something far more easy to use, and far more robust with improved security.
At this moment, .NET and VCL are equals, both in performance and in functionality. But making a program is .NET is easier if you need security at the executable level and in regard to forgetting to free memory. Even you code gets simpler since you do not to keep track who created the class and who should dispose it. Less chance to access violations and easier to share a class to multiple lists. (And you should use dispose to close files instead of doing this in the destructor).
Why should you have to compete with Microsoft? Use their code and build on top of it. Not only will your .NET program become faster when a new .Net is released without need of recompiling, you can also create (.NET 2.0) neutral applications that will run as 32 bit on a 32 bit machine and 64 bit on a 64 bit machine without need of recompiling. One executable that will run on both 32/64 and who knows also Linux and maybe Mac…?
If you argue that it is better to create your own VCL that is the duplicate of the .NET then I wonder why stop there? Why not replace the Windows API with your own VCL components? We would then have our own NTFS file component and bypasses Windows API???
I say, lose that scare of the .NET since it is really the best way to go.
December 15th, 2006 at 1:17 amI have been developing in .NET (C# and C++) for 3 years now. I also have been developing in Delphi for 7 years now. I know both Win32/VCL/NET/ worlds, and I still do not understand why people are so resistant to .NET since it is clearly the way to go.
All arguments against .NET are purely psychological based. I call it the “BIG SCARE” of new technology. Afraid to realize that everything you have learned so far, that all your expertise is being swapped with something far more easy to use, and far more robust with improved security.
At this moment, .NET and VCL are equals, both in performance and in functionality. But making a program is .NET is easier if you need security at the executable level and in regard to forgetting to free memory. Even you code gets simpler since you do not to keep track who created the class and who should dispose it. Less chance to access violations and easier to share a class to multiple lists. (And you should use dispose to close files instead of doing this in the destructor).
Why should you have to compete with Microsoft? Use their code and build on top of it. Not only will your .NET program become faster when a new .Net is released without need of recompiling, you can also create (.NET 2.0) neutral applications that will run as 32 bit on a 32 bit machine and 64 bit on a 64 bit machine without need of recompiling. One executable that will run on both 32/64 and who knows also Linux and maybe Mac…?
If you argue that it is better to create your own VCL that is the duplicate of the .NET then I wonder why stop there? Why not replace the Windows API with your own VCL components? We would then have our own NTFS file component and bypasses Windows API???
I say, lose that scare of the .NET since it is really the best way to go.
December 15th, 2006 at 1:17 amFirst off, I don’t (yet) have a problem with having .NET runtime installed on my PC. And, the framework that a particular piece of software uses is fundamentally irrelevant to me , unless it actively causes problems.
However, current wisdom seems to be that there’s typically NO point in porting ANY existing app or codebase from Win32 to .NET, but if you’re lucky to be starting with a totally blank sheet of paper, then .NET *must* be strongly considered. (But, as others say, so must C#)
Given the above, I’d like to know what you think the "Top Ten Advantages that .NET has given BDS" are - and in more detail than above - if you consider .NET richer than VCL, then say where and why. Maybe it’s the GC stuff, maybe it’s some .NET-only APIs, whatever…
- Roddy
December 15th, 2006 at 1:28 amConverting existing win32 applications to be recompiled is not a wise choice, since you will encounter big problems. Only very small and simple programs can be ported this way.
Migration should be a step by step process. And one possible way is to start writing newer code in .NET as part of an ActiveX (In .NET this is stupidly simply done by setting a flag to true and not the boring very labor extensive old way).
Delphi to C# is a bit more complicated but C++ to C# is mostly a search and replace of ‘->’ to ‘.’ And removing all free’s. Only care must be taken that when resources or files are used, that they get disposed in the dispose() function and now wait until the GC calls up the destructors since that is in a none-determined way. You could get a locked file because the previous destructor was not called yet and you are opening the file.
But you will notice that your code gets far less complicated for classes that does not use resources.
At this moment .NET 2.0 and VCL is equivalent in performance and in functionality. So if the compiler developer team uses the .NET for the IDE, then they will have far more time and resources to add new functionality. Also this way they are actually testing their own classes against the .NET and will improve the quality of the CodeGear products.
It seems that the .NET framework becomes more and more the API of Windows of the future. At this moment most of the framework is a wrapper around the existing API, but in the future this will become part of the Windows API on its own. Why? Because the security is built in on every level of every function of the .NET CLR. Improved security and stability. It is much complicated to explain in detail, but let’s say that I create a calculator that has no need of Internet access, then I can set the permissions to only work locally in the executable, and if some worm/virus finds a buffer overflow in the calculator, it cannot be misused to access the Internet to download a payload to be executed. Technically you can make the program allowed to access only one URL (let’s say the company URL for updates) and the rest of the Internet is off limits. Try this in a Win32 executable.
The biggest advantage of .NET is that (except for creating ActiveX very easy) is that the dll’s (assemblies) generated by Delphi can freely be intermixed with C# and (managed) C++ and VB.NET and Microsoft C#… So even from programmers point of view, in a team, I could hire a C# programmer, and a VB.Net programmer and they all work together at one project but they do not have to relearn a new language. Also in the VS 2005 you can intermix C# and C++ and VB.NET within the same executable. No need in having multiple dll’s.
Regarding to performance, some things will be faster, some will be slower, but I have looked at the JIT compiled code and it is impressive how the assembly code is nearly the same as a normal C++ program. Only one thing, in the case of C++, the code could be even a bit more optimized since the compiler has more time to compile, what is a 10 or 20 minutes more? But in the JIT situation, the time of compilation and loading must be balanced between faster execution and faster loading.
Note: I did image processing on the .NET and it was only 5% slower that the C++ variant but much simpler to program. (Actually I ported the C++ to C#).
December 15th, 2006 at 2:24 amI don’t have a problem that BDS uses .NET, from my point of view it can use any library as long as it works fine (read: fast and stable).
If I load a really big application (it’s very poorly designed -> all code in one unit) in BDS 2006 and try to make some changes there BDS eats all my memory! When it reaches 1.1 GB the IDE is *stuck* for about 15 second every 45 seconds or something!
When I load the same program in Delphi 7 it does’t even need 200 MB of RAM and I can work the whole day without any interruption. Almost the same is the case if I disable the .NET parts of the BDS IDE. I know that this might not be an issue of the .NET framework itself, but some memory leak in the BDS code.
The .NET framework may be easier to develop with, but the features of BDS that make use of it don’t leave a very good impression to me. I’m also not a fan of garbage collection and I sometimes think that the GC of the .NET framework is the culprit here, …
The question is, why didn’t you use the VCL when you developed the Galileo IDE? What can the .NET framework do that the VCL can’t. Is it the GC? Is it the code security? Is it easy support for 64 Bit? You will have to write a 64 Bit VCL anyway and an IDE doesn’t need code security does it?
I really hope that the .NET parts in CDS 2007 work better than the .NET parts of BDS 2006.
About the Galileo IDE in general: Delphi 8 and BDS 2005 were a pretty clear example that the Galileo IDE didn’t work that well until recently (BDS 2006 with all the fixes), so I don’t know if it was worth it to write a complete new IDE. So why do you say that it served you well?
On the other hand: When BDS works, it does a pretty impressive job (refactoring, live templates and all that), but you really should have set quality the number one priority.
December 15th, 2006 at 2:32 amOther advantages are these:
· I create a .NET dll (assembly) and mark it as ActiveX. This means that older win32 programs in Delphi x could use these modern functionality (if you install the .NET framework of course). So older programs could be easily extended with the modern needs without need to recompile on a modern compiler.
· Also programming in .NET does not mean that you lose the WINAPI functionality! You have direct access to every WINAPI that currently exist or in the future including your dll’s. All you have to do is prototype it similar like you normally do in the interface part.
· Compared to ActiveX, if you do not use the ActiveX part, then no need of registration to the registry.
· Also performance, if you really need speed, then you can freely mix managed and unmanaged C++ code within the same executable. This is not part of C++ but inside the CLR itself. No dirty tricks. Just make sure that your managed memory gets pinned otherwise it might move when you access it in unmanaged code. Also make sure that the transition between managed and unmanaged is kept to a minimum.
I have been wondering for many years why people think it is slower than win32, and the only explanation I can give is that it loads slower (because of the JIT) but that is only 1 time. Once it is loaded, that it runs at native speeds. For some people if a application loads in 1 second instead of 1.5 second that this proves that the first application if faster. But in reality it only proves that the loading is faster not the execution.
But look ahead of the future, since the executable is JIT, that means that the JIT might optimize it even further during the running by analyzing what functions are used the most. The more you use the program the faster it starts to execute. Try this with a precompiled win32.
Win32 applications are compiled for the now. But the .NET program will be compiled for the Pentium 5,6 triple core.
Also imagine this, I create the application in .NET now for .NET 2.0, and .NET 4.0 starts to use multithreading to for parts of it’s library, Well my single threaded application will suddenly have far better performance on a Intel Quad processor without need of rewriting.
Too many advantages in the near future and far future. The only negative thing is that you have to relearn things, especially about permissions and policies, but it is really worth it.
December 15th, 2006 at 2:51 am“I’m also not a fan of garbage collection and I sometimes think that the GC of the .NET framework is the culprit here, …”
I too was not very fond of the GC. I was wondering if it is safe enough for the complex code of multiple lists holding the same object. I didn’t trust it.
But when I wrote in VC# 2003 then I discovered that it really is very stable an trustworthy. So I lost my scare and now actually relies on it.
Interesting side effects of the GC is that it can improve the performance since it does not have to free memory every time you free it, so not time loss. And when it starts to GC, then it is even faster than all individual free’s I discovered since it is optimized. Only at some time interval it will start the GC and your program light get a hiccup.
I did program in Microsoft VS during my .NET time so Borland might have some issues regarding to stability and compatibility, but I am amazed that they got this far. I looked at the C# part and the pure .NET part of Delphi and it seems to be good
Sadly I do not have enough time to explain all details, but I propose take a C# compiler and just try it! See it for yourself before saying that .NET is bad or slow. Don’t judge on rumours of people that have no clue what they talk about and based on 5 year old stories. But test on the .NET 2.0 since the 1.1 is already outdated technology.
December 15th, 2006 at 3:02 amPeople typically fear the unknown.
If at some point the IDE acts slowly or has consumed a lot of RAM for some reason people see this as the fault of .NET.
".NET is slow" is one of those statements I have seen so often yet I have never seen any evidence of it in my own applications.
You’re not forcing .NET into your customers’ applications, so I don’t really see why anyone should care.
December 15th, 2006 at 3:20 amOlaf wrote: Why not replace the Windows API with your own VCL components.
Please I don’t want Windows API on my windows! I have API and .NET free Windows!

December 15th, 2006 at 3:41 am.NET is the normal path to future versions of Windows and i REALLY think .NET will be not just a part, but a BIG part of the OS. It will ‘kill’ Win32 API and ‘maybe’ Win32 deployment (wich is a bad thing for ‘old’ devs). I am a Win32 dev. since D1 and of course i will try to do more .NET softwares instead of Win32 softwares. If market points to a direction wich is not my direction (or my company directions), i assume that we have to re-plan our bussines to decide wich language will support our products. I’ve seen new clients asking about ASP.NET versions of our products and this really makes me think of upgrade them to .NET world.
December 15th, 2006 at 4:03 am".NET is easier…in regard to forgetting to free memory. Even you code gets simpler since you do not to keep track who created the class and who should dispose it."
I actually have the same complaint, but against .NET and not Win32. The above statement is only true for memory resources that are referenced outside dynamic arrays, strings and, most importantly, interfaced objects.
I develop and use a library built for Delphi/Win32 that uses interfaced objects for things like database connections, queries (datasets), sockets, streams, etc. These are automatically closed (or pooled, in the case of database connections) when the last reference is released. This is not possible in .NET without the use of try-finally-Dispose.
I work in a company that uses Delphi for almost all business application development. We have a central database that serves hundreds of users via tens of applications that process thousands of financial transactions and administer hundreds of financial instruments. In Win32, our developers don’t need to worry about forgetting to close a database connection. Automatically reference-counted interfaces take care of that for us.
If we switch to .NET, then every developer has to remember to try-finally-Dispose those connections every time or there will be a resource leak *in the database*. Which would you rather have, a memory leak in application code that affects one app, or a connection leak that can ultimately bring down the database for an entire company? As a developer of the library code that dozens of other developers use, I know which feature I’d rather give them (and it’s not even an either-or, since everyone developer can use interfaced objects).
As to tracking who should dispose an object, the answer is also the opposite of what the prior poster mentioned (for non-memory resources). In .NET some bit of code that is through with a resource needs to know whether it should Dispose it or not. In Win32, that code can simply release its reference to the interfaced object (automatically managed by Delphi, thank you). Again, I know which feature I’d rather give to our developers.
Don’t get me wrong. MS has provided some nice libraries with .NET. I just can’t see my company switching without something much more compelling than that because we’d be giving up "deterministic finalization". If we were using C++, then it would be another story. Delphi is just so much quicker and easier for most of our folks to use. If Delphi provided a mechanism for DF like we’ve gotten used to with interfaced objects, we’d be all over .NET (something like C++’s stack-based objects that have destructors, not finalizers, even in .NET).
December 15th, 2006 at 4:18 amI have been there when COM/Corba/ActiveX & Co have been introduced and in the beginning I was also thinking that it would be that bad to learn and implement but boy was I wrong. This is clearly a path to the future and will become a big part of the OS.
Only device drivers might not be useful for .NET applications but the rest I would be very happy that they speeded up.
In my opinion the big mistakes regarding .NET that Microsoft made were:

December 15th, 2006 at 4:25 am· Call it .NET, now everybody thinks it that it is only for Internet stuff but it is totally not true.
· Not to install it automatically when they had the chance with XP SP2! Now it is harder for the developers to convince the people that they need this additional installation procedure and this gives resistance.
· Make the error reporting of a .Net program be more user-friendly. A message with some obscure error like “mscore.dll not found” will scare away even a hardcore IT and developer. All they had to do was put up a friendly message box with the text ”I am sorry but this program needs .Net v1.1 in order to run, do you want me to install it?”
· The same is true for incorrect permissions and policies. Try to run a C# program from a shared network folder and observer the debugger kicking in with assembly code in front of your nose. It should be illegal to scare users like that. I would design a message box with following text “I am sorry but it appears that either this program is either designed to run only from a local hard disk or you do not have enough permissions to run the program. Please contact your IT and ask him to give you more execute rights”.
· Making their developer tools C#/C++/ faaaaaaaar too expensive for the home user. The express version is too simple for a home user.
· Not to tell the developers that you do not need an expert IT degree to install a .NET program with enough security rights. This can be easily done by creating a .NET class specific for the installer that will be executed from the installer with enough security settings to modify the security policies automatically.
Yes in the case of using resoucres (files, database,…) you need to call dispose and then you have the same problem as a normal class object.
I do know that .NET also supports Interfaces but I have no idea yet how they are compared to the Delphi variant. I am about to learn this now.
I never said that .NET is good for allsituations.
December 15th, 2006 at 4:44 amNick, what a thread! I guess this should be discussed on a Delpi Hour. Personally, I do not understand the following:
- If .NET is SO GOOD, why IDE is so BAD (as discussed in other blog entries)?
- If .NET is the way to go, why Java is NOT?
- Why .NET 1.1 MUST be installed to run the IDE even when .NET 2.0 is installed?
December 15th, 2006 at 5:00 amNote 1 : IDE<>.NET (actually .NET = framework + CLR + C#)
Note 2 : .NET is created by the same creator of Delphi 1
Note 3 : Because the IDE is created for the v1.1 only and not the v2.0. But applications should be able to run on v2.0 even when built as v1.1 with the exceptions of some code breaks. But an .NET application can force to use the v1.1 if it insists on it. Luckily you can redirect the application to use v2.0 instead by changing the application.exe.config –> There you can reroute the versions if you whish to.
In the original discussion they are talking about writing the IDE in .NET, they ar not saying that you need to change your win32 applications to .NET! It is only your editor. You, know that thing you use to type the source in and have many colors as you type. You can still make pure none-.NET programs!
December 15th, 2006 at 5:19 am"So, if you are a Win32 developer only, yes, you have to load up the .Net framework to run the IDE."
This is in the tekst of the blog. They are saying that you need the .NET installed on your machine to run the editor (IDE)!
That does not mean that you need to ship .NET on your pure win32 program compiled in that IDE. Big difference.
December 15th, 2006 at 5:25 am"Sadly I do not have enough time to explain all details, but I propose take a C# compiler and just try it!"
I have tried GC in Java, C# and Chrome before and I’m not saying that it doesn’t work. What I really meant was that the .NET part of BDS 2006 is doing something really bad, so that there are big memory leaks on my machine (1.1 GB memory usage).
If I just had the IDE sourcecode it possibly would even be easy to fix ;-).
The point is that it *looks* like .NET is the culprit and I can understand why many people got the impression .NET is bad technology.
To get back to GC: I don’t need it myself, memory management in our apps works fine using the "old-fashioned" allocate -> use -> deallocate mechanism. GC may have some advantages like getting less AV’s and making it easier to write code, but well I’m just used to clean up after me and that’s not going to change in the near future.
December 15th, 2006 at 5:29 amAs long as we can compile Win32 appl and the code is not broken, why whinning ? Anyway, we need to install .Net 1.1 and J# redistribuables with BDS2006. I really to see any problems on installing .Net 2.0 for then new 2007 IDE.
JFPicard
December 15th, 2006 at 6:08 amNick,
I am afraid that thinking is all wrong! Where is the innovation? It is just so easy to say "Why not piggy back on someone else’s intellectual property. Just imagine all those code libraries that are already there." That becomes the wrong mentality because your company becomes reliant on another company’s innovation. From a customer’s point of view, why in the world would I use your development tools when I can use the dev’t tool of the company that innovated the core technology in the first place.
Continuing this mindset and CodeGear will become extinct.
IDL
December 15th, 2006 at 6:54 amI’ve been using Borland products since Turbo Basic 1.0. But I am still using Delphi 6!
Because of three reasons:
BDS x.0 (witch is using .net) is slow
BDS x.0 (witch is using .net) is slow
BDS x.0 (witch is using .net) is slow
.net and C# are a kind of java virtual machine. Sure, the code is jitted. But nevertheless it’s still slow.
December 15th, 2006 at 7:16 am.NET is slow beast and it eats ton of memory just to do simple things.
December 15th, 2006 at 7:47 amMaybe my point has not point for you people of the first world, but I live/work in Perú (for you that never were in Machu Pichu, a country in South America) and here the average machine is a Pentium 4 with no more than 256 mb of RAM and a huge park of Pentium III, many many company and goverment agencies are stuck in Win98. We are not considering .Net (and of course not VISTA) for new developments. We use Delphi 6 because its efficient fast, and will not each my machine and the result exe will work in ALL my potencial customers.
Yes you can have an American Muscle Car with a massive 6 lt. motor and the weigth of a truck, but what will be the really difference with a efficient well designed japanesse or european car with a 1.8 lt motor?? Only the noise and gas bill….
December 15th, 2006 at 7:47 amIf I to develop software in C# for ".NET", I will use Visual Studio, because it is the native development IDE for C# and ".NET". C# Builder is just imitation.
Nick Hodges I think that you should read book "22 Immutable Laws of Marketing". Managment of Borland Delphi is clasic example of breaking most of the marketing laws.
And I am still using Delphi 6 for development.
December 15th, 2006 at 7:58 amBe honest I dont care Delphi IDE uses or not .net, more important is why it uses dotnet and what advangtages it brings. As we see it only decreases performance and I must say that IDE features those are written in .net is not really satisfactory, some parts are incomplete, for example refactoring. Also I am absolutely sure that these features could be written in native VCL without more effort than on .net. so .net is not bringing really valuable advantage.
December 15th, 2006 at 8:06 am.NET is so GOOD that Microsoft do NOT use it for MS Office 2007.
December 15th, 2006 at 8:37 amFace it - .NET Framework has several times more functionality then VCL (networking, remoting, advanced 2D graphics, CodeDom, cryptography, generic collections, advanced UI components (taken from MSOffice), regular expressions, XML goodies, reflection) - it would be suicide for Borland/CodeGear to reimplement all that. So they chose wisely and started using .NET - I don’t see any problem with that (I hope to get .NET 2.0 in BDS ASAP!!!).
To Jolyon Smith: do you realize that native code can run at different speeds? And native code from .NET 2 can be twice as faster as native code from .NET 1!
December 15th, 2006 at 8:52 amLOL, where was Borland when .net development was started? why they did not compete MS? Suicide is to focus on .net, because in .net is nothing to improve. Again, If I decide to deveop in .net area I will choose MS VS in any case!
December 15th, 2006 at 9:15 am> networking, remoting, advanced 2D graphics, CodeDom, cryptography, generic collections, advanced UI components (taken from MSOffice), regular expressions, XML goodies, reflection
And what from this list is really needed in creating IDE? I suppose nothing.
You don’t understand difference between .Net in developing Delphi IDE and creating .Net application using Delphi IDE.
December 15th, 2006 at 9:23 amNick -> This gives me an idea for an upcoming Delphi Hour discussion. Would you be able to discuss what materials your team uses in the analysis of the .NET Framework without giving away trade secrets? Are there books/training materials that you and/or your team would suggest? I realize, like most developers, that taking on a huge task like BDS, there is some trial-by-fire involved. In my usage of both BDS 2005 & 2006, it appears to me as if the BDS software is a hybrid approach. It may initially load using the .NET Framework, but during the course of a session (software development/debugging) it would appear that Win32 is also used. I know there are things like COM wrappers around the .NET Framework and others on the internet have mentioned being able to activate .NET components and classes via COM+ from Win32 and utilize Win32 functionality from within .NET applications. I think this might be an interesting topic for discussion on an upcoming Delphi Hour. I hope I am making sense on this.
December 15th, 2006 at 9:29 amDear my God.
I’m a Pascal Professional programmer.
I build executables and code libraries for windows from 1989 with Borland Pascal 3.3.
In 1992, I supported Borland with Delphi 1, I pay 500$ (do you remember after wrong step with Pascal for Windows)?
After this I support every Delphi IDE release:
Delphi 2 about 600 $
Delphi 3 about 600 $
Delphi 4 about 600 $
Delphi 5 about 600 $
Delphi 6 about 600 $
Delphi 7 about 600 $
Oh God, this is the last release of my favourite IDE.
Before 3 years my favourite company (Borland) took some College Boys to make my favourite IDE (Delphi 7) better and to replace it with new one, this arrives to by life when Microsoft buys 40% of Borland.
These College Boys make an IDE called Delphi 8 but Sir this was NOT like my favourite IDE Delphi.
These College Boys release before 2 years the IDE called BDS 2005, and my God is my first time where I buy Beta release executable for 3000 $, but I support Borland.
I buy, and the next Beta release from this Transsexual IDE, BDS 2006 for 3000$, but I support Borland.
Now, the Master College Boy said to me that this Transsexual IDE is good IDE with correct philosophy,
but my God after so many years I have so much code to build my own IDE, is Open source and it has the VISION OF some PROFESSIONALS PASCAL PROGRAMMERS…
For all College Boys I found my PASCAL IDE…
December 15th, 2006 at 9:41 am.NET is a technology….as with all technology, once it will be deprecated and be replaced by another technology…..I just don’t like .NET because it treats programmers more like children, who can’t take care of themselves….
CodeGear can use .NET if they like, I don’t care…as long as the product will be of high quality….in case of an IDE, it should be fast, responsive and use as least resources as possible…the current IDE uses quite a lot of resources and it is bad when you’re debugging an application which itself consumes quite a lot of resources - debugging is almost impossible, most of the time you’re waiting for page swaps…the IDE is a Native/.NET hybrid, at least according to Process Explorer, since sometimes it shows BDS as managed application and sometimes as a native (or maybe it’s a bug?
)…..
so supporting .NET is not bad as long as it does not affect quality, my point….
December 15th, 2006 at 10:13 amI have just installed Delphi 3 on my PC just for fun. It’s so great an innovative!!! BDS 2006 is an old man….
December 15th, 2006 at 11:55 amSternas Stefanos you are absolutely right.
Same story but with C/C++ Builder instead of Delphi, for me the best IDE remains with version 6 of the tool.
Now about .NET IDE, Yes I hate it (and it’s worth my hate for now)! BUT I think Borland made a safe decision to invest on the future, they developed (developing to be precise) an IDE that will last for the next, 10 or more, years when native Window applications (Win32/Win64) could be extinct in the form we know them today and it’s a safe decision even if finally (for now seems unlikely) .NET ends up been another flop.
December 15th, 2006 at 12:10 pmWe dream a platform independent IDE.. Not as good as .NET but better than .NET for all platforms.. May be imposible.. CG always says they have budget limits…May be we expect more than CodeGear can give..
Creativity should not be limited with budget.. And could not be limited anyway. Creativity what we are looking for..
Some people claims, some programmers does not like new things, that’s why they don’t like .NET… I think that is what MS wants us to think to.. MS is not creative.. MS has money power, if they can not invent something than buy it.. They are not like an inventer, more like a bussinesman. I do not respect this attitude as an independent programmer…
December 15th, 2006 at 12:15 pmSorry, but I see a lot of posts here by IDIOTS that are commenting about .NET and obviously proving their IGNORANCE and BIAS, without any real factual basis. It is clear that most who have posted comments here know absolutely nothing about .NET. The amount of stupidity posted here is so much that I cannot even begin the long effort to refute the dumb assertions made with the real facts. It would take me many hours.
My suggestion to those who know nothing about .NET except for what they heard from a friend or read in a blog somewhere, but insist on posting drivel here - GO LEARN SOMETHING ABOUT .NET BEFORE YOU POST IGNORANT COMMENTS HERE.
December 15th, 2006 at 12:45 pm@Ahto >>Why I don’t like that IDE uses these additional runtimes is that I see you have just wanted to cut corners on some lines of code, instead of spending some more time and effort to build more robust stand-alone Delphi application. I think this is contrary to the original Delphi concept (robust, integrated, independent).<<
Wrong - .NET is a robust, well-tested, secure, and performant code base that can make your applications more robust. You cannot be great and an expert at everything, so this is why we use libraries like .NET, because Microsoft hires experts to work in each area - like WinForms, or file systems, or data structures, etc. If you were to try to avoid "saving a few lines of code" and do that same kind of work in your code, you will end up with a worse application, because (a) you are not an expert in everything, and (b) you need to focus on what is important for your users, not on low-level code that .NET can provide for you.
December 15th, 2006 at 12:50 pm@Daniel Luyo >>Sorry to insists but making the IDE based on .NET will make the posibility to migrate to LINUX/OSX more diffcult isn’t it?<<
Wrong, there is almost no market available to companies like Borland for commercial development tools for Linux or OSX. Therefore, any desire to port tools to these environments is a moot point. Remember Borland’s past attempts to sell multi-platform tools? Didn’t go so well. People using Linux have a strong expectation of a free IDE and compiler - there’s not much chance of selling commercial tools to those folks.
Anyway, Delphi, etc. clearly bind heavily to Win32 - so how do you think adding a dependency to .NET is really any different?
December 15th, 2006 at 12:55 pm@Jolyon Smith >>On the one hand .net is used because the product started out in life as a .net development tool so it just kind makes obvious sense.<<
No, that is not the reason. If you are writing a development tool for .NET, there is no reason it has to also use .NET in its implementation. For example, does the C# compiler use .NET? The decision to use .NET is based on whether you want to write a managed app and if you want the productivity and security benefits of .NET. If you wanted, you could write a .NET development tool in native code, managed code, or Java for that matter.
>>Then on the other hand .net is used because Borland decided that that is what their customers wanted <<
Again, you are confusing different things. If Borland customers are asking for .NET support, they mean they want to be able to write applications that support .NET - they are not asking Borland to use .NET in their applications. End customers mostly don’t care what technologies that Borland uses to write their IDE. Any interest is mainly academic.
>>Are we really saying that .net represents the state of the art in all things that it delivers?<<
Anyone who follows these technologies would say "yes." Because .NET is better than Java, and clearly .NET 2.0 is better than .NET 1.x - then you can conclude the same. To compare with native code, you have to look in a few areas - performance, productivity, quality of the resultant application, developer protoductivity. In the hands of an expert, native apps can be more performant than managed apps, but not in all cases, and also many developers have neither the skills nor the time to optimize all aspects of a native app to get it to run better than a manged app - at least in commercial development. And in the areas of quality, productivity, and security, managed apps are far better than native apps. I’ve done both, and there is a clear difference - and there are lots of benchmarks and studies that show the same. To ignore these compelling benefits of managed development is depriving yourself of a powerful tool.
>>The "we do not need to maintain" it argument is complete nonesense as well. <<
Your arument here makes no sense at all. Borland is responsible for maintaining the code it writes, and if it can write far less code by using .NET, then they have less code to maintain. Get it? Microsoft, on the other hand, has millions of customers using .NET, and so the cost of maintaining the core .NET is amortized across all those customers. What part is not clear?
>>And for that matter - if the Microsoft library is the best there can be, doesn’t it also rather naturally follow that their tools would be too?<<
What does one have to do with the other? .NET is a platform, and an IDE is an application. MS has a much larger potential customer base than Borland for doing a platform like .NET, which is why it makes sense for MS, and not Borland, to do the same. But if Borland did, I’m sure technically they could do just as well (if they could afford the investment) - but it just wouldn’t be a business success. But the IDE, being an application, each company can innovate and invest as much as they can, and if Borland has come better ideas, maybe they can come up with a better IDE.
December 15th, 2006 at 1:10 pm@eduard >>YOU (borland/codegear) made a choice, but did not let US(me/other developer) to make a similar choice: how dificult it is for BORLAND/CODEGEAR to check the .NET framework presence at the end of the setup, and if not found, disable .NET dependent parts of IDE?<<
Sorry, but this is wrong. WHEN EVER, does your $500 (or whatever) purchase of Delphi entitle you to dictate to Borland what development tools and technologies they can use in their tool? Especially when your basis for such bias is not rooted in any technical reasons whatsoever. Borland creates a tool to the best of their capabilities using whatever tools they want, and your choice as a customer, is yes/no - whether it meets your needs at the price offered, etc. To try to dictate beyond that is childish.
December 15th, 2006 at 1:15 pm@Leslie Kaye >>The number one problem with .Net for desktop apps is security. I was thinking of writing a Firebird BDP however when I used Reflector.exe on the Interbase assembly to get some clues, I found that the code was so open (even having been obfurscated) that I feared a copyright problem.<<
This is true of all managed code, but it is also a problem for native code, right? In other words, if you write your proprietary algorithm in C++ and compile it to assembly, it is still pretty easy to reverse assemble the code to figure out your algorithm. It is easier with native code than managed code (.NET and Java are the same in this repsect), but the problem is the same.
Also, native code can be compiled and distributed as native code with NGEN, and obfuscators are pretty effective as well.
Finally, what does this have to do with Borland’s choice to use .NET in implementing their IDE?
>>Also there is backward compatibility, execution speed, memory footprint, redistribution of linked assemblies<<
Huh? Backward compatibility a problem in .NET? Redistribution of linked assemblies? Regarding execution speed, you should search the Internet for benchmarks - for the most part, managed code is typically within 5-10% of the run-time performance of native code, so that is a non-issue for most applications. And memory usage is probably a bit higher, but our hardware capabilities have far exceeded any native memory requirements anyway (most machines now have 512MB - 2GB RAM).
December 15th, 2006 at 1:25 pm@Holger Dors >>Isn’t that like implying: look, .NET is so much cooler, so much better than the VCL?<<
Wrong - read up on .NET - it is also a managed execution environment, not just a class library. .NET and JVM are approximately the same, not .NET and VCL. VCL is like a small part of .NET (WinForms) or a small part of Java (Swing).
>>How many people would start a new .NET project using a Borland IDE? I wouldn’t, I’d use C# and the MS IDE.<<
December 15th, 2006 at 1:28 pmMe, too. There is no reason to start a new app today in VCL - there is no benefit relative to C#/WinForms/.NET/VS2005. This is the challenge for Borland - how will they create a compelling value to compete with Microsoft in this area?
Is Visual Studio written completely in .NET or is some C++ used. I think this is an important question, that is, is MS using the .NET technologuy in their IDE
December 15th, 2006 at 1:35 pm@ Jens Mühlenhoff >> I have tried GC in Java, C# and Chrome before and I’m not saying that it doesn’t work. What I really meant was that the .NET part of BDS 2006 is doing something really bad, so that there are big memory leaks on my machine (1.1 GB memory usage). <<
LOL, that is a funny and ironic statement. Clearly, any memory leak, BY DEFINITION, must be in the native code, and not in the .NET code - since the .NET code cannot have a memory leak - there is no such thing.
In any case, such a programming mistake is clearly not the fault of the underlying tools (e.g., compiler, .NET, etc.) - it is the fault of the application that has the problem. There are literally thousands of apps out there using .NET that do not have memory leaks.
December 15th, 2006 at 1:40 pm@ Andrei Gerasimenko >>If .NET is SO GOOD, why IDE is so BAD (as discussed in other blog entries)?<<
You can use good tools to write bad applications, and bad tools to write good applications. Many Borland IDEs have had problems in the past, that have no use of .NET. Similarly, other IDEs that use .NET, work really well.
>>If .NET is the way to go, why Java is NOT?<<
Because the designers of .NET were able to study Java before doing their own implementation. They avoided some of Java’s mistakes, and created a more elegant and robust implementation. This includes both the runtime environment and language. I’ve programmed in both Java and C#, and C# is clearly better.
>>Why .NET 1.1 MUST be installed to run the IDE even when .NET 2.0 is installed?<<
Because .NET 1.1 applications bind against the .NET 1.1 runtime, and .NET 2.0 applications bind against the .NET 2.0 runtime. Basically, an application may be able to be source-compatible with both framework versions, but you have to compile for a particular level of the framework. This avoids many of the JVM compatibility you see in Java over the years, e.g., "I just upgraded to a newer JVM version and my XYZ Java app no longer runs."
December 15th, 2006 at 1:47 pm@Simon Dex >>.NET is slow beast and it eats ton of memory just to do simple things.<<
Sorry, this is just a completely ignorant statement (and you know it). There is nothing grossly inefficient in .NET - generally apps will run a tiny bit slower and consume a bit more memory - but nothing like you describe.
We recently re-wrote an application from C++/VCL to C#/WinForms, and it took far less time to develop, the memory usage was about the same, the performance was a little better, and the quality was a little better.
December 15th, 2006 at 1:53 pm@ Impatient Delphi Loyalist >>I am afraid that thinking is all wrong! Where is the innovation? It is just so easy to say "Why not piggy back on someone else’s intellectual property. Just imagine all those code libraries that are already there." That becomes the wrong mentality because your company becomes reliant on another company’s innovation. From a customer’s point of view, why in the world would I use your development tools when I can use the dev’t tool of the company that innovated the core technology in the first place. <<
Sorry, you are the one who has it all backwards! By using .NET, it frees up Borland to innovate MORE NOT LESS, since it means they can spend LESS TIME writing low-level code and MORE TIME writing high-level code that adds innovation and functionality for end users.
December 15th, 2006 at 2:03 pm.Net code pollutes the mid/longterm crossplatform potential. Delphi will have to become a Linux gear too in order to prosper well, imho.
December 15th, 2006 at 2:07 pm@Rich Ratklif: >>NET is so GOOD that Microsoft do NOT use it for MS Office 2007.<<
This is not a big surprise - after all, why would any company completely re-write an application in a new technology? It makes no economic sense.
It is more educational to look at new programs that Microsoft is developing. For example, portions of VS2005 are written in .NET, and many new programs that Microsoft is developing are completely based on .NET (e.g., Team Foundation Server, Share Point, etc.).
December 15th, 2006 at 2:09 pm@Irakli >>LOL, where was Borland when .net development was started? why they did not compete MS? Suicide is to focus on .net, because in .net is nothing to improve. Again, If I decide to deveop in .net area I will choose MS VS in any case!<<
If that is true, then why did you pick NATIVE Borland tools over native Microsoft tools? Why would that be any different than picking .NET Borland tools over .NET Microsoft tools? What difference does it make?
December 15th, 2006 at 2:12 pm@Jeff Carbello >>Is Visual Studio written completely in .NET or is some C++ used. I think this is an important question, that is, is MS using the .NET technologuy in their IDE<<
Portions of VS2005 are written in .NET (C# AFAIK), but the majority is legacy, native code written in C++.
December 15th, 2006 at 2:13 pm@Hans-Peter >>.Net code pollutes the mid/longterm crossplatform potential. Delphi will have to become a Linux gear too in order to prosper well, imho.<<
Wrong - If you are writing a Windows app, your choice is to write against Win32 or .NET. Why would .NET be any harder to implement in Linux than Win32? If anything, it would be easier.
December 15th, 2006 at 2:16 pm@ Peter Kovac >>.NET is a technology….as with all technology, once it will be deprecated and be replaced by another technology…..I just don’t like .NET because it treats programmers more like children, who can’t take care of themselves….<<
Huh? How did you get to this conclusion? .NET is just a programming platform like any other - it is more efficient than others, but it doesn’t treat programmers like children. That is just stupid. If you are talking about things like GC, well then you are underestimating the real burden that manual memory management has, and the history of all the "professional" programmers through the years that wrote applications with memory leaks. But I’m sure you don’t count yourself in that group.
In any case, .NET lets you program at a just-slightly higher level of abstration, and to not have to worry about unimportant things like when memory gets deallocated. You can then, in turn, use the time for more useful tasks in your program.
December 15th, 2006 at 2:21 pmi did not know that the delphi ide is a .net application, i have reasons to believe that it’s actually a hybrid application, over 80% native… but sure… it makes perfect sense
December 15th, 2006 at 2:26 pm@Tugrul Tamturk >>We dream a platform independent IDE.. Not as good as .NET but better than .NET for all platforms..<<
What are you talking about? .NET is a platform - you might as well argue that Borland should try to make Delphi better than Windows - how much sense would that make?
December 15th, 2006 at 2:40 pm@Tugrul Tamturk
Anyway, you have a platform-independent IDE - it’s called Eclipse. Go download it now! If you think it is as good as Delphi, then you’ll be disappointed. Ever heard of "least common denominator"?
December 15th, 2006 at 2:43 pmHey Nick,
I addressed this same issue on my blog a little over two years ago. I’ve updated the post to include comments that people made so if people are interested that link is here:
http://www.stevetrefethen.com/blog/WhyDoesDelphi2005IDERequireTheNETFramework.aspx
or
http://tinyurl.com/ymcnes
-Steve
December 15th, 2006 at 2:44 pmcomparing the amount of "pre-jitted" .net between 2.0 (xp) and 3.0 (vista) i noticed no differences… @ least 2 me, 3.0 looked more like a 2.0 with lipstick… bus sure, your speech makes perfect sense…
December 15th, 2006 at 2:47 pm@Tom: If that is true, then why did you pick NATIVE Borland tools over native Microsoft tools? Why would that be any different than picking .NET Borland tools over .NET Microsoft tools? What difference does it make?
In NATIVE it is Pascal/Delphi/VCL vs. C++/MFC and the winner is clear. In .NET it’s the same and the looser is clear. I don’t think that CG can change this, they are not in control.
@Tom2: Wrong - If you are writing a Windows app, your choice is to write against Win32 or .NET. Why would .NET be any harder to implement in Linux than Win32?
A VCL (for Linux) would be easy to use and wouldn’t force linux users to install the .net (mono) library. Why accept dependencies if they are not necessary?
December 15th, 2006 at 2:47 pm@Hans-Peter:
>>In NATIVE it is Pascal/Delphi/VCL vs. C++/MFC and the winner is clear. In .NET it’s the same and the looser is clear. I don’t think that CG can change this, they are not in control.<<
I’m not sure what you mean by this. Borland is still in control of their features and implementation - the only loss of control they have is that their customers are demanding tools that can work with .NET, and so they are forced to follow Microsoft’s lead. But that shouldn’t prevent them from being able to create a better tool than Microsoft, should it?
>>A VCL (for Linux) would be easy to use and wouldn’t force linux users to install the .net (mono) library. Why accept dependencies if they are not necessary?<<
Discussions of cross-platform VCL are academic, because the market has already been offered this (CLX) and was not interested. If one wants to program a cross-platform GUI, they already have a good solution with Java + Swing.
Anyway, what is the difference, if your application had a VCL dependency, it would have to deploy VCL, or if it has a .NET dependency, it might have to deploy .NET. What’s the difference - it’s the same in the end.
December 15th, 2006 at 2:56 pm@daniel
>>comparing the amount of "pre-jitted" .net between 2.0 (xp) and 3.0 (vista) i noticed no differences… @ least 2 me, 3.0 looked more like a 2.0 with lipstick… bus sure, your speech makes perfect sense…<<
I’m not sure what you mean, but I will say that .NET 3.0 has .NET 2.0 at its core, but then adds some additional libraries, e.g., WCF, WPF, etc. The core part of the framework is UNCHANGED in .NET 3.0.
December 15th, 2006 at 2:58 pm@Ralf Stocker >>I have just installed Delphi 3 on my PC just for fun. It’s so great an innovative!!! BDS 2006 is an old man….<<
Any time you load old software on modern hardware, it will run FAST. For example, if I loaded Turbo Pascal for DOS on my dual-core, 3GHz, 2GB PC, it would run SUPER FAST. But would that make me any more productive than the current version of the same IDE? No way!
Borland (and other) software engineers have for the most part consumed additional hardware resources through the years to develop functionality that makes development faster and easier. Sure, there are some mistakes along the way, but that is the general trend, and as a software engineer, I am glad for it.
With no progress, we’d all still be programming in assembly, and do you think we’d be able to create anywhere near the kind of software that is possible or even easy to write today?
December 15th, 2006 at 3:04 pmGo ahead this way, Borland/DevCo/CodeGear, whatever you are. You’re lost to most of your customers.
December 15th, 2006 at 3:08 pm@Tom: …create a better tool than Microsoft, should it:
don’t know. I agree that they have to try and who knows? I like in principle that I can program in .net with BDS and so, yes, a "net-poluted" BDS is fine with me as long as the native things work well. And if they would integrate CrossKylix, well, …
about crossplatform:
It was 5? years ago, premature, expensive, didn’t like the CLX/VCL separation. I don’t think that it was a total failure, they had incredible engaged users, but broke promises and many hopes. - My code has to be native I cannot deploy .net on Linux. The alternative would be Freepascal or C (brr.). And I don’t talk about GUI apps.
Sorry it’s getting off topic and I stop now.
December 15th, 2006 at 3:36 pm@Excessive: Go ahead this way, Borland/DevCo/CodeGear, whatever you are. You’re lost to most of your customers.
What would be your way?
December 15th, 2006 at 3:40 pm@Hans-Peter: Why not use Java + Swing? It’s cross-platform today, and pretty easy to develop in, as long as you use NetBeans with Swing. Java is readily available on many platforms.
December 15th, 2006 at 4:53 pmIt is all wrong. Net is not library, and using it this way only indicate what many developers level dropped significantly.
December 15th, 2006 at 4:58 pmUsing business apps rules (faster is better even if ugly) in IDE business is WRONG. Really WRONG! Believe me, you do not need this NET for IDE, if your developers say they can’t write IDE without NET you just need to fire them and hire better ones.
@Vitaliy >>It is all wrong. Net is not library, and using it this way only indicate what many developers level dropped significantly. Using business apps rules (faster is better even if ugly) in IDE business is WRONG. Really WRONG! Believe me, you do not need this NET for IDE, if your developers say they can’t write IDE without NET you just need to fire them and hire better ones. <<
Developer productivity is an issue for ALL BUSINESSES, even Borland. This allows Borland developers to get the job done quickly and focus on other areas. Why would that not be appropriate for IDEs?
Do you think that all IDEs should be developed with only performance in mind, e.g., they should be written entirely in assembly language, whatever the cost, so that the performance is the best possible? That is silly.
Performance is important, but so is getting the job done quickly and doing a good job.
December 15th, 2006 at 5:07 pm@Excessive >>Go ahead this way, Borland/DevCo/CodeGear, whatever you are. You’re lost to most of your customers.<<
How does this decision affect Borland customers at all? I mean, who cares how Borland implemented their IDE, as long as it works well? I mean, if it were written in SmallTalk for OS/2 with a Windows emulation layer (I made that up of course), and it performed nicely, would you decide to not buy it because of that? Don’t you think that most customers are focused on the END RESULT, i.e., the quality of the product, rather than how it is implemented?
December 15th, 2006 at 5:16 pm@Jon & @Tom
Customers use Visual Studio for .NET development. They used Borland’s tools in the past because:
- They were superior compared to other tools.
- They were superior in productivity.
- They were the fastest tools on the planet.
- Nothing could beat Borland’s tools at stability.
- Feature set of Borland tools were unmatchable.
- Borland had the innovation, Microsoft and others were imitating and following them.
Now, this is the situation:
Nick asked for comments before (Most of you may remember) about why old Delphi users weren’t upgrading to new versions. They got 40 pages of feedback. Most of the people were complaining about:
- Unstable, slow, and buggy IDE
- Lack of innovation on new tools to switch.
- .NET crap.
- Lack of VCL enchancements (including Unicode support)
- Following Microsoft innovations, instead of innovating.
- MS Style IDE (Borland is copying Microsoft even on IDE design. Where’s innovation?)
- Almost every feature on IDE line exists (and working better) at Visual Studio.
Personally I hate .NET. Why should I install a 120 mb framework for a 2 mb application? Security? Stability? Nothing can explain this. Also, depending on other companies’ technology means death, as the other company can change the technology into whatever they want. And believe me, Microsoft did this before, and will continue to do so. They gave wrong information about their technology to others, to break competetion.
Now, what if I was CodeGear?
- Leave the .NET stuff, as I’m not the one who controls this technology.
- I would create a superior product compared to Visual Studio.
- Instead of copying and following, I would start innovating. Borland did this before, and I don’t see any reason for this to not happen.
- I would create a web based language for scripting, based on Borland’s innovations. This way, people will get familier with Borland’s tools.
- I would care what our customers say. After 40 pages of comments, Nick posted "You are more than heard, believe me." After that, nothing is changed, and lots of posts started to show up "why should we upgrade to newer versions." This is a communication problem, or IDE tools came into a bloativity level which can’t be managed anymore. If this is the case, I would start one of the most used languages (Delphi and C++) from stratch.
Anyway, I switched to Free Pascal already, for Pascal development. It works on 10+ platforms, without changing my code. This will be the case for me, if CodeGear continues this way, as this company doesn’t have a future with this kind of thinking.
Best regards,
December 15th, 2006 at 11:21 pmNative cross platform development (Win/Linux/Mac) with 32/64 bit is the future.
December 16th, 2006 at 4:12 amMoreover a powerful GUI library (e.g. Qt). dotnet is the wrong Microsoft/java way.
@Excessive
Great post - I think you are right on most of your points. When it comes to transitioning from native development to .NET or to Java, I think that is where Borland loses most of its customers. And I agree, that it is a self-inflicted wound due to years of buggy IDEs and neglected products (e.g., C++Builder). The nice work Borland did in times past can only convince a customer to take so much, and at some breaking point we realize that Microsoft is back on top of their game, and we get tired waiting for Borland to figure out "which end is up."
Regarding .NET, you may hate it, but I think that is irrational. .NET is a high-quality, high-productivity development platform, and it is a part of Windows going forward. If you are targeting Windows, there is no reason to avoid it. I can tell you that the productivity gains are real. At our shop, we saw 30-40% average productivity gains when we switched from C++Builder to VS2005/C# - that is huge, and it exceeded our expectations greatly. In addition, it is easier to write stable apps in C# compared to C++. These are all big benefits for us, and I can’t imagine not using .NET.
As to the future, I agree with a lot of your ideas for CodeGear, and I would add that transitioning their products to Eclipse is ENTIRELY THE WRONG DIRECTION. How can you innovate on that platform? How can you get ahead of your competition (esp. Microsoft) on Eclipse? I don’t see how the "if you can’t beat ‘em, join ‘em" strategy does anything for CodeGear, except to hasten their demise.
Microsoft is currently working on Orcas, which is going to roll out next-gen tools for Vista. There is an opportunity for CodeGear to participate in that generation of tools if they want to, but there is no way such tools can be based on old-style thinking and old-style platforms like Eclipse. The platform technologies are already available (i.e., Vista), so there is no reason that CodeGear can’t participate. But I suspect that, just like with .NET 1.1 and .NET 2.0, CodeGear is going to wait it out for a few years and take the time to catch up. I also see a hint of resistance to supporting new Microsoft platform technologies, and some degree of pause to see whether they will "really happen." But experience has taught us that when Microsoft invests in technologies like this, they DO HAPPEN. I’d like to see CodeGear get more proactive and get ahead of the curve for once.
December 16th, 2006 at 7:32 am@Ralf: >>Native cross platform development (Win/Linux/Mac) with 32/64 bit is the future. Moreover a powerful GUI library (e.g. Qt). dotnet is the wrong Microsoft/java way.<<
Well, then most developers are wrong, based on your views. Most developers are transitioning from native code to .NET (for Windows) and Java (for cross-platform). Maybe tools like Qt are the way of the future, but today they can’t compare to .NET and Java in terms of productivity, robustness, or quality of the result at all. It starts at C++, which should be eliminated and C# or Java used in instead (this is coming from a guy with 15 years’ experience) - C++ Considered Harmful to Software Development would be a good way to put it.
Next, when you look at cross-platform GUI libraries, you cannot avoid the terrible compromise between using OS native controls or the GUI library providing its own. If it uses OS native controls, then your application looks and behaves differently on each platform, which creates testing problems, lots of bugs in your application, and lots of workaround code (e.g., if platform is Windows, do this, if Linux, do that, etc.). If you use the GUI library controls, then you have low-performance, and your application does not have consistency with the look-and-feel native to the OS. So how do you avoid this? We saw all this play out with Java over the years, which has been unusable for most cross-platform GUI development over this time period.
December 16th, 2006 at 7:46 amTom >> Sorry, you are the one who has it all backwards! By using .NET, it frees up Borland to innovate MORE NOT LESS, since it means they can spend LESS TIME writing low-level code and MORE TIME writing high-level code that adds innovation and functionality for end users.
Since it seems you have all the time to rebuff other posts here. Answer me these: Why in the world would a company invest in CodeGear for developing .Net applications when they can go for the company who has been innovating the .Net technology, has the manpower 1000 times CodeGear and has the monetary resources? All this time MS was writing this "low level code" you mentioned what was CodeGear/DTG doing? As I recall CodeGear was working on D2008, D2005, D2006. Where was the innovation in that??
IDL
December 16th, 2006 at 1:08 pmWho is "TOM"?
I think he is “Microsoft pay-monkey” or he is a “C# script College Boy who is learning now how to make beautiful forms for .NET”…
“A Death with Personality…” I am writing this for 3 years now, Nick.
December 17th, 2006 at 1:46 amYou have lost the train man…
I think he is “Microsoft pay-monkey” or he is a “C# script College Boy who is learning now how to make beautiful forms for .NET”…
“A Death with Personality…” I am writing this for 3 years now Nick.
December 17th, 2006 at 1:49 amYou have lost the "train" man…
Tom, please consider other people’s opinions too, no need to jump on all others with your *personal* opinion.
BTW, .NET has been now out for years — where is all that great commercial software that exclusively takes advantage of it? Macromedia, Adobe, Corel, Symantec, Microsoft, Nero, CyberLink, ULead etc — do you know any popular key applications that are built on .NET?
You can force your .NET application in house because there is no competition. Outside, seems things are different.
December 17th, 2006 at 2:42 amTom.. you saw productivity improvements from C/C++ Builder (VCL) to .NET framework porting, based on the fact that you did not utilize the excellent Borland components that C/C++ Builder and Delphi offers by default, to its programmers or you found (or bought?) equivalent functioning ones in the .NET framework.
But that is not always the case..
For example, I shall speak about my self, my (non database –yes I tent to write non-database centric software from time to time :-p) application uses TStringGrid component (you should know it.. don’t you?) heavily by owning drawing it and etc..
If I decide to port it on the .NET C# then I will definitely miss my excellent TStringGrid in .NET framework, damn it! Except if I a) develop it by my self or b) for productivity sanity (since you mention it)
buy it ready for extra money from a 3rd party company since the default provided .NET String Grid component does not cover MY needs -so from that perspective porting MY Application to .NET framework bores my productivity (do not you agree?) or costs me extra money..
So VCL to .NET porting does not always magically guarantee productivity gains
December 17th, 2006 at 3:27 amTom.. you saw productivity improvements from C/C++ Builder (VCL) to .NET framework porting, based on the fact that you did not utilize the excellent Borland components that C/C++ Builder and Delphi offers by default, to its programmers or you found (or bought?) equivalent functioning ones in the .NET framework.
But that is not always the case..
For example, I shall speak about my self, my (non database –yes I tent to write non-database centric software from time to time :-p) application uses TStringGrid component (you should know it.. don’t you?) heavily by owning drawing it and etc..
If I decide to port it on the .NET C# then I will definitely miss my excellent TStringGrid in .NET framework, damn it! Except if I a) develop it by my self or b) for productivity sanity (since you mention it)
buy it ready for extra money from a 3rd party company since the default provided .NET String Grid component does not cover MY needs -so from that perspective porting MY Application to .NET framework bores my productivity (do not you agree?) or costs me extra money..
So VCL to .NET porting does not always magically guarantee productivity gains
December 17th, 2006 at 3:27 amto clarify my previous post: I wish for Xmas a new setup program who installs what I want from turbo/bds, but does not force me install xxx MB of .NET prerequisites, unless I want/need those beautyful features like refactorings/etc; all those discutions would never happened
December 17th, 2006 at 4:45 am@Impatient Delphi Loyalist >>Why in the world would a company invest in CodeGear for developing .Net applications<<
I don’t know - after Borland "hung us out to dry" with C++Builder, we switched to Microsoft tools. We just couldn’t take C++Builder, its bugs, and its lack of attention from Borland (since addressed) for so long.
@Sternas Stefanos >>Who is "TOM"? I think he is “Microsoft pay-monkey” or he is a “C# script College Boy who is learning now how to make beautiful forms for .NET”…<<
Not quite - I’m a professional developer with 15+ years experience, and I used Borland tools for most of my career.
@Ahto >>Tom, please consider other people’s opinions too, no need to jump on all others with your *personal* opinion.<<
Well, the point of my posts is to state FACTS, since the majority of posters talking about .NET don’t know WTF they are talking about.
>>BTW, .NET has been now out for years — where is all that great commercial software that exclusively takes advantage of it? Macromedia, Adobe, Corel, Symantec, Microsoft, Nero, CyberLink, ULead etc — do you know any popular key applications that are built on .NET?<<
.NET is still in its infancy, so apps are just now being developed for it. Most of the companies you mentioned have legacy apps, and clearly it makes no sense to re-write an existing application in order to take advantage of a new technology. But Microsoft is using .NET for its newer programs, including Office Accounting, Visual Studio 2005 (partial), SharePoint server, Team Foundation Server, and probably lots more. In the industry I work in, I also know for a fact that nearly all next-generation application development for Windows desktop is .NET - almost every company I am aware of is transitioning from Visual Studio 6 to Visual Studio .NET/2003/2005.
>>You can force your .NET application in house because there is no competition. Outside, seems things are different.<<
How did you figure that out? Anyway, our apps are sold to and used by external customers, and of course we have competition, too.
@Poor Coder >>Tom.. you saw productivity improvements from C/C++ Builder (VCL) to .NET framework porting, based on the fact that you did not utilize the excellent Borland components that C/C++ Builder and Delphi offers by default, to its programmers or you found (or bought?) equivalent functioning ones in the .NET framework.<<
I’m not sure what you mean - we used a mix of Borland and third-party components in C++Builder, and we use a mix of native Microsoft and third-party components in .NET as well. Also, we didn’t do a line-by-line port of our application. We re-wrote it based on the original requirements specification.
Sure, I agree, if you have an application that relies heavily on a the API and capabilities of a particular VCL component, and you don’t see a close match in .NET, you are going to have some problems. Of course, the components will be pretty different. But I don’t think there is anything "missing" in .NET, AFAIK.
December 17th, 2006 at 5:36 am@Tom
>>.NET is a high-quality, high-productivity development platform, and it is a part of Windows going forward. If you are targeting Windows, there is no reason to avoid it."
For me, the reasons to avoid .NET are:
1. It’s not cross platform. (Forget Mono, its useless.)
2. It’s Microsoft technology, and I have to use Microsoft tools to build applications which takes advantage of the latest .NET framework. (or wait 2 years for CodeGear to complete its .NET 2 capable tools)
3. From history, we learned not to trust Microsoft in any way. It’s pure evil.
4. Control. Microsoft controls the framework which your software depends. The developer doesn’t.
5. Unable to make optimizations. Where are Windows API’s and integrated assembly?
Microsoft doesn’t release "Microsoft sponsored case studies" on a product unless the product is clearly superior compared to Microsoft’s products. Look at the history, what was the last case study on Microsoft-Borland competetion? Delphi 3?
>> .NET is still in its infancy, so apps are just now being developed for it.
If a platform is really valuable, it gets widespread usage immediately. Look at Java and VCL for example. The release of Delphi 1 shaked the planet. Hundreds of web pages appeared to support Delphi and Delphi users. Thousands of components are written for it. It was so good, that it hurts. Damn, it even had SQL links, transaction support, and RDBMS support in 1995!
Now look at .NET. It’s available since 2001, and if it was so good, where are the applications written with it? All we can see is almost void. The people who create cross platform solutions don’t even bother thinking of it.
I suppose these explains this case a bit further. If CodeGear should support a framework, it should be its own. This is where innovation comes, right? If not, they are lost. If you ask me, they have lost already anyway.
Best Regards,
December 17th, 2006 at 6:23 amBad choice ! Message to developers : If DevCo even uses NET to develop its IDE, it is that it is more difficult to do it with the framework Delphi/VCL. Thus it is necessary to better develop the programs to use the FCL/NET and … to forget Delphi and move to VS2005. Not good for CG.
December 17th, 2006 at 7:03 am@Tom >>I don’t know - after Borland "hung us out to dry" with C++Builder, we switched to Microsoft tools. We just couldn’t take C++Builder, its bugs, and its lack of attention from Borland (since addressed) for so long.
You are absolutely right, it took Borland 4 years to update C/C++ Builder, this was a really big Borland mistake
December 17th, 2006 at 10:44 amSaddly, I agree with Excessive and Sternas. CodeGear must shake their heads and PUT THEIR SOFTWARE STANDARTS for adoptable to all platforms.
December 17th, 2006 at 10:49 amThey should not forget Linux. I would pay +1 BDS Enterprise package price for fully featured Kylix (2007 ?). Today %35 of the world using Linux. And you can bet on this ratio increasing. Government are passing to Linux already. Don’t see this?
Corporates fed up to pay ten thousands dollars to MS for open licences every year. They always look for the Linux option, ready to pay half price!..
Just do not look at MS dreamland! They are very successful salers.. We already know that…
The bottom line is CodeGear needs to differentiate itself with its tools. It is the only way to win market share and attract new developers. If it is to fully embrace the .Net platform, how much innovation can CodeGear add on top of it? There is only a finite number of developers on the Windows platform. Developers would certainly gravitate towards Microsoft who is innovating the platform. I don’t buy the argument that CodeGear can concentrate on "high level stuff" and not have to rewrite "low level stuff" because Microsoft with its thousands of developers can do the same plus they have the advantage of knowing the gu