Skip to main content

Does Visual Studio rot the mind?

Submitted by lorien on

From slashdot (quite long and imho interesting) http://charlespetzold.com/etc/DoesVisualStudioRotTheMind.html

What do people think? I stopped using visual studio for my own projects in late '99- when I switched to Linux- for my work completely non-portable project files are far more hassle than they are worth.

I have a bit of a love/hate relationship with IDEs in general, I find they make some things I do all the time much easier, but other things I do all the time much harder.

These days I've now switched to using scons for building my software (http://scons.org , I highly suggest you check it out), and syntax highlighting text editors for code writing (like SciTE and Kate).

I know all the coding I've done using simple tools (and holding loads of stuff about my code in short-term memory) has really improved my IQ. Do people think tools like Visual Studio lessen the personal benefits of coding?

Submitted by Daemin on Thu, 27/10/05 - 11:42 PMPermalink

Quite an interesting article, and to be honest I haven't used the latest ones enough to judge. At work we're using the embedded version (which is equivalent to Visual Studio 6), and that only has a haphazard stab in the dark with intellisense.

Sometimes I don't mind the whole IDE thing, but I tend to think that the more recent incarnations of IDE's do too much of the variable stuff for the developer. A good IDE should only do the mundane things so that a programmer doesn't have to. By mundane I mean syntax colouring, building/rebuilding/cleaning the code, and a debugger.

Generating code should be left for specialist tools like flex/bison or some other ones like that.

Though any programmer worth their salt should be able to hack out code using something like notepad, and then compile it on the command line. If they can't do that then they should learn!

Anyways, enough rambling incoherence, back to work.

Submitted by Daemin on Fri, 28/10/05 - 2:00 AMPermalink

Yeah, Joel makes some very good points more often than not.

Submitted by Leto on Fri, 28/10/05 - 8:52 PMPermalink

I have to use Visual Studio at work which is tolerable most of the time, but I'm just glad to see I'm not the only one who finds it more than a little annoying some of the time. Intellisense (and even the build system at times) can't make sense of the design idioms I'm using at the moment, and doesn't seem to pay much attention to namespaces so it's all but useless. Even the seemingly simple things like: hi-lite function name, right-click, select "Go To Definition...", Visual Studio opens a header file and points to the function declaration, I said *definition* you useless *##*%#!!!!!

The overall effect is to, 1) reinforce the very low regard I have for Microsoft software, and 2) dramatically increase the desire to perform a few physics experiments - specifically, to study the fragmentation of a glass window as a computer is passed through it at high velocity.

Back when I was at uni, all my coding was done on Solaris workstations using Vi and GCC. I could get by quite happily with 2 or 3 Vi windows open and a command prompt. (I'm not a Vi fanboy, it's just what I got used to.) By having to remember more about what code I'd already written I think I wrote better code; better designed, more concise, more efficient, better documented. Visual Studio has made me lazy, but I'm as much an addict as the guy who wrote that article.

Submitted by lorien on Fri, 28/10/05 - 11:36 PMPermalink

Good post Leto... Apart from Vi I'm with you [:)]

Try automating the generation of a regression test framework from unit test header files, building the code, running the tests, and reporting all failures using the MSVC build system. Then try doing it across multiple OSs and different hardware achitectures. It can probably be done, but for complex build processes imho things are much easier with the power of a scripting language.

Submitted by mcdrewski on Sat, 29/10/05 - 1:37 AMPermalink

The best thing about a good IDE is a good integrated debugger. edit/compile/run tools thrown together are typically quite poor at that (although you can of course work out alternatives).

That said, understanding in tooth-wrenching detail the steps your code goes through (parse/compile/link) can certainly make you a better programmer. Or at leas a paranoid grizzled wreck of a programmer who doesn't trust anything (s)he can't see the source for :)

Submitted by Daemin on Sat, 29/10/05 - 3:14 AMPermalink

At work a guy here has integrated a build system based on Ant to do our builds, and we can trigger it from within Visual Studio too. There are some small irregularities and limitations still but we can build libraries, dll's, unit tests, applications etc from the one "script" file.

I guess if you try to go too far into the multiplatform with Visual Studio on one side you're just asking for hurt.

