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.
Visual Studio may rot the brain, but that's better than the testicle-rot I get from an average linux install. Don't get me started on the rectal cancer I contracted by using BSD...
Help I did type Y work for years and now I'm doing type X. Things are different and I don't understand, why!
Only the State obtains its revenue by coercion. - Murray Rothbard
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.
The Army reading list
Convenient mirror link, as the site seems to be slashdotted already: http://charlespetzold.com.nyud.net:8090/etc/DoesVi sualStudioRotTheMind.html
quidquid latine dictum sit altum videtur.
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.
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.
Mooniacs for iOS and Android
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)!
Microsoft? FORCE? No way!
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.
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!
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.
There's a reason we start with printf("Hello World."); and not with dragging a text box into a big white rectangle.
Visual Studio and Microsoft tools force you to adopt programming techniques designed around implementation speed, not understanding or quality.
p ment/
So VS makes implementation easier. Does that lead to sucky code? No. It just lowers the bar so that sucky coders can knock something out.
Here are some guys who compare a GUI design using VS to Mac OS X. Executive summary: VS does well in polish, although after some tool development on the Mac side it holds its own:
http://blog.phanfare.com/2005/10/mac-vs-pc-develo
But any excuse to bash Microsoft, eh?
Beware the coder who can't for the life of him code without it.
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.
did you forget to take your meds?
My much younger brother is going into computer science with a bent toward game programming and most of his courses focus on Visual C++. He is aware of Linux and Unix (because it's what I do for a living and all of my personal stuff runs either on that or OSX), but I doubt anyone is going to teach their programming courses on anything else (for the most part), for the same reason nobody is going to require that students have OpenOffice or StarOffice instead of Microsoft Office.
*sigh*
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.
..."Edit and Continue" are awesome features, and I wish that an open-source IDE had them. Actually, kdevelop's Intellisense is coming along nicely, so that just leaves the latter. I doubt we'll ever see it in our lifetimes, though :( These two features are really the only things I admire about Visual Studio (I'm not interested in the "Visual" aspect at all), which in turn is the only product of Microsoft's that I admire. I can live without them, but going back to make, gcc and gdb feels like going back to the stone ages.
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.
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.
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.
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."
Coming from a Java/Eclipse background, there are some things about Visual Studio that really annoy me.
1. Go To Definition works about 75% of the time in VS, but it seems to need to do a lot of searching in order to find where a class or interface is declared. In Eclipse, I can control-click on a class, method, or variable, and 100% of the time it will quickly jump to its definition.
2. Go To Reference is worthless and just does not work in VS. Contrast this with Eclipse, which will not only find all references of a given class, method, variable, etc, but can give me a call hierarchy to let me jump back in the call stack to find out how low-level methods are called.
3. I miss Eclipse's Open Type, where I can start typing the first few letters of a class and have it list matching classes in the project.
It's not all bad, I do like some things about VS and C#. I do like C# properties. I like the Command Window in the debugger, and I like being able to right click a statement and set another line as the next statement while debugging. The point-and-clickyness of the form designer is nice.
However, it seems like I do a lot more plain old text searching in VS (for classes, methods, etc.) than I ever did in Eclipse. I feel that Eclipse lets me code at a higher level of abstraction than VS does.
I'm the lead dev on an ASP.NET project consisting of 500 pages, dozens of web services, and several rich client apps. In all of that there has been zero dragging and dropping.
This article is crap and comments thus far are even worse. MS gets stuff wrong, but VS is not one of them.
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.
Apparently parent can't get enough of this crap.
Skype is too convoluted... Now I'm reverse-engineering the Kyoto Protocol.
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
It seems like your problem is that you gave him a tool and he found something fun to do. Visual Studio can be used to do many things not just make GUI Apps, I haven't made a GUI app with Visual Studio in a long time. The reason I use Visual Studio is to keep all of my files organized with a project and all of my projects organized within a solution, I also use it to compile my code.
VS.Net makes developing simple applications very easy. It also makes programming very complexe applications relatively easy. True, your average entry level programmer is not going to be getting into threading, memory management, abstraction, multitier design fundamentals and design patterns. But they are there and amazingly easy to use in .Net. I would say that Microsoft's development tools are one of the primary reasons why we have seen equally impressive if not better languages drop of the face of the planet (Power Builder vs VB5). I've been out of the Java loop for almost 2 years ago, but last time I worked with it your choices in IDEs were basicly, crap, and crappier. Either you delt with bloated interfaces that sucked resources, or you worked in a text editor by hand. At that same point in time VS.Net 2k3 was available with an amazing amount of developer assistance tools. And now with VS.Net 2k5 coming out, there are so many great tools to save us even more time! With the exception of default instantiations, VS.Net 2k5 is looking like the best IDE released to date.
-Rick
"Most people in the U.S. wouldn't know they live in a tyrannical state if it walked up and grabbed their junk." - MyFirs
Why, in case the martians attack and take out all our strategic IDE reserves?
"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
PGP KeyId: 0x08D63965
Caveat: I did not RTFA. Implementation speed and efficiency is part of total speed and efficiency too. In my case, I'm a graduate student in physics, not computer science. Though I personal don't use visual [x] products, my problem solving approach is frequently "quickest and easiest path to a working solution." Often there are more efficient ways, but I know that when I factor in the time I would need to spend studying and experimenting, it turns out to be a quicker solution over all to take an easier route.
I'll take a text editer and CLI over an IDE anytime.
Ok, not anytime. The IDE search & jump facilities are extremely useful when you first sit down to work on a code base that you aren't familiar with. But for my own code, or for others' code that I've worked with long enough to understand reasonably well, I find IDEs a nuisance.
Sheesh, evil *and* a jerk. -- Jade
It would of been a more worthwhile article if he had compared these problems with other IDEs such as borlands or eclipse. Maybe 'IDEs rot the brain'?
.NET console applications with textpad and BAT files. What does c have to do with it?
That being said, I have written
Please sign petition to restore sanity to our banking system!!!
http://financialpetition.org/
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.
.NET CLR and class library framework) to get the most out of it.
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
Professional developers worth their salt understand this.
How can you implement something that you don't understand?
How can you fix something that you don't understand?
Once you've optimized the inner loop, the only way to improve your code is to change your abstractions, or change your implementation completely. That requires that you understand what you're doing. The more you understand it, the better your program can be.
I'd suggest test driven development, it interleaves design and implementation. Because, you can't implement something that you don't understand, and understanding often comes just after you wrote the code that requires or is required by the code you are about to write.
Shae Erisson - ScannedInAvian.com
C/C++ is the most used language in the world for a reason. Go learn something about it before knocking it. Java is a slow, time consuming, BOX of a language. You can only go as far as Sun wants you to.
Go read the "Art of computer programming" series, learn something about C and C++ on platforms such as linux and windows. Then come back to java and see how limited it really is.
Open your eyes you lazy mother f*cker
If the first tool you introduce someone too teaches people, particularly bright kids, not to think about...
If it matters in the least whether a non-OS programming class uses Windows or Linux, it's a lousy class.
I *HATE* visual studio. I find myself doing it in notepad instead!
Now, in other IDEs, like Kdeveop, you dont get all that wiz-bang stuff, you need to actually KNOW what your writing.
Not to mention, the interface sucks in visual studio (IMO)
Sure....... you can put together some little window that does neat little things
but pointing and clicking, but do you know what its actually DOING?
How does it draw that button, or that textedit in there?
If you dragged it onto the screen and set a few things here and there, who is doing the work?
His reaction so far to having to actually write and understand code is that it is stupid.
Less competition for me.
If you want him to learn the correct way to program, show him the DFT. Then, run that DFT on a sequence of 1024 samples. After that, show him the FFT. Finish up with one of djb's beautiful, hand optimized assembler FFTs. If he doesn't get it, then he just won't get it: not everybody is meant to be a great coder.
If he does get it, then start him on some cryptography code, but more importantly is for him to notice that neither of these utterly important topics is programming. They're both math more than computer science, and computer science before mere programming.
This isn't meant as an insult on the son. Coding really isn't for everybody, and it's not at all an indicator of intelligence. I've seen drooling morons who could produce terrific code, and some of the ugliest code around spills out of the brains of genius cryptographers; however, if you want to cultivate him into being a coder, show him Lisp.
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.
Grammar Lesson: you're is a contraction of "you are"; your means you possess something; yore means days gone by.
I have been coding for years, and the latest VS offerings are crap. VS6 was pretty nice, as you could at least igonre the MFC auto generated code and just write whatever you wanted to.
More recent versions of VS are just awful. They try to 'help' you so much, it just gets in the way. Compund that with the way that MS products intrgrate with each other, and you have a nightmare of a program. And yeah, too much stuff is hidden behind pretty drag and drop component menus.
I think the reason that MS is so interested in search engines lately is not due to a desire to compete with google, but just to have a search engine that can find a useful article in MSDN when you need it.
HA! I just wasted some of your bandwidth with a frivolous sig!
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.
I can purchase a software package faster than you can create one in java... so, according to your approach, you're the one who's a dinosaur wasting your own time coding.
Fact is, the package I buy will be bloated with extras that I will never need or use.
Programming in RAD languages is no different. You make a call to a pre-existing function/component/"GUI element" and sure, it does the job quicker, but how many bugs does that come with that you dont know about, cant see, and cant fix yourself?
I agree that certain 3GL and 4GL development languages have their place, and so do the 1GL and 2GL's. if people choose to write in a language that is 1 level closer to machine code than what you're using, Kudo's to them for learning about what they're doing, but dont knock them, or you're no better than the guy who built Jurassic park.
----- Concentrate on promoting more than demoting.
You didn't read the guy's post at all. You saw the word Java and the knee-jerk reaction just *happened*.
If you take a closer look, the GP uses the introduction of Java programming as being "proper" programming, and antithetical to the Visual Studio way of doing things.
In future: read, understand, then post.
the layman's guide to computer science
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.
"What do you despise? By this are you truly known." --Princess Irulan, Manual of Muad'Dib
/)
See, it sounds like the real problem here is the whole "visual programming" thing rather than the IDE. All of the 'problems' sound to me exactly like my experience of using C++ Builder years ago, when I was hurriedly knocking out some pointless test apps while learning the basics of C++. I quickly discovered Builder was fairly useless for this purpose, and went to using VC6 to write command-line programs, which was much more educational.
I've now used VC6 and VS.Net professionally. Again not as visual programming tools, but as compiler/debugger frontends for various consoles. They absolutely rock - nice, stable, coherent(ish) IDEs that have less in the way of annoyance *for me* compared to their main alternative in my area (CodeWarrior), or indeed any of the free/open-source IDEs I've used so far.
For the sake of completeness, I must add that Eclipse looks absolutely awesome, and I'm about to invest some time in learning the ins and outs of it. It looks to have all of the VS good points and adds a few of its own (even more customisable, partially down to being open source!).
Game dev and music blog
in Highschool I took both visual basic and Java courses. I have hated VB and Visual Studio ever since. Its the worst way to introduce a relative n00b to programming. Because it really isnt. It only allows us to use lower level thinking. Everyone's programs in the class were very simliar in nature (we were allowed to create a small little video game of our own design). The only interesting thing was that I made a little rts game, and everyone used some shiity code from a shitty book to move images. Resulting in a quite unnatural looking white flashing graphics. Everyone else pretty much made some text based game or pong, boy did it stiffle creativity. Although, in my java class I made a Stephan Hawking Pac man, and everyone else pretty much did a card game or pong. So maybe Im just blaming VB and VS on some really uninteresting geeks at my school.
public class null extends java applet { System.out.print ("Tabula Rasa"); }
Just as repeated use of calculator degrades a person's math skills I agree that Visual Studio can degrade a programmer's ability to remember all the aspects of a language. However, it really only affects those programmers who are lazy. Many people have already noted that it is easy to turn off the auto-whatevers and use code. You can go further and just use the command line. Lazy FU|5. Also, if you don't use Visual Studio why are you reading this?
...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.
Full article
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.
Two wrongs don't make a right, but three lefts do.
hehe, I need my eye's checked... for a moment there I thought you said XBOX of a language!
----- Concentrate on promoting more than demoting.
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.
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".
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...
Slashdot - where whining about luck is the new way to make the world you want.
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.
So you blame Visual Studio for having him build a pretty GUI instead of coding an intricate algorithm?!
Good programmers begin with a love of solving mathematical and/or logical puzzles. This is not something you can just instill into someone by tossing them an expensive IDE. Of course he was going to create pretty looking GUIs. VS is just a tool designed to help with some of the more laborious (i.e. brainless) parts of programming.
Maybe you're projecting yourself onto him, and he's not much of an analytical thinker... sounds like his love of shinny, pretty things might lead to a more promising career on Broadway.
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
I do a quite a bit of programming as a graduate computer engineering student, generally relating to the web, and preferably in Java. For smaller projects I prefer vim and some syntax highlighting, and for larger projects, I like to use eclipse. But being a student, I'm often at the whim of certain teacher preferences. For instance, I'm taking an introductory computer graphics class in which we're learning managed Direct3D. Obviously this requires windows. Anyway, my point being that I'm fairly versed with with alternate programming environments. So, I'm a bit curious as to why we're singling out Visual Studio. What about Eclipse? Does it not 'rot the brain' as well? What makes Visual Studio worse than any other IDE? Are we all supposed to go back to using just text editors, or are we just bashing Microsoft products here?
It seems like some people are focusing too much wysiwyg gui editor. That's stupid. I don't care what anyone says. I think the Window's forms editor is a godsend. I wish that the eclipse visual editor was anywhere NEAR close the ease and usefulness of the windows forms editor. I'm an engineer. I like to design slick systems that are componantized, modular, extendable, etc. I like the challenge of design, and I like the challenge of implenting those projects. What I do not like is spending hours trying to create a gui interface for the system. GUI programming is tedious, frustrating, and lets face it, It's BORING. Do I even need to say 'GridBagLayout?' Lets face it. The only real need for a super slick professional looking GUI is if your making a commercial, retail application. If that is your goal, you'll hire someone that specializes in creating and designing user interfaces. Otherwise, probably 95% of the time, there is no point waisting your time hand coding a gui. These tools are there to let you explore your creativity, and realize the beauty of your design without getting bogged down by mundane details, like button placement on a GUI. You'd be a fool NOT to use them.
"To lead the people, you must walk behind them"
As of 4 years ago, my college was all Unix workstations (mainly Sparcs) for their programming classes. Not a minor school either, UIUC. Most of the big universities are still teaching on Unix from what I've seen.
I still have more fans than freaks. WTF is wrong with you people?
The statement that "VS forces you to adopt speed and not quality" is as silly as saying "open source development forces you to make non-standardised user interfaces". The quality of the code written depends entirely on the effort, skill and experience of the developer, personally I find no evidence to suggest VS forces people to write bad code. Of course I've seen bad C# and VB code, but to blame the IDE is insane. I've seen bad PHP but I don't instantly blame zend.
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?
Loading...
From the article: Programming is the most empowering thing we can do on a computer, and that's what we do.
... a bad teacher touches the same.
The old saying is that teacher touches eternity
"This isn't a study in computer science, its a study in human behavior"
Now I'm going to be modded down for not being very funny.
You're welcome.
All articles like this overgeneralize.
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?
They that can give up essential liberty to obtain a little temporary safety deserve neither liberty nor safety.
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.
It sounds like your idea of real code is "spending 5 hours getting an array of checkboxes to work". Why should someone's first dive into programming have them trying to run everything out of a message loop? Give the kid a chance to have some fun, succeed in creating something and learn a few basics before you force him into COBOL.
Grammar Lesson: you're is a contraction of "you are"; your means you possess something; yore means days gone by.
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.
In practice, you always want to pick the best tool, no matter how maligned it is by the 'hard core' crowd. The difference, however, between you using a tool to avoid hand coding your 100 UI elements, and a new programmer using a tool to avoid code for their UI elements, is that you know how to hand code them. Like you said, you can hack assembler on hardware controllers. If you never touch on that kind of low level stuff in learning, you'll never understand how it affects the high level stuff you use to make a professional job easier.
"Because Science" is one step from "Because old book". Try "Because of my experiment testing my falsifiable assertion".
Visual Studio really helps you *program*. I found whenver I'm programming in *NIX, I find myself constantly looking up what functions exist inside what files, what they do etc. I know I want a function that acesses a certain data type, but I can't remember what the exact name for it is, or what exactly the specific ordering of the parameters are. I could spend a minute or two looking it up, or I could let code completion find it for me in half a second.
If you think memorization of arbitrary names and conventions = programming, then, yes, it severely impairs your ability to program. But if you'd rather spend your time designing and coding something, then this is one of the best tools out there.
I think you just described the difference between computer science and software development, not the difference between programming and non-programming.
When I was growing up a I learned programming first through GW-BASIC then Visual Basic. In high school we had a computer science class in C++, which I picked up very quickly, a day or so, and coded faster and better than others in the class. All programming languages are about the same in their basics, so its easy to learn another language. Of course, I didn't learn enough in C++ to make useful Windows applications, so I continued with Visual Basic. I had to invent some algorithms for some of the things I wanted to code so I went beyond just dropping buttons on a form. When I went to college at Berkeley, the first class was SCHEME, I picked that up pretty quickly also with no problems, I didn't struggle at all, even people had problems, and got an A. The next class was Java, which was even easier, it was completely natural to me, and I didn't study at all and finished my assignments at the last minute, and got an A. The most difficult assignment was to create a program to solve a block puzzle in different setups, I put something together in half an hour before dinner, while it took most people a week including working nights. Of course my code needed to be cleaned up and organized past my ad hoc code. :) The next class was assembly, which I also found relatively easy and got an A. I decided not to major in computer science but philosophy, because I didn't want a computer science job where I would be just using my creativity doing meaningless labor for some boss. I decided if I did later decide to program something I would work on that on my own as a hobby.
.NET Visual Basic, which is even more GUI design oriented than Visual Studio.
The point of my post isn't to praise myself (I am an Anonymous Coward). But to point out that I was able get great skill growing up on pre
And, like I said, when using Visual Basic, I had programs where I needed to invent my own algorithms, so maybe, developed a stronger sense of coding than other people using Visual Basic. Also, though, I find that a lot of programs are very easy to create from the coding side, and the most important aspect of development is the design-side. For instance, creating an IRC client in Windows is one of the easiest things to do; the hardest part is making a program people will like to use over others; which requires an understanding of the user and the possibilities of interface design more than coding. In the open source world in general and the *nix world also, I see a lot of feats of coding that lead to completely crap applications because they don't care about the user. People are often proud of the coding feats that led them to crap applications. Having a background in Visual Basic gave me a lot of respect for the user-end and user-features of applications.
You know, I work with people like you, and you guys really piss people off.
r k.html
Why, what he says is true.
Coding is about the best tool for the job.
And learning how to code, is learning the data structures and logic that is common among most programming languages.
In many cases that's C or Perl or C++ (shudder) or Python.
But sometimes it's Java,
If you read his story, he didn't dislike Java. He disliked VS, and for good reason. Read what you reply to.
or C#, or something you would called "new age" or "gay" (yes, I've had co-workers who are 'professionals' call Java such names).
There will always be zelots.
I call them powerful and simply use them when I need to.
But using a visual tool to build apps, a tool that hides the details on what is really happening, doesn't TEACH anyone to code. It makes fast products, but there is little programming involved in tapid development models.
I also use other tools like C and can hack assembly code onto hardware controllers.
Good for you, but did you learn to program using an IDE that had drag and drop componets -- where you could make an application without writing a single line of code?
Your attitude is one of not recognizing that we're just like mechanics,
We are like mechanics, but do you teach someone to fix a car by showing him arround a shop where automated robots build them?
we find a tool and a part and get to work until it's "fixed" aka the design and all requirements are met.
And that it is maintainable, readable, effecient and hopefully bug free... Or as close as we can get to that in the time it takes.
Don't knock others because they don't want to hand-code 100 GUI elements.
That wouldn't be the problem -- but using a tool like that to LEARN to code is a huge problem.
I can create software faster in Java than any other language.
Without a drag and drop interface? Even faster than VS and clicking on the component, and literally draging it onto the window?
Java can do almost anything you need it to, and since the late 1990s it has been nearly as fast as C or C++:
He's not complaining about Java, stop defending it -- he's not attacking it.
http://www.idiom.com/~zilla/Computer/javaCbenchma
Benchmarks are meaningless without what optimiztion flasgs (if any are present) the entire code for the test (repeatability), OS, ect. There are after all three types of lies: lies, damn lies and statistics.
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.
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
I always use Microsoft products to code... in fact, I created a shortcut to Notepad on my desktop!
Zaphod B
When duplication is outlawed, only outlaws will have
What an IDIOTIC rant! This guy apparently has never written anything more complicated than "Hello World" in either C# or Java. As they say, it's a bad craftsman who blames his tools.
Come on...Dont give such lame excuses for poor programming....
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.
Best Buy can have you arrested
There's a lot of positives to allow folks into the arena of programming via "RAD" development tools, which use the Object.Property Method paradigm of development!
.NET FileSystem object is simpler to use than doing a Open File for Input As #1 type older VB code for file I/O...
It's shorter code, for example, & probably VERY highly optimized for whatever operation it performs.
I.E.-> The new
(& iirc, the WHOLE idea of tools like VB &/or Access coding, was to allow & introduce coding in Windows easily for nearly anyone to get into - & it took off like a bullet too, I remember it well!)
See, I come from the "olden days" of drop-down &/or procedural programming in the 1980's... it was "OK" but I do have to admit I like "RAD" tools FAR better!
(Which I still like the best on the latter, & still tend to code procedurally more than using Objects & Classes, unless a project is going to be 1/2 million lines or more... then you most likely NEED classes &/or objects, so the code can be 'reused', but truly imo? This RARELY happens! You can try your ass off, to build a company a unique & reuseable API for data access for instance? But, many times, it ends up being FAR too application specific, at least on projects like that I have been on (20 so far to date))
I like what I have seen in modern "RAD" & Object Oriented toolsets though. No doubt about it!
Today's stuff, imo, just beats the HELL out of using "old-school" tools like Borland TP 5.0-7.x, Borland C++ 3.x, & ESPECIALLY TASM/MASM!
I would NEVER consider building Win32 code in MASM, that is for SURE!
Even the later stuff, like Borland C++/Borland Pascal for Windows resource studios & linking their interface items to functions & procedures, sucked compared to today's lay it on a template screen (like VB &/or Delphi do) & code it is FAR easier imo & works (the bottom-line).
BUT, there is a LOT to be said for folks that come out of "classically trained" schooling, because they understand it all @ far 'lower levels' (purely relative term here)...
E.G.-> Learning to code in MASM 5.0 is where I started, & it taught me much about how registers work on Intel CPU's & the base instruction sets being used in Intel ASM code, especially during 'dumps' when you have to debug & view what state the CPU was in when you 'abend/err'.
Personally? I think that courses like "Data Structures" gives you the MOST 'bang for the buck' out there, as far as coursework.
Why??
After you've taken the 101 level coursework, this is the stuff past the basics (like how to open a file, read-write, close it, etc. & how to use variables & what is scope etc. stuff)...
In Data Structures, you start to see how various algorithms for sorts, networking (I use this term loosely, mostly shortest path/shortest route type stuff you could use in for instance logistics work), trees, queues, lists, & more:
IMO, that is the TRULY "great stuff" to learn, for ANY computer programmer.
APK
P.S.=> I guess, imo, it never hurts to start old-school using the older stuff &/or methods! It gives you an appreciation for what's REALLY going on (Assembler does the most here imo), & also how NICE the modern tools are... wasting time building an interface & Window from scratch? I'd rather spend time building functions & procs to drive that Window & its child window controls!
New "RAD" tools give you that extra time gained in NOT having to build the interface from scratch & the whole damn program is a giant CASE statement (bad old C coding in Windows memories here)! No questions asked...
(Thing is? You won't see that anymore imo in schools... I would hazard a guess that on my 2nd degree (straight comp. sci. after an MIS one I gained 4 years prior to it), I caught the "last wave" of that as far as toolsets being used... At least for DOS/Win3.x to Win9x-NT 3.5x & later Os')... apk
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.
This space left intentionally blank.
Blah blah blah...
This kind of editorial crap is for blogs, not news sites. Frankly I think articles like this detract from Slashdot's integrity as a news source.
I use Visual Studio for coding and find that it does not rot the brain, when used properly. I still code just as well and can move over to Eclipse and generate high quality code without any readjusting. Visual Studio is great for rapid protyping as well as good code design. That requires great power and with great power, comes...responsibility. It is not the responsibility of the tool to ensure that you code well, that is your job. You don't have to use Visual Studio's rapid prototyping features.
Somebody please show Petzold how to write an abstract.
https://www.accountkiller.com/removal-requested
If you are just trying to solve a problem once and get the answer, it makes far more sense to use the "quickest and easiest path to a working solution". Interpreted languages like Matlab or graphical programming Labview are great for this. You can throw away the code when you are done, and it doesn't matter if the code sucks.
If you are building an application--that has to be maintained. That will be run over and over by many people, so runtime efficiency is more noticable. When you pass off the code to someone else, someone else has to understand it.
I am an engineer, not a software engineer, so most of my code falls under the first category.
The junior programmer who works under me has a similar opinion: Visual Studio is a great tool, very helpful (especially for those times you need to produce something in a hurry), and easy enough to ignore when it isn't helpful.
I also do a fair amount of programming under FreeBSD, with vim as an editor, and any number of languages (C, C++, PHP, Python, Perl...). Vim has a lot of great productivity features, although I sometimes miss Intellisense. Overall, while it makes me think about what I'm doing, I don't find the cerebral effort much more or less than when I'm in Visual Studio (Intellisense for solving the momentary "what was that method called?" moments aside). I still have to understand what I'm writing, still need to produce API documentation, etc.
Onto the subject line: I don't think your tools rot your brain, unless you were suffering from rot anyway and overuse the tools as a crutch (similar to "cookbook programmers" who know recipes but don't understand what they do). These same "programmers" tend to be the same ones who blame their current tool of choice when it doesn't have a wizard for the exact implementation they need.
Lead developer, http://wisptools.net
"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.
Are you nuts?! Since he's doing game programming, and DirectX is not cross platform, it's vital he does it on Windows. Ok, sure he could do OpenGL, but frankly if he wants to come out with a good base to build a career out of in game programming, he better know the groundings of DirectX.
So IMO, since OpenGL and DirectX can run on Windows, but only OpenGL can run on Linux, it would be a better investment of time and money to use Windows throughout.
... you mean where you modify code at runtime while running it inside a debugger?
:-)
Get on Mac OS X, and start coding using Xcode. You may drool once you find the Fix & Continue (ZeroLink) feature.
Maybe its only because I'm coming at this from the opposite direction that I think this post shows an utter lack of comprehension about what programming really is.
.vb or .cs files in notepad. VS is designed to allow developers to develop OO, event driven applications without FORCING them to do all the coding for the underlying connections, interfaces and networking.
If you're looking for VS to provide you with a single text file that is unreadable and unformatted and un-(er...)-colorcoded, then go ahead and open the
So, while we're discussing being FORCED to do things, lets take a look at it for what it is. Anyone who has actually used VS for more than a day, or done anything with it beyond a cursory Hello World app with a button would know that while you CAN certainly click "new form" and drag a bunch of buttons onto it, and have it work, no code necessary, you can also custom write the window handler classes, subclass those darned buttons and build 'em all yourself the hard way. You CAN also drag a little DB icon onto your app, fill in the blanks, and have a ready-made SQL connector...or you CAN write that whole darned thing yourself, provided you need the control over it that is only provided if you do actually write it yourself. So, it may appear that you are being FORCED to do things the easy (or inferred BAD) way, you are not. You are merely being presented with an environment that will allow you to quickly do tasks that are often times very generic and overly-complicated for what they actually do. Continuing on that line of thinking, it makes doing 10 minute proof of concept work very simple and can lead, in the right environment, to time saved. Petzold could have told you that.
By comparrison, I was forced to use WSAD to do a distributed app in Java. Yep, I was a fish out of water. I may know ANSI C, C++, C#, VB, VB.Net, ASP, JavaScript, Assembly...I love me...Pascal, Prolog, and some other archaic crap, but I don't know Java. The interface seemed clumsy and crashed often. The code seemed overly compicated in places that should have been easy. Generic REQUIRED interfaces for beans were not auto-generated...which sucked for a guy with no clue what was going on. In the end, I read a book or two, sucked it up, looked at my laptop running VS and cried, and then got down to working with the tool I was provided. I still think WSAD is a complete joke when compared to VS.NET, but it didn't make my code suck...and it didn't make me a sucky programmer.
Point? There are places in the 'beans' I wrote that are most certainly not to standard (and boy, I KNOW how Java standards are worshipped from my experience)...that's my fault, if I could do it over they would be. However, where the rubber hits the road, so-to-speak, where the algorithms that REALLY ARE THE APPLICATION live, how THOSE are written...well, they are IMHO, quite elegant. That's not because of WSAD either...that's because I've been coding since I was 11...on a commodore vic 20...in BASIC...which is not OO...which may have taught me bad techniques.
Pluralitas non est ponenda sine neccesitate
Last time I looked at VS it was impossible to open two code windows on the screen at once and cut and paste code between them.
That would be high on my list of things to need. Oh, and I don't care about drag n drool interfaces.
In fact, someone else did it: Emacs, Zmacs, and Hemlock had this feature already about 20 years ago. Unlike IntelliSense, the information was displayed unobtrusively in the status line, and you got completion only if you asked for it with tabs. Unlike IntelliSense, the information was also based on the actually loaded code (at least when writing Lisp code), not some separate database that may be out of date and may contain irrelevant data. But maybe Microsoft will "invent" that in another 20 years, too.
Right. VS.NET rots your brain. So does programming in C++. It hides what's really going on under the hood behind all these "abstractions". Your code quality suffers in the end with all this bloated code. When is everyone going to learn the lesson and go back to assembly?
This year our computer science department switched to Visual Studio, and I can say without qualms that they couldn't have made a worse decision. Now we are forced to use VS.NET because the professor can't run the programs to grade it without .vcproj and .sln files.
Fortunately, this is not my first foray into C/C++, and I am quite used to writing programs in vim and compiling on the command line at my job, so usually I just import the source into VS.NET and compile to make sure it doesn't produce any strange microsoft errors (my favourite is the crap about "unable to verify assembly source", I'm looking right at the assembly source, why can't I verify it myself?). However, this does not bode well for my classmates. For one, the cost of using linux/bsd is now prohibitive: it's extremely inconvenient to haul ass down to the lab every week just to import some source.
It seems like the focus, even in obtaining a cs degree, is now speed of implementation instead of speed of code. I realize that this is common business practice in the real world, but do we really want all of our new cs graduates to be a horde of IDE-dependant windows programmers? I know that I dont look forward to working in that kind of environment, or running software produced in it either.
Prior to my present year of C#, I was writing apps in Eclipse for 2 years. VS.NET blows Eclipse out of the water. End of story. If you don't know why, consider yourself a noob.
Fuck off, Alecstaar. You haven't got a clue what you're talking about.
Years ago I took a non credited course in java programming. I was thrown off and confused. Why all the "."'s? What is public and private and why all the redundancy is needed for a simple hello world?
I learned how to program with MSBasic and I played around with vb3 and vb4. I could type the code but not understand anything. I eventually witbdrawn from the course.
Later I learned perl scripting using simple functions and I bought a college book to retry programming "C++ How to program by Dietel & Dietel".
The book was college level and taught you to write code and how the computer would read and use it. Yes it was big with lots and lots of explanations for everything. By the time I got to chapter 6 and chapter 7 I was introduced to object oriented programming. After that I GOT IT! Java is now making sense and I know what the dots are for and what public and private is and how the api's work.
The point was I needed to learn how to code and think like the computer. Ide's are bad to learn in but not bad to use. I still have not totally finished that book on C++ and I am contemplating about buying the newer edition for C# or Java to learn more about its advanced objected oriented features as well as hot to implement a structure.
A good book or a college course is needed to be a good programmer. Not a cute program.
http://saveie6.com/
While I agree, it doesn't help that one of the more prolific writers for the Windows Platforms give bad advice right off the bat (at least when I started Windows coding with his Windows book back in '99) - such as using Hungarian notation.
Let it cultivate. That approach will only go so far. Once applications become moderately complex, that whole methodology of programming collapses. Frankly, I wouldn't mind if it took with it the people who fell for it. They probably shouldn't be working as programmers anyways.
Cyric Zndovzny at your service.
I disagree. VS makes putting together applications (Some of which are seriously powerful) very easy. The fact it is easy to do doesn't make it any less useful at the end.
Furniture from IKEA comes flat-packed with an alan key, and whilst an IKEA desk may not be a handmade mahogany desk with glass top, it is still a flat surface to work on. Does the fact you put it together out of pre-assembled components make it any less of a desk?
Once you've put together an IKEA desk there's no way you'd be stupid enough to manufacture an entire desk by yourself. Let someone else do the donkey work. And if the IKEA desk can't do exactly what you want you can develop skills to make your own.
Back to computers, I see no reason why I should spend hours wrestling with inane config files in Linux when a GUI in Windows or OSX can do the same thing in a few clicks. If I wanted to do something obscure then yes, I am willing to spend time to 'break the mould', but until then I'm not going to waste my energy. Likewise with VS, if all you want to do is create an application using the prebuilt components then what is the problem? If you want to break the mould, learn to code.
How many people can read hex if only you and dead people can read hex?
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
I can't imagine working in a standard text editor anymore. I've used Edit+ for a few years, liked it a lot, but it doesn't stand a chance against Zend Studio (my IDE of choice). Zend is by no means perfect, but having the names auto-completed and parameters reminded is a true bliss for someone with memory as bad as mine.
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.
I had to work with one of these trade school guys. He had built VB (forms) database interfaces and web apps (dreamweaver) in school for some projects. As the (then only) Tech guy, I sat in on the interview, and commented to the boss afterwards that I had seen nothing to convince me that this guy was qualified.
The guy couldn't remember from one day to the next how to upload webpages to our server. It turned out to be a good thing too, as he had a very broken understanding of html, and would try to do stupid, unnescesary things in PHP.
IDEs can definitely help you understand the code faster, however. Take Eclipse, for example:
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
Its the smae over any MS programming language and MS IDE.. Go to any college or university using that MS IDE product.. Now check any basic proejct for code validating user input..you will not find any ..do you know why?
Lets see the laypersons terms..
Imagine trying to learn calculus with a computer or calculator first instead of pencil and paper..
Sure computer saves time but the basic foudnation skills are lost if introduced too early..
Fred Grott(aka shareme) http://mobilebytes.wordpress.com
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
imagine any other skill that takes *lots* of time and effort to develop... it's all about maintaining the sense of awe that got the kid interested in the first place
when you learn wood working, you don't start out making beautiful, functional art like cabinets, you make a duck, from a pattern, out of a sing block. a good teacher makes sure the student is impressed with his abilities to make something out of nothing, and as the kid gets better, his work eventualy trends closer to the masterpieces that inspired him in the first place...
it's really the same with coding... the first time i had text interface that said one thing if given x, and another if given y, (i was 7, i think), i was thriled. when i was 14 and using menu bars to change the color of rectangles on the screen, i was still happy...
i think kids will remain interested if they are given tasks that make them feel like they are learning... no one really approaches learning expecting to be a rock star on the first go
If you're programming with the right mindset and correct methodology, Visual Studio no more rots your brain than your oven makes you forget how to cook.
Programming is all about the programmer's choices. When you confront a problem, you design a solution. The IDE (in this case Visual Studio) is meant to provide a number of easy ways to implement your solution. It shouldn't be controlling your code directly, you control how the IDE controls your code.
Whenever I use a new IDE, I probably spend more initial time setting options than writing code. It's the programmer's job to make the IDE work the way they need it to. If you're using it right, the IDE should pump out code exactly the way you intend it to.
Programming and Tool Usage are two seperate disciplines (although deeply intertwined). Visual Studio doesn't make a programmer stupid or make a programmer write bad code, a lack of knowledge about the tool at hand makes the person write bad code. I've witnessed just as many terrible JavaScripts written in a text editor as I've seen bad applications pumped out of Visual Studio.
When programming in C++, I use MSVC, because it's simply the most capable IDE/compiler available for developing applications for the Win32 platform. When I use it, I don't magically forget everything about data structures, algorithms, or object-orientation. When I've finished a program, every single line of code is precisely the way I intended it to be. If it weren't, then I wouldn't be programming I'd be haphazardly hacking my way to an end.
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)
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.
--
I Hit the Karma Cap, and All I Got Was This Lousy
UNIX devs still want to use the slide rule and think they are creative. While Windows devs go to the next level and use calculator and create lot more stuff.
it's the brain using it. A program is only as good as its
:-) We programmers are some of the only
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
engineers who create our own tools, so stop complaining, and
get to coding!
Peace & Blessings,
bmac
I agree. What you know before using a tool like Visual Studio (C# of course) is what counts in life.
/. 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.
It is too bad that the
I thought it was the video games that were supposed to rot my brain, so I took up .NET - Just can't win!
...nuff said
If used correctly Visual Studio does not "rot your brain" or cause bad habits.
I agree, I've found myself writing code in Visual Studio on several occasions, but I also write code regularly in vim and compile on the command line (I don't like using X on our webserver), so I'm forced to stay on my toes, as it were. It is extremely convenient to be able to hit one button and compile, then hit another one to debug, but that's as far as I'll use it, and any IDE can do that. Code completion is helpful sometimes when you have a function thats overloaded several times, or really obscure ios::base methods.
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.
I agree in general, especially for the Win32 API because it's confusing as hell. But I usually write GUI apps in QT, and I know it well enough not to need Intellisense.
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.
But invariably this is what most programmers will use. An IDE is not a teaching tool, nor is it an acceptable tool to use while teaching. If an IDE must be used, use Dev-C++, which is basically an editor with gcc and gdb tacked on (code completion is present, but the last time I used it, it didn't work).
Past that, IDEs are a great tool for managing larger programming projects.
Agreed completely. As long as you understand in general how everything interacts, using an automatically generated makefile won't hurt, and it'll save you a lot of time at very little cost. It's when you don't entirely understand why certain things are included in certain places that you can run into trouble later.
Also, when we bought VS.NET at work (one of my coworkers really likes the compiler), we put up the two reference posters that ship with it... they took up our whole wall. :)
That's my reaction too - but not for actual programmers. Just anybody ought to be able to drag stuff together like tinkertoys and get a program out. That's the whole idea of reusable components, right? Eventually anyway.
Obviously, someone is always going to have to be writing the components, and the best efficiency will result from writing purpose-built code...
"You're right," Fisheye says. "I should have set it on 'whip' or 'chop.'"
Which might explain why most programming classes use Java to teach computer science concepts and usage. You get both the advantages of basically cross-platform code and object oriented programming that's strict enough not to allow newbie programmer mistakes.
'Yes, firefox is indeed greater than women. Can women block pops up for you? No. Can Firefox show you naked women? Yes.'
Damn man, sorry you can't enjoy your work anymore. Maybe you ought to try a new field or get a job doing *nix programming.
.NET app I write), and so forth. Then I rename Form1.cs to MainForm.cs (assuming I have a main form) and get to work.
Are you aware there's a command-line compiler? Are you aware that forms are dynamically generated as code and thus you can just as dynamically generate your own forms from your own code instead of the designer?
I frequently dismember the default code generated by VS.NET. When I create a new VS.NET Windows Forms project, it puts my Main() and an initial Form derived class in Form1.cs. The first thing I'll do is create an Application class that has the Main() because I'll probably want to add some application level static methods (for reading config-files, access to the plugin management which I add to almost every major
I use the form designer for some form stuff but sometimes I'll add stuff outside the designer. Whatever makes me most productive. VS.NET doesn't FORCE me to do anything. And if you feel FORCED to do anything then it's from a lack of understanding. If anything, moving to VS.NET and C# has made me abotu 10 times more productive than I was doing C++ programming with all the redundant function prototypes in the headers and the jumping through hoops to do anything with a string, especially all that BS conversion back and forth between unicode and non-unicode and what have you just so you could call a method that only accepted one or the other. What a mess.
Personally, I'm very happy with the state of things. Now instead of spending 90% of time dealing with minutia and details that had little to do with the actual solution I was trying to provide, I spend a 90% of my time producing the solutions and only about 10% or so on minutia.
Is that free as in beer, or free as in....I dunno, whatever the other one is
...
Sorry, but that article is totally brain rot.
He complains about the top/down or bottom/up approach, but really, YOU CAN do it. Visual Studio just highlights the syntax, but who cares, just keep coding top down.
And if you want to code bottom/up then you're fine that way too!
Intellisense is the best thing available, because you can quickly browse the API for objects and functions instantly. AND you will not mispell them because it autocompletes it when you press the Tab key.
I remember programming old C/C++ in vi on unix. Dude you have to friggin spell/spellcheck/compile/respell objects/functions/variables everywhere that are mispelled. In Visual Studio, that risk has been minimized to almost zero. I can start writing a program and compile it and 99/100 times, I have no spelling mistakes!!!! THANK GOD FOR INTELLISENSE!
In my fast paced industry the most important factor is Time-To-Market. Thus, I regret, that most of the time we don't care about extensive design, project management, perfect code.
This is a perfect fit for Visual Studio. The boss can walk in and shoot an idea at me. In an extremely short amount of time I can have a proof-of-concept prototype that he can take around to the different business units to get buy-in.
Some people get so anal about thinking that everybody should always use the most pure methods and tools. Sometimes software needs to be written super-quick. And you thank your stars for a sweet interface like Visual Studio to make you look like a genious!
I've got a computer science degree with a few years in the workforce and am constantly trying to stay in front of the coding methodology curve. But I use OOP/AOP/Web Services, etc. to help me work faster and smarter. Not so I can feel at peace with the 0s and 1s for being a purist.
Now we are forced to use VS.NET because the professor can't run the programs to grade it without .vcproj and .sln files.
.bz2 file was when I had sent him a bundle of code. The fact that he fucking teaches usage of compression algorithms, that including block sorting beforehand, should warrant the knowledge of highly-used compression formats.
The incompetence of CS teachers lately has surprised me. That reminds me of how one of my CS teachers in the past did not even know what a
At least he knows how to compile Java and C++ programs by hand...
'Yes, firefox is indeed greater than women. Can women block pops up for you? No. Can Firefox show you naked women? Yes.'
GUI apps that don't break the mold are very easy to write in VB and VS.NET. I quit the two cold turkey a little over a year ago simply because I wanted to develop more portable skills. It still hurts from time to time. I hate creating interfaces without a form designer and integrated code editor, debugger, autocomplete, help, etc.
I have been programming for several years now. I actually started at a very young age in the early - mid eighties (I was around 8) with a Commodore 64 and their implementation of BASIC, I think it was BASIC A. I also later used QBASIC for DOS.
I don't really count any of that as "programming" though...
My first foray into what I would say really counts was C / C++ in CS 115 in college. Looking back, I feel that it was vital that I got the fundamentals right without a GUI in all of the languages above. When I made that leap to developing in the Windowed and Server-Side Web Based world, it was a smooth process. I see a lot of new developers that fit the description from the article, and it is easy to see how weak they are fundamentally. That is why I say don't start off with it, get the programming part down before trying to handle the landfall of things that you can do with a GUI.
However, with all of that said, you certainly shouldn't write off Visual Studio. It has a lot of great tools to simplify the process of development. I personally find intellisense alone to be worth it's (It being the CD I guess) weight in gold, and if you are talking about .NET then there is a lot more value to the package. I feel that C#, and VB.NET are both excellent development languages, and being able to work with both within the same standard tool, using the same standard libraries (framework) is a real benefit to the developer.
So, I don't really think it's fair to say it causes brain rot... I can still code in several non .NET languages, but I use it because I like it. It is extremely important though, to sharpen the logic saw from time to time, and to learn to program with a non-gui / non-intellisense language first.
You use the tool that allows the most people to be able to do the most work in the shortest possible time. Regardless.. and VS does this better than any programming tool. Dont spam with emacs and so forth.. it takes eons to become a hugely efficient emacs user. And on top of that, there is no better tool for project management - make files, ant and the like are just horrible 70's excuses that should have been burnt and shredded ages ago.. Having been involved in everything from SGI, Sun, Linux, and Windows OS's VS is head an shoulders above all the other available programming IDE's around. Poster needs to get a brain.
I'm 2 years into a 4 year project building a financial system that, so far, has 80,000 lines of code. Up yours if you think I'm doing that in notepad.
Rocket science is easy. Neurosurgery, now *that's* difficult.
We need stricter copyright enforcement!
IMHO Visual Basic is a great teaching product. I go to a Technical Center for Juniors and Seniors, the curriculum(sp) is broken up into four sections - PC Technician, Networking, Multimedia, and Programming. Many of the students aren't really all that into programming, they came into the program for one of the other sections, but once they see that they can get immediate results and something "pretty" with VB, they get excited and actually do the work. Our teacher told us that they used to teach Java for the programming section, but switched to VB a year ago, I asked her about this and she said it was because with Java, noone liked it but the kids that were REALLY into programming and it was hard to keep their attention/on task. She said that with VB the students are much more into the assignments, mainly because of having a nice GUI looking at you right away. Like anything, it has it's place.
When I really started taking an interest in programming I actually started by learning perl! It helped me move on to C later sicne the syntax is rather simular.
;))
Now I'm at my final year at uni with high marks in all my programming subjects. (Even got full marks for a Systems administration programming assignment that I wrote in perl
And MS throw a mean Christmas Party - Give me the Dark Side - people pay me money to do it
"Coding is about the best tool for the job."
Ok... With you so far.
"I call them powerful"
Java? There are many things I would call Java and powerful is not one of them. Especially not when compared to say... LISP?
"Java can do almost anything you need it to"
How about pointer math?
" and since the late 1990s it has been nearly as fast as C or C++:"
Wow. That is possibly the single most blatantly wrong thing I have ever read on Slashdot. I'm stunned.
His reaction so far to having to actually write and understand code is that it is stupid.
Well, he's right, after all. The trouble is, being fifty years ahead of your time doesn't make for an easy career (or life).
I agree with most of what is said here. Don't blame Microsoft for making an IDE that is drag and drop simple. Blame the parents who didn't give the kid the book of C, or C+ or whatever language he was learning.
As an amateur web designer, I started the drag n drop crap only to move to raw code for speed, layout and power. When I was using the Windows platform I didn't even use and IDE, I used notepad! Of course Wordpad, with better arrangement of line breaks is better, but perhaps a book of the language for the kid and notepad or Wordpad would have been a better start for him than VS. I mean, I didn't start to use Dreamweaver until I went from static to dynamic web design purely because syntax etc starts to get interesting when you have multiple lines of programming code with your html.
My 2c.
Oh common.
This is such BS. This sounds like a functional programmer rant whose phobia of OOP is rearing its ugly head again. People, sit down with Beta 2 just for a couple of friendly minutes. Try using the tools that compiler offers you, namely things like rolling breakpoints and quickwatch.
Being able to stop code in mid execution, view all object data, modify it, roll it back to a previous line, and re-excute without recompling DOES NOT make you a bad coder. It makes code execution transparent, and NEWS FLASH: Very few of us actually get to write our own projects from scratch. In some way or form, we have to use something somebody else wrote.
Sure, you can say "Well you shouldn't need to see what it's doing..yada yada yaha". Welcome to the promise of OOP. The idea of componet programming: Not having to reinvent the wheel every single freakin time. People make componets, and people like me are stuck using 3rd party API's that have that are often poorly (or not at all) documented and have their own unique set(s) of bugs. I can't use a freakin command line compiler, thats insanity.
The reality is this: Windows is too freakin big. People make mistakes. The idea of doing everything from scratch in this day and age is impracticle.
Deal with it.
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
The fact that this is written by Petzold carries a lot of weight. When the world's leading how-to-progam-Windows person says VS rots the brain, maybe, just maybe, management will listen.
A Government Is a Body of People, Usually Notably Ungoverned
As a UNIX guy dragged kicking and screaming into the Windows world
Dude, if they physically had to drag you kicking and screaming from your UNIX lab to your Windows computer and they didn't fire you for your outrageous behaviour, then I really don't think you'll ever have to worry about job security.
Oh, wait... Were you speaking metaphorically?
The view was horrible and the smell was even worse; Julie severely regretted becoming a proctologist.
It was the same thing with us, when programming in Apple Basic and MS-DOS Basic. There is nothing wrong with tinkering around and getting interested in a field. I agree that VS is not the be-all-to-end-all, but it has its purpose, and it is not bad for this kid to get interested in something. It stinks taking the first couple years of computer science because they make you do a lot of work for very little payoff. The payoff is what you get when you use VS because you can see the immediate results. When you are writing a heap sort or a compression algorithm, it seems like an endless task that will get you nowhere, but when you apply those principles to the Visual environment, you can make a masterpiece. It is amazing what is possible, and just because you can do it the difficult way, does not mean that it is any better if you spend hours slaving over a user interface or you let microsoft help you out a little. You can make code as complex as you like under that visual environment, but without using those tools, it makes programming much more difficult and not necessarily any better. Just my two cents worth.
They dont tell me what to purchase, but they make a hell of a lot of suggestions. Especially when I get that Newegg newsletter in email. Just the other day, the Mastercard said "Psst, hey bitch, dont you need some RAM? Oh, and Newegg has got a sale goin on for all things Plextor."
Is a troll. Can anyone tell me what he did wrong though?
So far I count a distinct lack of insults towards nmb's parents, and not a single reference to his sexuality.
Surely, that has to be PHP!
Haven't laughed this hard in years...
Your praise of the Microsoft tools begs an obvious question:
If the tools are REALLY that good, how come MS has trouble getting out an OS which isn't buggy, broken, overbloated, insecure and way over schedule?
This is not a troll; it's something that I've wondered about for years.
If they aren't using their own tools for O.S. development, it suggests that those tools are indeed not up to snuff for some extremely sophisticated and demanding programming. And it makes you wonder what kind of tools they are using.
If they are using their own tools, then perhaps these are getting in the way?
Either way, it shoots down the argument that MS's tools are the end-all and be-all for software development (like some App programmers would have us believe).
Hey, programming purists. Are you forgetting... We do this stuff for business, and in business, Time is Money. So any tool that can speed the dev process is good.
Does Visual Studio Rot the Brain?
Is M$ a monopoly?
if (USER_OS == "Microsoft")
{
printf("Your brain is being rotted!!!\n");
}
From the looks of your post, it looks like you didn't get what the grandparent poster is saying. The poster seems to have a good grasp at what an IDE *is* good for -- a simple edit/compile/run/debug process, and some little extra "goodies". Essentially, a text editor on steroids (including syntax hilighting, auto-indent, compile/run/debug shortcuts, and maybe function call parameter 'tips'). You can get all of these things with Emacs, as well as with Visual Studio.
I really don't think think using VS in this manner deserves your "lack of respect" any more than someone using Emacs (or vi) over Notepad or Ed.
Contrast all that to the Eclipse environment. First of all it is a fully open source product without any artificial restrictions on what you can or cannot do. In terms of size, it is a paltry 100MB download, with an extra 12MB if you want the CDT (for doing C++ development on Linux). Even if you don't have a JRE, it's still not more than 200MB! Why can't Microsoft produce an equivalent open source professional level IDE that can be used by both beginners and professionals alike?
Oh right, because Microsoft still doesn't get it.
Just read the comments below/above!!
Have you ever worked in a mixed IT environment, being the only C/PERL/PHP/Unix programmer in a room full of VB/C#/ASP/.NET programmers?
It's like talking to a bunch of ESL (which most of them are) or Special Ed students!!
They won't even understand the purpose of RSS until Microsoft releases IE7.0, it's really sad!
the only permanence in existence, is the impermanence of existence.
VS makes putting together applications (Some of which are seriously powerful) very easy. The fact it is easy to do doesn't make it any less useful at the end.
:-6
The problem I had when I first used VS (and knew plenty of OO theory) was that the way I was being "encouraged" to develop my application via the auto-generated code (or so it seemed) ended up with everything in the same class; as well as a few other design decisions that basically weren't conducive to building a program that would be maintainable when it grew beyond a simple app.
Of course it's possible to get round this, but it requires *conscious effort* (first time I used VS I was prepared to do things its way before I started messing round; bad idea). The effect will be much worse on those with little or no previous experience. Plus, moving and changing auto-generated code manually is generally a bad idea in such cases (****s up the likes of the GUI layout editor and so on...)
As I said, this isn't a problem for small, quick apps; but anything beyond that will require a discipline which I feel goes against the RAD ethos of VS.
That's not counting the problem I had with disappearing components and such...
I don't know how Eclipse compares; I've never used any of its RAD GUI plugins and the like.... although it does have the same approach to displaying function and method names (-->bottom up).
"Slashdot - News and Chat Sites Deviant". (Click "homepage" link above for details).
What you seem to consider "real code" is something that one can only write after years of experience and formal training. Give the kid a break- your first program was probably just as "cute" as his, only it printed a list of numbers to stdout instead of popping up dialog boxes.
I think your comment is pure idiocy. You don't forget language features because you're developing in a GUI.
Yes!! We should build cars from scratch rather than buying them made already!!
One of Java's greatest flaws is it doesn't have any way to make an object constant (C/C++ have const). And if you say 'final' you clearly do not uderstand what that keyword does in java and should consult the java language reference. Without constness, it is very hard to design code that is used as intended without needing javadoc for explanation, it should be intuitive. Luckily they added enums in 1.5 (about f'n time).
Just my 2 cents.
Furniture from IKEA comes flat-packed with an alan key, and whilst an IKEA desk may not be a handmade mahogany desk with glass top, it is still a flat surface to work on. Does the fact you put it together out of pre-assembled components make it any less of a desk?
In the most general sense, no (assuming you put it together correctly), but it does make the quality of the desk an unknown quantity.
Without knowing what went into the manufacture of the individual components, you don't know if you were supplied with substandard parts, and hence at risk from part of it breaking, and the whole thing falling over without warning the first time your friend, who doesn't 'get' desks, tries to use it...
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.
For all intensive purposes, "whom" is no longer a word. That begs the question, "who cares"?
Where does this UNIX guy get off thinking he's programming in a superior environment? You either code well or you don't.
Same way someone can play the piano well or they don't. Say someone can play the piano pretty darn good (not great) with minimal practice, I think then they may be better in ways then someone who practices continuously and only plays well, not fantastic. Same with coding.
Visual Studio does not rot the brain, wasting time on trivial matters and posting them to slashdot does. Darn, I just rotted my brain a little by contributing to this FUD.
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 was typing a long reply in which I summized that VS is not that excelent compared to others in in doing "Code/syntax highlighting, structure/layout, designing graphical aspects and others". Then I remembered the parent article and I will just say that there are development environments that do (a much) better job at the things you mentioned.
But I agree that these things are very important for programmers and designers, especially beginning ones. And I think we are only seeing the top of the iceberg here. Why use ASCII if we can do much better graphically? Why do I still see unaltered HTML markup while typing my Java classes? Why is it not laying out code according to company standards by default? Why does it not show a nice graphical representation of complex expressions in a view? Such things will only ease development, and do little to harm the starting programmer.
In my favourite IDE (Eclipse) there are now guides that learn you how to use the IDE and how to program. Why not let the IDE help with programming, and put a complete course in it? Neh, the main article is a bit too negative to my taste as well.
C++ and Java rot the mind. Object orientation rots the mind. C, BASIC, and assembly unrot it.
Programming isn't about abstraction. Abstraction only enters the picture at the outset when you ask yourself, "what am I doing and how do I do it?" After that, it is simply a matter of telling the machine what to do and machines don't operate based on abstractions. They only add 001110 and 110110 if you tell them to. If you don't tell them so, they don't do it.
Along come all sorts of higher concepts that the more artsy and less nuts and bolts types can digest and all sorts of toolboxes of prewritten lower level code from the true code grunts who tell the computer to add 001110 and 110110 and suddenly it is all about that.
Well MSVS does embrace all that very nicely. It makes it rather easy for quick apps to be tossed out by the most artsy and least nuts-and-bolts types. Their minds were already rotten. They never wanted to think the way the machine does, they want the machine to work the way they think and who makes that happen?
The nuts-and-bolts grunts.
HTML coders who swear by a simple text editor and have foresworn WYSIWYG as wussy know what I mean. Who cares about the artsy if the actual code is wrong? Better to know the code down to the last thing and simply do it like you speak that language natively than deal with, "oooh, look at this neat-o set of text boxes with little buttons".
This trusting of the IDE and object nonsense and inane abstractions have drawn us away from the cellular level of the guts so now we don't know if the toolboxes are full of flawed tools and if so what the flaws are and where they are and oooh, look at this neat-o set of... blue screens.
If my grammar and spelling are off, I am [distracted/tired/careless] (take your pick)
Can I get a copy of your BASIC program? I'm DMing a D&D game and I could use a mapper.
From the poster:
force you to adopt programming techniques designed around implementation speed, not understanding or quality.
It doesn't force you to do anything. You don't have to use the "drag n' drop" garbage. It's easier to just write the damn code sometimes.
I think it would be much more accurate to state that it allows people to implement things without understanding or quality. THAT would be an accurate statement.
That being said, even your granny can crash a NASCAR. It ain't the car's fault.
I'm a 2000 man.
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.
But then, why use Visual Studio instead of emacs? The latter is somewhat less expensive.
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
//TODO: Think of witty sig statement
... that makes the program. Example :- Sure you can drag and drop a data adapter to a form and connect to a DB, but, if you "learn" fundamental programming skills you will create a separate class to access data from a DB (and keep it away from the form). Just because something is quick and easy does not make it the only way to do it. Hence it is not the IDE that makes "your brain rot" it is the programmers "choice" to do the quick and easy.
It's not necessary to trade implementation speed for code quality, and Smalltalk and Cocoa have demonstrated this for many years.
-jcr
The only title of honor that a tyrant can grant is "Enemy of the State."
I use visual studio every day. Although it does provide the ability to program the way you describe, it doesn't have to be done that way. There's no reason you can't start up a windows console application and do the programming straight from the text file. There's a lot of people out there using visual studio for apps that don't even have a GUI. .Net made it really annoying to try to make a web app, because the code that generates the HTML has to be separated from the page which outputs the HTML. Which isn't a bad way if you use the drag and drop method of generating your HTML, but becomes a real pain if you start writing your own code which outputs HTML.
Anthropic principle: We see the universe the way it is because if it were different we would not be here to see it.
Speaking as someone who uses Visual Studio every day at work, Vim's syntax editing beats it hands-down.
The cake is a pie
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.
This is basically how I got into the world of programming, if I may be so bold. I started with VB 6. Eventually, I got bored with the simplicity of it. It just didn't "challenge" me, if I may once again be so bold. I wanted to know more about how the things worked, other than just accepting Text1.Text = "Blah", so I delved into C++, which, to this day, am still learning (to be honest, I've only recently started programming in C++, making a big leap a year or two ago.) Let the kid be, if he's truly interested in programming, he'll follow a path similar to mine, wanting to delve deeper into it, maybe even learning concepts/programming paradigms. Just my 0.02... something to think about.
1&1 - Cheap domain and web hosting.
I totally agree. I use gvim along side visual studio when I want to reference some code or just pull up a single file to edit. If gvim had some mechanism to open/close the braces, comments, functions, etc (+/- like in vs.net) -- then I would be complete.
Linux Resources
So IMO, since OpenGL and DirectX can run on Windows, but only OpenGL can run on Linux, it would be a better investment of time and money to use Windows throughout.
That sounds like an argument to learn OpenGL.
In Soviet America the banks rob you!
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.
In the section, "Origins of the Designer" in the article, Charles Petzold says:
And this from the guy who popularized Hungarian Notation!
Our first year courses started out programming C with borland, and Java. By 4th year, most professors were saying do it in whichever language you want, as long as you can run it in the lab. The lab had windows, unix, and most languages you'd expect to find on either. There was one guy who insisted on doing every possible project in prolog. I think it was a good thing that they let us choose. I usually picked different languages depending on what I thought would be best for the project.
Anthropic principle: We see the universe the way it is because if it were different we would not be here to see it.
As a Visual Studio user for many years, the most interesting comment I heard was from a fellow programmer who said that they prefer to turn off the tab-completion sometimes. The idea is that if you have no need to memorize the various functions in the standard library, you probably won't. He found that it increased his ability to plan ahead, reducing overall programming time. He still coded with tab completion on most of the time, but not always.
Another point of view is that Visual Studio automates a lot of things (such as GUI design), but this can limit creativity and flexibility, as coders will avoid doing things that the limited designers and wizards can't do. For example, the "Setup Project" wizard is handy, but it doesn't support optional sub-components that users can choose not to install, which means that coders who use it will most likely create "all or nothing" installers.
The problem is that visual studio lets you create something, that to the end user, ends up looking and behaving exactly like a program. The problem is, once a programmer looks at the internals, it looks and behaves nothing like a real program should.
Anthropic principle: We see the universe the way it is because if it were different we would not be here to see it.
Yes, I learned VB 6 from a book on game design, which absolutely forbade me to drag n drop anything. I admit before that I used a plain VB book which did corrupt my programming skills at first, but now I never even look at the design mode. I really like the code completion and stuff, if eclipse has that I might move to that from JCreator since the only reason I like JCreator at all (besides the fact that we use it in AP Comp Sci) is that the IDE looks pretty similar, and indeed is designed, to mimick VS.
All your base are belong to Wii.
see usr_28.txt, it's about folding :)
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 likeor 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...
Great. All I need is a paperclip popping ever 10 minutes with sayings like, "Looks like you are trying to declare a variable" and "Looks like you want to print some text to the console". I'd be happy if VB could warn me about unused variables. To that note, I think that most other IDEs do a much better job of helping you program. In VS when you start a class, it gives you the class definition. In IDEs like Netbeans, it gives you a starting constructor, some comments about who created it, the date, and some other nifty things. You can even go into some advanced stuff so it can stub out some initial functions and variables.
Anthropic principle: We see the universe the way it is because if it were different we would not be here to see it.
I have used all sorts of tools on PCs, Macs, Unix, Linux, etc. and Visual Studio is JUST a TOOL.
And the tool is really only meant for one thing PROGRAMMING. VS has NOTHING to do with Software Engineering, methodologies, approaches, etc.
Maybe Charles misses the "good old days"? Well get over it Chuck!
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 computers! Do you!
Why, if it wasn't for the PDP-8, you wouldn't even KNOW HOW TO PROGRAM! Face it!
Seriously, though, back in the day, I noticed that Mac geeks generally weren't very good at general problem solving. Now, it seems the other way around; the MS-Windows nerds seem to be behind the curve in general computer intelligence. But what do I know? I just had a fight with a clerk in a computer store about whether color laser printers were better than inkjet printers.
Like Charles Petzold (bless his OS/2-loving heart), I'm getting too old for this shit.
Microsoft is to software what Budweiser is to beer.
IDE's are wonderful and productive things. Plain old text editors such as vi and emacs are also wonderful.
It's the programmers and the app frameworks that they use that suck.
It's not right to blame a tool, it's the way it's used. IMHO it's the way people embrace the abstraction in some 3GL and all 4GL languages, in general and model driven oriented design techniques that are to blame. These factors allow the rise of the Micro$oft/SUN/etc certified programmers who have no clue what happens in the real world. Yes, there are 6 more layers.. trust me.
I'm not saying abstraction is bad. It is a very powerfull tool that allows us to complete more in less. I'm not saying model driven development is bad (I think). It allows us to bridge between the worlds of normal people and geeks. But eventually you have to understand what happens at the lower/lowest levels to be able to get a decent result. Top down only delivers when you understand what's happening from the bottom up!
we are talking about Pepsi right?
Writing C code in vi will rot the brain... or make it stronger.
In either case, something drastic is going to happen. Tread lightly.
You can use it to repair a malformed heart and give someone a wonderful life or you can use that same scalpal to cut their neck and kill them.
You are going to try to tell me that you can blame the scalpal for either one of those outcomes?
Gimme a break already. Visual studio is what you do with it.
Yes.
(If you decide to RTFA, be prepared to set aside an hour.)
The space unintentionally left unblank.
In many cases in the business world, speed is more important then quality. Must get the product/job/etc out the door, now. They just dont have the luxury of time to do things 'right' if they want to stay in business.
May be sad, but its often true.
---- Booth was a patriot ----
I just don't like it because like most modern IDEs, it tries to do a lot of rubbish behind the scenes that I just don't want it to do. All I want is to make some folders, drop some files in, and save that as a project file. No active working project directory nonsense, no saved user preferences hidden file that I always have to remove manually from CVS, none of that junk. I just want to click on a project file, and have my project opened. I don't need to see a tree view of all my classes and resources either. If I want to build or run tests through my IDE, I want to drop the path to the script file I've made to do that. Intellisense isn't really a good replacement for the API reference/object browser, which I still usually keep open while developing if I'm stuck using VS. I hate playing the .NET guessing game with the intellisense menus. I'm not a seasoned .NET developer as I work on several mobile native platforms (split between C, C++, Java, and C#).
I work on several different mobile platforms, switching APIs and build environments constantly, and the one IDE on Windows I've always found that does exactly what I want is UltraEdit-32.
It rots in the same way that windows proliferates stupidity.
Give me a BSD box with a decent text editor and some decent scripting languages and I will show you something that is maintainable over the long run. Rather than some get it out quick and rewrite it next time you need to make a patch crap.
I stopped ussing VB / Visual Stupido 4 years ago and would rather work at McDonalds cleaning grease pits than doing that again.
All I have to say is that I did most of my coding in DOS based compilers. And when they phased out DOS in XP, my programs no longer work on modern computers. I'm forced to program in Visual Studio and I hate every minute of it. Its probably my main reason for phasing myself over to Linux: You have a pretty good feeling that Linux isn't going to 'reinvent itself' and make all your old code worthless.
God spoke to me.
These comments are interesting in that they come from Charles Petzold who wrote some of the first truly pinnacle books for programming in the win32 API ( "programming for windows 95 ").
...the kind who write the tools, but don't use them witout a corporate decree.
I did that whole book. I did all of the win32 programming exmaples using just the editing features of VS.
Even making just a basic window with win32 is laborious, so I can understand why MS made VS with all of the code generation features it did, as well as wrapping the win32 api in the MFC, and later VB.
I am not sure, but I think I remember Petzold saying something how the MS developers at one time used various text editors, not VS, until MS laid down a "eat your own dog food " law.
I have never been able to deal with comprehending autogeneated code and it teaches me very little. OTOH, there are times you just need to get something out.
Maybe there are two roads you can take in programming. Quick, dirty, and bloated for a non-IT orientated place that just wants something and the slow, hard road for people who want to be better programmers,
I'm being required to take VB.net... and it does make you dumber.
Can someone explain why lowerBounds() exists? I understand upperbounds. But when can an array have a lowerbounds that's != 0? Why is that a function?
I just don't get why VisualBasic works the way it works. It's stupid.
"Someday, somehow the Microsoft bashing needs to end"
It will. When the company is broken into tiny little pieces and all that wasted programming talent is put to some good use.
Then it will end.
Microsoft is a gigantic money vacuum that just uses things and never returns anything.
This is the craziest thing I've read about VS in years. In VS.NET you can write fully object oriented code. Just because somebody takes short cuts and uses the drag and drop tools for RAD development doesn't restrict another developer from writing fully object oriented multi-tiered applications. This is a matter of knowing everything available. VS allows for both, just beginners never care to learn how to write could code, this a problem with the programmers not the IDE. Anything you can write in Java with Eclipse you can write in C# or VB.NET with VS.NET. Read a thread on .NET and you'll see that its just a rip off of Java, so of course you can fully object orient it.
The functionality you mention has nothing to do with an IDE (which is about integrating the development chain) and has been readily available in most decent programming editors for over a decade.
* If I see a class name I don't recognize, I can control-click to go to the class definition. If the source is not attached, I at least get a view of all the method signatures.
If you hit ctrl-t in vim, you go to the class definition (or function definition, variable definition, etc). I can't remember the keybinding in emacs, but it's in the context menu or M-x follow-tag.
* If my code invokes a method I don't recognize, I can hover the mouse over the method and the Javadoc description of the method will pop up, telling me what the method does, what the arguments are for, and what the return value is.
K in vim brings up the man pages or info pages for the defined function. I use it with Python docs; Java programmers use it with Javadoc. Emacs has similar capability.
* If I'm navigating through someone else's class hierarchy, by selecting the class name and pressing Ctrl+T I can see all interfaces this class implements, and its superclasses from which it inherits methods. If I hit Ctrl+T again, I can see all classes that inherit from this class, and what classes inherit from them, etc.
Sounds like emacs' oobr or vim's cscope interface (which is used for more than just C in vim).
If I hot Ctrl+O, I can see all the methods callable from my current cursor position. I can also see all variables within scope.
This is the only point that vim doesn't do by default yet (there are 3rd party packages to give similar completions, and vim 7 that encompasses this and a more powerful Intellisense(tm)-type thing). Emacs has this feature, though.
rage, rage against the dying of the light
The bad habits an untutored beginner might learn from perl just don't carry across to most other languages. It's not like they're going to come to C from perl and never declare their variables. Perl might make for unreadable perl, but will it really make for unreadable anything else?
In 1991, the Boston Computer Society invited me to speak on the subject of Windows programming. Since I had written a book on Windows programming -- the 2nd edition of Programming Windows had been published just the previous year -- I figured I didn't really need to talk about that. Anybody who wanted to learn Windows programming could simply buy the book and read it in the privacy of their homes.
Instead, I decided to talk about something that people could not read about in my book. This was a subject that interested me at the time, which was how Microsoft first developed Windows, and how Microsoft and IBM then got involved in the development of OS/2, how Microsoft had convinced IBM to go graphical in the windowing environment, and how IBM decided they wanted to develop an entirely new API, and then how the success of Windows led to the eventual split between Microsoft and IBM
Well, people went berserk. I suppose they had been expecting me to tell them everything they needed to know about Windows programming in the space of a few hours, and that's certainly not what I was interested in doing.
Rule #1... If you're invited to speak on a topic, SPEAK ON THAT TOPIC. If you don't want to speak on that topic, DON'T EXCEPT THE GIG!
It's pretty damn rude of a speaker to do something like that, especially when people drive to get to a meeting like that, just to find out it's not what they were promised.
Petzold had been around the block a few times when that happened, you'd think he would have realized what a stupid thing to do that was. It's pretty damn arrogant to think that people would want to listen to whatever the hell he wanted to talk about.
Where are the pictures? I went through the whole article, and there's not one single picture! How am I supposed to grasp any of these concepts? Also, I hit the IntelliSummary hotkey, but it didn't tell me what I should end up thinking at the end. This article must be broken...
Wil Langford - opinionated bastard - Linux rules
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 Visual Studio felt like back in 1995.
That, in the technical realm, aside from the fact that Eclipse is free. As in beer, and as in, for example, being available from here to eternity (another nice side-effect of free software).
so you will never have to retrain, or recode, or change the language you use.
Java with Eclipse rocks.
Of course you could use other languages with Eclipse, but that's what _I_ like.
It's not about you feeling that you know what the computer is really doing. If you think that you should be able to envision the assembly language that results from a distributed query that serves a web app then you are clearly a dinosaur. What it *is* about is getting a computer to do things that regular people want done. This is an area in which you admittedly have little experience.
To paraphrase an earlier post, are you totally comfortable with what happens when you use your credit card? Do you still use it?
Programming does not exist for programming's sake. Environments like Delphi and VS.net exist to produce solutions to problems. They're not teaching tools, they're not ego inflators, and they're not political tools.
And if you ever decide to actually program something truely useful, you might discover that what you dismiss as 'flash and bluster' actually helps people to use computers. For twenty years I've been fighting the notion that people aren't smart enough to work with computers. The reality is that computers are still not bright enough to work with people.
I'll be honest, i already believe if your really interested in computer science. You can't go wrong with learning C and for higher level thinking learn Python. They not only compliment each other so well, but you will learn so much using both of them. Programming ultimately is about thinking and putting your ideas to code. VS and RAD tools like this, though helpful, only encourage reliance and laziness. The situation is only worsened if that individual doesn't have a foundation in solid programming skills.
I think it says a lot though that petzhold writes a book about windows and VS and then basically bites the hand that feeds him.
i couldn't agree more petzhold.$action = empty(PHP) ? backToC() : unset(PHP) ; "when the concrete cases are understood, the abstractions are readily
Visual studio is excellent if you're developing windows apps using windows technologies. As soon as you stray off the path a little it becomes much less usefull. I've done a lot windows programming with it, and visual studio is great, but since it's meant to develop with the windows tools, the overall experience isn't that good. For example, I recently discovered Qt, and now I'm faster and more efficient developing with Qt without a debugger or intellisense than I ever was with MFC and visual studio. Maybe I'm just stupid, but MFC and WinAPI is the biggest pile of inconsistant, crufty garbage I've ever had the displeasure of working with.
Visual studio is a good tool, not because it's all that great, but because the competition sucks even worse.
I've been using VS2005 for six months, and with Team Services it's beyond impressive the collaborative development environment MS has created (not that there haven't been unpleasantness in the install process for the betas). Maybe I'm not a true geek, and so I'm really not trying to redundantly use five operating systems and learn the nuances of every single platform (so I can't compare VS to much than some Macromedia web dev environment). Really, I thought the definition of a tool, is as an enabler and to make life easier. We can't all be coding gods, nor can we be trained to be...there's a element of snobbishness in the my code is purer than your IDE code.
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.
I have written several C# programs in Windows using nothing but the 'vi' editor, GNU tools and various freely available Microsoft development tools and their free compiler. I suppose you would argue that this is wasting time but I feel that I learned something from the experience. (never mind the endless amusement of VS monkeys reaction to the realization you can write complex applications in a Windows commandline window without paying a red cent for flashy development tools) What I gained from this waste of time is that I am now able to work my way through all sorts of code including the auto generated crud many VS monkeys avoid touching with almost religious reverance. Not all of us hand writing code monkeys write bad code and not everybody who drives a car and spends some time finding out how an internal combustion engine works is wasting their time either. You will discover the truth of that soon enough if you ever have your car break down on you in a remote place where you can not quickly summon somebody, with your mobile phone, who has wasted his/her time finding out what makes an internal combustion engine tick. You and I have an irreconcilable difference in philosophy. Perhaps one has to be a 24 carat nerd to be willing to waste ones time on understanding how the tools one is using actually work? From my point of view wasting my time on this pursuit makes me a better professional since it better prepares me to deal with the unexpected.
Only to idiots, are orders laws.
-- Henning von Tresckow
Get over yourself.
"I tried to turn him on to coding, but he went out and got Visual Studio, and went off on his own."
Sounds like he did exactly the right thing... it sounds like your prejudices are getting in the way. His limitations were his limitations, he'll overcome them, but he needs the same epiphanies that we all have as programmers to advance his capabilities. These things all start somewhere.
Even if VS is like sugar for the brain (which it most definitely is not), then what exactly is the harm in doing things the wrong way for a while? Eventually, if it's a path you're bound to go down, the underlying wizards, designers and other gizmo's that real programmers use to save themselves a lot of time and heartache will become tools for good instead of evil as the user begins to understand the limitations and mechanisms behind them.
Use the tool -> observe the tool -> learn the tool -> use the tool.
The 'bag VS brigade' are quick to point out all the bad things that can be done with it, but never really focus on the incredible tool it is in the hands of an experienced developer. Bad things can be done with any tool, and the choice of tool doesn't in any way correlate to the skill of the developer... just because you use emacs and a blow torch for a build system doesn't mean you're code is going to be any good. If anything, tools like VS, Xcode, KDevelop, Anjuta, Eclipse etc etc etc give the green developer a leg up for a while, even more so if they are a skilled developer migrating to a new language.
Don't ever be afraid to use these things because it's not cool... what is really cool is being able to deliver an application that works.
Hmmm...I have the same problem with Vim's buffer completion that he has with VS Intellisense. In order for it to work it requires that the name of the function or variable be in a buffer that is open. This imposes a bottom up programming approach on me and makes me dumb.
These days it seems like if someone can use Visual Studio they call themselves a developer. It makes it hard to screen out people by their resumes. If I see VB on a resume, I usually assume they can't program. If they have C++ I assume they can. While these are broad generalizations, we need some way of determining who can actually program without interviewing every candidate.
Crap. I'm learning Perl as my first programming language. ....
Am I screwed?
Sure doesn't. But putting stuff back together after completely fucking it up, before your parents get home, is a pretty good sign. ;)
The art of metaprogramming, Part 1: Introduction to metaprogramming
Write programs to generate other programs
Those who don't know who he is, really have nothing interesting to say about his talk. It's not as intrinsically interesting if you think he's "just some guy".
Petzold discussing whether Visual Studio rots your brain is a bit like Yoda saying people need to cut down on all that Force nonsense.
I'd say this kid is just not interested in programming.
You said that his efforts had "nothing in the sense of real programming". What did you expect for a first effort? A full RDBMS system? A true artifical intelligence? A solution to the halting problem?
And if he thinks that having to write code is stupid, maybe he just has no real interest in being a programmer.
Why doesn't Slashdot ever get slashdotted?
Without getting into the argument about Hungarian, Microsoft invented it and it their recommended style for weak-typed languages. So you can't pin that on Petzold or whoever.
Whenever I hear the word 'Innovation', I reach for my pistol.
Would it be so hard to gently urge someone onward, give them some books, show them some code that you deem worthy. Two of the major ways to learn code, IMO, is writing stuff yourself, screwing up, and fixing. The other is to study functional, quality code.... I've seen few books on programming that don't have some code in them, at least the ones meant to teach programming, as opposed to a reference book.
I learned fundamentals of coding before I tried to make pretty windows. I use VS, and I use the pretty window maker... to save some time on the base coding. I then proceed to change things to my liking. The API designer is a shortcut for experienced programmers, theoretically to save them time. If you don't like it, don't use it. As for the kid, maybe you should be showing him how the API works. Then he could start picking apart the code.
This kid didn't learn how to code on Visual Studio. He learned how to draw a GUI. Visual Studio, while a great RAD tool is NOT JUST a GUI designer. However, anyone learning how to "code" by getting visual studio and using the tutorials is learning only that, how to draw and hook up GUI components.
Had this kid gotten a respectable book on OOP and C# he would have picked up more than enough to get himself on the way using OOP concepts (Hell, I learned in EIFFEL!). Starting on C# is just about as good as starting on Java. I'm sure there's fanboys on either side, but C# and Java are so friggin syntactically close that it really doesn't matter. Java SHOULD NOT have thrown this kid for a loop if he had actually learned anything about writing code. Java is goddamn easy. (Especially Java5).
Visual studio is a GREAT IDE. I don't know about you, but I don't consider spending 3 hours writing code to do what I can do visually in 5 seconds something that makes me a great coder. It makes me freaking stupid for not choosing the right tool for the job.
VS was designed for the VB crowd. It allows people to be able to produce results fairly quickly, but it is very easy for inexperienced developers to get in trouble.
At a company that I used to work for, I had to decide on a new technology direction that would allow us to develop web based applications. The developers I had inherited were Access programmers who had no web or OO experience. I'm primarily a Java developer, but given the capabilities of the developers I felt that they would be more productive in the short term with c# and ASP.Net. With some training and a lot of hand holding they were able to start developing web applications and services fairly quickly, probably a lot faster then if we had used Java. A lot of this speed could be attributed to VS and how simple Microsoft makes it to develop applications (albeit simple ones).
The problems came when they had to do something a bit more complex, where they could not rely on VS to help or do it for them. The tool makes it easy to do simple things without understanding what is going on under the hood but many times you really need to have that understanding to be able to accomplish the task or keep yourself out of trouble. Just like in the 90's when power users started using VB and calling themselves programmers, VS lets inexperienced people write programs. They just aren't very good programs and anything too complicated will soon become a big mess.
Because the professor/boss says to use it, and its free?
Although if I had a choice, I'd probably go with something less bulky. I havent done a GUI in the 3 years I've used VS.net, and I don't know if it will ever be more than a textpad on steriods.
I can't talk for VS.NET, but back when I playing with FoxPro2.6, and was adapting my distruted database system to it. I once responded to a discussion that "Doing a Distributed system was 'impossible' with FoxPro." I responded that if you don't use the wizards you can code it to do just about anything, his reply: "Well, that's cheating." I think others probably have such a tunnel vision view of "if it can't be done with a MS wizard it probably needs more updates or can't be done."
I am sure most folks are right when they say the tools are top notch but probably the procedures that people are taught to use with it are not.
"Enjoy what you're doing! If it becomes drudgery, you're doing it wrong!" - Jim Butterfield
I currently program in C, C++, Java, C#.net, VB.net, and C++ .net. There is nothing wrong with learning programming in Visual Studio. Also, just because you can type printf in C doesn't mean you are a better programmer than someone who creates windows apps by clicking and dragging. Why in the world would you want to create stupid ass console apps when you can create apps with buttons and textboxes and menus? If you don't know object oriented programming after using Visual Studio it is your OWN fault not the ide's. An IDE makes programming easier, but if you are a good programmer the interface matters NONE. Good programming comes from practice and if Visual Studio motivates me to practice more then that is great.
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...
yeah. pretty much. i suggest that you switch to cobol.
Why doesn't Slashdot ever get slashdotted?
The guy disqualified himself with that comment. Maybe people around him aren't. But go to the streets and look around. Go to your office payroll department and look around. Even go to the White House and look around. You'll find lots of stupid people there. And, unfortunately, they are the vast majority. The two most common things in the universe are hydrogen and stupidity -- Harlan Ellison. There are 10 kinds of people. Those who understand binary. and those who don't.
C isn't "complicated." It's just that BASIC is retarded. I mean, really, in the "real world," you will never have to make a starry background. C (and especially C++) allow the perfect mixture of high- and low-level elements. In fact, in C++, you can mix machine language and 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 null-terminated char arrays!)
Anyway, your code in C:
Written in Microsoft Visual Studio 2005, by the way. Sorry for the formatting, the <pre> tag is evidently disabled in slashdot
Not really that much more complicated. Just a few more lines, most of that formatting to be pleasing to the eye. Not only that, but it's faster and provides more flexibility. What if you don't want to seed the random number generator and want the same numbers each time? Very useful for debugging more sophisticated programs. What if you want input from the command prompt to determine the number of loop iterations, or the frequency of "stars?" No problem in C/C++.
So, the point: Sure it's a few lines longer, but it's
- Faster.
- Stronger.
- Better.
And, most importantly, it's not using a dead, worthless language.And, at the end of this post, *god* do I need to take a deep, cleansing breath and lay off the zealotry. :-D I guess my point is that there is definately no need of "rendering black."
And, barriers to entry are good. It keeps stupid n00bs out of my programming classes. :-D
Peace.
DATABASE WOW WOW
What people forget most here is, you are what you grow up on. If your basics are right, then tool for writing code is not a big deal. There have always been programmers who code 50X faster than other mortals.My professor uses Emacs to such an extent that once he famously said "When are people coming up with emacs on bios, because thats all you need". He is atleast 30X faster than me.
:)). Learning(Memorizing) libraries and using them a lot does not make you a better programmer. Many of students who do that are just taking a short-cut for getting a job.
Teach CS students C(because it gives a good idea of how hardware works), Java(gives a very good idea of code reuse), and a functional programming language like Scheme or ML(its more mathematically intuitive and beautifully recursive). I have learnt functional programming last, and God it has undone many of my bad coding practices thus enabling me to write code faster (around 2X). I think students should develop a taste for good code and enjoy it.
Finally in the job, you can learn the libraries (And consequently suffer from some brain damage
You will never have experience until after you needed it.
Oh dear god, that gives me nightmares. MFC, Hungarian notation, C++ spaghetti code that makes absolutely no use of classes, and an API from hell.
Do you know if things any better in these days of C# and .NET? I've never had the time to look into .NET because all the Windows code I write has to be backwards-compatible with NT4. I've heard good things, like maybe the API has some kind of organizational structure now.
LOAD "SIG",8,1
When learning a new language, people generally link the new language back to the first "real" programming language that they learn. I don't mean BASIC or Pascal, I mean Java or C++. You try to find the commands that do the same thing as "cout" or "echo". When you code in Python, which was designed to be very close to the English language, when you read your code aloud, you end up almost reading a generic algorithm, that when applied to other programming languages, actually makes sense. You are giving students a vocabulary that they can use to do that translation step when they learn their second, third, etc. languages that won't mess them up too badly.
By the way, after a semester of Python, I teach them Visual Basic.NET, which they love for about two days until they realize that the code underneath the fancy GUI elements can't be easily translated to common sense English. However, they can figure out how to do the basic programming structures in the language.
All the fancy wizards are for people who dont program for a living or for putting together quick demos..etc I dont think many people will/would actually use the wizards for large products as the code maintnance would be hell in the long run. I believe that eventually VS.NET will be close if not easier for a non-programmer to make a small database app/Office app similar to MS Access. (You would need a little knowledge, but the wizards would do most of the work). Some people who either hate MS or hate the fact that coding has been made a lot simpler will resent this, but this is normal for most technologies. I remember about 2 years ago when I was in college, a classmate told me that programming against .NET felt like it wasnt really programming, he prefered C++. I dont know why he would say such a thing, but the amount of time it takes to write a program in .NET compared to most other languages is huge, which is probably why the framework has grown so much and will continue.
Personally I dont use the wizards often because they generate too much code that is not needed. This was susposed to be changed a bit in the next version, also more wizards are should be added, so I may have to bit the bullet try them out again.
intuitive interfaces interefere less. 100 years from now people will look in horror at thousands of lines of gibberish and instantly realize why most programs are so poorly executed. try doing calculus with roman numerals and you'll see why their math was so primitive for so long.
The Christian in me says it's wrong, but the corrections officer in me says, 'I love to make a grown man piss himself.'
Would you Unix Dinosaurs quit whining. Geez.
I once tried to see if I could try building a certain OSS project in Visual C and couldn't because of the high amount of GCC-specific extensions used.
In all seriousness, VC allows people to write crappy code, but if it somehow prevents you from writing good code, then you are a crappy programmer. I actually do a lot of OSS work on Windows; I debug with VC because it has the best debugger, and do release builds in MinGW.
Same here. I was programming for seven years (C and C++) before I got to university and actually learned what the hell I was doing. I'd love to see some books aimed at the hobbyist/student that teach basic CS (simple data structures, OO concepts, etc) while they present a programming language.
LOAD "SIG",8,1
Not to nitpick, but:
cout statements are not in C, but in C++. If you were to print output to stdout in C, you would be using printf.
As technology progresses, one would hope we move on from the old programming paradigms of "code-by-hand", and adopt more evolved methods of development. Remember COBOL? COBOL was an excellent language in its time, but today its nuences of fixed column areas is arcane. Development languages and environments should progress with the times; Visual Studio.Net and the .Net Framework attempts to do this. VS.Net isn't perfect by any means, but I have to say that in my experience across many platforms and languages, it is probably the most efficient method of developing Windows-based applications. Programming SHOULD be more drag and drop, more automatic: it's quicker to produce and less error prone.
There are certainly some applications that deal with low-level system aspects that still need to be developed in a language like C, and an appreciation of those fundamentals certainly doesn't hurt for any good developer - however, for a growing number of applications and programmers shouldn't need to care: do you have an appreciation for every transistor your programs are touching?
You don't have to read far into the article to see what he's talking about, so I suggest you do that instead of jerking your knee like that. There's real force here by the very nature of closed source. The whole way the code base is acquired and maintained leads to this. The inner ugliness of greed, selfishness and paranoia is manifesting itself in a horrid tool that you will have to use if you want to play their game.
The author notes that Microsoft's API now includes some 60,000 methods and properties, an impossible number to get your head around without an aid. The aid is IntelliSense. I'll let him take it from here:
And yet, IntelliSense is also dictating the way we program.
For example, for many years programmers have debated whether its best to code in a top-down manner, where you basically start with the overall structure of the program and then eventually code the more detailed routines at the bottom; or, alternatively, the bottom-up approach, where you start with the low-level functions and then proceed upwards. Some languages, such as classical Pascal, basically impose a bottom-up approach, but other languages do not.
Well, the debate is now over. In order to get IntelliSense to work correctly, bottom-up programming is best. IntelliSense wants every class, every method, every property, every field, every method parameter, every local variable properly defined before you refer to it. If thats not the case, then IntelliSense will try to correct what youre typing by using something that has been defined, and which is probably just plain wrong.
Sure, you can program without Microsoft's new autowrong tool. I can hardly stand typing text in an editor that changes things for me, and I know such a tool would drive me nuts
But then where are you? There's not a man page and a book, the author points out, would be 1,000 pages long. The Cathedral is Byzantine indeed, and you might as well abandon Microsoft all together as soon as you abandon their tools. This mess is undoubtedly pathologically redundant, full of bugs and represents the zenith of non-free programming. People who are not free to share their work duplicate it all day long and Microsoft has amassed it all by purchase into a giant Frankenstine. Yet, in typical Microsoft style, it's "Do as I say and be grateful." The control freak that Bill Gates is made manifest.
Like you, I have to dissagree with him about the inevitability of this kind of hen pecking. The purpose of higher languages and code reuse is to allow abstraction. A proper tool will give us hints based on natural language questions about what we want to accomplish, much the way a experienced human mentor does today. You give it a flow chart, it comes up with answers. Instead of locking us into an insane framework, it will offer us rational choices of methods that work and let us zoom into and modify details as we see fit.
You won't find a tool like that coming from Redmond, ever. They do not want you to understand or modify their code. They simply want you to use it. Anyone who can understand their mess is looked on as competition, to be purchased or ruthlessly exterminated.
All of this is consistent with the Microsoft way and the result is what you see, a network overrun with spam and botnets, friendly only to those who think they own it.
Friends don't help friends install M$ junk.
Well, the debate is now over. In order to get IntelliSense to work correctly, bottom-up programming is best. IntelliSense wants every class, every method, every property, every field, every method parameter, every local variable properly defined before you refer to it. If that's not the case, then IntelliSense will try to correct what you're typing by using something that has been defined, and which is probably just plain wrong.
I wonder, if in all of that typing, at any point, this guy was ever taught, or even poked around the Tools->Preferences option to discover that you can, with about 9 mouse clicks...turn off intellisense.
And it's still rather easy to write detailed and if need be complex applications without intellisense.
And I dont quite get the, if I have a local variable called id that I reference VS will attempt to show me something similar to it. Mine doesn't. If I dont declare a variable 'id', then it wont appear in my method member list, simple. Intellisense has yet to 'try to correct me'.
Why do overlook and oversee mean opposite things?
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
I'm currently showing 4 experienced vb 6 professionals the joys of eclipse. They have all taken introductory classes in java and already have a grap of OOD. I haven't used MS dev tools since VC6, but I'm assuming VS2005 is in the same league as a well decked out eclipse (think myeclipse).
Imagine if you had a socket wrench that put the right socket in place as you held the wrench near a bolt. Now imagine a socket wrench that lets you move the position of the threaded hole connecting two pieces. It also tells you the structural properties of the connected pieces and their functions. You can easily see what else they are connected to and how integral they are to the system. The refactoring, javadoc in place, quickly finding references, autocomplete, etc. can be empowering as well as overwhelming. These things make it (perhaps too easy) to drastically change your design, but they are becoming a standard in IDE's, so we're not likely to go back to the old days. I have worked with lots of architects who think there will eventually exist a code generating UML tool that works well and makes it obvious the impact of such changes. I hope that happens. I know vendors have been producing tools with this goal for a few years already.
I agree that creating app's with little or no detailed implementation is a recipe for a toy prototype, but turning your back on modern tools (like eclipse!) is just ridiculous. A professional, competent dev should be empowered to make these changes as quickly as is possible to do correctly. Eclipse makes this possible, and if VS 2005 does too, more power to 'em.
My experience was exactly the opposite. Until maybe 2 years I had never even attempted to write an application in or for Windows. VI was my lord and C/Perl/Python my New Testiment then one day after feeling somewhat deflated with what my GTK apps were looking like based on the effort put into them, I decided to venture into the world of Visual Studio just for a taste. The results were not what I expected...
.NET. But things didn't stop there. Not only was the application dramatically enhanced, but it was much more scalable and robust.
After a few short days of using Visual Studio I really started to come out of my shell. While I had used IDEs like Visual Age before, they never really appealed to me, VIM was about as close as I felt I'd ever get to a GUI IDE. Now all that had changed. Visual Studio just made it easier to focus on what I was here to do, write an application. I was simply more efficient and I took it upon myself to attempt a somewhat large project to really get my hands dirty.
I decided to port a large distributed network analysis application I had written for FreeBSD using a combination of Perl, C and PHP in C# using ASP.NET, Windows Services and some WinForms. This project had taken me approximately 1.5 years to complete on the UNIX side of the house and I was planning on re-writing every line of code for Windows. Quite simply, what took me 1.5 years to write in UNIX with VIM, took me a little over 6 months with Visual Studio and the help of
Don't get me wrong, I still code in VI and most of my client/server apps have Linux/FreeBSD support, but my IDE of choice is definitely Visual Studio. No question.
I'm a computer science student (3rd year), and we we're forced to use VS.Net in a class last semester. Having done some pretty spiffy things with it, I really have mixed feelings. I'm normally a gedit, GCC and terminal type of guy, so I wasn't overly excited for that course. After 5 months of heavy .Net usage, these are my feelings.
.Net was tkinter with python and XCode on my Mac. .Net is much more complex than the python, but not nearly as polished as XCode.
.Net just crashes and burns. If you're lucky, it'll pop up a box telling you what line of code failed in some closed source file you can't examine, or if you can examine, is worthless cause there's no comments anywhere. If you're not lucky, .Net will take the whole system down. If you're neither lucky or unlucky, you can use .Net like you would normally use GCC in any situation.
.Net won't be to bad. My overall oppinion of it is "bleh". I've used better, but I've certainly seen worse (Boa Constructor comes to mind). It doesn't promote good coding habits, but that's not really the IDE's main purpose in my oppinion. Your teachers or book should do that. .Net is good for those willing to put up with it, but for the OP's sake, drag and dropping objects does not a computer scientist make. Hell, I've got computer science professors that can't actually program, but they can write pseudocode for optimization problems for NP-complete problems without stopping to think.
.Net != programming teacher/book.
Pros:
It's a wonderful project management program.
The syntax highlighting and the step through code abilities were nice.
Creating command-line programs was actually easier than ever before.
MSDN.com is, surprisinigly, a really awesome resource for information.
Cons:
Creating a gui for a program was utter hell. When you start a program that has a gui, there's a bunch of code that gets written for you that you have zero control over. There's no comments explaining why it's there, and vague errors given if you mess some of it up. This may also be because the only GUI programming I've done prior to
The compiler seems a little fragile. Given that I'm not a stellar programmer, I make some syntatical errors every now and then. GCC can usually handle these, or give me useful information about what I did wrong.
Again, I'm only a moderate programmer, so maybe if code just clicks for you,
Computer Science != programming.
re well said. It seems many from the old school days have a tendency to hate an IDE for the same reason they consider GUI just eye candy. All they focus on is the drag and drop stuff, colors and buttons. Its far deeper than that, but if you dont get it, you probaly never will.
First off there is something completely inefficient about recoding the same things over and over such as UI elements and so forth, Seperating UI logic from the core logic is one of the key elements surrounding the use of a good IDE and platform. For those still in the VI world building CHUI (character apps) how would you know any better? You've been inefficient for the last several years.
Secondly, I could throw eclipse or any othe cutesy java IDE at a new programmer and make the same argument. The fact is, if its a Microsoft IDE most of you on slashdot just want to raise a stink. The reality is that Visual Studio combined with C# (not just VB) is one of the most powerful, produtive IDE suites around. Now that some of you have graduated beyond considering an IDE a text editor with colored buttons, maybe the lighbulbs will come on, but there is a lot of dim light in the slashdot world.
Lawl, thanks. I'm an anal-retentive nitpicker, so your pointer is appreciated. :-D Printf is a function, and cout is an instance of an ostream, I think. It's just that basic_ostreams and multiple-inheritances turn me on...
DATABASE WOW WOW
When MSFT's best Windows development author starts complaining about MSFT's development environment, MSFT had better wake up and take notice...
Is Capitalism Good for the Poor?
After you've written the code 10 times to create a button in your GUI, how many more times do you need to do it? Do you *really* learn anything new that 20th time you implemented your button code?
Do you have to memorize every function in a library, including the parameters that they require? Why not have something that can instantly bring up the information for you? You remember the operation and it simply reminds you of the parameters.
Tools like VS take the tedium out and let you quickly get to the meat of your application. Why spend tons of time writing stuff that you've written a thousand times before and is pretty much cookie-cutter anyway? These types of things scream to be automated. Drag-n-drop buttons and the code is made for you is the way to go. Spend your time on the hard parts of your application - the parts that you are *really* writing the application for in the first place.
Use automated tools to build the cookie-cutter parts of the GUI and application and then sit down and write the real meat of the application. It doesn't rot your brain, it relieves/removes the tedium typically found in writing code.
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 beginning of each line wrapping to the end of the preceding line. It was as if the entire frame buffer shifted. I pressed the Backspace key a couple more times, and it did the same thing. Then it started going by itself, with the lines circling around the screen and right up through the top until the screen was entirely clear. Then we called the IBM repair guy. I was very eager to tell him what happened and hear his diagnosis, but that's not they repaired 3278s. Instead, the repair guy had a box full of spare circuit boards. He swapped them in and out of the machine until the terminal worked again.
Yay! <3! I thought I was the *only* nerd alive who knew Z80 asm. I mean, it's the only way to go if you want to write calculator games...
...and hence, why calculator games should be the intro programming class. I mean, really, it's something most n00b programmers want to do, it teaches from the ground up (no "omfg wtf si t3h piontr wtf" later on) and it'll give a proper appreciation of of why efficient coding is important. It would also weed out those hooligans who think computer science is just an easier way to get a math credit than learning math...
DATABASE WOW WOW
So you learnt to program at Uni, eh? I guess grammar wasn't part of the process...
I had the a double stroke of good fortune when I learned Windows development:
.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...
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
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."
Premature optimization is the root of all evil
Code/syntax highlighting
Structure/layout
Designing graphical aspects (forms, window layouts, etc.)
And others
Actually, Kate plus Designer does that.
A Government Is a Body of People, Usually Notably Ungoverned
I think you missed the part where I dated myself; lets try again: I don't have it anymore, as all my cassette tape stored data were destroyed in the mid 80s when my kid sister taped over them in what I call the great Cyndi Lauper debacle. Nor do I imagine you have the (TRS80) hardware it ran on, or that you would want it if you did. This is my first program ever we're talking about. It wasn't a "mapper" for dungeons. It had one particular dungeon hard-coded into it; not as a big aray of data, but coded into the very control logic of the program. Modifying it is not a thing you would want to do. It didn't draw you a pretty map. It wrote out extended-ascii box-draw charachters that looked like a map if you squinted right.
Do you also smelt your own iron for your pots and pans just to make sure your dinner turns out right? What about those tires on your car? They are a safety device you know. Do you vulcanize your own rubber? The parents example is very good, in that it is safe to assume that factory produced products from reputable companies are going to be made with at a reasonable level of quality. If IKEA desks were "falling over without warning the first time your friend, who doesn't 'get' desks, tries to use it...", even one in a thousand, you would hear about the class action lawsuits. IKEA would be out of business, and the parent wouldn't have used that example.
So, given that your example simply doesn not happen, we can assume that the parent made a very good and valid example.
What's wrong with my grammar? I sure hope you're not refering to my use of the word 'learnt'..
No, you'll be fine. You're just jumping in head first. I would suggest Python as it's a lot cleaner/elegant and of similar power. You are just starting out with a stick shift instead of an automatic.
I am Spartacus
A: Write a program to figure that out? Pshaw! It's 9867312.
Largest number it could be is 987654321. But, starting with Petzold's observation that the number can't have both a 5 and any even digit, we drop the 5. Then, I recall a math trick to tell if a number is divisible by 9: the sum of its digits must be divisible by 9. 987654321 is divisible by 9. Dropping the 5 means we have to drop at least 4 more, so we drop the 4 (or the 3 and the 1). So, the number can't be larger than 9876321. Then, because there are even digits, the last digit has to be an even digit, so it can't be larger than 9876312. After that it was easy. Tried each number that fit all those requirements, in decreasing order. Only had to try about 10 numbers to hit on one that worked.
Intellectual Property is a monopolistic, selfish, and defective concept. It is "tyranny over the mind of man"
Yeah. Java? nearly as fast as C or C++?
Most. Painfully. Ignorantly. Sun sponsored. Comment.
EVAR.
I am Spartacus
But then, what do you expect from an outfit that believes a BOOL is tri-state. (one would have thought that would have been fixed by now, but nooooo....)
Mail? Put "slashdot" in the subject to pass the spam filters.
I agree that there are a ton of Visual Studio whores out there, but it all depends on how you learn the tool. The guys who initially tried to "sell" me on VS.NET did so claiming that everything was so "easy." I didn't use it because the things that would have truly made it easy (like populating datasets and binding them to web controls) still required some manual code when even Dreamweaver (which has a HORRIBLE .NET implementation) had managed to do this without. So I said to hell with it and I bought a great book called ASP.NET for Developers that showed you how all of .NET plumbing works and how to set everything up manually using a plain text editor.
After a year or so I started using Visual Studio to organize and compile my assemblies but I still didn't use it to write code. I finally moved over because of the IIS debugging features, but I hand code everything and dont screw with that drag and drop crap. As such it is light years ahead of what I was doing before and I really like it but I would hate it if my introduction to ASP.NET was though VS.NET.
I do understand the criticism though. I have tried some of the RAD features and they are lame. As best as I can tell, they are totally worthless with an object-oriented middle tier and it generates woefully inefficient CSS. But still, as a glorified text editor, it does ok.
Dissolve... Resolve... Evolve...
"Designing graphical aspects (forms, window layouts, etc.)"
Window layouts?!?!?
What layouts? You got fixed point layout (with anchors), or the equivalent of a border layout. Try to do something simple like the equivalent of a java FlowLayout or BoxLayout with VS.net. You'll either be coding the layout manager yourself, or buying a 3rd party solution.
Yes, like most other technology today, Developer Studio lacks that capital-Q Quality.
Zen and the Art of Motorcycle Maintenance.
aiko aiko,
...
20 years of windows forms -- where are we when the best and brightest of us
spend their lives in such minutiae? coding skills such as this could have provided
*real* tools rather than interfaces for the entertainment of the masses of computer
slaves -- perhaps that is unfair but
I started off learning Java programming around the age of 14, I found some tutorials on the Sun Microsystems web site on how to compile manually and spent far too much time trying to figure out how to make a jar file. No one had ever tought me any concepts of reverse engineering, if they had things might have gone a little faster.
I got rather proficient with the programming language and before long someone introduced me to the JCreator ide which does take care of compiling and running the code for you, as well as handling projects rather than having you edit makefiles; however, there is no click & drag GUI builder so it still doesn't do too much for the developer.
A few years later I decided to switch to C++ after I got well into Linux and started liking KDE more than Windows. Obviously for consistency with my favourite desktop environment I chose the Qt toolkit and started working with that, but I only used Qt designer from then on to build the user interface and handle makefiles and project files.
About a year later I finally got a reasonable computer science course at school, not the low budget MS Office 101 course, but rather a Visual Basic course for Computer Science 20 and J#.net for Computer Science 30. I was disappointed that we had to use J# instead of the real Java, but even more disappointed when I saw that the kids taking these two computer science courses were learning what a syntax, standard library and api was, but once they finished the courses they still didn't know what a compiler was or how to use it.
Sadly I suffered much the same in trying to learn Qt; I got too dependent on having Qt designer handle 90% of the work for me, and when Qt 4 was released with the designer stripped down to just that (only a GUI designer) I couldn't write anything that would compile any more, and now I can't even remember enough to use Qt 3. I'm now considering an alternative toolkit such as wxWidgets simply because it doesn't usually come with a full blown GUI designer and as such I won't be tempted to take shortcuts.
Tools that handle all the work are generally bad when you are still learning, or aren't well pracised. Later on I might start using KDevelop, but right now KWrite, Konsole and GCC are my friends. I learned first hand not to pick tools that make the job easier than it should be, you can't depend on those to always be there, or to remain consistent, and you don't learn many of the necessary skills by using them.
Using an IDE to program for you will NEVER give you a grasp of programming. Cookie cutter tools will create cookies. If you then build on TOP of those tools, then you can quickly implement SOME very simple-but-elegant interfaces in short periods of time.
Also, VS does not prevent you from implementing advanced interfaces (your own advanced controls).
I mean, hell, id Software even releases its source code [e.g., Quake anyone?] with VS project files. Any big Windows product probably uses VS.
Drag-and-drop has its place. It accelerates development on things that really shouldn't be taking you time. I don't need to WASTE my time coding a dialog button over and over again, when I can just drop it in and have the IDE plug in the code for me. Now, if I did not understand how the IDE was mapping the object creation and the event handling, then yes, I agree that that is partly dangerous. At the same time, if I were a beginner, I no longer need to know, or more to the point, care what is happening. As long as the IDE is putting it into an efficient form (which it does, in the case of .NET, all controls get created in the "Initialization" function), then why should we care once we know what happens? It's a waste of time.
The understanding of what is happening behind the scenes (automatic code creation, which not only is the wave of the future, but is also a very good way to avoid errors in rudimentary code) can and should be taught in introductory programming courses and books, which I would hope anyone picking up coding would take or read. Automatic code creation leads to a quicker understanding of the basics, once the code creation is explained, even in C++. It's all moot though, if you don't understand the syntax (which seems like it would be a problem with the kid).
Why is your friend's son becoming a better programmer? Because he is being taught how to be one. It has nothing to do with the IDE (as a matter of fact, I would say using Eclipse is a negative and I have always found its interface to be a bit less than intuitive, but I realize I'm in a minority here). Really though, experience is the key fundamental to most programmer's success. He probably would have eventually gotten annoyed with making tiny little VB apps and would have branched off to either something more advanced that would require a deeper understanding so that he would find it, or simply jumped to another language, which would have more obviously linked his GUIs to code (since prior to VB.NET, VB did not really show you where the GUI was being set up in terms of code, but you could see that information by opening the *.frm file in a text reader).
Is it just an issue of approaches? I mean, in my (C.S.) programming classes, we learned data structures and algorithms and how to write satisfying solutions to problems. From a "Software Engineering" standpoint, though, those kinds of activities may be irrelevant. The focus there may be on error handling and user interface design, for example.
Tim
So basically, the IDE/no-IDE argument is a rehash of the Safir-Whorf Hypothesis, just framed in programming terms. And just like the SF Hypothesis, it's still unresolved.
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.
I don't ask you to be me. I only ask you not expect me to be you.
"The incompetence of CS teachers lately has surprised me"
As they say, "...those who can't, teach.". There is no more reason to include the project files than there is to include the makefile for *nix.
And did you exchange a walk on part in the war for a lead role in a cage? - Pink Floyd.
Ummm thats a lame excuse to attack an MS product. You can't build a real application in VS by dragging and dropping, you need to learn a language. Who cares that he started with VS, it didn't get him anywhere but it didn't hurt either. He might as well have been writing the great american novel or something its not helping him learn to program and develop but its not hurting either so who gives a shit?
yes, but you don't say that you 'built' the desk when it comes from IKEA do you? Someone else built it, you just put it together. Same thing with many VS apps.
Yeah, the guy essentially tried to teach the kid basic arithmetic by handing him a calculator, then was shocked when he couldn't pass the test without it.
Why bash Visual Studio because you can quickly and easily write a GUI using it? Who here really feels that writing a GUI is any sort of software engineering? If you mainly write GUIs using APIs, you have no business calling yourself a software engineer. You can be a programmer, or some other name, but never attach "engineer" on it. When you get down to writing algorithms to solve complex problems, then you can start using "engineer". At that point, Visual Studio is just a handy IDE that's VERY well documented and can be configured to do whatever you want it to do. Who cares if you never use 90+% of the tools available in Visual Studio? As long as you can write fast, efficient, and correct code, it doesn't matter where you write it.
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 that VS and VS.NET generates can be rather obtuse at times. Intellisense can get REALLY annoying. Sometimes it really does feel like VS is trying to hijack one's code, but you know what? We as developers don't need to use it. I often find myself using some arbitrary text editor and calling the freely downloadable win32 SDK or
And I like it this way.
But when my employer comes around and asks me why I've spent the last hour hand rolling a complex dialog with property sheets and all that ballyhoo, when using the Dialog Editor or Windows Forms Designer would have taken ten minutes, what do I say? "Uh, I'm just pining for the days when men coded their own resources, with their teeth!"
But then again, I had trouble finding my belly button today, so maybe VS really does make me stoopider...
I, for one, am looking forward to the inevitable
I've use visual studio 6 and visual studio.net. Near as I can tell, every key on my keyboard still works, so I can type anything I want into my text files. There isn't anything VS keeps you from doing. But it does help you get the boring boiler plate stuff done fast so you can focus on interesting programming problems. Writing a GUI isn't an interesting programming problem, and I don't want to waste my time on that.
Since VS doesn't generate your business logic and since that's the most important part of a business app, I've got no idea how not having to work out your GUI placements on a piece of graph paper or having to hunt through manuals/search the web for that method you can't quite remember the name of makes you any less of a programmer. Even in my former career as a mainframe programmer we used a screen painter and could get a list of APIs from Quickref.
Does a Christian soccer team even need a goalkeeper?
Shoulda started with Perl. Everyone knows Perl is the best language for learning quality programming skills.
He wanted to learn to code, not to emulate a serial modem.
Come on, guys. Anyone who has done any serious programming in VS.net, knows that there is much more to it than drag and drop cute little widgets. Our organization doesn't use this stuff at all...we deal with the actual code (C# specifically) and never touch the draggy droppy stuff. The widgets are available for those "hobbyists" who want the easy solution, but there is just so much more there. More power to those hobbyists, I say - at least they are venturing into the world of programming. If they want more, VS certainly allows for them to delve *much* deeper. This mindless anti-everything MS bigotry is just so very tiresome and annoying and reflects ever so poorly on silly posters who talk about environments of which they haven't the faintest clue. It is the very worst of /. ignorance - blatant bigotry and elitism without facts and investigation.
So please...just stop the crap. Stop the ever loving crap!! This rank ignorance just reflects ever so poorly on the entire software development community.
Can't we all just get along?
Nah, perl is actually great. You just may be annoyed later in life when you have to declare variables, have to decide if you want an int or a float, or just generally create anything that needs to be maintainable and readable. I'd recommend using strict mode. It will help you write cleaner code and teach you some better habits.
Find coupons in Greeley
"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."
Every good coder I know did it this way. What I don't understand is why half of them think others should skip the self-directed thrashing about and skip straight to the learning it the right way. Learning it the right way is great once you've discovered the joy of creation/control/whatever but run up against the limits of your self-discovered techniques. I've never heard of someone who had never done any coding on there own, took some classes, and was worth a damn.
If visual design tools get somone interested in programming, and they eventually discover wizard-generated code they don't understand is causing them problems, the ones who are destined to be good coders will decide they must understand it.
In any case, everyone talks about "flashy wizard generated dialogs" as if this is all VS does. I don't even make dialogs. I just use it for the excellent text editor, pretty good project management, top of the line C++ compiler, awesome debugger, nicely configurable interface, etc. Frankly, as IDEs go, VS kicks ass. It's like a giant, vastly comprehensive toolbox; and everyone here is complaining that rachet based sockets teach you bad habits, you should only use crescent wrenches (which the toolbox actually also has). I don't know for sure, because I'm doing woodworking; but I suspect they are full of it because the chisels, saws and drills are first rate.
Let's be honest... I just recently moved from editing in xemacs to ms visual studio... went back after a few days, and found myself wondering why the little scrollbar wasn't coming down to tell me what members were part of my struct. :)
Visual Studio saves time, but at the same time, it denudes skills honed over an extended period of time.
Getting along fine without your Makefiles?
I have never heard of "*nix". How do you pronounce this?
Are you sure you know what "Unix" is?
I've seen others after they've been allowed to "learn what they want, how they want". And you know what the result was? An almost drug-like dependency on an IDE, with little to no understanding of programming. These types of people are useless outside of a Microsoft shop.
And this isn't their fault, it's just the way they've been taught. The Microsoft way is to throw as many programmers at a project as possible until it is done. Quantity over quality.
Don't get me wrong; there are plenty of extremely smart Windows programmers that use VC and have an extremely good understanding of programming. However, the majority of Windows programmers that I've seen churned out of schools nationwide fit the mold I described above: not actual programmers, but expendable, replaceable cogs in a machine.
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.
I for one wouldn't agree with that. I can see why it would be more productive to give fraction learners calulcators.
I will posit something here: In my experience, problems with interface, whether it's physical presentation or the logical design of the human-computer interaction are a much more *common* factor in making software unusable than bad code per se.
Perhaps we need a generation of developers who think first in terms of human - machine interaction and supporting processes?
I'm not say this is a substitute for good code, just that we need to think about it.
Dialectician. Archology.
Using anything that Microsoft claims to be a programming tool is like building your house on sand on the beach. At the whim of marketting and the malicious, misanthropic Microsoft business managers, the interface will be eroded away below you and your house will be destroyed.
Microsoft has never played fair with anyone who used their tools. They compeat with the peole who use their tools, eat their lunch, steal their ideas and then claim that they invented it all.
Microsoft is a monopolistic pig of a company and I will never ever buy their 'tools' ever again. They are greedy and selfish and totally against any programmer who isn't part of their mafia.
If you use what they provide you are a fool
Or in this case putchar. I mean, why call a function that is capable of rather complex string formatting if you're just going to print one character.
I started out with a handicap: started programming BASIC (Microsoft GWBASIC) when I was eight. I learned real programming (C++) in collage. Then learned Java in 'the real world'. And now? I am back at programming in Microsft: C#. Only difference is: my colleages use the design mode and wizzards, everything I create is a code library.
Right on brother. It really just *is* another way to look at the docs... At least all the features I use. ;)
You could just as easy fire up an old C64 and hook it to your television: debuggers are nothing new ;)
Synatax Error on Line 10.
I started off with PERL, then moved to PHP... and that was before I knew HTML.
Tell yo uthe truth, the whole drag-and-drop thing never seemed like "coding" to me. It seemed like.... a waste of time.
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)
Since I'm using wxWidgets for my OpenSource applications, I use VisualStudio quite a lot, even if I intend my applications for Linux. This is because there isn't any useful debugging tool on Linux. GDB: Only Make has as similar bad command mode, DDD: Crashes more often, Eclips: Never been able to install it for wxWidgets, Anjuta: Haven't come to test debugging. I've looked several times at any IDE listed at freshmeat.net but 90% doesn't even support debugging and therefore don't deserve the predicate IDE! I ask when is there a usable debugging tool on Linux?
O. Wyss
PS. You can view my with VisualStudio created Linux application via wyoGuide.
Do you code in .NET, Java, VB, Perl, Python, Ruby, Guile or whatnot? If so, I'm sorry to report to you that your level of programming incompetence is high. You're a loser wannabe programmer!!!
As long as we're telling stupid prof stories...
There is a professor at my school who teaches a class at the tail end of the CS curriculum that all CS majors must take. The problem is the guy who teaches it seems to have given up understanding of all scholarly pursuits of CS some 20 years ago. The class consists of him showing us PPT presentations and giving us articles from "experts" in such a way as to pre-suppose that we are not qualified to engage in a scholarly discussion on the merits or demerits of something he hands out. I've become so irritated with this teaching style I don't care that I annoy the prof. Upper division major courses *should* be a forum for critical thinking and exploration. So anyway...
A couple weeks ago we went through an "identify all the test cases" exercise with a simple problem: a function which classifies 3 side lengths with whichever type of triangle they could form. It was basically looking to see if you could identify boundary conditions and negative test cases.
My suggestion to test lengths of MAX_INT or (MAX_INT/2)+1 was pooh-poohed because the infallible software testing guru who wrote the exercise didn't find such a condition a necessary test.
However the obvious negative test case - three side lengths that could not form a triangle did need to be tested. Someone asks "well how do you determine that those sides could not form a triangle?" The Prof shoots back "If the sum of any two sides is less than the value of a third side." So I call out "you sure you don't want to test MAX_INT?" The prof paused a couple moments, then ignored me and continued on. The whole class let out a nervous laugh.
Apparently testing gurus don't always remember that integers overflow, and that fact shakes the foundation of some Prof's world.
Education is a better safeguard of liberty than a standing army.
Edward Everett (1794 - 1865)
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.
*good* Perl programming is just as good a start as anywhere else. Send 'em to Perlmonks and leave'em to it.
Ticketmaster basically wrote Template Toolkit. And of course, their web site sucks ass. Obvious really. Whenever i hear the Perl trolls, I just remember Paul Graham's quote about Viaweb (Yahoo! shops):
"During the years we worked on Viaweb I read a lot of job descriptions. A new competitor seemed to emerge out of the woodwork every month or so. The first thing I would do, after checking to see if they had a live online demo, was look at their job listings. After a couple years of this I could tell which companies to worry about and which not to. The more of an IT flavor the job descriptions had, the less dangerous the company was. The safest kind were the ones that wanted Oracle experience. You never had to worry about those. You were also safe if they said they wanted C++ or Java developers. If they wanted Perl or Python programmers, that would be a bit frightening-- that's starting to sound like a company where the technical side, at least, is run by real hackers. If I had ever seen a job posting looking for Lisp hackers, I would have been really worried."
Learning LISP is on my list. It's weird. But LISP is the latin of programming. Learn that and everything will fall into place.
Fucking Perl trolls.
-- Trinity in high heels carrying a whip: The donimatrix - there is no spoonerism
Java is not cross-platform, it is a platform. If you write to the Java platform, your code will/can only run on that platform. Same as writing to the Win32 platform. At my first job in addition to the Wintel boxes running Windows NT we also had a DEC Alpha RISC machine running NT for Alpha, which we recompiled our code for and tested on. I didn't suddenly rejoice that Win32 was "cross-platform".
Java is cross-OS insofar as there's a VM available for it on the target OS. Similar to C++, which is cross-OS for all OS's that have C++ compilers.
Attention zealots and haters: 00100 00100
One reason I use Eclipse is because of its top-down support. If I write a class that doesn't exist with a couple of clicks I can create a new file with the class in it (that's great if you create a lot of new types of exceptions for example).
Also if you invent a method you can click on the error and make it generate the stub for the method. I can't live without this stuff.
Also if your projects have 1000s of classes it's easy to call Ctrl-Shift-R and partially type the class name and enter and it takes you to the class. (I never click thru the packages anymore.. it's too slow)
Thats the new paradigm.
It's utter rubbish to suggest that a software program is responsible for people being lazy. Visual Studio allows you to create standard controls and layouts very quickly without having to do all the grunt work of repeating code you've entered into a million projects before.
With Visual Studio you can still get access to the C runtime and the Win32 API's, and you can add assembler too if you like. It just makes it easier to do those mundane tasks, giving you more time to concentrate on the finer details of your application.
Actually, Kate plus Designer does that slower, less efficiently, and its delivery is less aesthetically pleasing.
The first programming language that I seriously used, and the only one that I used in high school, was VB6. This experience definitely rotted my brain, and in some ways I wish I had gotten a better start. I knew how to drag-and-drop a button long before I understood the 'event handler' concept that powered it. I was changing the properties of visual form elements long before I discovered that these properties were even able to be edited in code. If you had asked me back then what the crucial first step in 'programming' was for a typical program, I would have said: "drag elements onto the panel, move them around, and change their properties".
Now, I'm studying CS as Uni, and have mostly left VS and VB behind in favour of Java, PHP, and C. As someone who started out 'on the wrong side of town' (in programming terms), and who has now learnt the value of the code-it-all-yourself style that Microsoft so discourages, I guess I have a clearer perspective than most as to how detrimental it is to start out with something like VB.
Personally, I don't think it's such a bad thing. Drag-and-drop GUI design really appealed to me when I was starting out: who knows, maybe if I'd had to start with Java's layout managers, or with C++'s libraries, I wouldn't have pursued programming further? The ease of VS certainly helped me get in to programming in the first place. Now, my favourite environment for GUI design is XHTML/CSS. So when (only a matter of time - so many jobs involve it) I return to VS, I'll certainly be much happier with XAML, as it sounds like Microsoft have finally discovered the right balance between intuitiveness and clean code.
It's possible to start with VS, and to still become a good programmer. I know because I've done it. The dangers of going beyond hope of recovery are present, but if you can overcome them, you can become just as good a programmer as those who started with a better language like C or Java. You'll also appreciate some things more than these people ever could.
I think the best way to learn to program is almost a chronological technique: Start with the traditional methods so you have a firm grounding of the knowledge and techniques, and are then able to take advantage of any "power-features" these weird visual thingies have (or just write more efficient or powerful code by doing it the good ol'fashioned way).
I personally can't fathom out how to use the visual programming "languages", - I take pleasure in writing programs as if it was the '70s (despite only being 22 myself) - I imagine I have very little processor power, disk space or RAM and try to squeeze the very most I can out of it. It really helped with my final year project at uni - a novel graphical package that (just about) worked on a 486 with 16Mb RAM and a bit of swap-space! Some of us had little competitions on how to write the most efficient code...right down to working out which numerical operations used the least processing cycles (e.g. x/2 which is often just a binary shift to the right)! There's something inherently wrong with these weird programming environments that force you to produce programs in a certain way... Maybe I'm old fashioned but I don't think I could produce anything I'd find useful with one of them. It'd look good but there'd be nothing under the bonnet.
Luckily Microsoft catered to people that aren't the best Windows developmenet author and offered 'New Windows Application' for people that don't know any better.
Sure, it means that people with less programming skill will be able to write software. Does that threaten you?
On software developments I control and influence I'll ensure waste code is removed, that people learn how to do things 'properly'. I'll also let them make use of IDE capabilities where appropriate, including 'intellisense' (or rather, its equivalents), including stub/skeleton generation (I write distributed systems), etc.
But if someone wants to write software for the first time, and picks VS, and uses 'New Windows Application'? Well, that's a new Windows developer, and Microsoft are happy.
The speaker (in the article) didn't say "don't use VS", he said "Here's how I recommend you use it". That's not damning. That's publicity. I think MS will be happy with that.
Don't forget integrated, smart debugging. That's one of the most important and underappreciated elements of a good IDE.
I don't think the author is that much against Visual Studio. He was more just pointing out the pitfalls of having an IDE do some of the work for you, tinged with some "simpler days" nostalgia. That said, we cannot go back to the good old days C-style GUI development except for the most basic of applications. We are consuming ever more vast amounts of information every day on our PCs (and game consoles, and even handheld music players for that matter), and such vast amounts of information have to be wrangled.
Properly decoupling components and systems (as the author advocates) trades code complexity for system complexity. And frankly, I'd rather have 30 reusable classes with well-thought interfaces than 5 tightly-coupled functions that can only ever do what they were originally intended for. C++ was designed that way -- to allow properly structured code to facilitate fast, reusable components. C# is a natural result of many years of C++ maturation, just as C++ evolved from C.
With all these components, though, comes the need to be able to quickly access and manipulate them in your code. Visual Studio (which, don't get me wrong, certainly has its faults) makes great strides in making larger tasks tractable.
I think spell-checkers may make some people lazier, but that doesn't stop me from caring how I type. It just means that I don't have to dig out a dictionary when I think I might have spelled something wrong. In the same way, Intellisense doesn't make me lazy -- it just allows me to spend my time focusing on the parts of devlopment that really matter.
Slashdot EeziPost (TM) MK III
[ ] Another: [ ] Dupe [ ] Slashvertisment [ ] WTF [ ] $editor is a dork
[ ] Frist psot [ ] link to GNAA [ ] Link to goatse [ ] $random_drivel
[ ] I Haven't RTFA, but... $random_opinionated_comment
[ ] Slashdotted already!. I bet their server runs on $topic_item too
[ ] Soul_sucking registration required
[ ] Mod Parent [ ] up [ ] Down
[ ] Fsck: [ ] SCO [ ] Micro$oft [ ] DMCA [ ] DRM [ ] MPAA [ ] RIAA [ ] Google [ ] Bush [ ] You all
[ ] I for one welcome our new $topic_item overlords
[ ] Imagine a beowulf cluster of those
[ ] In Soviet Russia, $topic_item owns you!
[X] Meh!
[ ] Netcraft confirms $topic_item is: [ ] dead [ ] dying
[ ] But have the inventors thought of what will happen if $random_amateur_insight
[ ] Once again the USA is clamping down on my [ ] Amendment rights.
[ ] You insensitive clod
[ ] But people who download music from P2P networks are more likely to buy the album
[ ] Cue DVD Jon-type crack in 3..2..1
[ ] Torrent, anyone?
[ ] Here's a link to a patch: $random_linux_distro_url
[ ] Profit!!
[ ] Still no cure for cancer
[ ] Coral Cache: XXX.nyud.net:8090
[ ] Microsoft [ ] Google [ ] YaHoo! [ ] SCO is evil
[X] When I was a kid, I used a Apple II and Apple Basic.
[X] Apple? Lucky you. When I was a kid, we had to do this in binary.
[X] Binary? When *I* was a kid, we had to do it with only 0's.
In the UK, Manchester, we didn't use VC++ at all. All programming was done using nedit in whatever language we were learning ;) (In finished 2 years ago)
When one has VC installed, one is not required to use GUI to build applications.
In fact, VC includes very decent optimizing compiler (which in my experience does much better job than GCC 3.X.Y). Plus, it is possible to get MS DDK (which also includes parts of SDK and C/C++ compiler) and MS SDK - they together make an excellent choice for MS application development.
Here's a pointer to Amazon, and you can read some excerpts and an interview in the Salon archives.
(No, I'm not Ullman...)
Man, Visual Studio has HONESTLY saved me so much time. I'm a CS student. For all the cout or cerr statements I would've stuck into my program and then taken out, I would've lost many hours. The debugging feature of Visual Studio is definitely something for Micro$oft to brag about. I thought I heard there was something similar for *nix like BloodShedDEV or something.
Speaking of such things, just a quick question. I'm a long time KDE/linux coder which has been forced to use borland c++ at work (I'm sure they're all the same, so continue reading anyway..)
:) In QT in linux (to show my experience) I would emit a signal (emit debugInfo("Printing") ) then in the GUI I would catch it and print whatever the string is. Using callbacks for this seems wrong. How should it be done please?
For the properties of, say, a button, there are events. I can double click an event, and it generates the function name for the event ( btnMyButtonClick(Sender*sender) { } ). Say I have two buttons that when clicked do exactly the same thing. (This is more common with events like onExit, but anyway..). Should I let it create the two default functions, then get one to call the other, or get them both to call a 3rd function, or should i make a function, then link the event to that function? They all seem to have their drawbacks.
Actually while I'm at it, another question.. My classes often want to show error/warning/debug messages to the users. At the moment I've got a Memo on the form, then call Form1->Memo->Lines->Add("Printing picture 1") or whatever. But I hate the way my normal classes are directly calling and using the GUI. How do I fix that?
Thanks
That's why God created VIM
I would go with option 2 (creating a third function, and having your IDE-created functions both call it). Yes, it involves creating another function, but as sure as eggs are eggs, you can bet that sooner or later you are going to have to make the buttons do subtly different things, while still preserving some of their commonality.
"Life is like a sewer - what you get out of it depends on what you put into it" - Tom Lehrer
I used to hate auto-generated code, but I don't hate it as much with Visual Studio. (Disclaimer: My experience with Visual Studio is restricted to some reasonably specific uses of it, so it might not apply for everyone.)
The reason I hated generated code was because it wasn't complete. A wizard of some sort would generate between hundreds of thousands of lines of code to get a project started, after which you'd proceed to fill in the gaps.
This was perfectly fine until you'd realise that you wanted to change something... which would require either starting a new project from scratch, or diving into the generated code and spending a long time figuring out what's going on. At this point, there's hardly a point in having had it generated in the first place.
What Visual Studio tends to do, though, is keep links between the generated code and the interface used to generate so you can continue to modify anything through the same interface that was used to create it. If you use the design view of a form to add components, you'll be able to continue to use the design view to modify those components. There's no need to understand the code used to build them, because the interface through which they were created is frequently rich enough to do everything to them that's necessary.
I guess I don't mind Visual Studio generating and hiding code, simply because it does such a great job of making sure that if I decide to go down that route, I can be confident that I'll never have to read or understand it in the future.
No, no - we need to make sure that kids don't learn to program and become increasingly stupid. That way we become the first generation not to be over-taken by the one after.
Let them piddle around with drag-and-drop components.
You don't even need to a computer to program much less an IDE. Real programming is about algorithms and data-structures. Read knuth, write programs with pen and paper...
How does an IDE help you choose the right algorithm? How does it help you _design_ data structures? Answer? It Doesn't!
What it does is help you deal with the 'plumbing' which isn't really programming anyway.
So the answer is that everyone is correct! IDEs help you produce working softare faster (good thing) - but they have nothing at all to do with programming!
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
It appears to "excel" in these areas if you don't know the IDEs that VisualStudio copied these features from.
Hey, don't mock him, he used "Unix".
True confidence comes not from realising you are as good as your peers, but that your peers are as bad as you are.
What your friend's son needs to realize is that he has a choice to make.
If he wants to become a programmer then he has to realize that there are underlying architectures and systems that he has to accept as reality and to embrace their existence. In the end his code is compiled by the compiler into a stream of 1s and 0s. Prior to this it was a bunch of translatable instructions the compiler could translate. It doesn't matter how pretty or funky or well designed a dialog box is or how user friendly and expressive his buttons are if they don't do anything. And they can only "do anything" if the compiler has the necessary instructions.
It's not the case that "you have to learn to code cos that's how we've always done it". Simply put, you have to learn to code because otherwise the computer is treating you like a moron and doing your coding for you. And doing it wrong!
Otherwise become an artist or designer or project manager or sys admin or Window technician or whatever and don't feel the need to worry about coding. It is not "a bad thing" to be any of these. I'm also an artist (musician) and a designer and I have to say, when I'm playing I don't worry about the underlying fabric of the guitar strings or the circuitry in the amplifier any more than is necessary to execute the job at hand - namely playing music.
But if I were to become a luthier and turn around and say "oh woodwork is stupid" then I'd be doing what your friend's son is doing. Tell him to take the stabilizers off and stop having Uncle Bill Gates holding his hands - and learn to do it properly if that's what he wants to do.
Well, as long as you implement booleans as ints, they are 2^32-state variables - that's fuzzy logic, you know ;).
Or maybe Microsoft just wanted to get their OS API ready for quantum computers ?-)
Anyway, I checked the page you linked, and found these things to nitpick about:
If there is an error, the function returns -1, which is nonzero, which means that a message other than WM_QUIT was retrieved. I presume that the first paragraph should read "the value is greater than 0", but I can't be sure, based on this documentation.
Okay, this time I'm complaining about weird sentence struture. The above paragraph is from the GetMessage documentation. Shouldn't it be on the PeekMessage documentation, and the GetMessage documentation read "Unlike PeekMessage, GetMessage function waits for a message to be posted before returning" ?
I'm complaining about this because the second I read it, my brains drew the conclusion that I was reading the PeekMessage documentation, leading to momentary confusion - and confusion generates errors.
Forget magic. Any technology distinguishable from divine power is insufficiently advanced.
That article is the most idiotic I've ever seen on Slashdot....
1. Autocomplete and IntelliSense is evil. Sure, that's why every Linux user has it turned on in his favorite shell.
2. Studio can't help me finish programs. What an idiotic IDE! It can't even use Windows Telepathy API to read my mind and write eveything automagicaly!
3. Criticism of WinForms is fine, but it is not really related to VisualStudio.
etc.
PS: I use VisualStudio+VisualAssist as my primary IDE for C++, and I don't use any code generation or wizards (aside from "New Project" wizard) provided by VisualStudio. Currently, I help to develop Code::Blocks IDE because there is _NO_ OpenSource IDE for C++ which is even remotely as powerful as VS (and don't get me started on Emacs or ViM).
These are the two kinds of people who hate VS.Net. Do you have something against debuggers?
that's a shame.. I think that Java holds your hand too much and I'm kinda disappointed that they're trying to get programming languages to do everything for you these days, but I guess some people maybe thought that about higher level languages compared to assembly :s
which is totally what she said
True True!
I am yet to find the distro that actually has a 3DFS... I wouldn't mind navigating my files in 3D, even just for the gimmik!
----- Concentrate on promoting more than demoting.
From experience in the field as a developer, I can say that working with .net does rot the programmer brain. My last job I used JBuilder for Java/bean/jsp development, and now I work in asp development. It seems that ASP developers hold to no real standard no Pattern no OO... I want to shoot myself when looking for things in the code to fix. .net makes things wayyy to simple and theres no set standard. I hate it, but it pays more. Heh.
-- Josh
"Whoopie! Man, that may have been a small one for Neil, but that's a long one for me!" - Pete Conrad
... an "identify all the test cases" exercise with a simple problem: a function which classifies 3 side lengths with whichever type of triangle they could form.
... MAX_INT ...
Eh... I've read your story and are left wondering; are you sure the exercise function used *integer* parameters rather than reals/floats? Few sets of 3 integers will form a triangle, and you'd have to implement a test for integer triangles. This seems to be a bit much for an excercise about limiting cases...
That said, if the exercise used reals, I suppose the solution still should have tested for overfolows; like checking for NaN:s and INFs.
Open Materials Database
But it seems I can blame Petzold for passing that advice on^_^
I have never heard of "*nix".
Sorry, it's a term used by software developers, where I work at the moment it stands for Linux, Solaris, Aix & HPUX. We write our C code so that it runs on both *nix and Windows.
A language tool should help you write in that language regardless of the target platform, if you knew what you were doing with VS you would realize it excellent productivity tool.
Are you sure you know what "Unix" is?
Does anybody? I learnt C 17yrs ago on a flavour of Unix called System V.
And did you exchange a walk on part in the war for a lead role in a cage? - Pink Floyd.
"Fuck off, Alecstaar. You haven't got a clue what you're talking about." - by Anonymous Coward on Wednesday October 26, @07:04PM
:)
LOL! Ok, if YOU say so... & with a reply like that, I suppose YOU do?
*
Above all/after all - I've only been @ the field of coding since 1982-1994 as an amateur, & 1994 onwards (up to today) as a pro in this field of endeavor!
I've only seen the changes happen between now & then and also used the very toolsets I mentioned in that period as well...
So, according to YOU, there, in that sharp, insightful & intellectual reply of yours loaded with profanity (since it apparently is the best you can muster)??
Well, I guess by using tools like the ones I mentioned first hand & hands on, that I didn't get to make any observations on quality improvements in newer tools vs. older tools used for programmatic development over a 20++ year timeframe then (as well as what you could gain via using older vs. newer tools on the converse), as well as what I felt in the way of coursework in academia benefits coders (especially new ones), right?
APK
[without Visual Studio] It's just me and the code, and for awhile, I feel like a real programmer again.
You don't have to do things visually. :P
Get your facts straight before making mud pies
I think that Visual Studio can be a bad thing when used too heavily. It is great for browsing code and/or debugging, but I still prefer to write most of my code with vim because there are no clunky menus to perform common tasks. The code looks cleaner when restricted to 80 characters per line and because I can customize the syntax highlighting any way I like. That is a great point though, Visual Studio tends to offer solutions to common problems without the user ever having to learn the crux of the problem or how to solve it on their own. That said, it also has a lot going for it - especially version control integration.
I always get a kick out of new C++ programmers starting with Visual C++; using MFC classes like CFile or CTime without realizing that the stdlib provides the same functionality without cripling portability. If that same programmer never looked beyond MFC they might never learn how the underlying Win32 API works. While some might argue that is a good thing, the programmer would not learn about the "Chain of Responsibility" design pattern, which is the basis for most event driven operations in Win32. And then there is "printf (...)" vs. "cout", the latter may seem simpler (and for the most part is), but a curious programmer might wonder how "printf (...)" works and discover variable argument lists. I do not, however, feel that using Visual Studio "rots the brain"; it merely stunts a coder's growth, in the same way MFC does.
With a reply like that I think you don't know what you are talking about. Who the hell is AlecStaar anyhow? The poster you replied to was someone named apk and he did know what he was talking about. I come from the same timeframe of learning as he mentions and he is dead on right.
Yagu:
While I liked his creativity, it was evident his depth of grasp of the workings of programming were as deep as VS allowed him.
That is a completely incorrect comment. Visual Studio "allows" you to go as deep as you want and need. I am a professional C++ programmer who writes financial service applications. I do a great deal of low-level socket and multithreading work. I write services that control ATMs and POS terminals, among other things. I also teach graduate-leve software engineering at two universities. At work we use Visual Studio exclusively and much of our code is straight ANSI C++. I can tell you with 100% accuracy that Visual Studio does not place any constraints on your access to the OS, the standard library, or any of the underlying code. In fact, MS makes the source code for MFC (crappy library) and ATL (great library) freely available. Any limitations in programming ability that your friend's son has are entirely his own fault and not that of the tool.
And I ask Mr. Petzold and anyone else....why is anyone using VS.NET code generation in the first place? You do know that you can turn most of that off. For ASP.NET, never use the designer, set it to the html editor. I write loads of .NET everyday and never once have I wanted or needed for the dev env to generate code for me.
Really he needs to realize that so much of the stuff there in the designer is for people who don't have time to learn the entire .NET framework and want to fire off some simple db app in under a day without knowing little or no programming. I'm looking at you ASP "coders."
I've never met any real developer that uses the VS.NET designer. Every other aspect of VS.NET is great. Intellisense saves you from looking at the docs, you can easily set compiler options, symbols, etc...you can change the indent of big blocks of text, write plug-ins, doc almost anything anywhere.
Sorry but bad programmers promote bad practices, not the dev tool. You should be shot if you use any dev env code generation (hello rational!). You should be able to pickup any dev tool and use it within a few days like a pro. Really, it's not a hard concept. If it's there, doesn't mean you have to use it or the program is evil because of it.
I have to agree. Anyone who claims that Intellisense makes you a poor coder, or (by extension) that a source browser is for dumb people is being stubborn and crusty. Visual Studio is an excellent IDE - it's code introspection abilities are powerful (but VisualAssist makes them incredible), it's project management is adequate and far simpler than autotools, especially for simple projects, and it's compiler (in recent versions) is excellent. People who focus in the form designer (it's lousy in C++ versions, which are only used to edit embedded Windows dialog resources, and only adequate for .NET forms) are completely missing the point.
Designing graphical aspects (forms, window layouts, etc.)
Huh? Visual Studio lets you drag a bunch of widgets around. It doesn't teach you anything about good design.
// This is not a sig.
Can someone give me a few examples as to how visual studio in itself forces bad habits upon you? I've been using visual studio for a long time, and I find alot of the features to simply be useful. Regardless of what what language I'm programming in, it doesn't "force" anything bad on me. I think people write bad code because they are bad programmers. As for the guy who wrote about his son. The KID is NOT a programmer, did you expect him to be using perfect design patterns and a strict OO aproach !?!? Didn't you say he started taking programming courses AFTER he got visual studio ? Also, VS is just a fancy IDE, what YOU type in the "white area" is all up to you, I doubt IntelliSense and code-hiding are making your code bad. I think VB is what you guys should be complaining about.
Any tool used improperly will lead to undesirable results. Turning someone loose with something like VS or KDevelop/Qt Designer when they don't already have a grounding in programming is like showing someone how to use a handsaw and then taking them into a woodshop and telling them to figure out the rest of the cutting tools on their own.
The real failure here was not in "allowing" the use of VS, but in doing so without providing any real background on what programming is really about beforehand. In fact, the same argument was (and still is) made regarding calculators and mathematics classes. Sure, the calculator can do all the work, but the student still needs to have the relevant understanding of the concepts behind it to truly succeed.
Of course, if all you really want is an eye candy code monkey, then damn the torpedoes and bring on VB.NET!
--- Void where prohibited. Your mileage may vary. ---
This is because the actual learning about the language and reading lots of other code doesn't happen (some times ever it seems).
Me and the other developers all laughed with horror when on a course and the new boy described that. We all worked in safety critical software and on the whole only got around to typing make when we felt sure it was right. By that I mean we had thought carefully reading and re-reading the code, perhaps had an informal review done.
Then of course when it more often than not compiled first time you ran it against the test suite to.
In short it is my opinion that such tools reduce the care and thought put in, breeding bad habits along the way.
That was YOU?!?
OH please...
Ive been coding since ASM in hex on paper in 1986, then hex in monitor editors on c64 to compiled asm
to C then 68k asm and unix c , windows c, mac c, win32 c++, mfc...
DEV Studio is good.
If you write shit code, then you most likely wont write good code in VI/GCC on netbsd.
If anything , devstudio makes the mundane crap things easier, yeah like swapping screens, to type make, is
MORE ELITE than hitting F1. You can make F1 in VI to do the same thing or the term prog. BIG DEAL.
Computers are supposed to work for us, if your 38yo and spending time doing things the 70s text way, your
old sod. You dont see construction workers using ropes/pulleys and making their own bricks do you.
If you take 6months to do what good tools help you do it in 3 weeks, then your business plan is dead, your behind and
someone else will get the dollars.
Liberty freedom are no1, not dicks in suits.
Good point! I forgot about that.
You can definitely feel the effects of having used an IDE with code completion for years once you have to go back to a plain editor and remember everything yourself. What a shock. It's like being on crutches for years, having them taken away from you, and being told to walk.
BTW, VisualStudio was pretty late on the code completion thing. Borland has had it for years and years (not that I'm recommending either company).
What I found code completion awesome for is actually learning a language. I learned core Java really quickly because I could easily explore all the classes and methods from within my IDE and not have to turn to documentation. Learning Perl after that without a fancy IDE was quite a change.
I find the GUI designer part of the IDE to be very helpful. I agree that one should know that when they drag a text box onto their form/canvas/window/whatever it creates an instance of the textbox class in the form source file, and sets the properties, etc.
However, when you are building an application with many modules or hundreds of screens it would take so much more time to manually code the layout. Why spend all this extra time to manually type out the same code the tool will generate for you anyhow?
I do see your (and everyone else's) point. Again, I totally believe that you need to understand what's going on and what the tool is doing for you. Same way you should know how to do all the arithmetic and equations when you use the calculator.
I usually say that this requires one to write a what_is_truth() function.
At MS, confusion is Job 1.Mail? Put "slashdot" in the subject to pass the spam filters.
What does it do? What can it do?
Well for starters you can win the IOCCC with just a little more effort, and that had to be worth something.
Don't do that in code I need to maintain though.
Really? Thats interesting. Did they get rid of all the HP-UX boxes in Everitt as well? For that matter, have they gottten rid of Everitt yet? Thats the building we needed replaced, not DCL.
I still have more fans than freaks. WTF is wrong with you people?
Not that I like IDEs, but I was impressed that the VS 2005 editor is folding default. I think this addresses the articles gripes about not being able to read the whole code, at least partially.
:( I can only hope that this will alert people to the great use of folding, and we will see more folding editors in the future.
r s_with_folding_capability
Folding is a great feature, and one that lots of good editors (Textpad is my current preference) seem to omit
There is a short list of such editors here:
http://en.wikipedia.org/wiki/Folding_editor#Edito
-- Mike
He did speak on subject. Knowing how windows came to be is helpful if you want to program. If he had spoke on something like the blood lines of the quarterhorse he would not have been on topic. However he spoke about windows, so he was on topic.
That isn't to say this was the best speech he could have given.
are you sure that should not be:
box(1,1,i,i)
?
Actually, Kate plus Designer does that slower, less efficiently, and its delivery is less aesthetically pleasing.
I can launch Kate, edit a function, connect it to a signal via Designer, and start compiling, all in the time it takes VS.NET to slide out a sidebar.
A Government Is a Body of People, Usually Notably Ungoverned
I sense a logic fallacy here. I'm a very accomplished developer. I very much know how to design and implement properly for the long term, as well as the short term. While I don't *need* the IDE to *understand* the code, I have an exceptionally difficult time making sense of the *all* the code without the IDE. This of it this way, I can open up the files off the file system in Notepad, or I can open them up in VS.NET/Eclipse and have many features, such as syntax coloring which *helps* my brain to see varying code block, quite naturally, by their color, or I can click on a symbol or method and jump straight to its declaration. If people use the #region block, in the IDE, it collapses them so I can filter out code I don't want to look at.
In short, I've become quite dependant on the IDE, and can probably write better code than the vast majority of coders/developers/architects out there that complain about everyone elses code. But alas, I'm by no means perfect. The IDE just makes me more productive. I would venture to dissagree with your assertion that if the person needs the IDE to understand the code then they are not a programmer. Of course, I can do all that by Notepad and understand the code, so perhaps I'm proving your point, but alas, the IDE makes me 10x more likely to understand the code 10x quicker than using Notepad to open the files.
Thanks,
Leabre
They are not even remotely the same.
Think design vs build.
Are we talking programmers or designers?
If someone is interested in designing software, VS is a suitable abstraction point to be introduced to. If someone is interested in programming, this is just plain wrong, period.
ALL programmers need to be introduced to language first and formost. If they aren't, well are they really being trained to be programmers?
VS is a horrible starting point for learning how to program.
VS is a wonderful starting point for learning how to design software.
Besides, this is nothing new. Think of how many 'programmers' that are out there that couldn't code themselves out of a box because they learned how to 'code' using VB6. It's not that they aren't good at what they do, it's that they have learned how to design, now how to program.
Pick your profession, then pick the appropriate tools.
No Comment.
You need to read up on events my friend.
The answer to all of your stated problems are in proper knowledge of events.
No Comment.
I code c# by hand and have for over three years.
I also code much faster than the inbred vs junkies that i work with.
I dont believe using this tool speeds up development...it only speeds but people that dont know what they're doing. If you write library style code you can easily copy, paste and re-hammer much faster than dragging around boxes in a buggy piece of software.
To each there own though.
I agree with your statement. Programming is a discipline just like any other, and in any other discipline you should learn the basics before you learn the tools to make things easier. Architects, for example, learn the basics of Architecture before they jump into CAD. Schools that are worth a damn teach Architects the basic models and have them use the old fashion pen and paper method before jumping to CAD, although that margin of time does seem to be getting smaller. Math is another example. You learn all the pain in the ass Algebraic methods for solving problems before you learn the shortcuts in Calculus because it provides solid fundamentals.
Visual Studio should not be used as a framework for teaching. It is a tool for developing, and provides a way to develop the visual portion of an application quickly. I could just as easily say the same thing about QT Designer or GLADE. In fact, when I was reading "Programming with QT", the author forces the reader to learn how to build UI elements programmatically first before introducing Designer. That way, if Designer screws something up, you can go in and understand the code it generated enough to correct it. I agree with this approach. Back in the days of DOS, I learned how to manually draw UI elements in ASM, then in a high level language like C and Pascal before I moved on to using libraries that did this for me. The same thing holds true for NCurses.
The point is, VS is a tool, and should be treated as such. A developer should learn the language independent of tools that make pretty interfaces. There is a reason that most programming books worth their weight start off with simple examples like Hello World, sum of two numbers, etc before getting into UI design.
Edit/resume has been available in compiled Lisp environments since at least 1982. That's when I first used it in Franz Lisp on a VAX, and it was available on Lisp machines before that, in 1979/80. Not 30 years, granted - will you settle for 25?
To a Lisp hacker, XML is S-expressions in drag.
And you try and tell the young 'ackers o' today that - they won't believe you.
<shakes head>
correct
The function just needed to determine the type of triangle that would be formed given the length of its sides. The function took three integers and returned the type of triangle formed. A decidedly different problem from integer triangles link you posted.
Education is a better safeguard of liberty than a standing army.
Edward Everett (1794 - 1865)
Tim
It's not like a calculator since you can't use a calculator to actually do the computations by hand, whereas you can use Visual Studio to write an app completely by hand....just like the old days.
Well, we're talking about Charles Petzold, who's been a serious MS writer for ages. He was talking at a .NET conference, or somesuch (at least, definitely towards mostly .NET people). He wants to make a point, which works much better when you use a concrete example rather than speaking about generics, and he uses the example that's most familiar to him and his audience. By speaking ill of many of the features that are considered the holy grail of VS, he invites their users to think twice about them. In short, he targetted the speech at the crowd at hand. And slashdot posted it for all to see, minus context.
Visual Studio 2005 RTM'ed yesterday.
MSDN Subscribers can get it via Subscriber Downloads.
Right now only English versions of the Professional and Team System Editions are available.
SQL Server 2005 Developer Edition is also available.
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.
...) 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.
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,
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.
I agree with the comment about apples and oranges, but more specifically when dealing with kids you have to consider their attention span. If you show your son assembly language for his school science project instead of C#, is he going to be turned off because he couldnt do that little pop-up box trick he wanted to in 2 days? If he's really interested in "real programming", he'll learn it. I wouldn't worry about some Visual Studio tool limiting his mental abilities, after all it takes a fairly bright kid to see the simplest project through by themself.
Ah, the good old days! Why, I remember when...
i'd hit it so hard, if you pulled me out you'd be the king of britain [bash.org]
And why not --x instead of x--? You don't need the old value of x there, so aren't you potentially wasting some cycles and thereby having possession of your soul revoked or whatever the punishment is for not being as efficient as possible in all situations? I mean, if you're going to micro-optimize, why not go all the way?
Slashdot - where whining about luck is the new way to make the world you want.
One, if that's a point-by-point rebuttal, it's an extremely poor one (since he didn't cover all the points). It seems much more likely that he was quoting for reference. Two, there's nothing wrong with making a point-by-point rebuttal of an argument. It may not be the most elegant way to make a counter-argument, but it's certainly not as frowned upon as you seem to be implying. Lastly, please grow up. Piecemeal responses may impress no one, but vicious and petty comments like yours only serve to lower everyone's opinion of you. Find somewhere positive to vent your anger, please.
way to go.
The only link between perl mucking and programming is the one you create with "ln".
So, if a person needs edit.com and grep to program, then (s)he is not a programmer, but merely an edit.com and grep operator?
The problem with INtellisense is the "Autocorrection" feature. In Borland's IDE, I can invoke the code-completion tool, but it NEVER change my code without my agreement. The problem with Intellisense is the "Office's Clippo" symdrome : I know better than you what you want.
Too bad, should have started him in Scheme or LISP.
Flying is easy, just throw yourself at the ground and miss. -Douglas Adams