Interview: Mike on the Hows and Whys of SharpDevelop

1) What was your motivation to develop your own IDE?

Nothing better to do :) ... just kidding. I was really disappointed with current programming languages and then C# popped up and I did want to try out the new language. Unfortunately there was no real good editor/ide for this language available. I've a strong linux background and just started to program what I need.

2) Why did you choose the .net platform?

I think that virtual machines are the future and .NET is currently one of the best designed virtual machines. In my opinion compiled code is nearly dead, VMs allow it to develop for one platform and to run the programm under almost any hardware/operating system available (at least theoretically, but that's enough for a computer scientist).

3) What are the advantages in C# for you as a developer?

Key advantage : Faster, better and more expressive than java. More modern than C++ but only with low performance penalty.

4) What features of C# made you choose it as a language for such a substantial project?

  • Properties
    I like the concept of properties, it is far nicer than the get and set methods known from java. and C# has a lot of syntax sugar ... delegates for example. (far better than C method pointers)
  • Java/C++ like syntax
    If you know Java/C++ you'll learn C# fairly easy ... same bracketing, some features from Java, some from C++ (and some from delphi :)).
  • Good and fast compiler
    It is difficult to find a fast C++ compiler, the standard java compiler (javac) is slow too. The C# compiler is much faster.

5) Where do you see SharpDevelop in position relative to competing IDEs and programming editors?

I'm currently working on the only "pure" .NET IDE out there, I have NO competition :) I head straight in the directon of industrial strength IDEs, but I don't want to make the IDE as complex as the 'big irons'. However, I want good features like code completion or forms design.

6) How is SharpDevelop going to integrate with Open Source alternatives to .NET - specifically with mono?

I hope that one lucky day mono will bring the majority of OS developers to .NET and that mono will provide a way to run .NET apps on linux. I wish that SharpDevelop will run on linux with mono (and also of course, with DOTGNU); it will be good to have platform independent applications out there for .NET.

7) .net will support a number of languages on top of the CLR, how will that affect SharpDevelop? Is integration really 'easy as pie'?

Integration of languages in the CLR? Should be hell :) it doesn't support multiple inheritance, templates and functional programming models aren't really included either. It is possible but only with a lot of work. I wonder if we will see languages in their "natural" form on .NET other than Java :) Integration of languages in SD is another story. We have to define certain things in the language modules to make all languages really integrateable. For example there is currently no language module defineable smart indenting, only the curly bracket indenting is build in. All these things aren't really hard to throw into the language modules. But the interface must be extended and overhauled, something I can't do alone. I've enough to do integrating C# in SharpDevelop and it is not easy to define a language module for a language I can't even read (like VB.NET).

8) Integration of other .net languages means flexibility in both the back end of the IDE and in more GUI features like syntax highlighting and code completion. How did that affect design decisions?

Good question. Not much. I've first thrown all features into the SharpDevelop code and if I need something in the backend binding of a language I just stick it into the interface and put it in the modules :)

9) What features of .NET are important for SharpDevelop besides the C# language? Why, what additional functionality do they provide going beyond traditional programming environments?

The framework.

10) What is your favourite feature in .NET? Why, and what does it do?

The reflection API.

11) What is your favourite feature in SharpDevelop? Why?

Compile & Run -
Because this is the main feature I need for an IDE :)

12) What particular programming feat are you proud of, not necessarily in SharpDevelop?

Refactoring, refactoring and refactoring. I like the Extreme Programming point of view when it comes to this issue. Refactoring code IS an important practice in my programming style.

13) What do you see for the future of SharpDevelop?

I hope that SharpDevelop will be widely used as an open alternative over commercial IDEs, something like NetBeans for C#.

Copyright ©2001-2012 IC#Code. All rights reserved. Want to sponsor a feature / the project? Get in touch!