Submitted by lorien on Sat, 29/10/05 - 10:54 AMPermalink

IMHO not trusting software which you don't have the source for is plain common sense [:)].

Submitted by Dragoon on Fri, 04/11/05 - 4:29 AMPermalink

quote:Originally posted by Daemin

At work a guy here has integrated a build system based on Ant to do our builds, and we can trigger it from within Visual Studio too. There are some small irregularities and limitations still but we can build libraries, dll's, unit tests, applications etc from the one "script" file.

I guess if you try to go too far into the multiplatform with Visual Studio on one side you're just asking for hurt.

Visual Studio.NET is a PoS - buggy and slow. It does 2 things well, organises settings for your projects and is a fast compiler (particularly if you use precompiled headers properly).

However Visual Studio 6 is better at both of those than .NET - no shader debugging though, and a shit STL implementation :-(.

I use SciTE plus a project organiser that I wrote in wxPython to edit the files.

Does it rot you brain? I don't know why it would. I don't know anyone who would seriously use their template generators for classes, functions, etc anyway.

Submitted by lorien on Sat, 05/11/05 - 10:13 AMPermalink

quote:Originally posted by Dragoon
Does it rot you brain? I don't know why it would. I don't know anyone who would seriously use their template generators for classes, functions, etc anyway.

While the rant does talk at length about the shittyness of the code MSVC generates I think the mind rotting stuff is more Intellisense. If the IDE remembers pretty much everything about the APIs you're using and your own classes, you can become accustomed to not doing it yourself. Not really an issue in MSVC 6, the intellisense is quite simple, as it gets more sophisticated it becomes more addictive.

It's not just the STL in MSVC 6 that is bad, the compiler itself has pretty crap template support. Don't even try template meta-programming with MSVC 6...

Submitted by Dragoon on Tue, 08/11/05 - 3:36 AMPermalink

If you've ever programmed in Java with the Eclipse IDE you'd know how great all the "Intelli" type stuff can be. It helps productivity no end.

Its bad from the point of view you won't want to use anything else to program Java once you've used it, not for forgetting things.

Good thing its cross-platform.

Submitted by Dragoon on Tue, 08/11/05 - 3:39 AMPermalink

quote:Originally posted by lorien
It's not just the STL in MSVC 6 that is bad, the compiler itself has pretty crap template support. Don't even try template meta-programming with MSVC 6...

Question being why on Earth would you want to do meta-programming with templates, aside from research purposes?

How does it solve any real-world problem (which cannot be solved in a simpler, more maintanable way)?

Submitted by lorien on Tue, 08/11/05 - 4:41 AMPermalink

How about an RTOS memory allocation system?

Seriously though, metaprogramming does seem useless. Then, as with any coding technique, you start to find applications.

Metaprogramming doesn't involve anything really fancy, but a reasonably startdard compliant compiler, which MSVC 6 most definitely isn't. That's all I meant.

I've had MSVC's non-standard compliance bite me in other areas too.

But yes, I'm a researcher, and much tech stuff I talk about does not come from making games.

Submitted by muse on Tue, 15/11/05 - 8:36 PMPermalink

quote:Originally posted by Dragoon

If you've ever programmed in Java with the Eclipse IDE you'd know how great all the "Intelli" type stuff can be. It helps productivity no end.

Its bad from the point of view you won't want to use anything else to program Java once you've used it, not for forgetting things.

Good thing its cross-platform.

I said exactly the same thing until I started using RAD ( Rational Application Developer ), once you start using RAD there's no going back to Eclipse.

Submitted by Daemin on Tue, 15/11/05 - 9:06 PMPermalink

We just have to keep in mind with all of the intellisense stuff is only good when it is correct, when using Visual Studio 6 IDE (or equivalents) and trying to use ATL/WTL it is actually infuriating, since it gives you the MFC method signiatures and the like.

For languages such as Java and C# I see that the intellisense stuff could be quite useful, since they have a relatively fixed set of main language libraries to use, where-as C++ has quite a lot of varying libraries, few of which are "standard". When using C++ you're far better off looking either at the library code directly or at the documentation.

And as for templates I use them a fair bit, they're useful not only for container types like in the STL, but also useful for certain base classes - that share functionality with each other but not certain data types, and also for mixin classes such as in ATL/WTL.

Posted by lorien on

From slashdot (quite long and imho interesting) http://charlespetzold.com/etc/DoesVisualStudioRotTheMind.html

What do people think? I stopped using visual studio for my own projects in late '99- when I switched to Linux- for my work completely non-portable project files are far more hassle than they are worth.

I have a bit of a love/hate relationship with IDEs in general, I find they make some things I do all the time much easier, but other things I do all the time much harder.

These days I've now switched to using scons for building my software (http://scons.org , I highly suggest you check it out), and syntax highlighting text editors for code writing (like SciTE and Kate).

I know all the coding I've done using simple tools (and holding loads of stuff about my code in short-term memory) has really improved my IQ. Do people think tools like Visual Studio lessen the personal benefits of coding?


Submitted by Daemin on Thu, 27/10/05 - 11:42 PMPermalink

Quite an interesting article, and to be honest I haven't used the latest ones enough to judge. At work we're using the embedded version (which is equivalent to Visual Studio 6), and that only has a haphazard stab in the dark with intellisense.

Sometimes I don't mind the whole IDE thing, but I tend to think that the more recent incarnations of IDE's do too much of the variable stuff for the developer. A good IDE should only do the mundane things so that a programmer doesn't have to. By mundane I mean syntax colouring, building/rebuilding/cleaning the code, and a debugger.

Generating code should be left for specialist tools like flex/bison or some other ones like that.

Though any programmer worth their salt should be able to hack out code using something like notepad, and then compile it on the command line. If they can't do that then they should learn!

Anyways, enough rambling incoherence, back to work.

Submitted by Daemin on Fri, 28/10/05 - 2:00 AMPermalink

Yeah, Joel makes some very good points more often than not.

Submitted by Leto on Fri, 28/10/05 - 8:52 PMPermalink

I have to use Visual Studio at work which is tolerable most of the time, but I'm just glad to see I'm not the only one who finds it more than a little annoying some of the time. Intellisense (and even the build system at times) can't make sense of the design idioms I'm using at the moment, and doesn't seem to pay much attention to namespaces so it's all but useless. Even the seemingly simple things like: hi-lite function name, right-click, select "Go To Definition...", Visual Studio opens a header file and points to the function declaration, I said *definition* you useless *##*%#!!!!!

The overall effect is to, 1) reinforce the very low regard I have for Microsoft software, and 2) dramatically increase the desire to perform a few physics experiments - specifically, to study the fragmentation of a glass window as a computer is passed through it at high velocity.

