On WhyChooseMicrosoftAndVb EricUlevik said, ''"VB is designed for lesser skilled developers, and it meets their needs very well.'' RAD is great, and the syntax is easy." * I would like to change the above statement to read "VbClassic is designed to require a lesser number of skilled developers, and it meets the needs of business sponsors very well." -- DavidLiu There are solutions that are easy, have very good GUI builders, ''and'' lean towards good programming practice! I'd rather newbies learnt those, than VB. -- CanisLupus Simple is not the same as easy. VisualBasic is easy at the cost of unbearable (to me) complexity. -- PaoloPerrotta ---- If you think VbClassic is bad for newbies, wait till you are faced with VbDotNet! OTOH, Roger Sessions (see ref in ServiceOrientedArchitecture) mentioned that VbDotNet is preferred over CsharpLanguage for DotNet newbies. ---- '''Is PythonLanguage better for beginners than VB?''' * The rest of this section was done in 2002; in 2004Q3 "again" a question of "Python for Gui frontends" was asked from active Python members. The impression I got from people like Taro''''''Ogawa is that they think the GUI handling capabilities of PythonLanguage are good enough (e.g. PythonCard, ?maybe Python-2.3.4 and pywin32). -- DavidLiu VB ''is'' very easy for newbies to get. But it's also very limiting and VbTeachesBadHabits. It's no harder for a lesser skilled developer to learn python - either can be self-taught in a day or less - but python is a very open language that teaches excellent habits. So why would we want to cripple new chums by teaching them VB? -- PeterMerel Does Python have a decent GUI builder? That part of VB is very attractive to a beginning developer. The wizards help a lot, too. Basically (sorry :-) in the beginning, handholding is good... -- PaulHudson Python has a fair webbish GUI builder in ZopeApplicationServer. Or if you want something RAD, check out the PythonGuiBuilders. Or build your GUI with your VB IDE and bind to it via COM. Or use some of the cross-platform stuff like WPY. Or use one of the many Java GUI builders and Jpython. Lots and lots and lots of ways to build GUI with Python! -- PeterMerel Er. Zope is pretty complex, and not for newbies. Do we expect newbies to know web design? Two of those PythonGuiBuilders are in beta (and one of those says it can't be used for real development yet). The other 100% Python one requires additional tools before it can be used for Python. It's not reasonable to ask beginners to use COM for their GUI, in my view, nor to use a mix of Java IDE and Python. So, yes, there are lots of ways to build GUIs with Python, but I don't think those you list are for newbies. I think VB's still ahead of Python on the integrate-GUI-design front here. -- PaulHudson I'll certainly stipulate that VB is ahead of Python on GUI building! I was addressing the now vanished assertion that there wasn't any way to do it in Python. I'll also agree that newbies will find it a lot harder to use any of the combination solutions suggested for Python than to use VB. I'm beginning to see we're using different assumptions here. I think VbIsBadForNewbies because I think it teaches bad programming habits and confers a mental map of programming that doesn't open many possibilities ''but'' VB programming. You're looking for an IDE that will make it easy for someone who isn't supposed to work as a RealProgrammer to toss off lots of simple apps without having to learn much. This might make a student very excited about becoming a RealProgrammer ... even as it made it harder for them to do so. I am speaking from experience here. I spent several months this year working in a shop with predominantly VB programmers. This was the only group I've ever worked with where engineers were profoundly neophobic. And I mean to the point of neurosis - any tool that didn't begin and end with the VB IDE, even other MS tools, was viewed as threatening and inappropriate. I'm not saying there weren't other factors involved, but the number of design compromises that stemmed from this mindset substantially crippled a very expensive and mission-critical project. I went into that group with an open mind about VB, but found the experience profoundly frustrating. It was like trying to cook cordon bleu at Mc''''''Donalds. -- PeterMerel ---- GUIs are add-ons to Python, as described above. This all works fine, in my experience. Python is great at things like data processing and dynamic web sites. But for creating GUIs with minimal effort and knowledge it is pretty poor. VB is nice and simple - forms and code attached to events. To work with Python, you need to understand many components, not all of which are on-screen. I would never inflict it on a beginner. Beginners start with GUIs. This provides maximum result for minimal effort. -- EricUlevik ''All of the above, Zope included, will build GUIs of one sort or another for Python. And Zope is not a web-server, though it is intended to work with one. Certainly, there's no 100% Python GUI builder, but 99% of the controls available for VB aren't written in VB either - what benefit would there be in this?'' ''I confess I don't really understand why a beginner should focus on GUI to begin with either. If she must, as noted she may use exactly the same GUI building tools as the poor VB soul, without entering the ghetto that is VB. What makes the weirdness of VB less complex than the elegance of Python remains highly mysterious to yours truly.'' -- PeterMerel Beginners should use COM? I don't think so. ''I expect most programmers would find either easy, to begin with, though of course most these days do VB first. But I'm quite confused about the relevance of my experiences and choice of pronouns here. What's your point? If there's a reason why you think VB is better for newbies than Python, can't you simply spell it out?'' -- PeterMerel If you expect that most programmers would find Python easy, then I suggest you haven't had much experience with below average programmers. -- EricUlevik ''I agree with the above completely. I have personally seen several people who understand C style syntax but are lost when it comes to understanding the syntax and statement grouping in Python. Admittedly, I don't quite understand why.'' ''You may like to duke it out with GuidoVanRossum on ComputerProgrammingForEverybody.'' ---- '''Is VB bad because it tries to empower non-programmers?''' VB is yet another attempt to enable programming by non-programmers and under-skilled programmers. Far too many programmers lack the skills to program in any language. In particular, a shocking number don't really know how to think clearly and methodically. Let's leave programming to real programmers. That said, tools that make real programmers more productive are worthwhile. Such tools include GUI builders for some (though I personally prefer to create Java GUIs in code). Where does all this leave VB? It's not good for beginners because it teaches bad habits and anyone "beginner" enough to require it shouldn't be doing real programming. It's not good for experienced programmers because it's buggy and it makes it difficult to refactor and reuse. Finally, my standard VB disclaimer: My experiences with VB cannot possibly be typical because Bill Gates has not been skinned alive by an angry mob of programmers! ---- We may '''loathe''' VB (and we may be no fans of Microsoft) ... however, we can't say "Let's leave programming to RealProgrammer''''''s." Lots of people have a need to do something that should be fairly simple. There is no reason why good, easy tools shouldn't and couldn't exist to help people use the power of their computers. VB is an effort to make that a reality (perhaps poorly). Batch file "programming" was something that was very popular. Macro "programming" in Microsoft Word documents is popular. Some people develop whole applications in Excel using its functions and language. Microsoft Access is used to create custom database applications. There is a real need for non-programmers to ''use'' their computers ... and in order to really do that, they need good tools. ''A real programmer is not necessarily a professional programmer. (Conversely, a professional programmer is not necessarily a real programmer.) A "real need for non-programmers to '''use''' their computers" does not imply a need to do real programming. The fact that VBA and even VB can be used for automating simple tasks in a simple way does not imply that they should be used for real programming. In fact, I object less to VBA precisely because it is generally used for simple tasks whereas too many people attempt to develop sophisticated software in VB. Just say no!'' If Microsoft is making bad tools, then we need to become familiar with good, easy alternatives (perhaps python, I don't know) and start using them, start showing how (and why) they are better for Newbies than VB. Even if we were to all agree that VbIsBadForNewbies, how would a Newbie know this? We need to be actively helping real Newbies with an alternative. ---- '' Is VB bad for newbies?'' Who has experience with teaching newbies alternatives to VB? Is the assertion that VbIsBadForNewbies made from just bad experience with Newbies and VB or is it also comprised of good experiences with alternatives? ---- ''What are the alternatives to VB?'' Delphi? Yes. Python? Maybe - but probably a bit exotic and out of most client's technology ''comfort zone''. What else? ''Eiffel - used by traders to develop exotic instruments.'' ''Smalltalk - used by traders to develop exotic instruments.'' ''YMMV'' If you're talking about a new programmer working on straightforward business information systems, I think VB is a fine choice. I guess I don't really buy the idea that VB is a path to Hell. You can write write good programs in VB and bad programs in VB. The difference isn't VB; it's the practices. My experience with inexperienced VB programmers is they know there's something wrong with their code, with the Gui bloat and magic numbers and 10 page long routines, but they don't know what to do about it. Tell them what's wrong and what they can do differently. Tell them OnceAndOnlyOnce, explain DesignPatterns, show them how a SystemOfNames helps, tell them about using a TestingFramework, etc., etc. New programmers love this stuff! VB is a reality. It's popular, well-used, and well-liked. It's a valid language choice, and in many cases the only choice. If new programmers are battling to write good programs, they need coaching; they don't need to be subjected to a LanguagePissingMatch and told that they're stupid for not using C++. -- FabianLeGayBrereton ---- '' Question '' What I hate about VB is not the language, it's the development environment. It is so difficult to understand and work with that I can't see how newbies are even able to use it. I just checked out a form file, and VB put it into a different directory. Then it informs me that I have to check out the .vbp to do this. If I am a newbie, I have no idea that the reason I have to check out the .vbp is because the form file has moved. I didn't ask the file to be moved in the first place. So I say "No", I don't want to check out the .vbp, then I try to ''undo'' my checkout on the file I just checked out. No can do. As a non-newbie, I know that I can shut down VB entirely, delete the .scc file, and just check things out through source safe. This kind of situation happens all the time. What do newbies do? I'm not trying to do rocket science, I just want to check out one file from the development environment. Preferably without it being moved to a random directory. I've found the language quite usable and I think it has some good points. The development environment is completely unacceptable. '' Answer '' Newbies don't use Source Code Control Systems. '' Better answer '' Never ever use the Visual SourceSafe integration. It sucks. ---- When most people develop programming languages, they aim at people like them; smart, interested in programming, knowledgeable. As a result, many languages are designed for the top 10% of programmers. Microsoft clearly aims at the bottom 50% of programmers. There is a lot less competition for the minds of these programmers, but there are more of them than there are top 10% programmers. The wiki is populated with top programmers, so we all hate VB. But that doesn't really mean it is a bad language, it is just designed for someone else. Its success in the marketplace means that it has done something right. If you can't figure it out, it means you haven't looked hard enough. -- RalphJohnson ---- I'm a systems test engineer. Done client server and web testing. Got a M.S. to boot in the field. Can passably program in a whole bunch of languages, including VB. So what. I find crappy programming in every single language I've encountered, by programmers who have great reputations and those who are rookies. That's why I will never starve or want for a roof. You would be amazed how many of the emerging crop of developers have no grasp about the SDLC, good programming habits, effective use of any source code control system and, even more surprisingly, how to install the OS on which they're programming. Java developers - Web developers mostly. If they have bad habits, they'll muck up any language. I've written some really tight, powerful test apps for distributed, threaded load testing with VB. VB5 and VB6 ain't your big brother's VB3. And if I'm in a business management position and faced with a product needing specific user interactive components (like most do), I have choices to make. I can choose the $1.4 million approach with C++, the $1.25 million approach with JDK 1.3 or the $600K approach with VB5/6. Architecturally, each one meets the need. The latter for this type of application and level of functionality required, is much faster and more direct to design and create. And if I don't get my product out to market in 6 months, my competitors will and every job in my company is at risk as a result. So, what would you do? -- TimGerrells ''Of course, 3 years later you're going to be pissed off because MicroSoft is EOLing VB6 and you have to spend the $1.25 million anyway. So you may as well have done it right the first time. It's a stupid business decision to bind yourself to an environment with only one vendor, even if it really is that much cheaper to develop, which I dispute.'' Amen. That's the point. ---- I'm not certain that I buy the argument that a particular language is bad for new programmers. A skillful programmer will do well with whatever language he needs to program in, while an unskilled programmer will have problems. The programming language does not create bad programmers or bad programs. It is a lack of experience and training that creates these problems. Until industry accepts that there is more to programming than learning the particular syntax of a language and starts teach programming concepts, these problems will continue. Don't blame a language for the lack of programmer training and experience. -- WayneMack As a prior VB programmer, I disagree. VB is bad because its common idioms are generally bad practice, thus you learn a bunch of stuff that is hard to unlearn later when progressing to better techniques. VB is a virus for the mind to a beginner. ''For those of us who don't know VB very well, could someone please mention or briefly explain some of VB's bad common idioms here?'' Not that it's mandatory, but it's very common in the VB world to see methods that are pages and pages long with tons of deeply nested conditional statements. Go to any sourcecode site and look at the most popular VB snippets; they are usually very badly written procedural solutions. That doesn't mean procedural is bad, just that it tends to be done badly in the VB world. OO is almost unheard of in the VB community, despite the recent addition of VB7, which finally supports inheritance. Most VB programmers don't even know what an interface is, let alone polymorphism or inheritance. It's also standard practice to declare long lists of variables at the top of the method, many of which get reused time and time again in the mess below. To most VB programmers I've met, myself included way back then, the "if" or "select case" statements were the answer to every problem. Basically, bad programmers tend to gravitate to VB because it's the least programmy feeling language, since all the language elements are actual words rather than symbols. Now, all that aside, you can easily write good code in VB, if you know how, it's just that most VB programmers don't know how; they've never done anything other than VB. ''This is actually an argument ''against'' the assertion that VbIsBadForNewbies. What you describe are typical mistakes beginners and amateurs make, resulting in code that is hard to read and maintain, and error-prone. I'm seeing exactly the same symptoms in Java code written by beginners (a great part of which has just a couple of months or even weeks of experience).'' Right, Java is bad for newbies too! :-) Seriously, though, just because newbies or bad programmers tend to make the same mistakes in all languages is '''not''' an argument that therefore all languages are the same. I think the TuringTarpit page says something about this. ''Yes, but this sort of thing is the *norm* in VB code, it's not just beginners. You see it a lot in Delphi code, too - I think it's partially a consequence of the form-builder style of creating functions and event binding.'' {We shouldn't rely on tools that try to force certain styles, because good tools are fairly flexible in that they do allow different styles. The newbies need to be shown typical work scenarios and related code that complicates code maintenance when done poorly. They need to be shown exactly why it is "bad". If it's not put into practical terms, they may just think you are an anal blowhard on some fad rant.} ---- taken from top of page ''..cost of unbearable (to me) complexity. -- PaoloPerrotta'' Paolo, are you thinking in terms of situations where you need to do multithreaded programming and all you've got is VbClassic? Otherwise I do not understand how unbearable complexities exist. If you do talk about multi-threading and the like, it is not really a Newbie (to programming) assignment. Please explain. -- dl ---- Ideally, ''GUI builders should be independent of language''. Why companies keep tying them to one and only one language, I have no idea. * In the case of VbClassic, benefit in the tight integration of GUI / ComponentObjectModel capabilities / basic programming language is overwhelming. You would have to worry about mismatch between versions during development nor deployment, if nothing else. -- dl ---- I'm a little disappointed by R. Johnson's statement that VB was made for the bottom 50% programmers. VB offers, just for example, a quick and simple way to build test clients for COM servers. Or, it allows for really quickly building prototypes of GUI applications that offer at least basic prototype functionality. You seem to belong to the people who prefer writing 200 lines of C/C++, while you could create the same ''effect'' with 10 lines of VB? I don't see the point in judging on the language just because of its "coolness factor". Writing 10 lines of VB code, while knowing the 200 equivalent lines of C++, this is cool. --md ---- Actually, I wouldn't say that Visual Basic is absolutely bad for newbies. A little pinch is good for them, actually. Too much VB, on the other hand, ''is'' bad. We were taught VB '98 in high school. They chose this language because, obviously, a 16-year-old teenager capable of developing GUI-based apps right off the bat will feel much more motivated than if they're stuck with displaying white letter in a black console window. My first semester of VB was actually good, in fact. We learned everything we have to know about structured programming: instructions, variables, arrays, functions and subroutines, the If-Then, the Do While/Until-Loop / Do-Loop While/Until (which I like so much I write "Do While" instead of just "While" in VB .net), the For loop, the Select Case and the structures (with Type). When they left us our final project, it was about developing some sort of game; I did a slot machine. If I had taken some CeeLanguage classes later, I'd master it in no time, already having the basic programming skills I'd need later. But... ''I had one more year of Visual Basic''. This time it sucked so much, I don't even remember exactly what I saw (which is saying a lot) and I ain't interested when there are better ways to do it. IIRC, we saw file access, toolbars, DAO databases (''DAO!'' Can you believe it? RurisLaw all the way!), and maybe something about computer graphics. Fearing that I might receive brain damage from such lameness, I decided to shut myself from this class and do only whatever I had to do to pass it. And thank God, it paid off when I reached college, when I was taught structured programming with some cold, hard CeeLanguage. --DaNuke ---- See also VbTeachesBadHabits ---- CategoryVisualBasic