Does Visual Studio Rot the Brain?
duffbeer703 writes "As a UNIX guy dragged kicking and screaming into the Windows world, I've never really been able to enjoy Windows programming. Charles Petzold, who is a long-time developer for DOS & Windows really laid out the reasons for me at the NYC .NET Dev group. Visual Studio and Microsoft tools force you to adopt programming techniques designed around implementation speed, not understanding or quality."
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.
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.
If you "get" pointers add me as a friend (116)!
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!
Beware the coder who can't for the life of him code without it.
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."
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.
You seem to be comparing 'Playing with Visual Studio' against 'Taking programming classes'.
:o)
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
Open Source Drum Kit, LPLC deve board - mjhdesigns.com
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.
You are in a maze of twisty little relative jumps, all alike.
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.
EvilCON - Made Famous by
All articles like this overgeneralize.
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.
Wanted: Clever sig, top $ paid, all offers considered.
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.
Find coupons in Greeley
"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.
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.
https://www.accountkiller.com/removal-requested
TRS-80 and a TV? Lucky you! In my day, we had to write the equivalent of Hello World, by entering the binary code via the Altair's switches. 6 hours later (because you would inevitably screw up and have to start from the beginning) the panel lights would flash "Hello World" in Morse Code. And we had to walk through 10 miles of snow to get to the computer - barefoot!
You had binary code ? Lucky you.
When I was a kid, I had to write the Hello World program using only 0's.
morcego
You had mercury and pipes?
In my day, we had to create a religion that induced the masses to spend millions of man-hours moving stones just to get a working calendar!
"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.
Do not look into laser with remaining eye.
Earth? Cool? Lucky, lucky you, weren't you the spoiled brat? Back in the day, I had to envision a billion Buddhas within a billion Buddhas within a billion Buddhas, all on top of a turtle's back just to get a big bang and some actual space time with matter...
I had to get up in morning at ten o'clock at night, 'alf-hour before I went to bed. Eat a lump of cold poison, work twenty-nine hours a day down 't mill, and pay 't mill owner for permission to come to work, and when we got home, our Dad would kill us, and dance about on our graves singing "Hallelujah."
--
MP
Sig Appended to the end of comments you post. 120 chars.
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
DATABASE WOW WOW
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.