I’ve been accepted as a speaker at the SD West 2008 conference, March 3-7, Santa Clara Convention Center. My birds-of-a-feather session is titled "Native Code is not Dead". Here is the abstract I sent in:
With all the buzz about managed code and dynamic languages,
a developer might think that native code is dead. The reality is
that most of the real world still runs on native code. ISVs and
Micro ISVs thrive because they rely, every day, on native code
to deliver packaged software. The next C++ standard, "0x", has
helped focus attention on native code programming. The ubiquity
of multi-core systems has also invigorated native code use. Come
and join a discussion about native code development -
"the rumors of its death have been greatly exaggerated".
The next step, for me, is to finish preparing my presentation for the b-o-f discussion. If you would like to send along your native code vs. managed/dynamic code thoughts, ideas, issues, and stories I will be very happy to add. Send your emails to davidi@codegear.com and set the subject to "Native Code is not Dead" so that I can easy find them in my email stream.
CodeGear will also have a booth at SD West this year. If you are going to the show, stop by and say hello. If you are going to be in the area, you are invited to come and visit the expo. CodeGear will have a team at the Second Annual Developer Bowl as well (Thursday, March 6, 5:30 PM – 6:30 PM). You can watch a summary video of last year’s competition at http://www.sdexpo.com/2008/west/devbowl08.htm
My birds-of-a-feather session information:
- Date: Thursday, March 6, 2008
Time: 7:00 PM - 8:30 PM
Title: Native Code is Not Dead
Format: 90-minute Birds-of-a-Feather Gathering
Level: ALL
{ 14 } Comments
I’m glad that CodeGear will be visible in non Ex-Borland conferences
I hope you show what Delphi can do for all the developers who thought it just a drag drop tool only.
The real problems regardind the native code for future developers is the incredible quantity of documentation, help, video regarding managed code (I mean .NET side).
I think the gap between "low/system" level programming and "high/enterprise" level programming will increase in term of developing tools used.
Codegear Delphi (win32 Version) will continue to be a good choice till the VCL will be upgraded to follow FCL.
Long life to Delphi!
Hello David
I do wonder if there are any ideas about a native win64 delphi. And how that will translate in future Code Gear products.
Sophie
David,
finally somebody has the guts to do a session like that! You know my focus is managed code, but since working at University I found out that .NET is hardly key in the Engineering Department. Most of the software is written in C++ or Delphi (yes, really!). The software reads data from measuring devices, controls robots and is used for simulation. However, on the Enterprise Level almost all applications that I see are using .NET - at least in some modules. Anything that offers Web Service interfaces, a Web Application and a Client Application with a database back-end uses .NET quite often these days.
Refering to your other blog posts and your excitement about Ruby: Ruby is not used at all. Worse, students do not even know about it. Worst: Campus licenses are not being made available or being promoted by CodeGear. You can find PHP, but you have to look hard for it. Once again, you cannot get Delphi for PHP on campus. (I checked last end of 2007)
Hello David,
I accept your invitation willingly to send you my native code vs. managed/dynamic code thoughts.
At first the basic conditions: As I wrote in a former discussion, I develop dynamically simulations in aerodynamics and thermodynamics. These programs are distributed to engineers and scientists in a very small quantity. The programs are not remittance work, I don’t know most of my customers. But about three months ago we made a survey and now we know the operating systems used by our customers: about the half uses Win 2000, about the other half uses Win XP, but nobody uses Vista. And nobody has a .NET version installed on his system (or doesn’t know it). And nobody intends to change the system, because the old system runs and runs and runs (don’t change a running system …!).
This background is the reason for my thoughts and arguments for preferring native Win 32 apps:
1.: Our customers don’t like to install .NET, as long as it isn’t a part of the operating system. And an additional automatic installation is an intervention in the system.
2.: There are every few years new versions of .NET. It is impossible to develop an application for e.g. .NET 3.5, if the customer uses Win2000. We don’t know, which .NET version we have to consider.
3.: And in the end: The IL code of the exe for .NET is very easy to read. Our algorithms are our company secrets and our capital. We must protect it as well as possible to make it as heavily as possible to be understood by our competitors. Native Win32 code is at present the best protection. Another way would be to develop for .NET and to make from the IL-exe a real Win32 exe by using the XENOCODE tools. But there remains the question: why not make a Win32 exe directly?
These reasons aren’t interesting for remittance works. For these .NET will be an interesting solution.
And for us .NET will become an interesting option in perhaps 10 or 15 years, when .NET is an integral part of the operating systems at all computers, and a way is found which protects the code similar to Win32 today (it must be much more better then the today’s obfuscators).
Kind regards from Austria
Walter
Sock it to them David!!
Hello David,
I believe in: “Tried an tested”, “keep it simple” and a mathematical approach to programming like Pascal. I have seen many fads come, because of commercial inspired hype, and have then seen them stick because no one asks if they really need them. Like OOP, DLL, COM, Java, .net, etc…
My main program is very powerful because it doesn’t carry a lot of ballast (its less than 1 MB) and it is flexible because I do not use OOP (I use my brain instead). So, although I am a very small company, I am becoming a real problem for the big established companies. Mainly because of my creative and alternative approach to programming.
For example: my software doesn’t use an installer. If its name is “setup.exe”, it starts an install screen, copies itself to the harddrive, renames itself and creates a few shortcuts. Result: no problems with the registry, very fast install, custom install features and it saves development time with each new release.
“Follow the crowd and you will be alright” seems to be the motto for most programmers. However they fail to realise that debacles are never reported so their motto is never proved wrong. It just seems to them that they are unlucky with their own experiences.
Greetings,
Geert
I can not agree more with Geert. First of all KISS (Keep it simple, Stupid) and then a logical (He says mathematical) solution. KISS will always be king, so I will say no more on that. He use Pascal and I Delhi win32 and I believe he is the better programmer! Why do we need to rely on libraries like .Net to produce "Managed Code", even more so when we have no access to the source code. I use JCL and JVCL from the JEDI Library a lot, but I have access to the source code if something goes wrong. But more importantly if something needs to be fixed in my program, I only need to send my customers a 2.5 Mb file to fix it. Not a whole .Net update.
And even more important no registry updates that may or may not work. (On that point why must I store 4 variables in a database of millions, that are only retrieved once a day at most.)
.Net is doomed to be dead. The dot normally ends a sentence or statement. .Net start with one! So it ended before it started.
Long live KISS and logic (Mathematical)
No, native code isn’t dead, but managed code is surging. Native suffers from inferior libraries and is increasingly losing its RAD-factor. For instance, the sheer richness of the FCL and the simple abstractions it provides for virtually all native system features simply overwhelms the VCL that we all came to use and love.
There is next to zero innovation in the VCL, and while CodeGear ignores things like extending the WinAPI support (e.g. CryptoAPI, WMI) and introducing new utility classes (e.g. Hashtables, XML parsers); Microsoft are busy innovating and looking at ways to increase developer productivity. In 3 years, the VCL has lost 10 to the FCL. CodeGear’s answer? Get third party libraries and controls, or simply leverage Microsoft’s innovations through Delphi for .NET!
That is so lame and has completely turned me off Delphi - or CodeGear’s native development solution, to be strictly correct. I’ve been developing in Delphi for 11 years and to see it fall this far behind is a crying shame.
Either CodeGear doesn’t have the right engineers anymore, or they’ve lost interest altogether. Meanwhile, I’ve been dragged kicking and screaming into .NET and C#. We can go on and on about the drawbacks of managed programming (deployment, versioning, performance etc.), but at the end of the day, given a task that can be accomplished by both native and managed code, I’d pick .NET managed over native VCL without blinking - and it truly saddens me every single time.
To be honest, I know loads more VCL and Object Pascal than I do .NET, but I’m significantly more productive with Visual Studio and .NET!
If CodeGear don’t have an answer for Anders, there will be no come-back story and they’d better let us know so we can all make informed decisions and save a lot of hours and heartache.
As the discussions above show thera are people who are fanatical fans of .NET and at the other hand there are people who prefer native exes at present. I’m thinking there
As the discussions above show thera are people who are fanatical fans of .NET and at the other hand there are people who prefer native exes at present. I’m thinking an essential point there has been overlooked: remittance works needs other solutions than standard software.
Remittance works are for one single user. Many developers do remittance works. The developer knows his customers system and it is easy to implement .NET x.x. There are no problems with the .NET and with the secrecy of the code.
The developer of standard software at the other hand don’t know most of his customers, he don’t have access to their systems and don’t know which versions of Win are installed. And he has the problem that his code may be decoded by his competitors. In this case native Win32 code is the best solution at present.
I think its very important to differentiate between this two cases!
Walter
For the people who are so quick to bash .NET here take a minute to think that some things may not be so rosy after all or David would have chosen a different topic for his session, eh? The truth is that while native development on the Windows platform is not dead yet, it’s hardly doing very well either. And if you think that multicores will revive it you are probably just kidding yourself. Finally C++0x has something to say about threading but it’s not much more that pthreads which we’ve had for years. On the other side, in the managed world development is proceeding at breakneck speed. They already have what C++ is barely standardising now and no doubt they are working on the next cool thing. And if any concurrency revolution will take place it’s unlikely to happen with such low-level concepts like threads and mutexes but rather something more high-level and the managed world is much more likely to come up with that.
Even worse is the fact that Microsoft are running away with it even as far as native code development is concerned, even if they’re not really trying, because the likes of Borland/Codegear like to sit on their collective asses and not innovate beyond the "yet another way to connect to the database" API, but that’s a topic for another day.
So speaketh a long time C++ Builder user driven to the other side when the substandard (pun intended) quality of the C++ compiler began to outweight the joys of the great (at the time, at least) VCL.
From my point of view, both are tools and each one of them is usefull "here"
and not that good "there".
If you gain your money by producing everyday apps like
text processing, image-video-sound handlers, p2p progs, web pages etc.
then .NET or Java are both good ways to do the job. In these cases one is only
interested in the business logic and handling hardware issues is consider to be
a waste of time.
Then again drivers, electronic controllers’ software, !!operating systems!! and
every revolutionary application, framework can ONLY be implemented in
native code!! Even .NET and Java REs are and will continue to be written in native
code!! There is simply no other way… Even every serious programming language is written in native code.
The point is that we are asked to become less revolutionary. MSoft does not need
anymore linuxes… So their new moto is:
"Be creative and write anything, but only with the bricks we give you and
in ways that we have specified. And we will make it easier to follow our way".
Knowing how to write excellent native code also requires the "dangerous"
knowledge of the computer’s internals. And MSoft would also like less
and less hackers to be around. Everybody understands why….
In other words there seems to exist a trend to monopolize information:
Trully usefull knowledge that could "upset the current balance" in the
software industry will eventually be available only to the selected
few that work for MSoft or any company of the same calibre. And the rest
of us programers will have to buy and play with the little toy-bricks
that these companies will produce….And-come to think of it-they are
like regular grocery stores! Everytime they claim to have the next
fresh/best think. Magazines are then forced to create a trend, and we
-being lowlife-trend_driven zombies- hurry to learn this new "great thing"..
And on top of that, we become so passionate about the "greatness" of
our new knowledge that start the so called "blog wars"!!!
Divide and conquer I guess…
But the real problem is the education of prorgammers. 50% are self-taught
and another 45% have attended schools with educational programs that can
be fully be described as "2 years of Visual Studio seminars". How can one
expect from such a "programmer" to understand even what a simple pointer is?
A script kid is one thing and a true programmer/software enginner is another!!
True programming freedom is to be able to choose the tool you see fit for
the occasion. Whoever tries to spread a monopoly-or stands for it!-
should stop worrying about whether his PC has been ruBotted. His own brain
is officially a member of the storm-Bot.NET… Either that or he works
for MSoft
Might be bit of a strange question, but where does the title slogan come from? Just out of curiosity. I’m using the same slogan since uh, last year, and when I created the simple java graffiti-like "native code is not dead" stuff on my site, google had nothing about this slogan at all.
Now do we live in such a small world that 2 different people came up with the same slogan? Funny.
Post a Comment