I'm at the EKON Spring conference in Frankfurt (well, near Frankfurt). This is a small Delphi conference at the same location of BASTA! Spring, a rather large gathering of .NET developers. Yesterday I gave a full day workshop on "Advanced OOP in Delphi", with a very small crowd. It was quite nice and I managed to cover all of the topics, which is unusual for this talk.
Today I'll be giving a talk on multi-threading in Delphi (basically an introduction) and tomorrow I another focused on DSL (domain specific languages) in Delphi. I hope to have some time to published a commented version of the source code, as I don't have a full paper covering this interesting topic.
Nick on Native Code in an Managed World
Nick Hodges gave a keynote to the combined conference (mostly a .net crowd) with the provoking title "Native Code in an (Allegedly) Managed World". These are the key elements he covered:
- Native code is still very relevant and has its purposes
- The concept of managed code and hardware virtual machines has been around for quite some time
- Main managed platforms are Java (one language, many platforms) and .NET (one platform, many languages)
- Java was supposed to be the "lingua franca" of the web within the browser, ended up begin successful on the server, never caught on as a desktop development tool
- .net was released on high hopes, was supposed to be the "next api for windows" and the new OS core, it really is language independent, strength is proving to be on the server (asp.net)
Among advantages of managed code Nick mentioned: executes in a controlled and safe environment, automatic memory management, nice versioning (avoiding ddl hell), cross-language neutrality, powerful build in framework. Among the disadvantages of managed code he referred to: memory leak tricky (when they happens, hard to track), can't talk to the metal, non-determinant destruction, requires the presence of the framework, occasional latency
On the contrary he underlined that native code is fast, powerful, everywhere. When do you want to need native code? According to Nick:
- direct hardware interaction
- you can't control the install environment
- performance is critical
- when you plain old want to
Finally he stressed the fact that after trying a few times to bring C++ to the managed world, Microsoft is now focusing on the native technology with Visual C++. The native code is not going away anytime soon...