Forgot your password?
typodupeerror
Programming Editorial IT Technology

Does Visual Studio Rot the Brain? 790

Posted by ScuttleMonkey
from the also-causes-cancer dept.
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."
This discussion has been archived. No new comments can be posted.

Does Visual Studio Rot the Brain?

Comments Filter:
  • by yagu (721525) * <yayagu.gmail@com> on Wednesday October 26, 2005 @05:10PM (#13884656) Journal

    I have a good friend whose son is brilliant. He looks at anything, and instantly is taking it apart and putting it back together. In our technical day and age, he has tinkered with computers a LOT and has shown great acumen in troubleshooting and configuring not only Windows, but putting together a network.

    I tried to turn him on to coding, but he went out and got Visual Studio, and went off on his own. He came back and proudly demonstrated his various creations.

    While I liked his creativity, it was evident his depth of grasp of the workings of programming were as deep as VS allowed him. Cute screens with cute input buttons and cute input boxes. But nothing in the sense of real code.

    He is now taking some programming classes, and while he is doing well, they have begun java, and it has totally thrown him. He's getting back on his feet, but his initial foray into VS gave him some bad (and some wrong) insights into programming and languages.

    His reaction so far to having to actually write and understand code is that it is stupid. I think that's a dangerous culture to cultivate in an IT universe. He is doing well in his class but he constantly wants to go back and do the drag and drop thing.

    • who's fault is that? (Score:5, Interesting)

      by conJunk (779958) on Wednesday October 26, 2005 @05:17PM (#13884716)
      I tried to turn him on to coding, but he went out and got Visual Studio, and went off on his own. He came back and proudly demonstrated his various creations.
      Well come on. When I was a kid my down sat my down in front of Apple BASIC on our IIgs. When I was little older we got THINK C. Whoever started this kid off in Visual Studio has some 'splainin to do.

      There's a reason we start with printf("Hello World."); and not with dragging a text box into a big white rectangle.
      • by 2short (466733)

        Of course, there's no reason you can't do printf("Hello World."); in Visual Studio. I too started in BASIC, because that's what was available. Frankly, "drag some buttons onto a gui and get an app that looks cool and does nothing" is EXACTLY where I would start a child today. They'll do that maybe twice, then want the buttons to do something and go from there.
        Or I could edit a text file, run a couple command line apps and wind up with a command line app that prints "Hello Wo
        • by TWX (665546) on Wednesday October 26, 2005 @06:44PM (#13885379)
          "Frankly, 'drag some buttons onto a gui and get an app that looks cool and does nothing' is EXACTLY where I would start a child today."

          Then start them out with "The Incredible Machine" or some other mousetrap-alike where the objective is to build the most complex functioning thing possible with weird widgets provided to the operator. You give them a taste for making something without giving them any kind of tool that will force bad habits upon them. If they go off and end up using Visual Studio for GUI programming, well, that will happen to some, but others may never see the GUI programming stuff and go straight into building complex machines using letters and syntax instead of using drag and drop.

          I had other vast, varied tools at my disposal. I had a LOGO program. I had ROM Basic, GW Basic, Quick Basic, and Power Basic. I had Borland C/C++ for DOS. I had a Texas Instruments calculator and a graphlink cable. I had gcc. I don't doubt that my Basic programming experience caused problems for when I tried to move on to C, but at least I wasn't thinking that making fancy dialogue boxes was programming compared to writing the back end of something.

          I started with MS-DOS, but Microsoft's real hard push for their GUI hit in 1993, when I was thirteen. I found that after years of GUI, when I started playing with programming, being able to control things that I had done myself through the command line was insanely cool. It was like opening the hood of a car or taking the case off of a complex electronic device. I felt like I was gaining more mastery over the computer itself, rather than just using it. I'd suspect that many kids that are the 'take it apart and find out why' type would feel similarly.
          • by Tony (765)
            I had ROM Basic, GW Basic, Quick Basic, and Power Basic. I had Borland C/C++ for DOS.

            Bah! All you children, with your fancy gizmos and whirleygigs. Why, when *I* was a budding hacker, we had to flip bits with a TIDDLEYWINK! And we LIKED it that way!

            All you kids with your fancy interactive terminals, and your 300-baud modems, and your higher-level languages. "Ooo, my BASIC is SOOOOOOO powerful!" "Logo could do that in a jiff or less!" Ha! Nowadays, you kids just don't know the first damned thing about
          • by 2short (466733)
            "Then start them out with 'The Incredible Machine' or some other mousetrap-alike"

            Maybe. But when I was getting into coding, any suspicion that what I was doing was a toy, and not the real thing would have killed my interest. I wanted to write programs that looked and felt just like the "real" ones, and these days that means a GUI. I'll admit, I'm speculating, not speaking from experience. I coded for 4 different command-line-only OSes before I ever saw a GUI; and I scoffed at the first one I saw (Mac) a
            • by Cederic (9623)

              In the article the speaker noted that he recommends people start a new VS 'empty' project, not a Windows Forms project.

              They then have control, and can intentionally add the features they desire.

              People who know how to drop widgets on forms know only that. People who know how to code can also drop widgets on forms.

              I think people should learn to code, and then pick up tools that improve their productivity. Start with the basics first, learn what's happening and why, and you'll be far better than if you merely
      • by d34thm0nk3y (653414) on Wednesday October 26, 2005 @06:36PM (#13885311)
        There's a reason we start with printf("Hello World."); and not with dragging a text box into a big white rectangle.

        Why? They are both levels of abstraction. I don't think too many of us programmers got our start in assembly. I personally started with BASIC on a 286. An abstracted language whose major feature was ease of use. I don't think there is a fundemental difference other than visual abstraction is used to easily create visual applications and textual abstraction was used back in the day to generate textual programs.
        • by admdrew (782761) on Wednesday October 26, 2005 @06:54PM (#13885457) Homepage
          They are both levels of abstraction. I don't think too many of us programmers got our start in assembly.

          You're definitely right, but I think that starting out with the high-level languages is a good balance between abstraction and being able to have some powerful control. Start too high (Visual Studio, etc) and you risk not being able to easily understand what's really going on. Start too low (ASM) and you may be too frustrated to continue... or may not be able to understand 'the big picture' when it comes to programming.

      • by mikael (484)
        Well come on. When I was a kid my down sat my down in front of Apple BASIC on our IIgs.

        Having line numbers really helped me focus on getting the architecture of a program first, because there wasn't any easy way of changing line numbers (apart from some extra assembly language routines that could be loaded into spare memory).

        The editor of Visual Studio isn't too bad, but the MFC/.NET dialog editor is terrible. You should move him onto Trolltech's designer for Qt.
    • This anecdote is quite a load of bullspit. Anyone who has been working with GUI will be stumped for a bit in front of a console.
      • by bfizzle (836992) on Wednesday October 26, 2005 @06:16PM (#13885166)
        I agree. What you know before using a tool like Visual Studio (C# of course) is what counts in life.

        It is too bad that the /. crowd is critical of the VS suite. For what it is designed for the Visual Studio does a great job at allowing coders with a solid background to develop application quickly and completely. They might not be the most efficient application performance wise, but most computers today have CPU cycles to burn. Any ways C# was designed to develop business applications, not enterprise applications. If you are developing something where CPU cycles and RAM are critical you need to be using C or even assembly.
        • And I agree compleately with this.
          The important thing, For what it is designed for is exactly right on the button.
          VS and VS.NET, are *primarily* rapid application development environments. They try to serve the developer by offering all the cool intellisense mojo and whatnot, and try to serve the employer of said developer by trying to make said developer more productive.
          I for one think that MS does a pretty damn good job of this...
          However, I can see the validity of Mr. Petzold's complaints. The code th
    • Some people like to build a computer by simply identifying compatible components and plugging them together. Others aren't satisfied unless they know the intimate details of how each of those individual components works. Either way the computer does its job in the end.

      Hopefully this analogy makes sense. Basically, don't assume that just because somebody's preferred modality is different from yours, that makes it faulty.
    • Apples and Oranges (Score:5, Insightful)

      by mustafap (452510) on Wednesday October 26, 2005 @05:26PM (#13884788) Homepage
      You seem to be comparing 'Playing with Visual Studio' against 'Taking programming classes'.

      Visual Studio is not a teaching aid. It's (just about) a programming toolkit with some bolted on frameworks. You will create rubbish if you do not know what you are doing. Try thowing eclipse at him, he would have the same problem.

      Having said that, I hate having to program with Visual Studio. It's like a great big book of usefull spells, but they are written in invisble ink :o)

    • "Visual Studio and Microsoft tools force you to adopt programming techniques designed around implementation speed, not understanding or quality"

      Force? noone's forcing me to use the RAD tools; I use VS primarily as an editor with intellisense and solution/project file management; no more, nor less. FUD.

      - Oisin
      • Visual Studio and Microsoft tools force you to adopt programming techniques designed around implementation speed, not understanding or quality.

        Force? noone's forcing me to use the RAD tools; I use VS primarily as an editor with intellisense and solution/project file management; no more, nor less. FUD.

        Exactly.

        Some projects at my company were written by people who did not know how to program well. Others of us follow well-organized, structured development.

        Their code looked like the Microsoft sampl

    • If used correctly Visual Studio does not "rot your brain" or cause bad habits.

      The places where Visual Studio excels is in some of the following:

      Code/syntax highlighting
      Structure/layout
      Designing graphical aspects (forms, window layouts, etc.)
      And others

      One of my favorite features is the form of auto-completion and showing function prototypes. You don't have to have memorized the entire Win32 API to be a "good" programmer. Documentation comes in many forms and by having the IDE tell you when you open a parenthesis what the function expects as inputs is just another way of looking at the docs.

      The one place where I think that an IDE can cause some harm for new programmers is the "shake-and-bake" method of designing an app where it asks 10 questions and writes the code for you. Past that, IDEs are a great tool for managing larger programming projects.
      • Ok, back in 1995 (Score:3, Interesting)

        by orasio (188021)
        Maybe ten year ago, Visual Studio was great. We all used it.
        Now, we have Eclipse, and _I_ have GCJ, and SWT. And I don't need Visual Studio to make a standalone dialog EXE.
        So I don't use it.
        Or maybe it's the fact that I can use Eclipse for my web development too. And the same with Java.
        Or maybe it's that Eclipse does so much more than syntax highlighting. Refactoring is solid with Eclipse. CVS support is flawless (to the extent of the capabilities of CVS) . Working with Eclipse feels, now, the same that Vis
    • First idiot, an IDE is not supposed to teach you ANYTHING.

      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?

      Someday, somehow the Microsoft bashing needs to end, or at least be about something intelligent. If you are a programmer, well versed in the basic concepts of code, both procedural and OO, then all that Visual Studio will do for you is increase your productivity in what ever you are planning to create in the programming lang

      • 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 litt
    • by ankarbass (882629) on Wednesday October 26, 2005 @05:40PM (#13884903)
      No offense,

      But, taking stuff apart doesn't make you brilliant. Most of us geeks took things apart when we were kids. People around us said the same things you're saying about so and so's kid. The kid is stumped with java because he's having to go beyond instant gratification and actually learn something. There is a fundamental difference between just discovering random facts and learning ideas that have depth. Just because he can play video games or memorize oodles of random computer facts, or fankly, even put a network together, doesn't mean much. I'm not saying the kid isn't smart, most geeks are "smart", few are brilliant.

      It's good for him to struggle. He'll find out if he's really brilliant. His response that the ideas are stupid is just his ego combined with youth. Does he think math is stupid too?

      My point is that visual studio isn't the problem. The problem is thinking that mucking about with computers is equivalent to learning difficult things. Whipping up some crappy kid-app in Visual Basic is about as difficult as Whipping up some crappy speakers in woodshop. It no more makes you a programmer, or dare I say, a computer scientist, than building the crappy speaker makes you an acoustic engineer.

      The kids problem isn't visual studio, the kids problem is that the stuff he's done requires tinkering and doing but no hard thinking. Now he's being forced to think and it sounds like he's finding out that it's not quite as easy as just doing. That's good!

      ymmv.
    • by afaik_ianal (918433) on Wednesday October 26, 2005 @05:47PM (#13884942)
      While I liked his creativity, it was evident his depth of grasp of the workings of programming were as deep as VS allowed him. Cute screens with cute input buttons and cute input boxes. But nothing in the sense of real code.

      This only demonstrates that Visual Studio is a bad environment for "teaching yourself", not that using Visual Studio is a bad thing in our professional lives. VS has fully fledged languages behind it (nothing stopping you from compiling/linking from the command-line...). There is nothing about VS that intrinsically limits the depth of one's understanding.

      For Professionals: I think this point from the professional's perspective is really well covered by Andy Hunt and David Thomas in Section 35 of "The Pragmatic Programmer": "Evil Wizards".

      In summary: If you use code generated by wizards and other similar tools without understanding what that code does, you are going to run into problems. Wizards and generators are tools that can increase your productivity (why bother writing code a computer can write for you?), but if you don't understand what they're doing, then you are going to run into troubles. Finally, their tip: "Don't use wizard code you don't understand".

      For students: Regardless of the language/environment that kids start on, they need someone to guide them. They need to be taught the underlying concepts behind functions and classes. They need to be taught a few fundamental design concepts. They need to be taught some of the common idioms. If they aren't then how can they get it right? For the VS learners, it will be the flashy wizard generated dialogs that do very little, and ungracefully. For the console/C learners, it will be the almost-as-flashy text based menus (generated with reams of printfs), that do very little, and ungracefully.

      Yeah - I originally learnt to program (in Turbo Pascal and C) in a self-directed manner, and I had the same problem as the kid you talk about. It wasn't until many years later at Uni, that I finally learnt to program.
    • by robertjw (728654) on Wednesday October 26, 2005 @05:48PM (#13884945) Homepage
      I tried to turn him on to coding, but he went out and got Visual Studio, and went off on his own. He came back and proudly demonstrated his various creations.

      Shoulda started with Perl. Everyone knows Perl is the best language for learning quality programming skills.
    • by 2short (466733) on Wednesday October 26, 2005 @05:59PM (#13885012)
      "While I liked his creativity, it was evident his depth of grasp of the workings of programming were as deep as VS allowed him. Cute screens with cute input buttons and cute input boxes. But nothing in the sense of real code."

      As deep as VS "allowed" him? WTF are you talking about? I've used VS every workday for 7 years. I gather it has some sort of functions for making cute screens with buttons on them? I wouldn't know, I've never written a gui app.

      He's a kid. He wanted to make something he thought was cool; and he did, good for him. It makes sense he went for the drag-together an EZ-GUI stuff; He made something that looked cool and didn't do much. I'm guessing "looks cool" was his design target.

      Heck, I first got into programing (time to date myself) writing BASIC programs to draw maps of D&D dungeons. 99% of what I learned in my first months of coding was the details of the particular extended ascii set my computer suported. I learned useless trivia and wrote lousy code in pusuit of eye-candy. But eventually, I wanted to move a marker around the dungeon, then I wanted to keep track of what was in different rooms. Today I make a fairly nice living writing complex C++ without a bit of eye-candy anywhere near it.

      In short, leave the kid alone. Soon enough he'll want those cute buttons to do real stuff. If adults can be kept from eliminating his fun by insisting that "real" programs can't look good, he'll be a crackerjack coder in no time.
    • by Sebastopol (189276) on Wednesday October 26, 2005 @06:07PM (#13885079) Homepage
      I think that's a dangerous culture to cultivate in an IT universe.

      Oh Jeez, get over yourself.

      You've completely ignored the subtleties of a choice made by an intelligent mind when presented with different ways to do things. I find it fascinating he went right to the GUI and started developing code that way. Instead, you're peeved he didn't start figuring out what include files to use to do a printf() to a console.

      Maybe the path he blazes will be the next paradigm. History is full of people making huge leaps in technology by finding easier ways to do things that interested them, but were against the norm.

      Viewed from this perspective, I think you should step off and let him learn what he wants how he wants, and not in a way that pleases you.

  • Help! (Score:5, Funny)

    by ArchieBunker (132337) on Wednesday October 26, 2005 @05:10PM (#13884663) Homepage
    Help I did type Y work for years and now I'm doing type X. Things are different and I don't understand, why!
    • Re:Help! (Score:3, Interesting)

      by killjoe (766577)
      This happened to me. For many years I worked on a PHP web site. My setup went like this.

      Apache server with a virtual host to my home directory.
      Mount home directory via samba to my windows workstation.
      SSH into apache machine for cvs access and other tools like grep
      Jedit for development.

      Now I work like this.

      ASP.NET using visual studio.
      IIS running on local machine.

      I can't tell you how less productive I am using ASP.NET. It's mind boggling really. First of all visual studio is a pig, it sucks up virtually all t
      • Re:Help! (Score:3, Interesting)

        by digidave (259925)
        I feel your pain.

        I once worked on a Websphere 5 app where the project was in Websphere Studio. Any slight change to the app required using the deploy feature in WAS Studio and on my 900Mhz laptop that took 40-50 minutes.
  • Great quotes (Score:5, Interesting)

    by tcopeland (32225) * <tom@@@thomasleecopeland...com> on Wednesday October 26, 2005 @05:10PM (#13884665) Homepage
    This is in the section where he's talking about filling in event handlers for a VB form:

    > This bothered me because Visual Basic was treating a
    > program not as a complete coherent document,
    > but as little snippets of code attached to visual objects.

    So true. You can't "read" the program, instead, you can only leap about from handler to handler. And another good point when talking about a XAML demo:

    > It was very, very cool, except that the 12 tick marks
    > of the clock were implemented in 12 virtually identical chunks of XAML.

    I'm not sure about this one - seems that one of the few times that duplicated code is OK is when it's in generated code; i.e., in a JavaCC-generated parser. For everything else, there's CPD, the Copy/Paste Detector [sourceforge.net].
  • Convenient mirror link, as the site seems to be slashdotted already: http://charlespetzold.com.nyud.net:8090/etc/DoesVi sualStudioRotTheMind.html [nyud.net]
  • Force? (Score:5, Interesting)

    by b0r1s (170449) on Wednesday October 26, 2005 @05:11PM (#13884673) Homepage
    They allow and perhaps encourage, but they don't force anything...

    Visual Studio (VS newer than VS 6, up to and including VS 2005) is in the top 3 products MS has ever produced (behind MS Office and MS SQL Server). Powerful, flexible, and yes, it allows for very rapid development.
  • by Work Account (900793) on Wednesday October 26, 2005 @05:13PM (#13884683) Journal
    I don't like MSFT any more than the next guy, but they do a couple things right:

    1) Hardware (keyboards, mice, ...)
    2) Developer tools

    I find Microsoft tools like VS.net and even some of their languages (C#) to be surprisingly good.

    Granted, I prefer Open Source most of the time, but when forced to use certain Microsoft things like Natural Keyboards or Visual Studio, I kind of like them.

    I'm sure I'll get modded down for supporting them, but hey I'm just being honest.
    • by deinol (210478) on Wednesday October 26, 2005 @05:33PM (#13884843) Homepage
      I'm sure I'll get modded down for supporting them

      This is Slashdot. You would have been modded down for supporting them, but you always get mod points for pointing out that you would be modded down.

      Now I'm going to be modded down for not being very funny.
    • by captain_craptacular (580116) on Wednesday October 26, 2005 @05:40PM (#13884902)
      If anyone but MS made Visual Studio I have 0 doubt that everyone on /. would be singing it's praises right now. VS is IMHO if not the best, then without of a doubt one of the top 2 IDE's in existance right now and has been for quite some time. Even in the much maligned VB.net you aren't forced to do anything with the GUI.

      The authors gripes about not being able to see the code in it's entirety are complete BS. All you have to do is expand the conveniently hidden setup and autogenerated code and you can read to your hearts content. The default is to hide most of that code because frankly, it's insignificant. Do you really need to see the declarations for the 250 objects on your form? Do you really need to see the wrappers around database drivers? No and No.

      Are you going to claim that a mechanic who uses the computer in your car to tell him you have a bad sparkplug is a bad mechanic? Or are you going to be quietly grateful that he was able to fix your problem for $50 in 1/2 an hour instead of the old school "hard core" method of slowly replacing part after part until you figure out which was the broken one, which costs you lots of time and money?
      • by ThousandStars (556222) on Wednesday October 26, 2005 @08:27PM (#13885970) Homepage
        Are you going to claim that a mechanic who uses the computer in your car to tell him you have a bad sparkplug is a bad mechanic? Or are you going to be quietly grateful that he was able to fix your problem for $50 in 1/2 an hour instead of the old school "hard core" method of slowly replacing part after part until you figure out which was the broken one, which costs you lots of time and money?

        Since this is /., I'm going to denounce anyone who buys pre-made cars instead of smelting and molding the steel themselves. Let's face it, those who don't design and implement the whole engine and drivetrain, on a lathe, by hand, are girly men at best. Furthermore, if you ever did use a mechanic, I'm going to question your worth as a human being and mock your nickname. In this case, I'll observe that the parent is named "captain craptacular," which hardly inspires confidence.

  • by dubl-u (51156) * <2523987012@@@pota...to> on Wednesday October 26, 2005 @05:15PM (#13884701)
    In the article, he mentions that IntelliSense encourages bottom-up programming, as it can only give hints for existing code. That's less true about IntelliJ's excellent Java editor IDEA (and I think Eclipse too, but it has been a while). Why? Because if you write a method call that doesn't exist, you can hit alt-enter and it will create the method for you. As somebody who likes both top-down and bottom-up approaches depending on circumstance, I think it balances things out nicely.
    • by _xeno_ (155264) on Wednesday October 26, 2005 @05:36PM (#13884870) Homepage Journal

      Eclipse does something like IntelliSense, but it does it correctly, assuming his description of IntelliSense is correct.

      Basically, Eclipse doesn't do anything while you're typing. If you type out "id" and a space, it stays "id" with a space after it. In fact, Eclipse won't do anything if you just type "id." It will only start offering suggestions after you enter a period to access an object's properties and methods. Even then, if you're typing fast enough, it won't pop up anything. If you pause, it will display a list, but it won't alter your typing unless you press enter. So if you have a new object, and you decide it needs an "id" field, which you haven't defined yet, you can simply do "object.id = foo;" and Eclipse won't replace "id" with anything. (It will, however, flag it as an error, since "id" isn't defined in this example.)

      Now there's another feature of Eclipse's implementation: pressing Control-Space anywhere a Java identifier can go will bring up a list of identifiers that can fit there. (This includes things like in doc comments.) So if you don't want to type out "ExcessivelyLongInterfaceNameInterface," you can just type "E" and hit Control-Space, and up will pop a list of everything that starts with "E." However, it will NEVER replace what you're typing, until you press enter. Continuing to type will further refine the list, so if you type "x" after popping on the list above, it'll further refine the list to things that begin with "Ex."

      This gives you all the power of Microsoft's IntelliSense (something I missed when going from Visual J++ to Java 1.2 all those years ago), but causes none of the "don't do that for me" problems the author of the article was complaining about.

      I don't think his complaint was the concept of code assistance, it was Microsoft's implementation.

  • by fyrie (604735) on Wednesday October 26, 2005 @05:16PM (#13884706)
    I'm a C# coder who uses Visual Studio 2003 8 hours a day during the week. I recently got an MRI and the results were unanimous - TEH BRAIN ROT!
  • by Average_Joe_Sixpack (534373) on Wednesday October 26, 2005 @05:17PM (#13884711)
    I will say VS has "allowed" more "unqualified" developers into the mix due to the ease in using the tool, but to say it would effect the creativity of a good developer is bullshit. This guy sounds like the old time machinists who bitch about CNC over a mill and lathe.
  • by Anonymous Crowhead (577505) on Wednesday October 26, 2005 @05:19PM (#13884734)
    Beware the coder who can't for the life of him code without it.
    • by rackhamh (217889) on Wednesday October 26, 2005 @05:28PM (#13884798)
      Why, in case the martians attack and take out all our strategic IDE reserves?
    • by Doctor Crumb (737936) on Wednesday October 26, 2005 @05:32PM (#13884836) Homepage
      Exactly; if a person needs an IDE in order to understand the code, then that person is not a programmer, they are an IDE operator. IDEs are the assembly line of the programming world; you can get cheaper, less skilled labour to produce something adequate using it. I wouldn't say that they necessarily "rot the brain", but they do keep many people from ever improving beyond the level of being an IDE operator.
      • by shadowmatter (734276) on Wednesday October 26, 2005 @06:10PM (#13885111)
        Exactly; if a person needs an IDE in order to understand the code, then that person is not a programmer, they are an IDE operator.

        IDEs can definitely help you understand the code faster, however. Take Eclipse, for example:

        • 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 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.
        • 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.
        • 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.


        Granted, I could understand the code without an IDE, but it's going to take me longer. I don't know if you were being sarcastic (I'm a little tired, so not so mentally keen), but people who use IDEs should not be written off as the equivalent of assembly line operators...

        - shadowmatter
        • by pthisis (27352) on Wednesday October 26, 2005 @08:39PM (#13886046) Homepage Journal
          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.
  • by erroneus (253617) on Wednesday October 26, 2005 @05:23PM (#13884768) Homepage
    Is it good or bad? I can't tell you. But the more disconnected from the environment and the machine, the less comfortable I feel about programming. Then again, the only program languages I know are Assembler for 6809, general forms of original BASIC and C. Object oriented stuff more or less caused me to lose interest in programming because it was increasingly difficult to imagine what the computer was really doing when it was executing my code. With BASIC and C, I can mentally write the assembler code and understand what's going on.

    So... yeah I can see where programmer's eye-candy would be a major distraction for a programmer just getting started. But "back in the day" useful code could be written in Basic and C... wasn't complex or beautiful but served some purpose. In today's visual environments, it's not too hard to imagine kids getting REALLY bored with making meaningless code that doesn't look like the apps they are accustomed to running... but it's that meaningless code that really drives apps right?

    Maybe I'm missing something important (and I probably am) but my initial impressions of graphical RAD tools are that it's a lot of flash and bluster but doesn't inspire a coder to write code.
    • by Dogtanian (588974) on Wednesday October 26, 2005 @07:01PM (#13885498) Homepage
      Object oriented stuff more or less caused me to lose interest in programming because it was increasingly difficult to imagine what the computer was really doing when it was executing my code.

      Would you freak out with something like (e.g.) a Pentium II that converts all the CISC instructions to RISC microcode internally without being able to see it? Just curious...
  • Absolutely Not (Score:4, Insightful)

    by th1ckasabr1ck (752151) on Wednesday October 26, 2005 @05:24PM (#13884770)
    I've posted about this before. [slashdot.org]

    I guess I'm one of those uncool geeks who actually likes Visual Studio. I use it 10 hours/day and it certainly makes me more productive at my job.

    It's also worth noting that VS doesn't FORCE you to do anything. There's always "Win32 console project" if you want to code like that.

  • by mikejz84 (771717) on Wednesday October 26, 2005 @05:24PM (#13884773)
    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.
  • by dubl-u (51156) * <2523987012@@@pota...to> on Wednesday October 26, 2005 @05:24PM (#13884774)
    I often end up reviewing or working on code from other people, and I couldn't agree more about his dislike of generated code.

    Note that there are two sorts: the kind you never edit and the kind you have to edit. I love compilers, as they generate machine code so well that you never should have to look at it. But programs that generate source code or, even worse, documentation, are things I revile. They let an amateur get quick results, but at a drastic reduction in long-term maintainability. As Martin Fowler says, "Any fool can write code that a computer can understand. Good programmers write code that humans can understand."
  • What about Eclipse? (Score:5, Informative)

    by Anonymous Coward on Wednesday October 26, 2005 @05:25PM (#13884781)
    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.
    • by ggeens (53767)

      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.

  • by borkus (179118) on Wednesday October 26, 2005 @05:34PM (#13884852) Homepage
    ...I'd agree that you're just as well off working in a text editor. However, most software projects involve using other folk's libraries - whether Microsoft's, other vendors' or just libraries created by your co-workers.

    I just finished a project where a co-worker of mine worked on the business logic objects for a system and I did the presentation and screen flow. Yeah, I could've fished through his JavaDocs and designs. That would have added 10-30 minutes everytime I had to figure out a new call to one of his libraries. Instead, I could hit "." in Eclipse, pull up the methods and select the one that I needed. In the future, other folks on my team will need to support that code. Being able to receive documentation from within the editor will make their jobs much easier.

    It's interesting that the project that author most enjoyed was a C program he wrote for his own amusement. Unfortunately, most of the coding folks do for money involves working with others. While working individually on a project is more fun, being able to do so is typically a luxury.
  • by G4from128k (686170) on Wednesday October 26, 2005 @05:35PM (#13884858)
    From what I have seen, Visual Studio seems to automagically impose a bunch of programming cruft on any project. The default code structures make it hard to fully understand the what and why. In contrast, Hyerpcard [wikipedia.org] let the programmer draw all the UI elements with a Drawing tools palette and easily add event-driven code into each UI object (Cm-Option-Click took you right to the code space of a UI object). A simple message passing heirarchy let UI messages flow intuitively from UI objects such as buttons to the card with that button to the background of the card to the file (called a stack) that contained all the cards. In short, Hypercard provided an excellent interface for creating interfaces.

    Hypercard had some serious limitations (no data structures, monochrome, single-user applications, sometimes slow on machines under 50 MHz, etc.), but it had a very nice approach to both constructing UI-intensive applications and an extremely fast edit-run-debug cycle.

  • Just try doing an #import with GCC.

    When you switch from VS to GCC you suddenly find many things you had taken for granted aren't there. Hey, where's the RAD? How do I do this? Why don't my #import's work? What's with those unresolved links?

    Etc. etc. etc.

    The great thing with open source libraries like wxWidgets (which is very similar to MFC, by the way) is that you know what you're linking to and how they work.

    So the key word in here is "transparency".
    • by Tim Browse (9263) on Wednesday October 26, 2005 @06:36PM (#13885314)
      When you switch from VS to GCC you suddenly find many things you had taken for granted aren't there. Hey, where's the RAD?

      I fail to see how providing RAD tools in VS is somehow a shortcoming. Isn't that like saying you should rip most of the features out of Emacs because when you have to use another editor they won't be there anymore?

      Why don't my #import's work?

      Anyone who switches from VC to GCC and expects #import to work has bigger problems to worry about. Being a muppet, for one.

  • by heinousjay (683506) on Wednesday October 26, 2005 @05:36PM (#13884869) Journal
    I have been programming pretty steadily for about 30 years now, and only once have I seen a computer fail in a way I'd classify as "interesting."

    I really wanted to hear the end of this...
    • by jbrocklin (613326)
      It was at the bottom of the page as a footnote:

      1It was the late 70s. I was working for New York Life Insurance Company at 51 Madison Avenue, programming in PL/I on an IBM 370 via TSO (Time Sharing Option) and an IBM 3278 terminal. I was using a new-fangled "full-screen editor" called FSE to edit my source code. At one point I pressed the Backspace key and instead of the cursor moving backwards as is normal, the entire screen moved left one character, including the frame of the editor, with the begin
  • Huh? (Score:5, Insightful)

    by Comatose51 (687974) on Wednesday October 26, 2005 @05:37PM (#13884873) Homepage
    Got my degree in CS and programmed almost entirely in *nix and using Emacs. Did my senior thesis using C# and VS .Net. Don't really notice anything different really... The only difference is that I use the .Net library which gives me a lot of prebuilt stuff. VS.Net is not all that different from what Emacs was for me. They both accomplish one thing and that's to save/write my code to a file. I fail to see what was forced on anyone. Programming, the actual process of writing the code is VERY simple. All you need is a text editor and something to compile it afterwards. So I don't see how any tool you use to do that can force you to do anything. If I have bad techniques or habits, that's my fault. If nothing else, VS.Net has made commenting and generating documentation a lot easier. My programming technique isn't something I'm going to blame/give credit to MSFT--not this one for sure.
    • Re:Huh? (Score:5, Interesting)

      by Tuross (18533) <darthmdh@gmail. c o m> on Wednesday October 26, 2005 @07:32PM (#13885705) Homepage
      I've seen this sentiment a couple of times in this article, so I choose you to respond to. Congratulations ;)

      Some background first: I dropped out of University for two reasons, first I wasn't sure if I wanted to focus on software development or network administration and I wanted some industry experience. Second, there were far too many people there who could memorize textbooks and regurgitate the examples, and hence go exceedingly well in examinations which seemed to only test this attribute; yet who could not understand yet explain the concepts being "taught".

      That group I labelled, through its abundance of occurrances, the Visual Basic programmers. Using the term "programmers" loosely, of course. They could paint applications really well (drag & drop little GUI shit around in Visual Studio and come up with something tangible) but you didn't even have to take them outside of Visual Studio for them to be well out of their depth (which they obviously are when you do). Just ask them to explain what any of the Visual Studio-generated code does. They have no freaking idea what their code does, they just know if they drag this here and drop that there and click here and type that, that they get foo.

      Now, in a culture when IT professionals are treated less than dirt, particularly by those in management, the focus is on generating Maggi programs. You know, the classic 2-minute noodles. Tangible results ASAP, don't care that the weird geeky stuff looks like spaghetti and the cook can't tell you what its made of because they simply don't know. All they had to do was drag some shit out of a package and drop it into a saucepan and stir for a little bit.

      Nobody denies that Visual Studio has features that are useful. What is under scrutiny here is the fact that it also has features, and there's some crossover, that enable complete dimwits to produce the kind of results management is looking for in the time they are looking for, leaving those who can actually design and develop software looking incompetent. The PHB doesn't care that the real hacker's design is far superior and the implementation robust, it took 4 weeks longer (because they understood the entire problem and handled all the cases) and dammit the client wants it NOW, who cares that its crap - that's just a small detail that can be fixed later - potentially for more money. This then forms a culture that a particular breed of "programmer" - namely those that can only use Microsoft tools and work solely on the Microsoft platform - are better and that Microsoft solutions are better; not because they are but simply because more quality people and alternative solutions are shut down before their full benefits are realised, because of the impetus on getting a quick buck and must have things NOW.

      I work with someone who only last week could not comprehend exactly how they were going to go about doing a particular job as Visual Studio was not installed on the server. The job involved editing some XML config files and doing some minor Python programming. Visual Studio by default has absolutely zero Python support (Activestate and presumably others have $$$ plugins for it, but that's not the point). That particular sentiment came the day after I installed Vim (with the Cream suite - I do that on Windoze boxes to stop Windoze gumbies whining about the default keybindings - another symptom of "cannot cope outside the box") while they watched on, and we did some of the work together. The whole "outside the box" thing annoys me because this VB programmer culture festers this idea that those who do it the Microsoft Way are somehow immune to the requirement to be flexible. Case in point, there's no requirement for them to "put up with" using something other than Visual Studio - yet you take someone with Unix experience and the onus *is* on them to adapt. I know its because Unix people are far more flexible and generally smarter and more capable, but in reality it translates to our skills being taken for granted
  • by Assmasher (456699) on Wednesday October 26, 2005 @05:38PM (#13884883) Journal
    The tool has nothing to do with whether your fundamental understanding of application architecture is strong or not. What a tool like VStudio or QT Designer DOES do is let people who have no knowledge build applications. That doesn't make VStudio rot your brain. Your brain was either rotted before or not. Most of the worst code I've seen during my career was entered via vi and/or emacs. That doesn't mean vi doesn't rock or that emacs leads to brain rot now, does it?
  • by bwalling (195998) on Wednesday October 26, 2005 @05:39PM (#13884891) Homepage
    All articles like this overgeneralize.
  • by xtheunknown (174416) on Wednesday October 26, 2005 @05:39PM (#13884892)
    I don't care what tool you use. If you aren't a good programmer, you're not going to produce good code, no matter what tool you use. If you are a good programmer, then Visual Studio helps you produce good code much faster.

    That said, perhaps I might agree that people who are learning how to code, should probably do so with as little assistance from the tool as possible.

    This is the same thing I would say about kids learning math. Using calculators rots the brain, don't you think?
  • Not my experience. (Score:3, Insightful)

    by callipygian-showsyst (631222) on Wednesday October 26, 2005 @05:53PM (#13884974) Homepage
    I used to be a Mac and Next developer. Not any more. Visual Studio .NET 2005 (I'm running the Release Candidate), and the C# language are by far the best programming environment I've ever used. And I've used them all, from Pick, to Squeak/Smalltalk, to PL/I on IBM Mainframes, to Cocoa/Objective-C, to Java.


    I don't program in anything else anymore, unless I have to!


    The Mac tools are especially horrible. All XCODE is, is a poorly integrated GUI slapped on top of GNU tools. And heaven help you if one of your binary "NIB" files gets corrupted. You're SOL.

  • by javacowboy (222023) on Wednesday October 26, 2005 @05:54PM (#13884981)
    I don't mean to troll or even to necessarily disagree with the submitter, but I have another perspective to offer.

    Does Visual Studio rot the brain, or is Visual Studio designed for less l337 programmers? (I don't want to say that it's for rotten brains :) )

    Microsoft's strategy is to provide easy to use development tools (ex VisualBasic) and innondate the world with cheap MCSE's trained in 6 month courses to use them. Microsoft can then go to PHBs and tell them their solutions don't require them to hire expensive developers, just these cheaper code monkey MCSE's. I'm not saying all or even most MCSE's are idiots, but from what I read this is a major part of Microsoft's sales pitch.

    This seems to go hand in hand with one of the submitter's conclusions, which is that these tools promote or even enforce rapid application development at the expense of robust maintainable applications.

  • Counterpoints (Score:5, Insightful)

    by boatboy (549643) on Wednesday October 26, 2005 @06:07PM (#13885083) Homepage
    First, none of the features he complains about are unique to Visual Studio- intellisense, visual designers, code generation all have counterparts in other code editors.

    Second, any code editor is a tool. In the end, they are a fancy way to create text files to compile into binary. There are people who use VS to write code without understanding what it's doing behind the scenes, just like there are people who drive without knowing how an internal combustion engine works.

    Finally, there are people who hand-write all their code, waste alot of time, and still write bad code.
  • by mrsbrisby (60242) on Wednesday October 26, 2005 @06:14PM (#13885146) Homepage
    There is no way anyone can wrap my head around 60,000 equally accessible and - as far as the computer is concerned- equally relevant system calls.

    With technologies like "Intellisense" (or the EMACS scratch buffer, or your other local system equivilent- no it wasn't invented here fanboys), you don't have to.

    In contrast, POSIX has relatively few APIs layered underneither relatively few more. Across all the "common" APIs you'll find on a modern Linux system, you'll probably find just about as many as you'll find on Windows.

    However, you'll note that many POSIX programmers refuse to use things like Intellisense (or whathaveyou) for these purposes- not just because they rot the brain (that's something we find out the hard way as well) but because it simply isn't necessary(!)

    I'm almost positive GNOME offers perfectly usable functions somewhere that allow me to put up struts, but I have never used them. Oh I think I went looking for them once, but I didn't look long because once I found GDK_WINDOW_XID() I was back in X11 land.

    Because my knowledge is layered as well, this means that building my application for a platform or environment I don't normally target means that I don't have to learn everything at once. I'm happy to use the normal file I/O operations I use everywhere when I cannot quite figure out the glib way to do it, and so it is I should!

    The win32 development model doesn't make this so easy- APIs are all at the same level (do I want GetDriveType or SetupDlGetDeviceRegistryProperty?), change meaning (e.g. MoveFile working differently on WinME and Win2K), and sometimes completely defying documentation (SqlDataReader.GetChar?) and so on. Worse still, by making all API available equally how is the programmer to function?

    As a result, methodologies that I have used for several decades now are completely inappropriate- I may be able to write a ActiveX control in C, but I certainly would never want to! Not only will Windows dictate your resource files, dialog boxes, and programming structure, but it'll also dictate your programming language as well!

    Enough is enough!

    There are plenty of tasks that are a pleasure to code in perl. Others that Objective-C makes for more fun. Still others I might find a use for Java or even C#, and yet I haven't found any on their own merits that would demand C++ other than the IMAPI* family of interfaces is grossly inaccessible to any other language.

    The consequences are that I keep win32 development to the bare minimum and do not accept any win32 development jobs- and the result? I'm writing more code than I ever did before.

    I'd like to ask anyone who actually enjoys writing software on Windows to tell me their secret. The development tools are lacking, and the APIs are daunting. I dare say the Win32 development environment is the absolute worst ever, so I tenatively question anyone who says otherwise: Have you ever used anything else? (Seriously. Take 30 minutes and write kiosk software in Objective-C and XCode. Take another 30 to see how good ol' GNUMakefiles can improve your life. It's absolutely amazing Win32 developers that see my methods to understand that they can work on sources instead of processes)

  • It's not the tool, (Score:3, Interesting)

    by bmac (51623) on Wednesday October 26, 2005 @06:15PM (#13885159) Journal
    it's the brain using it. A program is only as good as its
    organization. This is why large programs often fail or are
    terribly bug-ridden. The complexity of software grows much
    more than linearly with the number of lines of code. VS.NET
    is an excellent tool for program editing, but it has its
    limits as to the number of files (and, hence, data structures)
    that it can present coherently to the user.

    The challenge for programmers is always how much of the
    design can be visualized in the brain. As much as I like
    VS.NET, it does not allow me in any way to visually represent
    my internal organization of my software, therefore my brain
    is the limiting factor. (AAA, Visio sux and I don't have
    the cash for Canvas X).

    But, hey, what do you think I do on my machine, other than
    read slashdot :-) We programmers are some of the only
    engineers who create our own tools, so stop complaining, and
    get to coding!

    Peace & Blessings,
    bmac
  • by TheNetAvenger (624455) on Wednesday October 26, 2005 @06:38PM (#13885327)
    Whether the 'old' timers (myself being one) like the abstraction of low level coding and what is becoming mainstream, this is an evolution of development.

    Visual Basic back in 1992 was in of itself a massive advance for this type of programming and programming understanding. Look at all the 1000s of VB applications from this time period by people that truly had very little coding experience.

    However, some of the VB programs from this time were quite effective.

    I think the biggest injustice to programming and the programming community as a whole, is the lack of UI guidelines, and understanding usability and User Interaction and User Flow.

    How many times have you grabbed a GOOD program, with brillant LOW LEVEL coded features, but the interface to the application work about as well as a broken pay phone.

    So sure VS can remove the user from 'low level coding', but this is NOT always a bad thing.

    As development EVOLVES, there is NO REASON with the AI in the development tools and the AI in the code produced by these development tools should not be used. Why should a person in the 21st century truly have to fully understand memory allocation, advanced recursion, or even see program past advanced event handlers, as that is what programs ARE - event handlers...

    Why do we have to beat down development tools just because they remove the developer from having to DO THINGS THE Tool or Compiler should DO FOR YOU? This is what makes advanced devleopment and the progression of better applications bloom.

    Go back to the VB of 1992, it was a major eplosion for application availability. Sure some of the programs were crap and from people that had no idea of coding, but there were also serious developers that didn't want to take time to screw with all the crap that a developer in THIS DAY and AGE should not have to do.

    I welcome development tools advancement. Sure there is some fundamental coding knowledge that everyone should know, but you can't blame these tools for this.

    I could have the same arguments about many projects in the Open Source world, they are brilliant, but since the coders have little undertsanding of usability or UI guidelines, they applications are virtually worthless to anyone that is not a geek.

    I'm not even arguing VS is the best set of tools out there, Borland still makes some really great development environments. I still like Delphi, and am amazed of how tight the code it produces, and yet how much it DOES FOR ME, even if I do know how to do the things it is doing for me is irrelevant.

    We not only need to support development that is beyond a text editor and command line compiler, but we also need to support development tools that try to structure and help users with usability for the people that will be using the applications. PERIOD.

    VS and Borland products are pretty good, but they could even be better - imagine a development environment that gives a flag when it notices a break in usability, or gives a compile warning after it 'intellectually' sees the appliction has many inconsistencies that would confuse the user.

    Additionally, VS is even dated for what the new Microsoft Development and technologies are introducing. VS2005 barely touches the abilities of future Windows development - that is why the 'Expression' like of products will be used to augment the UI and User experiene for VS applications.

    Give the world a couple of years, and the foundations of 'native' understanding being built into the next generation of Windows Vista, WILL change not only the user experience, but the development world. Leapfrogging concepts of today.

    Go look up some of the concepts Microsoft has introduced and HAS that are often overlooked, go do a search on the last PDC. There are things in Vista that move development to a new level of understanding and functionality for not only developers, but what the users will start to see in the next 5 years.

    It is like one of the brains behind the XAML and XPS systems in
  • by istartedi (132515) on Wednesday October 26, 2005 @07:05PM (#13885521) Journal

    I can see how you could say that about VS, but I think it applies to a lot of things. If you don't know (or want to know) anything about how computers work, then you could get lulled into just clicking the pretty widgets and filling in the blanks on all the things the wizard does for you. Myself, I use VS but almost always start with a blank project and build from there. When I was first learning in the mid 90s, I got roped into using MFC because of it, but experience has taught me to avoid proprietary stuff like that--and by "proprietary" I mean "specific to a particular system". You could make the same argument against using shell scripts with calls to commands found only on your favorite distro of Linux. If you aren't aware of the existance of a "Linux standards base" or "C99" you are going to get suckered into writing something "trendy" when you didn't mean to. Then you'll find yourself re-writing it 2 years later when the "release often" cycle has made your efforts irrelevant; but I don't hear anybody saying Open Source rots your brain. You have to learn to defend your brain. Defend it against tools that hide too much, defend it against trendiness, defend it against outdated designs touted as the latest thing, defend against marketing, and hold on to what stands the test of time. If you have a good brain, a bad tool might keep you down for a while, but you'll learn, and you can actually "un-rot" your brain.

  • by Transcendent (204992) on Wednesday October 26, 2005 @08:07PM (#13885882)
    Writing C code in vi will rot the brain... or make it stronger.

    In either case, something drastic is going to happen. Tread lightly.
  • by Linknoid (46137) on Wednesday October 26, 2005 @09:23PM (#13886256) Homepage
    I've been using command line tools since my freshman year in college on our HP/UX machine with vi, cc, and csh. Then someone gave me their old computer with Redhat installed, and I transferred my skills to vim, gcc, and bash. I was also taking programming classes, using stuff like Turbo Pascal, Delphi, Visual C++, in addition to our Unix programming on HP/UX.

    But I just have a hard time actually accomplishing useful programming in an IDE enviroment. Delphi was an exception to that. I got a student version of Visual Studio.NET my first year of graduate school, but I just got too frustrated trying to actually do any programming in it. When I discovered MinGW and the ability to create Windows native programs with gcc, I completely ditched trying to use Visual Studio at all. My brain has been rotted, I have been spoiled and I can't deal with the horrible complexities of trying to get an IDE to do what I want.

    I can build my makefiles up from just a couple lines like "all: gcc file.cpp" to 20 or 30 lines as my project grows. Have you ever tried to edit the project files, or move a manually built project into Visual Studio? Trying to create the necessary files manually is pretty much impossible, and I don't think it's even possible to import projects whose makefiles were created by autoconfig/automake.

    As long as everything works in your IDE, it's fine, they're usable, but when you try to do something outside the boundries of "common and expected tasks", well, give me a brain rotting command line any day...

  • by Money for Nothin' (754763) on Wednesday October 26, 2005 @09:57PM (#13886433)
    Petzold literally "wrote the book" on Windows programming. [amazon.com] 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...
  • Windows a la Unix (Score:4, Interesting)

    by cheezit (133765) on Wednesday October 26, 2005 @10:23PM (#13886542) Homepage
    I had the a double stroke of good fortune when I learned Windows development:
    1) I worked in a shop that did cross-platform development with core libraries that had to compile and run across various Unices and also Windows (95 and NT 4.0 at the time).
    2) someone turned me on to Petzold as the best place to start.

    Petzold's uncompromising focus on the code and away from the tools (like VS) allowed me to get used to doing things the "hard" way---rolling my own message handlers, hand-editing .rc files, etc.---instead of using VS's horrible tools like the godforsaken "ClassWizard". And while it took more time in some cases, it allowed me to carry over lessons from the Unix world. Between that and "Deep C Secrets" I was feeling good...

    Unfortunately, the advent of COM/COM+/DCOM prevented this approach from working for too long. For instance, magical precompilers that generate binary files that must be linked into your project to make it "just work"---I'm looking at you, "tlb."
  • by tmortn (630092) on Wednesday October 26, 2005 @11:14PM (#13886785) Homepage
    Are all of you bobble heads agreeing its a good thing to get back to c and 'Feel like a real programer again' really saying you want dejure coding to be re-inventing the wheel everytime you start an app? That for the umpteenth time you will re-create X set refferences and little functions etc.... ?

    No, people who do that (code in lower level languages) build their own "RAD" system with their own code snippets as they build their tool box over time. And in that system EVERYONE has a different hammer, different screw driver and diferent voltage meter and none of the damn things work alike.

    All this guy said in so many words was that he dosn't like the way M$ did it.

    I do agree that VS's habit of saying hands off this code is beyond fucking annoying and borders on down right criminal. That being said I have found no examples of a bar across my path when I want to do something down dirty and hands on. The system is just not set up to do it so it is even more cumbersome than it would be otherwise to get at the gutz. The IDE is what has problems with messing with the designer code... if you don't use the designer and edit your code elsewhere and link it yourself (something he admits elsewhere is possible) then this is no longer a problem. He praises using his own choice of editors in one situation and then in a backhand way is annoyed that the VS environment dosn't provide what he wants. Fine, use something else if you have a problem with it.

    The reality is that modern systems and modern graphical environments have a shitload of dumb overhead programming to be done to handle the stupid ass forms. No matter how you simplify the refferencing system someone is going to complain that if you don't do it all yourself you don't udnerstand what is going on. If you want to redefine forms more power to you. But the power of computing is that once YOU do it that means eveyrone else can easily benifit from it and they do not have to repeat your work. All VS does is leverage all the work done through the years on windows forms in an easy to access and implement manner. It is a GOOD thing that you can punch out a program in a week now that would have taken months if you had to manually handle all the form operations. Remember... all code generated by someone else is like other drivers on the road... if they are going faster they are idiots and if they are slower they are numb nutz. Just think of the generated code as another memeber of the coding team and get over it. You just can't do it all yourself. If it is truly atrocious enough to change then make the effort, else shut up and get on with it.

    There is and always will be a time to go back to the drawing board. At others you reap the benifits of what has come before and enjoy the fact that what once was hard and the domain of the few is now easy and achievable by all. VS is fantastic at bringing application development to the masses. It accomplishes its goal. If that goal isn't what you want then damnit don't use it or figure out a way to adapt it to your purposes. But for crying out loud would eveyone stop bitchign that the thing is not all things to all people.

Those who do not understand Unix are condemned to reinvent it, poorly. - Henry Spencer, University of Toronto Unix hack

Working...