Back when I was at uni, all my coding was done on Solaris workstations using Vi and GCC. I could get by quite happily with 2 or 3 Vi windows open and a command prompt. (I'm not a Vi fanboy, it's just what I got used to.) By having to remember more about what code I'd already written I think I wrote better code; better designed, more concise, more efficient, better documented. Visual Studio has made me lazy, but I'm as much an addict as the guy who wrote that article.

Submitted by lorien on Fri, 28/10/05 - 11:36 PMPermalink

Good post Leto... Apart from Vi I'm with you [:)]

Try automating the generation of a regression test framework from unit test header files, building the code, running the tests, and reporting all failures using the MSVC build system. Then try doing it across multiple OSs and different hardware achitectures. It can probably be done, but for complex build processes imho things are much easier with the power of a scripting language.

Submitted by mcdrewski on Sat, 29/10/05 - 1:37 AMPermalink

The best thing about a good IDE is a good integrated debugger. edit/compile/run tools thrown together are typically quite poor at that (although you can of course work out alternatives).

That said, understanding in tooth-wrenching detail the steps your code goes through (parse/compile/link) can certainly make you a better programmer. Or at leas a paranoid grizzled wreck of a programmer who doesn't trust anything (s)he can't see the source for :)

Submitted by Daemin on Sat, 29/10/05 - 3:14 AMPermalink

At work a guy here has integrated a build system based on Ant to do our builds, and we can trigger it from within Visual Studio too. There are some small irregularities and limitations still but we can build libraries, dll's, unit tests, applications etc from the one "script" file.

I guess if you try to go too far into the multiplatform with Visual Studio on one side you're just asking for hurt.

Submitted by lorien on Sat, 29/10/05 - 10:54 AMPermalink

