30 ms·
Why C# coders should shut up about Delphi (2016)
- rblatz 6y agoThis is one heck of a rant. I couldn’t make it through to the end to see if he ever got to the point.
- KONAir 6y agoDelphi doesn't get the respect it deserves and C# people are mean.
- thePunisher 6y agoWe are all slaves to the whim of companies. Sure I could've continued using Delphi beyond the late '90's but that would've meant that I wouldn't have been able to hold a job as a developer in the '00's when .NET became all the rage. Sometimes you just have to make do with what your customers want. And besides, C# is IMHO the best computer language ever invented.
- JamesBarney 6y agoI made it all the way. He doesn't, unless the point was C# devs are dummies who don't know that Anders in fact designed Delphi in addition to C#.
- ville 6y ago(2016)
- cttet 6y agoThis was published in 2016. And the title included "C# coders". I am not a C# coder, but all C# GUI coders I know had praised Delphi for its design and convenience for GUI... edit:grammar
- Jaruzel 6y agoThe one thing that bugged me about Delphi apps on Windows, was that they used their own custom buttons on the forms (with little graphics of crosses and ticks etc.). I am not a Delphi programmer, but I always wondered why this was.
- pjmlp 6y agoBecause developers want to be fancy. That was an additional custom controls library that you could enable, you could choose to use the standard L&F as well. It was also available for the C++ products from Borland and it traces back to their first Windows 3.x compilers. My first experience with it was in Turbo Pascal for Windows 1.5 (the last TP before Delphi was born). Also, similar libraries existed for MFC or plain C Win32, sold by companies like ComponentOne.
- extrapickles 6y agoDelphi made it easy as a developer to add those icons, and they had a nice standard set named for most actions you would want a user to do in a line-of-business application UI. Also the hello world apps for Delphi had these icons everywhere so it was "just the way" you built applications using it.
- dwd 6y agoI always assumed it was a licensing thing where they couldn't use the MFC DLL to have the same buttons. Made it easy to spot a Delphi app.
- clouddrover 6y agoIt's just another button control available in Delphi's UI library so people use it. A standard button is a TButton: http://docwiki.embarcadero.com/Libraries/Sydney/en/Vcl.StdCtrls.TButton http://docwiki.embarcadero.com/Libraries/Sydney/en/Vcl.StdCt... A button with a glyph is a TBitBtn (bit meaning bitmap): http://docwiki.embarcadero.com/Libraries/Sydney/en/Vcl.Buttons.TBitBtn http://docwiki.embarcadero.com/Libraries/Sydney/en/Vcl.Butto...
- FpUser 6y ago
- me551ah 6y agoI am a C# coder and I don't hate or talk about Delphi at all, I didn't even know people still used it. ¯\_(ツ)_/¯
- binarycrusader 6y agoSome 3 years after this satire post was published... Satire and (2016)
- ComputerGuru 6y agoIt’s a really good crash course on the shared origins of Delphi and C# plus a brief reminder of all the modern features offered by Delphi that have flown under the radar, but the anger and emotion is rather immature and really detracts from the argument. Those words could have been better spent selling its strengths further. That aside, things have changed rapidly in the last five years in the C#/.NET world first with .NET Native then with .NET Core and CoreRT. Exciting times, really.
- pjmlp 6y agoUnfortunately .NET Native seems to be on the way out with the project Project Reunion, and it is not clear how AOT support will be like post NET 5 release. So far they are demoing single file release, which is basically packing everything into the same exe, but you get a JIT + MSIL instead.
- ComputerGuru 6y agoI agree. .NET Native was always for the full framework only; I think CoreRT was supposed to be the future there but it seems to be put by the wayside now as with .NET Core 3 the official recommendation for AOT was Mono with no mention of CoreRT in the roadmap. I would love to hear from Miguel what the plans are there. Ironically this comes at the same time that C# the language has become much more usable without GC or with minimal GC thanks to the work that went into implementing Span but I think that was more a matter of necessity to support advanced async features for web usage (although I found it also made P/Invoke a joy and eliminated virtually all my need for marshaling in a few codebases.. and would have eliminated all the performance issues the led the OS team to abandon C#). It does seem that the ASP/Blazor team is driving the show and calling the shots after the UWP failure in terms of adoption, and I’m not seeing too much that would indicate it’s not the case even with Project Reunion. I’ve been testing WinUI 3, MSIX, and WebView2 and have been disappointed at the lack of story for putting all the parts together. It seems like side-loading packages with sparse package projects is intended to replace “native” UWP packages (“regular” AppX packages require .NET native unless side-loaded and I can’t get apps pulling in WinUI/STJ/Buffers/etc code to compile to .NET Native without an undeclared dependency on System.Private.CoreLib and without serious hacks to enable RTTI which makes me think they’re not meant to be used in that way any longer) but as always MS isn’t very forthcoming about the future of UWP components more than a single step at a time with all bets clearly hedged.
- trixie_ 6y agoIt's hard being an old programmer as some technologies that you used in the past, that were more productive than certain technologies today, are no longer popular. Creating client side apps in the 90s was arguably easier than creating web apps today with the soup of html/css/js frameworks that are changing every month. edit/mass reply: I've been coding web apps with the rest of you guys for 20 years. The web isn't the problem, the tooling just isn't there yet. The solution space is large and we're still in the 'throw things at the wall' stage. It will eventually be figured out and web dev will be nice and stable just like the backend and database layers.
- chrisco255 6y agoOh really? Please tell me about the ultra-productive "Built For Internet Explorer" days of web dev.
- icelancer 6y ago>> client side apps
- smt88 6y agoWeb apps are still client-side apps. OP likely meant "native apps" and mistyped it, but GP was justifiably confused.
- cttet 6y agoIn 2008 I only tested my CSS-heavy small website on my only browser, which is IE6 and quite content with it. Until I knew more later and it became a disaster.
- watersb 6y agoMost development in the 20th century was not web development. Sure, there's always a tension of "simple" versus "limited". But simple was fun.
- dleslie 6y agoYou've even drank some of the koolaid by calling them "client side apps". They're simply applications, or if you must, native applications! ;) I'm heavily reticent towards using web-based interfaces to remote services, and I think that's healthy and fine. As a developer, of course it's less complicated to not be negotiating network communication in order to create an application!
- boznz 6y agoas a delphi Programmer who works next to a C# programmer we agree to agree that neither of us will ever use the others shit language, we also agree that all the other languages are worse :-)
- johnny_reilly 6y agoI love this post. My first gig was slinging Delphi for a telecoms company, my second was C# and I've been involved with TypeScript since it was announced. I'm a complete fan of Anders Hejlsberg work. To the extent that I gave genuine consideration to naming one of my son's "Anders". My wife was not onboard.
- Boulth 6y agoAs someone that also used languages designed by Anders I'm also a huge fan of his work. Too bad there are just a few quality interviews with him: https://www.artima.com/intv/anders.html https://www.artima.com/intv/anders.html
- emmanueloga_ 6y agoThere's a chapter from Anders on [1]. 1: https://www.amazon.com/Masterminds-Programming-Conversations-Creators-Languages/dp/0596515170 https://www.amazon.com/Masterminds-Programming-Conversations...
- Boulth 6y agoRight! I remember now buying the book just to read the chapter about Anders. Was not disappointed. (for the record other "masterminds" were also interesting).
- zsmizzle 6y agoMSDN's Channel 9 has quite a few talks/interviews with him [1]. I especially enjoy this one [2]. [1] https://channel9.msdn.com/Search?term="Anders+Hejlsberg" https://channel9.msdn.com/Search?term="Anders+Hejlsberg" [2] https://channel9.msdn.com/Blogs/Seth-Juarez/Anders-Hejlsberg-on-Modern-Compiler-Construction https://channel9.msdn.com/Blogs/Seth-Juarez/Anders-Hejlsberg...
- Boulth 6y agoGreat resource indeed, thanks! Too bad the latest one is 2 years old :(
- pjmlp 6y agoSatire or not, one thing I do fully agree. It was a big mistake not embracing AOT from day one, C++ wouldn't have kept its king position in MS ecosystem if the original .NET had been like .NET Native since the begging and kept Delphi like features for low level coding (some of each are have been added since C# 7.x). JIT support could still be an additional option as well, just like on languages like Eiffel. Instead we got NGEN (with basic optimizations), .NET Native (out of Midori, but which seems on the death march with Project Reunion), MDIL/Bartok (out of Singularity, used only in Windows 8.x), and all remaining efforts are from third parties (Xamarin pre-acquisition), Unity, CosmOS. And no one really knows if CoreRT will ever be integrated into the main product.
- ryuukk_ 6y agoyou are finally waking up too late to complain thought, they killed CoreRT already, and themselves on the same occasion Microsoft is a dead company anyways
- lostmsu 6y agoI've been doing C# for over 10 years, and so far the AOT trend just gets in my way. I would prefer .NET Core on all platforms to just function similarly to .NET Framework on Windows: shared runtime(s) with major releases for breaking changes, and point releases for in place improvements. Case in point: when Windows RT jailbreak came out, my .NET Framework AnyCPU apps just worked there. Now when I package, I very often have to list the target architectures in advance. When I hear Java announcing JIT in Java and catching up with C# on syntax sugar, I feel that C# + .NET might start to lag behind in innovation.
- pjmlp 6y ago.NET has had lot of innovation, AOT was there since the beginning via NGEN, although there was never a big investment in its optimizing capabilities. Then there was Axum, Cω, Phoenix Compiler (LLVM like in .NET), Singularity, Midori, Rosylin, MDIL, .NET Native. GraalVM goes back to MaximeVM and JikesRVM, so JIT in Java is also quite old. What all these projects need is the money and political willigness to keep driving them forward, and here is probably the main issue with some .NET research projects, because since the begging Windows Development (which kind of owns the C and C++ story) teams aren't that willing into having too much .NET on their turf.
- Animats 6y agoDelphi is one of those languages which was a good product from a failing company - Borland. Just as Modula 3 was a good product from a failing company - DEC.
- toohotatopic 6y agoHave they been failing by themselves or have they been destroyed by Microsoft, e.g. [1]? [1] http://techrights.org/2009/09/14/ms-admits-draining-to-destroy-borland/ http://techrights.org/2009/09/14/ms-admits-draining-to-destr...
- pjmlp 6y agoBoth. Anders has a couple of interviews where he mentions that he resisted invitations from ex-Borland colleges that moved into Microsoft. It was only when Borland stop being what it used to be, that he decided it was time to move on.
- andi999 6y agoI remember having read the story about Borland as follows: upper management decided software products was a thing of the past and the company had to switch to services. They did that and were out of business in 6 month.
- pjmlp 6y agoBorland is still in business, although with another name, Embarcadero. What happened was that decided indies weren't any longer their target demographic and they wanted to be enterprise and focus on product and process lifecycle management (PPLM) tooling instead. So Delphi and C++ Builder got priced accordingly and they renamed themselves to Inprise. After 20 years they are trying to get back the indies with community editions, but the damage is already done, and 100% of their customers are enterprise shops. So unless you are working for a Fortune 500, you will hardly come in touch with Delphi / C++ Builder nowadays.
- thePunisher 6y agoThis blog is not an article but a rant full of half-truths and outright lies. The author doesn't realize that most C# developers have no knowledge of the history of both Pascal and C (I'm old enough to know) because they were born decades after these languages came into being. The author also misses the point that C and C++ are systems programming languages (for developing operating systems, device drivers and low-level stuff such as compilers) and Pascal is an application programming language. C and C++ were pressed into service for developing application programming because many nerds thought it cool to have the fastest benchmark speed test result and ignored the fact that these languages are unsafe to use on a day-to-day basis. That's why C# and Java were invented.
- monocasa 6y agoI don't think the distinction you're making about C and C++ being systems languages, and Pascal being an application language totally holds. Pascal is a totally fine system s language. AEGIS (a from scratch Unix like) was written in Pascal and by all accounts was a great option at the time. And what makes C and C++ unsafe exists in Pascal.
- FpUser 6y agoModern C++ is actually pretty safe. Pascal is reasonably safe as well if you know what you're doing. And all this safety talk is over-hyped anyways. Just learn hot to program properly. I do not really remember when was the last time I had problem with "safety" in either Delphi or C++. My commercial apps (C++, Delphi and C for firmware run for years without a single crash report).
- pjmlp 6y agoYep really safe, Google and Microsoft security centers can confirm that.
- FpUser 6y agoSecurity centers can also confirm that any other language / software / system has holes. I am not Microsoft/Google/etc and do not give flying hoot about their language preferences. I ran my own business and my clients are happy. As already said not a single complaint.
- bsder 6y agoExcept that C# worked on 64-bit OS's practically from the start and Delphi--still only marginally does. And this isn't theoretical--Altium actually did a full code rewrite in order to get off of Delphi because of this.
- FpUser 6y agoI am not sure what you mean under marginally. Delphi and FreePascal/Lazarus have no troubles producing 64bit executables. I have ongoing commercial product in Delphi and it is 64bit only.
- dmz73 6y agoUnfortunately C# and the rest of .NET ecosystem (and for that matter Java and rest of JVM) are not fully 64bit capable to this day and will probably not be fully 64bit capable for the next decade if ever. What do I mean with this? .NET and JVM native arrays use 32bit indexes and most standard container classes also use 32bit indexes so you cannot have more than 2^31 elements. Who needs that many elements in the array? No-one who develops in these environments...because they can't have them so they move to something that can.
- JamesBarney 6y agoI kept waiting for the tangents to end and the reasons for why Delphi was great would start. He never got around to it.
- greatgib 6y ago> Some people seem to think that Delphi ended with version 7 back in the 90s For me it is the case. Before Delphi was a really the greatest, smartest and easiest RAD IDE. I even think that today dev tools are in a bad state and nothing match what we once had back then! Especialy for creating 'responsive' Gui apps easily. Then, as shitty companies always do, they changed completely the tool and the language with the new bad .net like one. Despite it to be wrong, they claimed that this was better than what we had before and forced it on users. But it was not anymore the Pascal Object that we liked!
- locusm 6y agoThis brought back fond memories of C++ Builder and the Jedi OSS library.
- locusm 6y agoIt lives! https://wiki.delphi-jedi.org/wiki/JVCL_Component_Overview https://wiki.delphi-jedi.org/wiki/JVCL_Component_Overview
- jasonlhy 6y agoI have colleague who still write desktop application in Delphi. I sometimes work with him and to observe how he write Delphi, which is quite impressive, and the performance is remarkable. However, it is really bad at some points. First, it is not friendly to web, we have some special web requirements, we decided to spawn a node process to do it. Second, the tooling is so much better in Visual Studio. And the compiler is so much smart with sophisticated and syntactic analysis. Last but not least, it really lacks 3rd party libraries so people always need to implement themself. C# may not be the best option for any application. But it is general enough to almost support every types of application.
- deleted 6y ago[deleted]
- mikeabraham 6y agoI miss Delphi. I miss Clipper Summer '87. I miss BeOS. I miss simpler times. Those were good times....