Interviews
  Home arrow Interviews arrow An Interview with .Net Guru: Kais Dukes
Dev Articles Forums 
ADO.NET  
Apache  
ASP  
ASP.NET  
C#  
C++  
ColdFusion  
COM/COM+  
Delphi-Kylix  
Design Usability  
Development Cycles  
DHTML  
Embedded Tools  
Flash  
Graphic Design  
HTML  
IIS  
Interviews  
Java  
JavaScript  
MySQL  
Oracle  
Photoshop  
PHP  
Reviews  
Ruby-on-Rails  
SQL  
SQL Server  
Style Sheets  
VB.Net  
Visual Basic  
Web Authoring  
Web Services  
Web Standards  
XML  
Mobile Linux 
App Generation ROI 
IBM® developerWorks 
Weekly Newsletter
 
Developer Updates  
Free Website Content 
 RSS  Articles
 RSS  Forums
 RSS  All Feeds
Write For Us Get Paid 
Request Media Kit
Contact Us 
Site Map 
Privacy Policy 
Support 
 USERNAME
 
 PASSWORD
 
 
  >>> SIGN UP!  
  Lost Password? 
INTERVIEWS

An Interview with .Net Guru: Kais Dukes
By: Ben Shepherd
  • Search For More Articles!
  • Disclaimer
  • Author Terms
  • Rating: 4 stars4 stars4 stars4 stars4 stars / 41
    2003-05-16

    Table of Contents:

    Rate this Article: Poor Best 
      ADD THIS ARTICLE TO:
      Del.ici.ous Digg
      Blink Simpy
      Google Spurl
      Y! MyWeb Furl
    Email Me Similar Content When Posted
    Add Developer Shed Article Feed To Your Site
    Email Article To Friend
    Print Version Of Article
    PDF Version Of Article
     
     
    ADVERTISEMENT


    What better way to learn about a new technology than to speak with a professional. In this article we will ask the tough questions that most programmers want to know about today's development tools.
    Kais Dukes is a knowledgeable .NET enthusiast who is currently helping to build one of the world's largest financial systems using .NET technology. With a passion for Mathematics, Kais has always been keen to solve problems using his strong analytical skills. It was a pleasure to interview Kais, and find out exactly how he feels about today’s technologies.

    Kais started out at the early age of 7 with Basic on a ZX spectrum, and has continued programming for the last 15 years. In the first of two interviews with Kais, we find out how a software professional feels about today’s technologies.

    With the 2003 release of Visual Studio it’s clear that .NET is here to stay. How long have you been involved with C# and .NET?

    Language development fascinates me. I’d heard that they [Microsoft] were working on a new language called COOL (Common Object Oriented Language) around 1998, mostly through unofficial Usenet posts. The speculation surrounding the incomplete C# submission to ECMA in 2000 was also interesting  – it was not clear at the time whether Microsoft were planning to deliver just a pure language, or a complete set of class libraries (which they eventually did).

    What is your opinion of the two technologies .NET and Java?

    Java has been a success for several reasons; one being that a virtual machine enables platform-neutrality. It’s clear that Microsoft must have been at least toying with some form of virtual machine for quite a while. It’s interesting that the technology behind MSIL appears to be older than it looks – they [Microsoft] bought out Colusua, who where developing a universal virtual machine, in 1996. Look at that, combined the whole J++ push, and its clear that Microsoft have long watched Java with keen interest.

    Java developers seem to see C# as a Java clone. What are the fundamental differences between the two languages?

    Opinions vary. I tend to look at C# / Java comparisons on two levels, syntactically and semantically. Looking at syntax, there’s no doubt that the languages are very similar. When defining the C# language, it seems that features dropped from C++ in Java were put back in C#, a good example being enums – I still can’t figure out any benefit of not having these in Java. The mighty const keyword as in C++ also didn’t make it into C#, but there are some related keywords, like const for compile-time constants, and readonly for runtime constant values.

    Looking under the surface, we see huge differences between Java and C#. The fact that C# compiles down to IL and not byte code, means that it’s possible to produce a human-readable representation of what the Virtual Machine will actually execute. Also, a C# developer can now write a class, which a VB developer can then take and use or inherit from straight away.

    Being born a C++ developer, it took me a while to get my head around the C# dispose pattern – in Java you don’t get any finalizers, as I recall. Unlike Java, there are some really useful features in C# which really do help with code readability. The two the main ones I can think of offhand are the foreach keyword, and the intrinsic support for properties. I remember writing my first class in C#, as compared to C++ or Java and thinking: wow, this looks so elegant – no more get/set assessors, or complex array iteration.

    When .NET was first released, there was much talk of web services. What do you think has been the single biggest change in .NET for the Microsoft developer?

    Without I doubt, I would say the way in which ASP pages are built. The new ASP.NET model of programming is so much cleaner. Classic ASP was screaming out for help for quite a while. With ASP.NET, we now get compiled languages (no more scripting), true scalability, and finally proper debugging. Yes, the joys of actually debugging a web page, as opposed to hacking it to death until it works, cannot be overrated [laughs].

    How efficient is C#?

    We did our own testing on C# as soon as possible. When writing successful financial applications a lot of factors come into to play, development time is obviously critical, but so is performance. When taking the same code and just tinkering it to work on both the J2EE and .NET platforms, looking at the GUI side of things, Swing surprisingly came out a bit better than WinForms.

    We found comparable results for business application logic, but when we actually sat down and tried to optimize for both, we reached the conclusion that optimizing in C# was less of a headache. Built in support for value types (lacking in Java) are a real help when trying to squeeze those extra few clock cycles out of your virtual machine.

    In terms of speed in real time systems, would you consider C# over the classic C++ language?

    If speed were the only factor, we would of course choose C++. A host of complex issues arise when deciding on the right technology to use. There is no “better language” only “better language for a given problem domain”. If we need to write fast, efficient code we go for C++. If the problem at hand is to write more readable, less complex code in a shorter amount of time, we go with C#. There’s a balance, and deciding when to use what can be make or break with a lot of these large applications. 

    For a real time system, you have to know where the bottlenecks are. Sometimes you’re not doing intensive calculations, but just waiting around for data to come in on a feed, in which case C# does fine. Also, for historic reasons a lot of these real time systems have a C++ core, which is hard to change, so you have to build on top. If we are starting a new project, or something separate we try to push for C# on the grounds of maintainability and reduced development costs.

    How well do you feel the .NET Framework and Java Virtual Machine have handled debugging?

    Looking first at Java, only with the recent 1.4 release of Java 2 has there been intrinsic support for debugging at a Virtual Machine level. In fact, they had to extend the Java language by adding the new assert keyword, although there are a few compatibility issues with older JDKs. Previously, most developers would use a custom assert class, to mimic this behavior. With the .NET framework, we get two useful classes in the System.Diagnostics namespace: Trace and Debug. 

    The debug class provides (among other things) assertions, while tracing allows custom messages to be dumped at runtime. Although there are many good Java debuggers available, and Visual Studio does a good job for .NET, code scales better under languages that have in-built support for debugging.

    As you know PHP 5.0 is coming out with the Zend 2.0 Engine, what are your predictions on the take up of PHP 5.0 as opposed to ASP.NET?

    PHP? [Laughs] I thought this was a .NET interview.

    Actually, we agreed to talk about software technology – besides it’s a .NET comparison question.

    Well, there’s no doubt that PHP is a very significant web technology. Rumor has it that it’s the dominant platform for dynamic online content. My experience with early PHP often put me into a more “just hack it” frame of mind, mainly due to the lack of OO features. This has got much better with recent releases. Now with the Zend 2 engine it looks like we’re getting full OO support, which is a true blessing.

    My main interest in PHP 5 stems from the strong interop its offering. It looks like you will be able to plug right into COM, .NET and Java objects without any additional layering. Combining the new interop, exception handling and strong object model features of PHP 5, and it’s clear that compared to ASP.NET, PHP is now looking very attractive.

    It feels that in every article or book I read is about how .NET focuses on interoperability. How do you feel .NET weighs up with other technologies that offer interoperability as well?

    The nice thing about .NET is that interop was a clear design goal from the early conceptual stages of the framework, unlike with a lot of other technologies. But interoperability is a big word - you get language-based interop, allowing .NET languages to talk to each other, but then there’s also web services. As C# is a component-based language, the whole concept of interop becomes intrinsic.

    When writing COM components under C++, even with ATL, it was fun being an expert, but writing simple code that everyone can understand is the key to successful software engineering. I think that we are going to see less demand for traditional cross-platform interop solutions such as CORBA, with the push for Web Services. There’s no doubt that interop is important, and this appears to be one the cornerstones of .NET

    When it comes to documentation, what technology do you recommend to organize and maintain you project?

    For C#, there is no doubt you should be using NDoc – it produces MSDN style help, JavaDoc and LateX files. It was nice to see that long-standing tradition of embedding documentation fragments at the source level was given first class status in C# with XML comments. You now even get intelligence when writing source-level documentation, like when you’re commenting method parameters – very useful. 

    The key to good documentation isn’t just about using the right tools. It’s important not to underestimate the amount of time it takes to write out at least a minimal set of working documentation; often it’s a significant percentage of total development time. This sort of planning needs to be factored in from the start.

    Thanks for your time Kais – just quickly, what we can expect from the concluding part of this interview, on .NET components?

    I think that the .NET component market is getting well underway, but there are lots of things which developers would find useful, but still don’t exist. Looking at Java for example, it’s clear which components are winners, and a surprisingly significant number of these don’t have .NET equivalents.

    Thanks for interviewing for devarticles.com

    Sure, anytime.


    DISCLAIMER: The content provided in this article is not warranted or guaranteed by Developer Shed, Inc. The content provided is intended for entertainment and/or educational purposes in order to introduce to the reader key ideas, concepts, and/or product reviews. As such it is incumbent upon the reader to employ real-world tactics for security and implementation of best practices. We are not liable for any negative consequences that may result from implementing any information covered in our articles or tutorials. If this is a hardware review, it is not recommended to open and/or modify your hardware.

    More Interviews Articles
    More By Ben Shepherd

     

    IBM® developerWorks developerWorks - FREE Tools!


    Be the first to hear about i5/OS V6R1!

    Hold your calendar on January 30, 2008 for this free webcast on the new i5/OS. Rational's Enterprise Modernization products will be discussed at this webcast as they help to drive the application development environment for this new System i OS. <br />And learn how i5/OS will take you to the next step of efficient, resilient business processing. You will hear about the new i5/OS capabilities as it will be the most significant i5/OS release in years. If you cannot join the webcast on 1/30/08 you can still use this link to listen to the replay.<br />
    FREE! Go There Now!


    NEW! Applying lean thinking to the governance of software development

    Effective governance for lean development isn’t about command and control. Instead, the focus is on enabling the right behaviors and practices through collaborative and supportive techniques. Hear from Scott Ambler on how it is far more effective to motivate people to do the right thing than it is to force them to do so. Learn how to form a lightweight, collaboration-based framework that reflects the realities of modern IT organizations.
    FREE! Go There Now!


    NEW! Develop Systems Software Assets with IBM Rational Asset Manager

    Join us for this on demand webcast to learn about developing complex systems more quickly and efficiently. We'll cover market drivers for developing, governing and reusing systems software assets and how you can develop system software assets with Rational Asset Manager.
    FREE! Go There Now!


    NEW! Hello World: WebSphere Service Registry and Repository

    Manage, govern, and share services across your organization by using WebSphere Service Registry and Repository. Follow the hands-on exercises to learn how to navigate the Web interface to publish, find, reuse, and update services.
    FREE! Go There Now!


    NEW! IBM Rational AppScan Standard Edition V7.7

    Secure your Web applications with IBM Rational AppScan Standard Edition V7.7, previously known as Watchfire AppScan. This Web application security testing tool automates vulnerability assessments and scans and tests for common Web application vulnerabilities. Visit IBM developerWorks to download a free trial of IBM Rational AppScan Standard Edition V7.7.
    FREE! Go There Now!


    NEW! Project and Portfolio Management Executive Resource Kit

    Portfolio Management is about effectively managing portfolio value by aligning portfolio investments with business goals. This complimentary e-kit provides a collection of materials that can help you understand how IBM Rational enables and automates best practices for improved governance and clear visibility into portfolio and project performance across the entire IT project lifecycle.
    FREE! Go There Now!


    NEW! Run your first CICS application on a PC using TXSeries for Windows

    Learn the basics of the IBM Customer Information Control System (CICS). With a hands-on exercise, learn how to get your first CICS application up and running on your desktop using TXSeries V6.1 for Windows. The tutorial shows you how to download and install a free trial version of TXSeries V6.1.
    FREE! Go There Now!


    NEW! Trial download: IBM Rational Method Composer V7.2

    Get a free trial download of the latest version of IBM Rational Method Composer V7.2 which helps you deliver customized yet consistent process guidance to your project teams and IT organization, and includes the latest version of IBM Rational Unified Process (RUP), which has provided process guidance to teams since 1996.
    FREE! Go There Now!


    NEW! Trial download: IBM Rational Performance Tester V7.0.1

    Get a free trial download of the latest version of IBM Rational Performance Tester V7.0.1, a load and performance testing solution for teams concerned about the scalability of their Web-based applications. Combining multiple ease-of-use features with granular detail, Rational Performance Tester simplifies the test-creation, load-generation and data-collection processes that help teams ensure the ability of their applications to accommodate required user loads.
    FREE! Go There Now!


    NEW! Try the IBM SOA Sandbox for People

    Visit IBM developerWorks to try the IBM SOA Sandbox for people. The SOA Sandbox for people provides a trial environment with the necessary tooling and components required to enable consistent human and process interaction and collaboration, showing how you can improve user experience and business productivity.
    FREE! Go There Now!



    All FREE IBM® developerWorks Tools!

    INTERVIEWS ARTICLES

    - Programming in the Dark: An Interview with O...
    - An Interview with .Net Guru: Kais Dukes
    - Virtual Interview: Peter Wainwright
    - Virtual Interview: Mike Mangione
    - Virtual Interview: Rasmus Lerdorf
    - Virtual Interview: Vince Oostindie
    - Virtual Interview: Mitchell Harper
    - Virtual Interview: John Percival
    - Virtual Interview: Markus Maki
    - Virtual Interview: Ian Ippolito







    © 2003-2009 by Developer Shed. All rights reserved. DS Cluster 2 Hosted by Hostway
    Stay green...Green IT