Follow Slashdot stories on Twitter

 



Forgot your password?
typodupeerror
×
Programming Editorial IT Technology

Does Visual Studio Rot the Brain? 790

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 Sourtimes ( 553114 ) on Wednesday October 26, 2005 @06:11PM (#13884671) Homepage
    I ten to turn off all the auto coding features and use it for a really good editor, code highlighting, regex replacement, etc. It is actually really nice when working with both a Database and coding by hand.
  • by Work Account ( 900793 ) on Wednesday October 26, 2005 @06: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 dubl-u ( 51156 ) * <2523987012@noSPAm.pota.to> on Wednesday October 26, 2005 @06: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 Average_Joe_Sixpack ( 534373 ) on Wednesday October 26, 2005 @06: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 @06:19PM (#13884734)
    Beware the coder who can't for the life of him code without it.
  • by js3 ( 319268 ) on Wednesday October 26, 2005 @06:20PM (#13884738)
    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.
  • Absolutely Not (Score:4, Insightful)

    by th1ckasabr1ck ( 752151 ) on Wednesday October 26, 2005 @06: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 rackhamh ( 217889 ) on Wednesday October 26, 2005 @06:24PM (#13884771)
    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.
  • by dubl-u ( 51156 ) * <2523987012@noSPAm.pota.to> on Wednesday October 26, 2005 @06: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."
  • by kerohazel ( 913211 ) on Wednesday October 26, 2005 @06:25PM (#13884782) Homepage
    Apparently parent can't get enough of this crap.
  • Apples and Oranges (Score:5, Insightful)

    by mustafap ( 452510 ) on Wednesday October 26, 2005 @06: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)

  • by x0n ( 120596 ) on Wednesday October 26, 2005 @06:28PM (#13884804) Homepage Journal
    "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
  • Re:Force? (Score:2, Insightful)

    by Slimcea ( 832228 ) on Wednesday October 26, 2005 @06:29PM (#13884812)
    Pray tell - which IDE doesn't? At some point or the other, just about every IDE I've used so far (Delphi, NetBeans, Eclipse, JBuilder) has decided to simply go belly-up and either stop responding to me or start acting in really weird ways.

    Modern IDEs are complex beasts - they've got to parse your code, handle reflection, manage multiple debug processes et al. While I agree that they should ideally be bug-free, complex things often break somewhere or the other.
  • Forced? (Score:2, Insightful)

    by JesseT ( 840296 ) on Wednesday October 26, 2005 @06:30PM (#13884816)
    As a long time user of both MSFT's Visual Studio IDEs, Eclipse, and *nix style (autoconf/automake/emacs/etc.) development and build environments, I have to attest that this article is somewhat misleading. Visual Studio doesn't force you to use drag-and-drop anymore than say Eclipse's Visual Editor plugin. Sure, the marketing people at MSFT spend all of their time talking about how VS let's you do drag-drop-n'-click programming, but that doesn't mean the actual product does solely that alone. You can write everything by hand if you so choose.

    I think we've seen this argument before, but in other forms. How many times have I seen hard-core C and/or C++ programmers state that "automatic garbage collection rots the mind?" Sure, you might not need to keep track of all of those allocations anymore with GC, but you still need to understand how a given garbage collector works in order to write efficient code for that garbage collector. Same goes with Visual Studio and managed applications: you need to understand the underlying system (in this case the .NET CLR and class library framework) to get the most out of it.

    Professional developers worth their salt understand this.
  • by georgewilliamherbert ( 211790 ) on Wednesday October 26, 2005 @06:31PM (#13884821)
    Geez...

    If the first tool you introduce someone too teaches people, particularly bright kids, not to think about...

    • What tools are best for the job...
    • Why different tools are best for the job...
    • What the nuts and bolts behind pretty drag and drop interfaces are...
    • Why you want nuts and bolts behind the pretty interfaces...

    ...then that tool is a horrible teaching tool. Period. Programming is not about pretty interfaces, as the original comment notes. That's part of producing functional modern programs, but if you mistake doing that for actually programming, and your tools teach you to make that mistake, you're in trouble.

  • by b4k3d b34nz ( 900066 ) on Wednesday October 26, 2005 @06:32PM (#13884834)

    The problem here doesn't have so much to do with VS as it does the mentality of any given programmer. VS provides you with a WYSIWYG interface which does most of the connecting of elements, events and properties for you, without ever touching the code. THAT'S A GOOD THING. If the user doesn't have any experience with programming, they'll probably stop there and will have what amounts to a bunch of disorganized components in a form. When it comes to IDE's, the program can only be as good as the programmer. Sure, it'll provide necessary hints and make code/program/solution development quicker or better, but unless the programmer knows what's happening, they're going to create some BS program.

    Most would laugh at someone who tried to create a decent web page in FrontPage and it looks like a turd. Why? Because most people who use FrontPage usually don't touch the markup and can only get to a certain level. Once again, the output is only as good as the programmer (or developer, whatever). If the web developer knows good practices like using CSS, external files and correct markup, the website will probably look good or better. The same goes for programmers and VS--if the programmer doesn't know the difference between a function and their mom, they'll only go so far (and they probably have other issues too).

    Don't blame someone's bad coding job on the IDE. It can't force you to adopt shoddy programming practices unless you didn't know any in the first place.

  • by Doctor Crumb ( 737936 ) on Wednesday October 26, 2005 @06: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 nmb3000 ( 741169 ) on Wednesday October 26, 2005 @06:33PM (#13884845) Journal
    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.
  • by borkus ( 179118 ) on Wednesday October 26, 2005 @06: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 LibertineR ( 591918 ) on Wednesday October 26, 2005 @06:36PM (#13884864)
    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 languages that it supports.

    Now, some might argue that features like 'intellisense' can help you remember the depth and breath of the WIN32-64 APIs but that is not close to doing what it takes to become a profiecient programmer. The only thing that teaches you how to code, is to CODE, CODE and CODE SOME MORE. In addition to that, it wouldnt hurt to learn from others, from books, from classrooms, user groups, etc, what programming is all about.

    If you (or your good(but not so brilliant) friend think that by picking up an IDE that it will teach you how to really program, then you both need counseling.

  • Its just a tool (Score:2, Insightful)

    by Zaai ( 817587 ) on Wednesday October 26, 2005 @06:36PM (#13884866)
    Tools are there to facilitate the developer. If the tool doesn't force you to look in depth at the code it generates it can be more productive than tools that do force you to look at auto generated code. This has nothing to do with proper software engineering practise. A good software engineer will first think about use cases, requirements, design before touching the tool. So don't blame the tool for bad development practise.
  • 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".
  • Huh? (Score:5, Insightful)

    by Comatose51 ( 687974 ) on Wednesday October 26, 2005 @06: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.
  • by Assmasher ( 456699 ) on Wednesday October 26, 2005 @06: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 xtheunknown ( 174416 ) on Wednesday October 26, 2005 @06: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?
  • by Anonymous Coward on Wednesday October 26, 2005 @06:40PM (#13884894)
    It's not about "an MS development platform" - it's about a wizard-packed, macro-laden, obfuscuated way of programming. Visual Studio is a gem of a programming environment and I use it for my own C++ science apps. I just don't use the things in it that sprawl my code across 20-odd different source files and make coming back to it at a later date a nightmare. And that's a news flash for you.
  • by captain_craptacular ( 580116 ) on Wednesday October 26, 2005 @06: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 afaik_ianal ( 918433 ) on Wednesday October 26, 2005 @06: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.
  • Not my experience. (Score:3, Insightful)

    by callipygian-showsyst ( 631222 ) on Wednesday October 26, 2005 @06: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 @06: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.

  • by 2short ( 466733 ) on Wednesday October 26, 2005 @06: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 @07: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.

  • Counterpoints (Score:5, Insightful)

    by boatboy ( 549643 ) on Wednesday October 26, 2005 @07: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 shadowmatter ( 734276 ) on Wednesday October 26, 2005 @07: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 mrsbrisby ( 60242 ) on Wednesday October 26, 2005 @07: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)

  • by Hiro Antagonist ( 310179 ) on Wednesday October 26, 2005 @07:14PM (#13885149) Journal
    The problem with this approach is that it is the same as allowing calculators for students who are learning to add fractions. The calculator is certainly the faster way, and in my professional life, I will likely use a calculator over adding fractions by hand, but when you are learning the fundamentals of mathematics, it is much more important to understand what's going on than it is to simply get the right answer.

    Likewise, Visual Studio is a great way to generate code, and can be a great tool for professionals. But teaching people to program with it is another matter. Visual Studio completely abstracts these beginning programmers from what the program is actually doing, and without and understanding of what's going on under the hood, you aren't much of a programmer.
  • by 2short ( 466733 ) on Wednesday October 26, 2005 @07:16PM (#13885163)

        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 World!" to the screen. Woo-Hoo!!! What kid wouldn't love that? I mean, sure, I did. But I can kind of fogive kids today if text appearing on a screen does not strike them as quite so miraculous.

       
  • by bfizzle ( 836992 ) on Wednesday October 26, 2005 @07: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.
  • by superdoo ( 13097 ) on Wednesday October 26, 2005 @07:20PM (#13885197) Homepage
    And this post surely will not be modded insightful...
  • by Anonymous Coward on Wednesday October 26, 2005 @07:26PM (#13885239)
    I find Microsoft tools like VS.net and even some of their languages (C#) to be surprisingly good.

    Compared to what? You haven't used Eclipse [eclipse.org], have you? I use both Eclipse and VS.Net 2003 at work, and VS.Net is "good enough" as an IDE but miles away from the productivity you get from Eclipse.

    Not only is Eclipse one of the best IDE's out there, it is free/open source and available for multiple platforms. And it's not just for Java, it also does C/C++. And there are plugins for Python, PHP, Ruby, etc.

    1) Hardware (keyboards, mice, ...)
    certain Microsoft things like Natural Keyboards


    I used a Microsoft Natural Pro (the only good one they made) for over a year, but soon realized what an inferior keyboard it was when I tried some older non-split keyboards. But that really applies to most keyboards made these days, they are almost all crap. Pick up a buckling spring [dansdata.com] keyboard from here [pckeyboard.com] and you'll find your typing speed and comfort increase. They are not as loud as you'd think either (maybe the original IBM's were), but they do sound different.

    Microsoft's recent keyboards have one incredibly stupid "feature": no Insert key. Need I say more?

    I've used plenty of Microsoft mice, from the standard white ones (which weren't too terrible) that used to come with most PC's, to the Intellimouse's (total crap). The Intellimouse I had at work, despite looking cool and having a bunch of fance buttons, was two heavy and did not fit my hand correctly, I eventually ditched it and brought in a Logitech I had at home. All the Logitech mice I have used have been better than any mouse Microsoft has produced. Right now I'm using an MX310 which is great if you don't mind that its not wireless.

    Microsoft's products (hardware and software) are "good enough" but not certainly not "great," especially when you compare them to what else is out there. It's hard to realize this if you haven't experienced much else.
  • by d34thm0nk3y ( 653414 ) on Wednesday October 26, 2005 @07: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 Tim Browse ( 9263 ) on Wednesday October 26, 2005 @07: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 TWX ( 665546 ) on Wednesday October 26, 2005 @07: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 admdrew ( 782761 ) on Wednesday October 26, 2005 @07: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 Dogtanian ( 588974 ) on Wednesday October 26, 2005 @08: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...
  • by Randolpho ( 628485 ) on Wednesday October 26, 2005 @08:05PM (#13885522) Homepage Journal
    I have to say, for such a long post, you got quite a bit wrong. While I agree with you that current default implementations of Visual Studio would be greatly improved with some refactoring/generation capabilities, there are two important things you left out: 1) there are third-party refactoring tools available for Visual Studio that, frankly, rock, and 2) refactoring support will be available with the new version of Visual Studio due out next month. Written, in fact, by one of those third-party vendors I mentioned.

    So what if you don't like the Object Browser? Others find it a very useful tool. If you don't, you don't have to use it, now do you?

    Fact: Incremental compilation is already available in Visual Studio.

    Now, I'll grant you that Visual Studio only supports VSIP for source control, but there are tons of third-party plugins available for

    As for import organization... It's not really that important. Yes, it's a neat feature of Eclipse, one that certainly helps reduce namespace clutter, but it's gravy, not meat.
  • by panoplos ( 584853 ) <panoplos@NospaM.netscape.net> on Wednesday October 26, 2005 @08:28PM (#13885684)

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

    It is not the responsibility of the tool developer to insure the user has a clue.

  • by Frobnicator ( 565869 ) on Wednesday October 26, 2005 @08:29PM (#13885688) Journal
    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 samples. (God help us all! And MSDN Team: I write you EVERY THREE MONTHS that is is int main() and not void main().) When some of my team was asked to help them write unit tests for their code, we gave up and told them to rewrite. When they wanted to add more functionality, they couldn't and finally asked us for help. We told their boss (not their team lead) to rewrite when we found that every button had their own set of SQL calls and set the state of various controls on the form. Most of the buttons duplicated the work of all the others.

    Contrasting it with our beautiful code. :) Ours looks like it was planned, mainly because it was. Only one of our projects is a GUI. The rest provide libraries with M/V/P or M/V/C structure. It is all under unit test, and adding features is a joy. Well, as much of a joy as work can be.

    VS itself is not the problem. It's the developers who never learned how to program that are the problem.

    frob

  • by atokata ( 872432 ) on Wednesday October 26, 2005 @08:32PM (#13885704)
    I recently saw, first hand, how Visual Studio should *not* be used. The problem with rapid application development is that generally, as with any precise scientific endevor, the more rapidly the work is done, the more opportunity to make massive mistakes. In my recent experience, I came across a fellow who had started working on a database system for a small mechanical company. He obviously had programming experience, and even wrote some fairly good conditional loops for processing payroll taxes. However (and largely due to inept management who did not have any programming expertise) he found himself making larger and more extravagant promises of expanded features to his bosses. Eventually, because of the way his program had been rapidly banged together, he found himself 'paited into a corner,' unable to deliver his promised new features without an extensive rewrite. In this respect, I feel that RAD tools, such as MS-VS, can lead to even greater delays than carefully planning and writing all the code by hand.
  • by Anonymous Coward on Wednesday October 26, 2005 @08:38PM (#13885737)
    Also, the auto-fix that generates those stubs makes it quite easy to program top-down in Eclipse. Just reference classes/methods you haven't written yet, and choose "create" and then leave the stub until you feel like filling it in. If you want to change the arguments later, refactor.
  • by HawkingMattress ( 588824 ) on Wednesday October 26, 2005 @08:53PM (#13885811)
    look at The post just above you [slashdot.org], he's right.
    It's a friggin kid we're talking about. What did you do when you were programming as a kid, if you did ? I know i tried to have the computer display fancy stuff, in stupid ways. I wrote some sort of "demos" consisting of loops like
    for i=1 to 100
    box (i, i, i, i)
    cls
    next i
    or composed some sort of animations in an ascii 8x8 grid because i didn't know of sprites and all the stuff. That was probably stupid, utterly useless, and definitely not the good tool for the job. I should have been using assembly at the time, and some sort of backbuffer instead of calling cls... But what the heck, that's what made me love programming. At the time i remember i tried to join some computer clubs, but they all were doing some things i thought were utterly boring, like learning how to use spreadsheets, or having programs "behave in an intelligent way" (that is, validating input...).
    They were right, validating input is more than necessary in even the most stupid program, and using a spreadsheet instead of making a custom program yourself for each formula is certainly a good idea. But it wasn't fancy, and was very boring to do... Let this kid alone, he'll understand soon enough that you can certainly make nice looking programs with vs, but you have to learn programming to have them do anything usefull. And if he's really interested, he'll learn that too. And i'll congrat him because frankly, when i was a kid learning to program 8 bit computers was certainly a fun thing to do, but now with all the stuff you have to know, the fact that you can only access the computer via stupid apis that you have to learn, you have to be really interested by it to find it amusing. Computers are boring nowadays, seriously...
  • by mikael ( 484 ) on Wednesday October 26, 2005 @09:06PM (#13885877)
    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.
  • by Linknoid ( 46137 ) on Wednesday October 26, 2005 @10: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 stevey ( 64018 ) on Wednesday October 26, 2005 @10:33PM (#13886301) Homepage

    On the other hand I learnt a lot about computers, and had a much simpler time understanding pointers and C concepts than almost anybody else I knew - because I'd grown out of the limitations of BASIC and started writing programs in z80 assembler.

    To me the notion that a pointer was merely an address was completely obvious, and I didn't have many problesm with it. Seeing students learning C and struggling is almost painful to me these days.

    Because beginning programs nowadays really have it a lot harder than I did. Sure they have pretty GUIs and can do more complex things but they don't need to understand the computer from the bottom up like I did when I was a child.

    This invariably means they don't learn the computer, so things like pointers are a mystery to them. (Maybe that is a good thing, maybe not, but it is certainly a different world now). But not knowing what is happening is much like not understanding the code generated by the wizards in Visual Studio. Sooner or later you'll find yourself in over your head and will have no idea what has gone wrong.

    (And sure I accept that I had it easy when I started coding in BASIC and had a snappy casette deck to save code on, compared to programmers before me)

  • by Z34107 ( 925136 ) on Wednesday October 26, 2005 @10:48PM (#13886386)

    Everyone here seems to be under the impression that Visual Studio hides the source/nuts and bolts/inner workings from you. It doesn't. You can program assembly and K&R C if you so wish. (Using Visual Basic/J++/C# is a different thing, but that's more of an argument against those languages than Visual Studio.)

    Granted, you can draw a dialog box by hand, but you can also create that dialog by assigning an HWND to point to the result of a CreateWindowEx(). You can also manually code your own .rc resource scripts and use the MAKEINTRESOURCE macro. Do whatever makes you all warm and fuzzy inside, but don't say Visual Studio is t3h n00b! shift+1

  • by dumbskull ( 895120 ) on Wednesday October 26, 2005 @11:36PM (#13886604) Journal
    Lucky dog, You had zeros?, we had to use the alphabet 'O'
  • Re:C complications (Score:5, Insightful)

    by I Like Pudding ( 323363 ) on Wednesday October 26, 2005 @11:44PM (#13886653)
    Perl isn't "complicated." It's just that C is retarded. I mean, really, in the "real world," you will never have to make a starry background. Perl (and especially Ruby) allow the perfect mixture of very high- and high-level elements. In fact, in Ruby, you can mix in modules and polymorphically redefine derived classes in the same function if you were so inclined.

    And, *no*, you do not have to understand anything about rendering black or whatever. No Fourier transforms or 11-dimension existentialism either. (The only "strings" for you are scalars!)

    Anyway, your code in Perl:
    perl -e'while(){print int rand 99.99?" ":"."}'

    Written in a term, by the way.
  • by 2short ( 466733 ) on Wednesday October 26, 2005 @11:58PM (#13886715)
    "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) along with the other self-repecting geeks. By 93 I was out of college and working at my first programming job.

    I guess I don't understand what "bad habits" one will suposedly acquire from VS. Is making an app with a nice GUI a bad habit? Is it the drag-and-drop building of said gui people object to? Seems like the optimal way handle automatable stupid stuff like putting together gui widgets. Who want's to tweak source to line up checkboxes? I certainly don't see how VS "forces" any of this on you. I for one don't use any of that, because my code is generally library stuff with no user front end at all.
  • by tmortn ( 630092 ) on Thursday October 27, 2005 @12:14AM (#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.
  • by CortoMaltese ( 828267 ) on Thursday October 27, 2005 @02:44AM (#13887292)
    ...IDEs are a great tool for managing larger programming projects.

    Last time I looked (and admittedly, this wasn't recently), the IDEs on Windows always brought dependencies on the particular user's environment. Dependencies such as absolute file names, environment variables, registry settings, etc. For the solo programmer, this may not be a big deal. But in my job, every single member of the development team has to be able to build the exact same binary from the same sources. The dependencies on the environment made this practically impossible, and we switched to using command line compilers/tools and GNU Make (which also has its wrinkles, but that's beside the point). In addition, the project files containing the compilation options etc. were usually binary files, and the actual changes to them from version to version were painful to trace.

    My question is, have these issues been addressed in recent versions of Visual Studio? If not, I really couldn't recommend it for managing larger programming projects with more than one developer.

  • by Anonymous Coward on Thursday October 27, 2005 @03:25AM (#13887399)
    As if there wasn't proof enough already that moderation here on Slashdot is fucked up.
  • by Cederic ( 9623 ) on Thursday October 27, 2005 @04:41AM (#13887561) Journal

    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 mechanically repeat simple actions.

    I like the article. I don't use VS, I don't write code for Windows any more, I've never written anything in c#. I can also relate to everything he's said, and agree with most of it.

  • by kbw ( 524341 ) on Friday October 28, 2005 @05:25AM (#13895315) Journal
    Prior to Visual C++/Turbo C++ IDE's, the Windows C programming was based on make files (nmake files?). You would customise it to do exactly what was required, but when C++ and MFC/OWL came about, so did new tools.

    It's all about trade-offs. You can either require the developer to add a library every time he uses it, or add an unhealthy amount by default and allow the clever developer to remove the excess.

    The IDE is about ease of use. You sacrifice your cool macro-language extended editor Brief, PE, ...) for the colour highlighted bland editor. You don't have to configure it to get F1 help. It's got better over the years and it's available to everyone.

    That is the point; availability to everyone. The tools lower the barriers to entry. It's much easier and much less frustrating to have Visual Studio create a running empty app that you can customise or prise apart, than it is create one from scratch using a set of disparate tools. (There's a lesson in here for Linux development somewhere.)

    If you're knowledgeable enough to hate it, you probably know enough to work around it.

"Life is a garment we continuously alter, but which never seems to fit." -- David McCord

Working...