IMHO not trusting software which you don't have the source for is plain common sense [:)].

Submitted by Dragoon on Fri, 04/11/05 - 4:29 AMPermalink

quote:Originally posted by Daemin

At work a guy here has integrated a build system based on Ant to do our builds, and we can trigger it from within Visual Studio too. There are some small irregularities and limitations still but we can build libraries, dll's, unit tests, applications etc from the one "script" file.

I guess if you try to go too far into the multiplatform with Visual Studio on one side you're just asking for hurt.

Visual Studio.NET is a PoS - buggy and slow. It does 2 things well, organises settings for your projects and is a fast compiler (particularly if you use precompiled headers properly).

However Visual Studio 6 is better at both of those than .NET - no shader debugging though, and a shit STL implementation :-(.

I use SciTE plus a project organiser that I wrote in wxPython to edit the files.

Does it rot you brain? I don't know why it would. I don't know anyone who would seriously use their template generators for classes, functions, etc anyway.

Submitted by lorien on Sat, 05/11/05 - 10:13 AMPermalink

quote:Originally posted by Dragoon
Does it rot you brain? I don't know why it would. I don't know anyone who would seriously use their template generators for classes, functions, etc anyway.

While the rant does talk at length about the shittyness of the code MSVC generates I think the mind rotting stuff is more Intellisense. If the IDE remembers pretty much everything about the APIs you're using and your own classes, you can become accustomed to not doing it yourself. Not really an issue in MSVC 6, the intellisense is quite simple, as it gets more sophisticated it becomes more addictive.

It's not just the STL in MSVC 6 that is bad, the compiler itself has pretty crap template support. Don't even try template meta-programming with MSVC 6...

Submitted by Dragoon on Tue, 08/11/05 - 3:36 AMPermalink

If you've ever programmed in Java with the Eclipse IDE you'd know how great all the "Intelli" type stuff can be. It helps productivity no end.

Its bad from the point of view you won't want to use anything else to program Java once you've used it, not for forgetting things.

Good thing its cross-platform.

Submitted by Dragoon on Tue, 08/11/05 - 3:39 AMPermalink

quote:Originally posted by lorien
It's not just the STL in MSVC 6 that is bad, the compiler itself has pretty crap template support. Don't even try template meta-programming with MSVC 6...

Question being why on Earth would you want to do meta-programming with templates, aside from research purposes?

How does it solve any real-world problem (which cannot be solved in a simpler, more maintanable way)?

Submitted by lorien on Tue, 08/11/05 - 4:41 AMPermalink

How about an RTOS memory allocation system?

Seriously though, metaprogramming does seem useless. Then, as with any coding technique, you start to find applications.

Metaprogramming doesn't involve anything really fancy, but a reasonably startdard compliant compiler, which MSVC 6 most definitely isn't. That's all I meant.

I've had MSVC's non-standard compliance bite me in other areas too.

But yes, I'm a researcher, and much tech stuff I talk about does not come from making games.

Submitted by muse on Tue, 15/11/05 - 8:36 PMPermalink

quote:Originally posted by Dragoon

If you've ever programmed in Java with the Eclipse IDE you'd know how great all the "Intelli" type stuff can be. It helps productivity no end.

Its bad from the point of view you won't want to use anything else to program Java once you've used it, not for forgetting things.

Good thing its cross-platform.

I said exactly the same thing until I started using RAD ( Rational Application Developer ), once you start using RAD there's no going back to Eclipse.

Submitted by Daemin on Tue, 15/11/05 - 9:06 PMPermalink

We just have to keep in mind with all of the intellisense stuff is only good when it is correct, when using Visual Studio 6 IDE (or equivalents) and trying to use ATL/WTL it is actually infuriating, since it gives you the MFC method signiatures and the like.

For languages such as Java and C# I see that the intellisense stuff could be quite useful, since they have a relatively fixed set of main language libraries to use, where-as C++ has quite a lot of varying libraries, few of which are "standard". When using C++ you're far better off looking either at the library code directly or at the documentation.

And as for templates I use them a fair bit, they're useful not only for container types like in the STL, but also useful for certain base classes - that share functionality with each other but not certain data types, and also for mixin classes such as in ATL/WTL.