It's the IDE, dummy!

In VB.NET vs C#, round two, I realized that choice of IDE has a far bigger impact on productivity than which language you choose. Lately I've started to think the relationship between language and IDE is even more profound: the future of programming languages isn't a language – it's the IDE, dummy!


This is a companion discussion topic for the original blog entry at: http://www.codinghorror.com/blog/2005/01/its-the-ide-dummy.html

Perhaps when comparing C# and VB.NET, the IDE makes a difference (though the IDE is the same, right?) However, I’m noticably more productive with Ruby and a text edior than I am with VS.NET '03 and C#. Its because of C#. Yeah, I’m that kind of guy.

Secondly, I hate to be a curmudgeon, but the IDE you described is Smalltalk or a Lisp machine :slight_smile:

^
True that. ruby-mode.el is the best IDE ever. I’m a strong believer in KISS :slight_smile:

I’m a language junkie and a recent convert to Emacs, but the most satisfying programming experience of my early years involved VI (ugh! spit!) and a bog-standard Unix Pascal (bleagh! puke!) on (get this) a huge, high-resolution, portrait-mode monitor. Whereas other computers could get up to 1024x768 in 16 bit colour in those days, this beastie had such high resolution that I couldn’t even see the pixels. The text was ordinary black on white, but the font was clear and well designed, and because it was a portrait-mode monitor (taller, not wider), I could see an entire “page” on the screen. Not even the obscenity of VI’s modes and line-noise could distract me from the sheer ease of use of this setup.

Nowadays I use a dual-monitor setup, Emacs with colour syntax highlighting (sorry… “font lock mode”) on a black background, and the highest resolution and fastest processor I can afford… but it’s still not a patch on that “primitive” setup.

So my counter-argument: it’s not the IDE, it’s the hardware, dummy!

I write code in VS.NET. I use VS.NET to write in VB, because apart from the syntax, it’s 99.99999% the same language as C#. The reason I use VB is that the IDE copes with it better. I get to see errors as I type, so I can correct them without having to compile. IntelliSense is ready to help me out as soon as I’ve written code, not later.

I also write code in Vim. There, I write in Ruby, because its design fits my brain and I’m therefore able to wrap my head around complex problems with its help, and get jobs done quickly.

I use different tools for different jobs. I can’t honestly say that I’m more productive in either. With VB.NET, the IDE mostly makes up for the deficiencies in the language. With Ruby, the language mostly makes up for the lack of IDE.

Ruby.NET would be nirvana. I’ve not been able to find enough time to even start work on it myself. I’m praying someone else will. Ruby with code completion, parameter info and a step-through debugger would be pretty close to the perfect development environment.

Rik

QuickBasic? Surely you can do better for “world’s worst language”?

How about bf? (I wonder what an IDE for that language would look like…)

http://www.muppetlabs.com/~breadbox/bf/

http://esoteric.sange.fi/brainfuck/bf-source/prog/99botles.bf

I, for one, dislike Notepad less than bf :slight_smile:

Use the .net framework in Ruby (to some extent anyway):

http://rubydotnet.sourceforge.net/

On the subject of VB vs C# - I’m with Rik, I use VB over C# because of the assistance that the IDE gives me. From the small amount I’ve seen of VS2005, I see that C# is getting a load of the helper stuff that VB gets now from the IDE.

This, and the fact that C# contracting jobs seem to be overtaking VB (here in the UK, anyway) will probably mean I’ll swap to C# or do both.

Does anyone have a summary of the IDE enhancements for C# in VS2005?

I am a VB.NET guy so naturally I use VS.NET. I code in VB because thats what makes sense to me personally. With the evolution of the .NET CLR I am glad that VB has finally become the full fledge OOP language that we always knew it could/should be. I refuse to swtich to C# just because its the trendy thing to do. I have always been, and will continue to be a VB developer. Code in whatever language comes naturally to you. Keep it real.

In the last 8 months, I’ve gotten so spoiled by coding Java in Eclipse that most other languages seem like a pain because they don’t have a powerful IDE that does so much work for you. I like C# as a language, but VS.Net just doesn’t come close to the productivity I get from Eclipse (I use both Eclipse and VS.Net for work).

Anyway, I’m in the process of learning some Ruby for some hobbie programming. We’ll see how it goes.

If I really was stuck with using QuickBasic with a great IDE or using a language of my choice with notepad, then the first thing that I would do with QuickBasic is to write an IDE for the language of my choice. Then I could use that IDE to write an IDE for the language of my choice in the language of my choice. Boo ya!

i ment mor abstract readable code

Well, George, I get your point, but most of the overhead is from the “class” and “static void main” overhead. That’s something I cover here…

http://www.codinghorror.com/blog/archives/000365.html

… otherwise you could write it nearly identically like this in C#

Console.WriteLine(String.Join(null, args));

a powerful languige with emacs weak verbose languige with ide. in ruby you dont write setters and getters you do this except if you need some value checking

attr_accessor :foo, :bar

it also has less boiler plate and if a languige reads like sudo code you dont nead a big ide and with irb you can have some code completion. and with less boilerplate you dont have more abstract readable code. i was a perl guy but ruby is perl+=1, a cleaned up perl how would you like to code echo.

# ruby
puts ARGV.join(' ')

or this

[code]
class Echo
public static void main(String[] args){
for(i=0;i=args.length;i++){
System.out.print(i);
if(i==args.length){
System.out.println(" ");
}
}
}
}

I mean the static typing is just a pain in the ass, it’s not just the static void main stuff. but it is this.

code type = “java"
public class Fugger{
public static void main(String[] args){
ArrayListInteger x = new ArrayListInteger();
for(int i = 1;i=5;i++){
x.add(i);
}
for(int i : x){
x.get(i)*x.get(i)
}
for(Iterator i = x.iterator();i.hasNext();){
j = i.next();
if(!j.has_next){
System.out.println(j);
break;
}
System.out.print{j+” ");
}
}
}

My experience is that Java + NetBeans is 50% more productive than Java + vim.

So far the most productive combination I know is Python + Eric3.

I suppose that Haskell with a great IDE will be the ultimate winner.

VS 2008 Pro kicks a**. It’s the IDE you explained in your article. I’m the first to criticize MS but in this case they actually got it right (beside the fact that it requires .NET framework). There are even third party plugins available (like integrated TortoiseSVN).

My favorite is the ctrl-space or intellisense keystroke. Going back to typing full lines and having to use PHP functions from memory will seem like such work. Of course, this is absolutely necessary with a library as massive as .NET and larger applications that include a lot of classes/properties/methods.

If Notepad++ only had intellisense for PHP, JavaScript, and Lua… I might have to contribute.

http://mindprod.com/project/scid.html

I came across this idea a few years ago… It makes a very good point. Why the hell do we store our source code in ASCII files? This is especially the case as the IDEs get better. ASCII’s only advantage is that it’s application-neutral, but it’s like writing an academic paper on a tpe writer. Doing that changes the way you think, and for the worse.

Darn you people, I was looking for a QuickBasic mode for Emacs and you give me this silly hypothetical stuff!

Eclipse is like a nightmare to me. When you could already be coding, Eclipse is still starting up. Whatever you do, even if you just type one letter, Eclipse lags behind. But maybe you need an IDE for Java.

I think an editor needs three features:

  • syntax highlighting
  • autocomplete for long names
  • running code

I am very satisfied with Sublime Text because it starts up instantly, does not lose data or ask stupid questions when closed, has good search features and allows editing of multiple places at once.