Slashdot Mirror


Does Visual Studio Rot the Brain?

duffbeer703 writes "As a UNIX guy dragged kicking and screaming into the Windows world, I've never really been able to enjoy Windows programming. Charles Petzold, who is a long-time developer for DOS & Windows really laid out the reasons for me at the NYC .NET Dev group. Visual Studio and Microsoft tools force you to adopt programming techniques designed around implementation speed, not understanding or quality."

16 of 790 comments (clear)

  1. For those of us who don't care by mikejz84 · · Score: 4, Informative

    I use VB6 and .net when I need to bang out an app, esp for database stuff. I known dame well it's the ideal way, but then again, I don't call myself a programmer. I really don't care about the deep stuff, just making something to get the job done. If I need something better, I would hire someone to do it. .net is like an automatic car; purist dispise them, but for 90% of people, they could care less, they are not intrested in the car, just were it can get them.

  2. stfu, this article is flamebait by Anonymous Coward · · Score: 1, Informative

    I'm the lead dev on an ASP.NET project consisting of 500 pages, dozens of web services, and several rich client apps. In all of that there has been zero dragging and dropping.

    This article is crap and comments thus far are even worse. MS gets stuff wrong, but VS is not one of them.

  3. What about Eclipse? by Anonymous Coward · · Score: 5, Informative

    Eclipse has even more nice/brain-rotting features than Visual Studio, mostly because Java is a much easier language for an IDE to understand than C++ because there is no preprocessor. In fact Eclipse makes Visual Studio look like not much more than Notepad with a GUI builder. It even detects compile errors and warnings as you type. So it totally encourages that bottom-up programming style. Is it also evil? Developing Java in Eclipse is so much faster than developing it by hand, and Eclipse provides tools to "clean up" what you did by refactoring, tools to automatically generate stubs for those undefined classes/methods that you're calling to get rid of those nasty red underlines representing compile errors, etc. I would say it's just much easier to make an IDE smart if it knows what you're doing, i.e. you declare stuff before using it.

    1. Re:What about Eclipse? by D3m3rz3l · · Score: 2, Informative

      Actually, if you use Visual Studio for writing C#, it provides similar features (points out compiler errors/warnings while you type, generates stubs for interfaces etc etc). So the issue is not with Visual Studio, it's with the language. So I don't think it's fair to say that Eclipse makes Visual Studio look like Notepad. How is Eclipse with a C++ compiler on the backend? I've never used it so I don't know.

    2. Re:What about Eclipse? by cnettel · · Score: 1, Informative

      Most of what you mention as unique to Eclipse is actually present in the non-C++ language plugins into Visual Studio (C#, VB.NET, J# alias Java for .NET to a limited degree). I think they weren't even in Eclipse when VS.NET 2002 was first released. Of course, it's better in 2005, but even back in the 2002 release you could get a couple of the things you mention, and I think all of them are present in VS.NET 2005. The actual performance of refactoring in different cases and so on may of course vary, but I think it would be hard to point out a complete "region" of smart-editor goodness missing :-)

    3. Re:What about Eclipse? by ggeens · · Score: 2, Informative

      When I read the article, I was constantly thinking: "hey, Eclipse does that as well." And then, when the author expains why it's bad in VS, I realized Eclipse does it different, avoiding the problem he has with it.

      --
      WWTTD?
  4. Re:yes, it does rot your brain, or at least habits by 2short · · Score: 2, Informative

    If it matters in the least whether a non-OS programming class uses Windows or Linux, it's a lousy class.

  5. Re:Help! by Azi+Dahaka · · Score: 2, Informative

    If you RTFA his complaints are not with using a GUI IDE, but rather with Visual Studio itself. VS's project templates remove so many steps and try to hide code, leaving newer developers in the dark about what is really being done behind-the-scenes. It also does some arguably sloppy techniques such as including a few dll references that are not necessary, adding lots of unused using statements, overusing class-wide members, etc.

    He isn't opposed to using Visual Studio itself. When guiding newbies, he instead has them create projects "from scratch" rather than using a "Windows Application" template. This at least gives them an idea of what their project is doing, and a better understanding of programming.

    He also finds Intellisense to be a wonderful tool, but over-reliance on it removes the desire to actually learn how the framework works.

    These factors and others are why he feels Visual Studio rots programmers' minds. Nothing to do with that it's not a plain text editor.

  6. Re:You win the 'dumbest post of the week' award by salesgeek · · Score: 2, Informative

    It is a tool. Does your socket wrench teach you how to build a house? Do your credit cards tell you how to spend your money?

    In defense of the person you refer to as "idiot", I've never seen a socket wrench with language specific context sensitive help, debugger, context sensitive suggestions to correct errors and an online reference library built in before. Bad analogy. Regardless, my credit card company keeps sending me ways to spend my money. Every month my statement has 1 page of bill and about 18 little inserts all with ideas of how to make the bill expand from one to six pages. Not nearly as educational as the IDE :)

    Your point is right that if you are using the IDE to learn a language: it's not the best idea. But an IDE can be very helpful, especially when new programmers are facing learning thousands of calls in an API as large as Windows. I know Turbo-C helped me learn a great deal back in the day.

    --
    -- $G
  7. Re:Breakpoint and resume coding by TrancePhreak · · Score: 4, Informative

    Visual Studio 6 had that for C/C++, Apple was playing catch up too!

    --

    -]Phreak Out[-
  8. Re:Does it? Not sure. But from experience I can sa by pthisis · · Score: 3, Informative

    The functionality you mention has nothing to do with an IDE (which is about integrating the development chain) and has been readily available in most decent programming editors for over a decade.

    * If I see a class name I don't recognize, I can control-click to go to the class definition. If the source is not attached, I at least get a view of all the method signatures.

    If you hit ctrl-t in vim, you go to the class definition (or function definition, variable definition, etc). I can't remember the keybinding in emacs, but it's in the context menu or M-x follow-tag.

    * If my code invokes a method I don't recognize, I can hover the mouse over the method and the Javadoc description of the method will pop up, telling me what the method does, what the arguments are for, and what the return value is.

    K in vim brings up the man pages or info pages for the defined function. I use it with Python docs; Java programmers use it with Javadoc. Emacs has similar capability.

    * If I'm navigating through someone else's class hierarchy, by selecting the class name and pressing Ctrl+T I can see all interfaces this class implements, and its superclasses from which it inherits methods. If I hit Ctrl+T again, I can see all classes that inherit from this class, and what classes inherit from them, etc.

    Sounds like emacs' oobr or vim's cscope interface (which is used for more than just C in vim).

    If I hot Ctrl+O, I can see all the methods callable from my current cursor position. I can also see all variables within scope.

    This is the only point that vim doesn't do by default yet (there are 3rd party packages to give similar completions, and vim 7 that encompasses this and a more powerful Intellisense(tm)-type thing). Emacs has this feature, though.

    --
    rage, rage against the dying of the light
  9. I think people may be missing the point by Dan_Bercell · · Score: 2, Informative

    All the fancy wizards are for people who dont program for a living or for putting together quick demos..etc I dont think many people will/would actually use the wizards for large products as the code maintnance would be hell in the long run. I believe that eventually VS.NET will be close if not easier for a non-programmer to make a small database app/Office app similar to MS Access. (You would need a little knowledge, but the wizards would do most of the work). Some people who either hate MS or hate the fact that coding has been made a lot simpler will resent this, but this is normal for most technologies. I remember about 2 years ago when I was in college, a classmate told me that programming against .NET felt like it wasnt really programming, he prefered C++. I dont know why he would say such a thing, but the amount of time it takes to write a program in .NET compared to most other languages is huge, which is probably why the framework has grown so much and will continue. Personally I dont use the wizards often because they generate too much code that is not needed. This was susposed to be changed a bit in the next version, also more wizards are should be added, so I may have to bit the bullet try them out again.

  10. Visual Studio Pros and Cons by msgyrd · · Score: 2, Informative

    I'm a computer science student (3rd year), and we we're forced to use VS.Net in a class last semester. Having done some pretty spiffy things with it, I really have mixed feelings. I'm normally a gedit, GCC and terminal type of guy, so I wasn't overly excited for that course. After 5 months of heavy .Net usage, these are my feelings.

    Pros:
    It's a wonderful project management program.

    The syntax highlighting and the step through code abilities were nice.

    Creating command-line programs was actually easier than ever before.

    MSDN.com is, surprisinigly, a really awesome resource for information.

    Cons:
    Creating a gui for a program was utter hell. When you start a program that has a gui, there's a bunch of code that gets written for you that you have zero control over. There's no comments explaining why it's there, and vague errors given if you mess some of it up. This may also be because the only GUI programming I've done prior to .Net was tkinter with python and XCode on my Mac. .Net is much more complex than the python, but not nearly as polished as XCode.

    The compiler seems a little fragile. Given that I'm not a stellar programmer, I make some syntatical errors every now and then. GCC can usually handle these, or give me useful information about what I did wrong. .Net just crashes and burns. If you're lucky, it'll pop up a box telling you what line of code failed in some closed source file you can't examine, or if you can examine, is worthless cause there's no comments anywhere. If you're not lucky, .Net will take the whole system down. If you're neither lucky or unlucky, you can use .Net like you would normally use GCC in any situation.

    Again, I'm only a moderate programmer, so maybe if code just clicks for you, .Net won't be to bad. My overall oppinion of it is "bleh". I've used better, but I've certainly seen worse (Boa Constructor comes to mind). It doesn't promote good coding habits, but that's not really the IDE's main purpose in my oppinion. Your teachers or book should do that. .Net is good for those willing to put up with it, but for the OP's sake, drag and dropping objects does not a computer scientist make. Hell, I've got computer science professors that can't actually program, but they can write pseudocode for optimization problems for NP-complete problems without stopping to think.

    Computer Science != programming. .Net != programming teacher/book.

  11. Noted for Win dev pubs; now Win dev IDE rots brain by Money+for+Nothin' · · Score: 2, Informative
    Petzold literally "wrote the book" on Windows programming. While not discussing programming per se, using the Visual Studio IDE is increasingly-useful in Windows development. Regarding that aspect of Windows programming, he writes:

    Even if Visual Studio generated immaculate code, there would still be a problem. As Visual Studio is generating code, it is also erecting walls between that code and the programmer. Visual Studio is implying that this is the only way you can write a modern Windows or web program because there are certain aspects of modern programming that only it knows about. And Visual Studio adds to this impression by including boilerplate code that contains stuff that has never really been adequately discussed in the tutorials or documentation that Microsoft provides.

    It becomes imperative to me, as a teacher of Windows Forms programming and Avalon programming, to deliberately go in the opposite direction. I feel I need to demystify what Visual Studio is doing and demonstrate how you can develop these applications by writing your own code, and even, if you want, compiling this code on the command line totally outside of Visual Studio.

    In my Windows Forms books, I tell the reader not to choose Windows Application when starting a new Windows Forms project, but to choose the Empty Project option instead. The Empty Project doesn't create anything except a project file. All references and all code has to be explicitly added.

    When MSFT's best Windows development author starts complaining about MSFT's development environment, MSFT had better wake up and take notice...
  12. Re: who's fault is that? by Dwonis · · Score: 2, Informative

    An even *faster* version would use puts instead of printf, and cut out all the format string parsing overhead...

  13. Re:who's fault is that? by ctzan · · Score: 1, Informative

    the source code of the original Bourne Shell
    is something like that (macros that turn C into
    Algol).

    Some comments in the BSD Almquist mention that
    as the original reason for the reimplementation.