Forgot your password?
typodupeerror

Is Visual Basic a Good Beginner's Language? 1100

Posted by Cliff
from the would-you-write-"hello-world"-in-it dept.
Austin Milbarge asks: "Ever since the .NET framework came along a few years ago, Microsoft had promised VB developers that their language would finally be taken seriously. To be honest, I never understood why some non-VB developers thought of VB as a 'toy' language, but that is for another article. Anyways, Microsoft made good on their promise and transformed VB from an easy to learn language into an object oriented power house, with lots of OOP functionality thrown in. The old VB has been discontinued, and the new VB is no longer a simple language. With all the fancy changes, is VB still the great beginner's language it once was? Would you recommend it to a beginner over C#?"
This discussion has been archived. No new comments can be posted.

Is Visual Basic a Good Beginner's Language?

Comments Filter:
  • Visual Basic (Score:2, Interesting)

    by webmistressrachel (903577) on Tuesday March 07, 2006 @05:41PM (#14869925) Journal
    The question arises - do you want to program for any computer or device? If you do, you might want to avoid VB because you're likely to get too dependant on the admittedly great Windows ("forms") design software. However, if all you ever intend to do is stick with Windows, and all the people who are likely to use what you write use Windows, then VB is an excellent and easy to learn development environment. Just my two pence.
  • C# (Score:2, Interesting)

    by gcnaddict (841664) on Tuesday March 07, 2006 @05:41PM (#14869927)
    I have always recommended C# as a beginner language simply because it is very organized. VB (during the old days) was easier to learn because alot of it was behind the scenes, but now that everything is put out in the open with VB, C# is a better option because it's less confusing. It just has this "orgamizedly arranged" feel to it.
  • still C (Score:4, Interesting)

    by engagebot (941678) on Tuesday March 07, 2006 @05:41PM (#14869928)
    For a true beginner, I still say regular old C is the way to go. Learn how variables work, function calls, passing arguments, pointers... There's something to be said with starting out compiling a single .c source file with gcc.
  • Re:No. (Score:2, Interesting)

    by bateleur (814657) on Tuesday March 07, 2006 @05:43PM (#14869940)
    The implication being that the primary need a beginner has is to be forced to write good code. Whilst Edsger Dijkstra would probably have agreed with you, I don't. Beginners need things to be easy and quick and to do roughly what they want with a minimum of fuss. (I don't know if VB achieves this either mind you, since I don't know it well myself.) One of the great successes of HTML in my view is that it ignores errors and you can then run a validator once you reach the point where you care.
  • Bad idea (Score:4, Interesting)

    by AKAImBatman (238306) * <akaimbatman@[ ]il.com ['gma' in gap]> on Tuesday March 07, 2006 @05:47PM (#14869985) Homepage Journal
    Really Short Answer: No.

    Short Answer: Are you out of your bleeding mind?

    Long Answer: Visual Basic is riddled with problems for those who are new to programming. The first problem that hits someone looking to learn programming is that he/she sees a pretty layout manager, but no code. It's quite possible to build an interface without ever writing a single line of code. When the entire point of the exercise is to learn coding, this is NOT a good thing.

    The second problem is that Visual Basic doesn't clearly introduce the "programmer" to concepts like functions, interpreters, and compilers. Most of the functions in VB are automatically generated, giving the impression that these are magic incantations that shouldn't be touched by a "programmer". VB Studio has an interpreter, but it isn't interactive in the same way as BASIC interpreters. This makes it useless as a learning tool. The compiler is mostly a matter of setting a file name and hitting a button to produce an EXE. So the new programmer gains no understanding of how code gets translated into an executable. Concepts like linking, for example, are completely glossed over.

    One of my personal beefs with the older versions of VB (which have been corrected in .NET, for no other reason than because C# requires it) is that VB passes off this idiotic idea of grouped functions as "Object Oriented Programming". The fact that these "objects" can't be instantiated, nor can they be used as Abstract Data Types [wikipedia.org], makes them utterly useless for OOP development. I would even go as far as to say that VB's previous implemenation of OOP was misleading and dangerous.

    VB also loses major points for failing to include typed variables. The automatic conversions between numbers, strings, and other types only serves to confuse a new programmer, especially when the auto-cast does the wrong thing. A new programmer should be taught to understand how data is represented by computers, not abstracted away so far that they can't understand how to fix problems.

    Beyond that, VB tends to do a lot of confusing things that are not easily explainable. The lack of useful documentation and/or a good documentation browser only serves to increase confusion.

    To be honest, I never understood why some non-VB developers thought of VB as a 'toy' language,

    VB had/has its uses, but it's still just a RAD tool. As soon as you run into situations that the RAD tool can't handle, you should be using a real language rather than trying to hack it.
  • Yes. (Score:2, Interesting)

    by sglider (648795) on Tuesday March 07, 2006 @05:48PM (#14869999) Homepage Journal
    VB is a good beginner's language.

    I should know.

    I started out with Java, and wasn't too impressed. After all, what could I do with it? Spend hours building widgets to do things didn't capture my interest, so about 60 hours into the language, I backed out.

    So then I went to C++, in hopes of doing more, and was overwhelmed with the amount of possibilities. (The STL is huge, to say the least). I still have those books on my shelf, and while I'd love to take the time to learn more about the language, I don't have the time to spend to devote the next year to becoming even moderately proficient in that language.

    Enter Perl. God I love perl. Such a neat little language, and you can do things quickly with it. Want to parse all of the instances of 'anonymous coward' from your daily slashdot discussions? Done. In 10 lines or less. Problem is, making the widgets and stuff still do not interest me, I hate to spend time coding that.

    Enter VB. Sure, you pay for an IDE, and you also have to use Windows, but Microsoft has made it easy for the budding programmer to do something. I'm not a programmer because I love to program, I program to do a function, to make some part of my job easier. That's what VB (in all of it's flavors) does for me. VBA? Great for automating the small tasks (and already installed on my work machines) of doing office stuff, like automatically generating and emailing reports. VB.NET? Great for the time constraints of building an application for work.

    I tell you all of this to say that VB is an excellent beginning programmers language, and for your non-programmer IT guy, it solves most of the problems that crop up. That's its' function.
  • by Anonymous Coward on Tuesday March 07, 2006 @05:51PM (#14870029)
    It is a completely unstructured language that promotes very bad coding practices and allows for poorly writen applications to run anyway.

    Structured programming is only one paradigm; and almost no-one says it's the best. Just because VB isn't structured doesn't mean it's bad.

    If someone wants a language to get practical things done quickly, I currently recommend python on unix-like systems and VB on windows-like systems. Sure, neither are structures, neither are good OO languages, neither are functional languages --- but so what.

    If someone wants to learn CS theory, then of course lisp (for concepts) and assembly or C (for understanding how CPUs work) and smalltalk or ruby (for OO stuff) and ML and haskell (for functional programming) are better.

    Certainly Java and C# are an even worse choice than VB; since they're mediocre compromises of c-like languages with a subset of OO layered on top (but not as much as ruby/lisp/smalltalk); and are far more cumbersome than VB or Python.

    But overall, VB's not as bad as it's reputation suggests.

  • OK I'll Bite (Score:2, Interesting)

    by GQUEUE (878787) on Tuesday March 07, 2006 @05:53PM (#14870044)
    Seems to me that any language can allow for poorly written applications to run...that's like saying that you shouldn't teach a beginner about photography using a point & shoot camera because it allows you to take crappy pictures. I used LOGO and VB to teach my nephew (he was a about 7 years old at the time) about programming. He really enjoyed it. Things that are good about it: its visual, its dead simple, the syntax is easy, the language is verbose (so its a little easier to explain and remember for a kid), there are relatively few nuances (like ending lines with ; or case sensitivity). Could you do it with Java, C#, Javascript, or Pascal? Sure, but that doesn't make VB bad for a beginner. Now, if by beginner, you mean someone who is intending to becoming a programmer and earning a living doing so, maybe VB wouldn't be my first choice. But if I had to teach a bunch of 10 year olds how to program, I would rather use VB than C# or Java (although LOGO is pretty fun).
  • by JeanBaptiste (537955) on Tuesday March 07, 2006 @05:54PM (#14870062)
    You're going to get everyone throwing in their personal favorite reasons why C# is better or Java is better or haskell is better or whatever.

    I reason it like this: What kind of beginner are you?

    If you're a beginning CS student, no, VB is not the direction you want to go. There's many other languages that may have a steeper learning curve, but will reward you further in the long run.

    If you're a forklift operator at a small company that gets forced into writing a small app to do this or that, simply because you're the most computer literate out of those of you working there, then yes, VB is designed for you.

    I know many cases of programmers that never really intended to be, they got forced into it one way or another. If you don't have a full CS background, if you have no interest in computers outside of accomplishing the task at hand, if you just need to get something done quickly and don't have the background to do it properly..... then VB is the best choice.

    I know there are plenty of advantages to doing things the 'right way', but out in the real world sometimes you just need to get things done yesterday and don't have the time or resources to do it the way a university professor would approve of. I'm not talking about writing shrink-wrapped retail software, but more things like internal apps and data transformation.

    And, just to sound like a paid astroturfer (which I'm not), I must say that I have not seen anything anywhere ever that comes remotely close to the programming environment that Visual Studio provides. I'm usually on the anti-Microsoft side of the fence, but when it comes to the programming environment, again I haven't seen any other product OSS or otherwise that is even playing in the same ballpark.

    burn karma burn!
  • Re:Bad idea (Score:1, Interesting)

    by Anonymous Coward on Tuesday March 07, 2006 @05:56PM (#14870078)
    Clicking on a wizard isn't the same thing as programming.

    The same can be said for any modern IDE. VB, PERL and some of the other more forgiving languages are probably poor choices since they don't reinforce strong typing and syntax.
  • by Marxist Hacker 42 (638312) * <seebert42@gmail.com> on Tuesday March 07, 2006 @06:00PM (#14870124) Homepage Journal
    From that point of view- compilers are a bad idea for a first language. The student needs to learn the first rule of programming- the computer does just what you ask, never what you want. That lesson comes quickest in an intepreter, not in a compiler.

    Oh yeah, and completely agreed. I'm a professional programmer who learned VB after college- and I can always tell the difference in code between a real programmer and Visual Studio Wizards.
  • Re:Try COBOL (Score:3, Interesting)

    by 77Punker (673758) <spencr04&highpoint,edu> on Tuesday March 07, 2006 @06:02PM (#14870150)
    I'll have to look into that. From what I've been told by my professors, though, assembler is still better because it's a human readable form of EXACTLY what the computer is doing. Looking at C, C++, and Java I don't know what the instructions REALLY do. I can go ask one of my absolutely brilliant CS professor what a specific line of code really does and he's basically forced to tell me that he'd need all day to explain it or that he's not sure. That kind of lack of control really irks me. Also, being exposed to assembler and one or two high level languages has made it very very easy for me to learn other languages without much difficulty.
  • Re:No. (Score:3, Interesting)

    by walt-sjc (145127) on Tuesday March 07, 2006 @06:05PM (#14870182)
    Basic? E-gads, man! No, the proper language to start all newbies on is Forth.
  • by Crussy (954015) on Tuesday March 07, 2006 @06:11PM (#14870253)
    The short answer is yes, but in the end if someone is serious about programming, they will have learned multiple languages and paradigms, so much that the original language loses most of its influence. Every language has obvious good and bad sides, likewise every language will both teach good and bad methods to beginners.

    A solid example is java-to-C++ programmers who allocate absolutely every object with new. Then forget to delete it. Garbage collection is a great convenience, but is it suitable for a beginner? Sure if they are going to be stuck making financial sector front ends, but not obtaining a firm grasp of memory management is detrimental for further language learning.

    A second is the C or poorly taught C++ which is really C programmer trying to move to C++. There are countless examples of C++ and stl methods that people recode endlessly while still believing they are using "C++". Also are they people who make huge classes to handle absolutely everything in their program. No OOP, no abstraction, but because they've used classes, they have programmed correctly in C++. No matter which you start with (C/C++), adapting to the other is tough. They are extremely close syntaxally, etc, but are both extremely different languages.

    VB is in a class of its own. I took a course in VB 6 this year and the first 3 chapters of the book were entirely using the visual editor and gui creation - No Code. This is not a way to teach good programming techniques obviously, but is it harming anything? If a new programmer does not go in depth into VB then takes a course in a more OOP language (read C++/any .net/java) is he hurt? My guess is no.

    C# is a becoming a very viable first language, but it too has some of the same problems as java, mainly garbage collection.

    Finally, no one's mentioned it but what about good old assembly? You won't learn the OOP concepts, but the low level knowledge of a cpu's architecture will help indefinitely in some fields.

    Is VB a good language for beginners? probably not. Is C++/C#/java/the next language? likely more so than VB, but not definite. There is no "best" beginners language as much as there is no "best" language. Infinitely more important is how well you learn. A poor C++ teacher will likely be more detrimental than a good VB.net teacher
  • by jcwynholds (765111) on Tuesday March 07, 2006 @06:14PM (#14870274)
    Python has been suggested. I also fall in the camp that say that python is probably the best learner language. Interpreter is freely available for all popular platforms. Python has enough of the niceties of VB (no strong types, easy array/dictionary construction, etc) while having enough features of a "real" programming language (shared memory, forking, etc) to teach about the concepts.

    Developing in an IDE like VS obfuscates and distances the programmer from the code. It's a necessary evil for developing some things. But throwing a learning user at the bubbly GUI to figure out the wizards for him/herself is akin to putting a new pilot in the seat of a 747. There is just too much there that would seem confusing.

    For these three reasons I would suggest python:

    1. All you need is a free (as in speech) interpreter and your favorite text editor.

    2. Documentation, howtos, sample code is easily available (there are plenty of good VB help sites out there, but I have found many many many fantastic samples of python).

    3. The syntax of VB and python would seem similar enough to a beginner.
  • Re:Bad idea (Score:3, Interesting)

    by object88 (568048) on Tuesday March 07, 2006 @06:16PM (#14870299)
    Clicking on a wizard isn't the same thing as programming.

    I agree that clicking on a wizard is not programming, but for someone who's just starting, built-in IDE tools (like wizards) can really help. As an expirienced user, I have no problem manually typing

    private void Button1_Click(object sender, EventArgs e)
    {
    }
    ... but someone who has never hacked before is bound to get confused some step along the way, flipping back and forth between web pages, books, and the editor. I think that a lot of the "ease" of modern programming comes down to IDE tools and integration. Wizards and great built-in documentation (tooltips, auto-completion, etc.) can make a huge difference.

    I go so far as to say that it's a better idea to learn assembler first...

    OK, that's just mean.
  • by Marxist Hacker 42 (638312) * <seebert42@gmail.com> on Tuesday March 07, 2006 @06:20PM (#14870338) Homepage Journal
    So can I. The #Region " Windows Form Designer generated code " seems to be a bit of a giveaway, no?

    Well, some remove that- and #Region wasn't in earlier versions of VB at all. But the lack of any code other than in events was still a bit of a giveaway. As was the use of datacontrols.
  • by object88 (568048) on Tuesday March 07, 2006 @06:28PM (#14870394)
    On the other hand, I would not recommend a beginner to use Visual Studio or any of the IDE where you drag-and-drop to program.

    Yeah, because programming boilerplate includes, class, main, and event handling code (which does nothing on its own) is really going to get someone hooked. Screw that. Give that code to a new programmer for free and let them add in something that does something fun, obvious, and interesting right away. That's how you'll get 'em hooked.

    Look at it this way... no-one got hooked on pot because they liked making bongs.
  • Re:Why not both? (Score:5, Interesting)

    by AKAImBatman (238306) * <akaimbatman@[ ]il.com ['gma' in gap]> on Tuesday March 07, 2006 @06:28PM (#14870395) Homepage Journal
    Rapid Application Development. Tools like Visual Basic and other 4GL langauges [wikipedia.org] were intended to improve software development speed and accuracy by providing tools whereby the computer automatically did as much of the work as possible. The most common type of RAD tool was GUI Builders like Visual Basic. (Though there were quite a few for database development, networking, gaming, and other areas.)

    The primary issue with such tools is that they tend to fail spectacularly as soon as they get outside their intended area of use. Visual Basic, for example, came along just in time to be abused for Client/Server development. Since VB wasn't designed with networking in mind, it was often faster and easier to do the code in C (and later Java). VB's life as a GUI front-end was extended thanks to the ability to link in COM+/ActiveX controls for more complex tasks, but GUIs eventually morphed into far more complex variants that the GUI Builder couldn't easily support. (Ever notice how you can spot a Visual Basic application visually?)

    At that point, most serious programmers realized that they were taking longer to hack VB to do what they wanted rather than just coding it from scratch in another language. So they gave up on it and moved back to C/C++/Delphi and the new-kid-on-the-block, Java.
  • Re:still a toy (Score:3, Interesting)

    by LDoggg_ (659725) on Tuesday March 07, 2006 @06:46PM (#14870533) Homepage
    why not chose delphi?

    Here's [regdeveloper.co.uk] a reason not to choose delphi

    Another reason is that its not free in any sense of the word.

    I'd recommend using Java on eclipse (with the GUI builder if necessary).
    Fedora 4 includes an eclipse built on top of a 100% free java stack.

    Aside from cost, the reason I wouldn't recommend VB as a starter language is that the syntax is very different than C,C++,C#, Java and many others.

    And oh yeah, if you want to teach programming to young children Here's [cox.net] a little IDE I threw together ;)

  • Re:why? (Score:3, Interesting)

    by macshit (157376) <miles@NOspaM.gnu.org> on Tuesday March 07, 2006 @06:53PM (#14870579) Homepage
    other than religous zealotry why java over C++?

    Well, I'm no fan of java for my own use (I like C++ for "C type" stuff, and I'm far more fond of e.g., lisp family languages, for "GC'd no worries" stuff), but having helped people use it for college programming courses, it does seem to have appreciably fewer sharp edges in many ways than C++, without most of the bogosities of something like VB.

    Some reasons:
    • Garbage collection
    • Good, reasonably comprehensive, standard library
    • Strongly focused on defining classes and interfaces (which can be annoying, but the emphasis might be good for those who are still learning)
    • Not platform specific, many implementations (which is a huge win -- it's Very Annoying when a class uses tools that will only run on a specific system)

  • by XxtraLarGe (551297) on Tuesday March 07, 2006 @06:55PM (#14870599) Journal
    I would argue that Javascript is even better for a newbie. No special software (only a web browser & text editor are needed), no compiler, and it runs on almost every platform available. It uses variables, arrays, loops and functions. You can make changes and see results almost immediately. Just refresh the page!
  • Re:Bad idea (Score:3, Interesting)

    by ednopantz (467288) on Tuesday March 07, 2006 @06:58PM (#14870638)
    >it's essential to type every letter of the code yourself.

    Now that's just silly. Does it make any difference if the function is GetDate() or getdate() or getDate()?

    Why spend valuable memory, attention span, and compile time dealing with silly nonsense like that? I'd much rather have my programmers know a hundred functions but not be 100% clear on the casing than have them know 10 and know the casing 100%.

  • Re:still C (Score:5, Interesting)

    by Pseudonym (62607) on Tuesday March 07, 2006 @07:02PM (#14870671)

    On the contrary, C is one of the worst languages you can use as your first language. I've tried teaching C to first year students. You end up teaching the syntax and vagaries of C and not very much programming or computer science.

    One of the first things that beginning programmers want to do is do stuff with strings. Do you really want to explain C strings to people who have never programmed before? (There's a reason that microcomputer BASICs got peoples imaginations working. You can do stuff in it straight away!)

    Amusingly, about the only worse mainstream language I can think of for this purpose is VB. C's syntax and semantics at least have the advantage of being consistent. (In its defence, VB wasn't exactly designed to be the way it is. It was a fairly inextensible language which nonetheless got extended as the years progressed. "Congealed" might be a better word than "designed".)

    Save C for semester 2. Semester 1 should use a language which emphasises the basics. A functional language (say, Scheme or Haskell, but not ML; ML is a cool family of languages, but the syntax is way too arcane for a first language) would be my first choice, but even Java is a better choice than C. Hell, even C++ is a better choice. The syntax is at least as quirky as that of C, but at least it has a decent standard library which lets you do stuff straight away.

  • Re:Why not both? (Score:3, Interesting)

    by AKAImBatman (238306) * <akaimbatman@[ ]il.com ['gma' in gap]> on Tuesday March 07, 2006 @07:06PM (#14870705) Homepage Journal
    Absolutely true for VB6. But that has nothing to do with VB.Net,

    Agreed. However, it's a part of history that is important for him to understand if he wants to know about the rise and fall of RAD tools and 4GL languages.

    VB.Net is useful for far more RAD.

    I'd actually argue with that, but not because VB.NET is incapable. VB has been completely overhauled to be compatible with C#. (Which is to say, that it's C# with a new faceplate.) So if you're going to be using the .NET libraries and features (which were designed for C#), why maintain the guise of programming in BASIC? Just move to C# and save yourself the trouble of dealing with the idiosyncracies that were ported to make VB.NET feel more VBish.
  • Re:still C (Score:2, Interesting)

    by phlinn (819946) on Tuesday March 07, 2006 @07:17PM (#14870806)
    I think Pascal would be a better choice. If you discount self taught programming on my calculator, I started with Pascal in college. I thought it worked fairly well as a beginner's language, and was significantly more ituitive than C. The switch from Pascal to C in the second semester was pretty straightfoward. I remember thinking there were a couple of things that were easier in C, but can't remember precisely what I didn't like in Pascal. It was too damn long ago.
  • Re:Bad idea (Score:3, Interesting)

    by pla (258480) on Tuesday March 07, 2006 @07:17PM (#14870810) Journal
    I go so far as to say that it's a better idea to learn assembler first so that you know what's REALLY going on inside that computer.

    I'll second that notion! Computer Science, as a generalization, has three types of people:

    People who only learned a high-level language, then learned algorithmics, and now produce "elegant" code that would take 2^27 times the current age of the universe to finish its task on any physically-possible hardware;

    People who took CS and expected to come away knowing how to program - This group eventually either changes fields or, for the more mathematically inclined, takes to teaching CS classes and getting pissed at smart-aleck students who point out that their suggested pseudo-code blob would take 2&27 times the current age of the universe to finish its task on any physically-possible hardware;

    And finally, people who use (not just "know") assembler (not necessarily their first programming language - I think people really need to suffer a bit to appreciate the classic joke about "but modern optimizing compilers can do far better than a human"... Heh... Y'know, I've even heard some people say that and not realize they told a funny?).



    My first CS class taught me Java, which I'd say is a better idea than VB

    As much as I personally loathe Java, I'd have to agree with you here. At least with Java, when they get to the real world and discover that C (in whatever incarnation it reaches by then, currently C#) still rules as the lingua Franca of the software development world, they'll have a rough understanding of the syntax. Keep 'em away from any of what the whippersnappers call "unsafe" code nowadays (aka pointers - ooooh, spoooooky indirection! And the next morning, they found nothing but a hook dangling from the keyboard!), but at least they'll have the ability to read and make simple modifications to the rest of the existing codebase.
  • Re:Bad idea (Score:3, Interesting)

    by Atzanteol (99067) on Tuesday March 07, 2006 @07:18PM (#14870823) Homepage
    Does it make any difference if the function is GetDate() or getdate() or getDate()?

    If it doesn't make any difference to your developers, then you will end up with all three, each doing something different.
  • by sampas (256178) * on Tuesday March 07, 2006 @07:19PM (#14870832)
    Actually, Java and C# have nearly identical syntax. I would suggest learning Object-Oriented to start, and concentrating on what OO is, rather than all the power of a specific language. OO is definitely the future, but many people who transition from procedural or don't learn the power of objects from the beginning just use Java or C# as procedural languages.

    I have found that in programming, taking a class will cut down on the time spent banging your head against the wall because there's someone to answer your questions, even if they're stupid newbie questions. Programming teachers are usually far more responsive than other teachers (systems analysis, database, e.g.) because it's more practical.

    If you're just learning how to program, I wouldn't worry about pointers immediately. Visual Basic is powerful in that you can write applications quickly and learn really fast.

    Visual Basic: Schneider [amazon.com]

    Java: Barker [amazon.com]

    C#: Barker [amazon.com]

    Whatever your choice, there are free IDE's for all this now from Sun [sun.com] and Microsoft [microsoft.com], and part of learning will be learning how to navigate the IDE. It's a great time to learn to program.

    Where I live, people can't find enough VB or C# programmers, and not enough Java programmers with a security clearance. Before you buy the hype of the next great programming language, check out the want ads on Monster or Dice and see what people need now.

    And remember, the highest-paid programmers (not team leaders)still write COBOL for Mainframes, because nobody else knows how to do this, and the big companies still can't get all their systems off of them.
  • Re:Why not both? (Score:4, Interesting)

    by eric76 (679787) on Tuesday March 07, 2006 @07:25PM (#14870862)
    One of the lead computer people at one of the major oil companies told me once that all that their Visual Basic programmers do is to write meaningless little programs that noone ever uses.

    He seemed to think that hiring Visual Basic programmers was a complete waste of money.
  • by Peaker (72084) <gnupeakerNO@SPAMyahoo.com> on Tuesday March 07, 2006 @07:40PM (#14870973) Homepage
    Back in the day, its IDE was pretty good compared to all the rest. But as C++ builder, Delphi, Qt and others came along, even the IDE didn't stand out of the crowd.

    The VB language itself, as well as BASIC, are not good beginner languages. They make easy things harder, and hard things impossible. They have a lot of special-case rules that only make it harder for beginners, and they have no room for growth.

    To top it all, VB creates non-portable programs on a non-free platform.
  • Re:I'm a fan of Java (Score:2, Interesting)

    by pionzypher (886253) on Tuesday March 07, 2006 @07:43PM (#14871007)
    I have to agree. As my first language it had a pretty steep learning curve, but it's versatility and relative simplicity (GC for one) kept it bearable. As a beginner working on your helloWorld the oo portions weren't a problem as you're dealing with only one class and most books I've seen intriduce the oo portion when most people would have advanced to a point to where they could understand it.

    Oop isn't some arcane magic, it's a logical way of grouping data and functions and I think most people can recognize the point and value of that when they get that far(though the devil is always in the details.. static or no, etc). The main drawbacks for me at first were both trying to conceptualize the vm and gc and wondering why the hell I couldn't just get the class file to act as an executable(problem solved now with jars).

    There's arguments both ways though. Non oo languages or point and clicks may have a nicer learning curve, but they can have drawbacks. If you work too long on a procedural language, you can get into the mindset where oo makes less sense in your head. I've a friend who writes huges monolithic apps in java, one class simply because he sees it as easier and simpler. Point and clicks like VB can make the curve easier at the expense of having to go back later and learn what you glossed over via the wizards.

    instant gratification versus thorough. depends on the person I suppose.
  • I've been using MS compiled basics since Professional Basic back in the late 80's. I've used VB, VB.NET, etc. I've used variants of it like vbscript and lotusscript. I've used turbobasic and qbasic.

    I also write in Java, and sometimes C, C++, and C#.

    Issue #1. If you're starting from scratch, why pick something owned by a single vendor?

    Issue #2. VB.NET isn't even remotely like old world BASIC. Even Quickbasic and Visual Basic were pretty much still very much like working with the original language. VB.NET just isn't. Starting fresh, there is very little difference in time and skill required to learn Java or C#.

    Issue #3. VB is the only language in common use that I'm aware of which is NOT case sensitive. That means you're going to pick up REALLY bad habbits by learning with it. Personally, I think it stupid that modern languages are case sensitive -- it smacks more of arrogance than anything else and I just don't believe it matters that much at compile time. Still, why learn the bad habbits?

    Issue #4. Personally - purely subjectively - I find Microsoft's documentation terrible, and their own support of VB to be secondary. If you don't already know what you're looking for, finding something entirely new is a nightmare with the vs.net languages. You are in a maze of web pages which all look the same. There is a mushroom growing on the way. :-)

    My recommendation would be to pick up Kathy Sierra's book "Head First Java" and download Eclipse. Eclipse, as an IDE is fantastic and fun to work in. Kathy's book is the best learn-to-code book I've ever seen, hands down. Between the two, you can be doing good work very quickly.

    Hope this helps.
  • by TheRaven64 (641858) on Tuesday March 07, 2006 @07:58PM (#14871143) Journal
    I would say that the first three languages a person should learn (not in any particular order) are:
    • Smalltalk
    • LISP
    • Prolog
    These teach different styles of programming and a lot of useful concepts. I might throw Pascal into that mix too. The next languages that they should learn are C (for when you really want an assembler, but need to be cross platform) and Erlang (for when scalability is king).

    If more people learned real languages before jumped-up assembly languages like C and pseudo-OO languages like C++ then we might see a bit more innovation in the language design community. Oh, and all three of the languages on my list run in an introspective environment.

  • Re:Why not both? (Score:3, Interesting)

    by TheAncientHacker (222131) <.TheAncientHacker. .at. .hotmail.com.> on Tuesday March 07, 2006 @08:00PM (#14871154)
    C# has syntax that is more similar to Java, C, C++ and the like.

    Actually, a lot of us would say that's precisely why they should NOT start with C#. The C derived languages inherited (no pun intended) a huge number of postively awful syntax ideas that never should have seen the light of day like case sensitivity, use of shifted characters as delimiters like { and }, determinate order of options, and so on. (And that's not even discussing the insane non-syntax ideas)

    C# does help you learn that syntax but why saddle a beginner with what's effectively a ritual hazing?

  • Scheme Maybe? (Score:2, Interesting)

    by arthur5005 (608816) on Tuesday March 07, 2006 @08:03PM (#14871169)
    I've been told that at some universities, such as Waterloo (Ontario Canada),they start their students with Scheme as the introduction language for Computer Science. Although definatly not a great standard for learning other languages that would be helpful in Application Development, after exploring the language for quite sometime now, I find it really pushes you to think in creative ways, (recursive functionality is big in Scheme), that are important in learning how to make clean code.

    I've heard proponents at Waterloo describe the transition between Scheme and other languages like java and c++ seemless, and you end up with better programmers.. I don't know if I'd go that far, in Scheme you don't have to worry about typechecks, you're dealing with lists of data all the time.

    I don't know really, I just though I'd throw that out there.
  • Re:No. (Score:1, Interesting)

    by Topherbyte (747078) on Tuesday March 07, 2006 @08:15PM (#14871256)
    I couldn't possibly agree more.

    Rome was not built in a day.

    Language can only be acquired gradually, whether it be verbal or programmatic.

    Start with the BASICs (pun fully intended) and work your way up, BUT NOT VB OR JAVA! Graphical controls and an intimidating IDE like Visual Studio will only scare the novice, and there is a good reason why printing "Hello World!" to the screen is the ubiquitous introduction to programming. Any modern-day beginning programmer really should read "In the Beginning was the Command Line [artlung.com]" by Neal Stephenson, for a good primer.

    Back when I was in diapers I taught myself BASIC by typing in code listings from computer magazines. By the time acne developed I felt ready to tackle OOP. 20 years later I'm as overworked as any, but I can actually say I like what I do.
  • Re:No. (Score:1, Interesting)

    by Anonymous Coward on Tuesday March 07, 2006 @08:16PM (#14871259)
    I am currently taking my first university cs course, and guess what it is, that's right JAVA. I find it is a very nice language to program and concepts like object, class, encapsulation etc... are not that hard to understand once you put them in a context. I think the next language that I will learn will be C++, because it is usefull in a plethora of applications. One more thing: In high school I somehow learned VB with my friends lol we were messing around with it making movies and stuff but we started to learn it that way heh, but since I didn't pursue VB or any programming course in college I forgot almost everything about it, only now I am begining to learn to program again.
  • Re:No. (Score:5, Interesting)

    by PeterBrett (780946) on Tuesday March 07, 2006 @08:23PM (#14871312) Homepage

    All fresher Engineers here (Cambridge, UK) have to learn to program 8086 assembler. Except they don't get an assembler, they have to enter the program using a hex keypad on the front panel.

    Yes, in 2006. And no, I'm not joking, I did it last term.

  • by Anonymous Coward on Tuesday March 07, 2006 @08:59PM (#14871558)
    * Yeah, the first versions of Visual Basic ran on DOS and didn't have the GUI builders that later versions did. I'm not quite sure what qualified them as basic of the "visual" variety, it's not like you had to type your code in with your eyes shut in other basics.


    Interesting that I had Visual Basic 1.0 with its windowed GUI builders... it did have a DOS runtime environment that used text-graphics windows instead of windows windows.
  • Re:Why not both? (Score:3, Interesting)

    by abigor (540274) on Tuesday March 07, 2006 @09:01PM (#14871574)
    Why is the parent comment modded troll? He's absolutely correct. All of the languages that run on the .Net virtual machine are C# with syntactic sugar. Microsoft fully admit this, so the parent is right to suggest that people may as well just write in C#.
  • by alispguru (72689) <bane AT gst DOT com> on Tuesday March 07, 2006 @10:30PM (#14872044) Journal
    You can become a decent programmer starting from any language, as long as you ultimately:

    * learn several languages

    * learn languages with widely differing characteristics

    * learn them well enough, i.e. you don't know a language until you've used it for at least one non-trivial task

    * take a data structures and analysis of algorithms course, after you know at least two languages

    Most of the people I would consider bad programmers know only one language, or know one well and others very superficially, like the engineers who can write Fortran in any language*.

    To show what it's possible to overcome, I started out with BASIC in high school. BASIC does not cause permanent brain damage, if you limit your exposure to it.

    Before college I had moved out to assembly (PDP8); in college I was exposed to COBOL, FORTRAN, PL/I and 360 assembler. In graduate school I moved up to Pascal and C, but I also finally took a decent algorithms and data structures course - and learned Lisp. Those last two things were probably as important as all the previous experience in making me the hacker I am today.

    * This is not meant to be a slur on all engineers who program when necessary - just the ones who do it badly, over and over again.

  • by Tablizer (95088) on Tuesday March 07, 2006 @10:39PM (#14872079) Homepage Journal
    Anyways, Microsoft made good on their promise and transformed VB from an easy to learn language into an object oriented power house, with lots of OOP functionality thrown in.

    The implication seems to be that OOP makes something "serious" or "better". I have to disagree with that. OOP has not objectively proven to improve business apps. I agree it may work well for systems software where interfaces tend to be more stable, but that does not extrapolate to biz apps very well where the "swappable device driver" viewpoint does not really apply and hierarchical taxonomies are inferior to set-based taxonomies. Set-based taxon.'s are just a better fit for biz apps because they don't hard-wire mutual-exlusiveness into the groups. Polymorphism is ugly or out-right does not work with set-based taxonomies. If you don't believe me, try it.
  • Re:Why not both? (Score:3, Interesting)

    by kbielefe (606566) * <karl.bielefeldt+ ... m ['l.c' in gap]> on Tuesday March 07, 2006 @10:40PM (#14872085)
    Anyone who says programming is not a science has never fixed an elusive bug in a multi-million line program. Form a hypothesis, create and run an experiment, document results. Sound familiar?
  • Re:Why not both? (Score:5, Interesting)

    by lrichardson (220639) on Tuesday March 07, 2006 @11:00PM (#14872162) Homepage

    I hate to jump on the Java/VB/C/C++ lovefest, but the question was about a teaching language.

    Why not something simple - like Pascal? Basic? A step up, but COBOL?

    Yes, there are advantages to learning a language like C++ that you will end up using, but it's not necessarily the best approach.

    One of the biggest complaints I have about a lot of the VB and C++ programmers I've been exposed to is a complete lack of fundamentals. Code that works, but sucks because they never bother to think of the background stuff ... memory, performance to name two. Multithreading is not a topic to start beginners on.

    OTOH, how many people here can take the Nth root of a number by hand? At some point, you have to accept that automation is here stay. The first time I hit VB, after doing a large project in CICS, I was really happy. Tons of things that were a royal pain became relatively painless. Then the downside ... performance sucks compared to CICS. Database interface sucked. Debugging really sucked. Generally, I like having my code in one place, not scattered over screens, buttons, rollovers ...

    Things are better now. SQL/SQL Server work really well together. A proper front end in some tools can be done FAST and painlessly (e.g. Brio (Now Hyperion Intelligence, to better play with the faster database around!)

    I've seen a couple of multi-hundred-million dollar projects die, because of innappropriate choice of languages (VB for one, VC++ the other). But management bought into the argument New=Better.

    Personally, I think C++ is a horrible choice as a starter language. Then again, I started on a virtual assembler language, designed strictly for teaching. Kinda like Pascal.

  • Re:Why not both? (Score:5, Interesting)

    by I'm Don Giovanni (598558) on Wednesday March 08, 2006 @12:08AM (#14872441)
    C?? Pleas...

    If you want to learn the *fundamentals* of programming, Structure and Interpretation of Computer Programs is the best book I've seen, and it deals not at all with "memory management", "efficient use of resources", or other archane crap (since it uses Scheme :p). The issues that you're talking about are becoming more and more irrelevant, just as machine-language programming did (for 99.9999% of source code).

    Not that Scheme itself is used much beyond the academic. But a lot if its ideas are showing up in modern programming platforms that are much in use (memory management, closures, etc). I wouldn't tout scheme as a "beginning programming language" but I'd tout it as a "programming language to learn the fundamentals of programs for a potential CS major". I'd tout C for neither.
  • Re:Why not both? (Score:4, Interesting)

    by Beowulf_Boy (239340) on Wednesday March 08, 2006 @12:40AM (#14872557)
    I learned 4 other languages before I learned VB. I was rather suprised at how powerful it really was. I had been told all along "VB is for idiots, blah blah blah", and then I took a GUI programming class, and the langauge we used to write our little example GUIs in was VB. It was amazing how quickly I could get a nice looking application up and running and doing something useful.

    BUT. If you want a an easy to learn, object oriented langauge, I VERY highly recommend python. Its not incredibly speedy (there are libraries out there to speed it up), since its an interpreted language, but getting real things done very soon is extremely easy.

    I am a gaming and simulation major at a small university, and the first langauge the freshman learn is python, then the second quarter they learn C. Python spoils them, quite frankly. Thankfully, I learned C first, then C++, java, and then python, but I have to say, given a choice as to which langauge I would use for any given console application (I have yet to do GUI with python), hands down it would be python.

    I was the only one in my algorithims class that knew python, when I took the class. Other students were extremely jelous that I could more or less type in the pseudo code off the board and have a working program, where as it would take them hours to get an algorithim functioning properly in C or Java.
  • by GunFodder (208805) on Wednesday March 08, 2006 @12:57AM (#14872622)
    You sound like a math snob yourself - packet routing and cryptography are both much more interesting mathematically than computationally. But don't summarily dismiss multithreading. Many recent benchmarks on recent multicore processors point to the immaturity of multithreading in modern client software. It seems that many compute-intensive programs don't make effective use multiprocessor hardware.

    Real Computer Scientists have to run their programs on Real Computers, which means you can't ignore the hardware. And recent trends point to increasingly parallel processing architectures.
  • by jbolden (176878) on Wednesday March 08, 2006 @01:03AM (#14872648) Homepage
    C isn't a high level language. For a high level language it would be something like

    do something to (x,y) forall (x,y) in image

    Or better yet

    do soemthing to image. Even in C++ images are likely to be objects and modified via methods.

    I mean if you really want to speed this up, you really need to understand:
    what can the GPU respond to
    how can I best buffer the information

    since the real slow down is going to be the bus not the cache if you are going to go pixel by pixel

  • by SurturZ (54334) on Wednesday March 08, 2006 @01:20AM (#14872717) Homepage Journal
    *yawn*

    I've been programming in BASIC for around 15 years. I don't know why, but during that whole 15 years BASIC has copped flak.

    The reasons have changed over the years. Originally, the complaints were that it didn't have variable declarations and encouraged "spaghetti code" through the GOTO command. Variable declarations were added, and SUBs/Functions and even classes/objects were added to the language.

    Then there was a complaint that you couldn't make "true executables", so M$ added that option.

    Then the complaints were about its lack of providing object inheritance. Now we have that. But the flames continue.

    Why?

    It's clear that the flames are not due to any particular aspect of the language, since the arguments have changed over time. And so has the language. I can tell you that modern BASIC has almost nothing in common with the original ANSI BASIC except for a few legacy keywords (FOR..NEXT, GOTO, DIM etc). Modern object-oriented computer languages are so similar that I have more than once been reading a bit of code in a magazine article and only realised half way through that it was a different language from VB.

    I wonder if other languages get as persistently flamed. I believe the real reason is due to the language's very name: BASIC. I suspect that if the language was instead called "Visual Complex.NET", all of this flaming of the language would cease.

    [waves hand] This is not the repost you are looking for.

    P.S. People can actually tell the difference between C# and VB code? :-)
  • Hmm ... (Score:2, Interesting)

    by LupusCanis (939826) on Wednesday March 08, 2006 @03:42AM (#14873143)
    ... I'm a beginner programmer, I've been teaching myself a bit of VB and a bit of Ruby (actually, I'm too busy to do either really - but php comes into my classwork at some point so...). I must say that I feel that Ruby is a better language for beginners.
  • Re:Java snobs? (Score:4, Interesting)

    by moro_666 (414422) <<moc.liamg> <ta> <rotaanimluk>> on Wednesday March 08, 2006 @04:40AM (#14873294) Homepage
    I think nowadays more than 50% of java coders dont know much about c++. althrough they would manage to write simpler stuff in c++ just by the guts.

      And anyone who's a serious C++/Java programmer doesn't think that C# is for morons, it's just a bit different, but still the same thing. The overall technique to write in the language is still the same, there are just some lexical and some structural differences, but they are not as different as basic and lisp.

      It's just the disgusting aftertaste of "pay microsoft a lot to run this faster than mono can do" that quite many people don't like. Mono is on the right path with it's evolution, but it's still not comparable in the terms of speed to microsoft's own platform or to java on any other system. C++ is not being interpreted and jitted so we can skip it in this section.

      My vision is that they are all usable languages, you should just use them dependantly from the context, i prefer java because of the cost and portability for now. But if C# get's faster on *nix platforms and matures a bit, i'm sure a lot of people will use it and nobody will call them morons.

      I hate the ignorant snobs who think that people who use more portable solutions automatically define C#'rs as morons.
  • Yes (Score:1, Interesting)

    by Anonymous Coward on Wednesday March 08, 2006 @04:50AM (#14873323)
    VB and C# are almost identical when you get right down to it but VB still has features I think would make it easier for beginners

    1. no ';' - Less annoying compiler errors to confuse a beginner
    2. named 'end' constructs eg If/End If etc - easier to identify blocks of code
    3. Case insensitive - Less annoying compiler errors, and an immediate visual conformation of correct code as the case corrects itself
    4. 'Select Case' more intuitive (and powerful) than 'switch' - don't have to explain why you need that 'break' statement :-)
    5. Better intellisense (in .Net 1.1 at least) - Enums automatically appearing in function calls will guide beginners to how the function works, they don't have to go to MSDN to find the enum
    6. Better OO keywords - much easier to remember 'MustInherit' rather than 'abstract' and 'Overridable' rather than 'virtual'
    7. Still lots of great VB6 function in the VisualBasic namespace that C# developers won't touch - I'm thinking of the Split(String, String) function rather than the string.Split(char[]) method ugh!

    Since you mention VB and C# in your post I assume you are not interested in any other languages (not that I could comment on that coz I'm a MS coder from way back :-)
  • Re:Start with VBA (Score:3, Interesting)

    by Jaruzel (804522) on Wednesday March 08, 2006 @06:54AM (#14873716) Homepage Journal
    Why do you say small?

    I worked for one of the worlds largest investment banks during the late 90s and the GP is quite right... a LOT of finacial management/trading code was inside excel macros. These traders (most of whom enjoyed 6 figure bonuses each year) knew more about Excel Macro programming (in VBA) than anyone at Microsoft. VBA supports COM based CreateObject calls, so if the trader was masochistic (and most of them are), you'd find loads of esoteric code calls to Reuters/Bloomberg feeds and such.

    Obviously the more sensible route would have been to ask the dev team to knock up a 'real' application - but their requirements were so bespoke, that the IT dept just left the traders to it....

    -Jar.
  • Re:Why not both? (Score:3, Interesting)

    by devonbowen (231626) on Wednesday March 08, 2006 @07:53AM (#14873885) Homepage
    Sure, some people with CS degrees go on to get PhD's and disover better sorting algorithms, but 99.9% of us "just" become programmers.

    I'm paid as a programmer. But I also understand the halting problem, reversible computing, turing machines, etc. I'd say every two years or so I'm faced with a problem that I solve with the "science" side of my education. Sure, every two years isn't that often but it turns out that these situations have become the foundation of my reputation. Cracking a tough problem in an elegant way tends to stick in people's minds and they start bringing me more unusual and difficult problems. That's what distinguishes me from the rest.

    That said, I used to whine about having to learn all this theory stuff in school. Never saw the need for it at the time. But in retrospect, I'm obviously very happy I learned it. Every so often, I even find myself reading theory for *gasp* fun.

    Devon

  • Re:Why not both? (Score:3, Interesting)

    by packman (156280) on Wednesday March 08, 2006 @08:19AM (#14873983) Homepage
    Sorry - but this is pure bullshit imho. I think it's really UgLy that YoU Can WritE aNytHing caSe inSenSitiVe, or do you like this last part of the sentence?

    If you have a function thisDoesSomeStuff() and you see it being used like Thisdoessomestuff() thisdoessomeStuff() thisdoesDomeStuff() all over the place, that's pritty ugly imho. And to be honest - I never had problems with case sensitivity in my whole carreer - even in the beginning. I think it's a good thing that you should mind what you're typing - this doesn't give the impression that the computer is smart and will try it's best to understand you. As a programmer you should very well be aware that the thing you're trying to tell has to be explained as if it is a complete moron you're talking to.

    Another point - the shifted delimiters. First of all - you always use both hands if you code a lot, so I don't really see the problem. I did write some code in VB - and that's exactly the thing that I absolutely HATE - no clear delimiters. In any decent editor - you can jump to the matching bracket with a simple key-combo. In VB - this is not possible in a simple manner.

    I personally think you should keep beginning programmers on a very short leech, make them very aware of what happens if they do something stupid. The most important thing about being a programmer is absolutely not the language, but the thinking. VB does too much thinking for them. Yes it's "easy" - but programming is not supposed to be "easy" - bugs are also made "easily", and doing stupid things that work are even "easier".

    I personally would start with C or Java or C#, in the beginning preferably C actually and let them implement things which actually does something seriously wrong (buffer overflow etc) and explain what this is. Afterwards, once they understand the basics like functions, loops, variables, arrays - switch to Java or C#. The difference isn't that big - so it won't have any problems. You simply explain that here, boundry-checking is done for you. Then you can start with sorting and other basic algorithms/concepts like recursion. Next step is oop. I can't understand how programmers can be trained without basic concepts of the OS and memory-model. I have seen more than 1 example of a programmer using smth "standard" in VB, i.e. hidden listboxes to store large amounts of data.

    I've encountered too much developers (not only VB, but sadly enough but still majority) who simply have no idea what something does if they use it. If you would ask them to write smth simular themselves they would simply stare at you like you just asked them to prove that einstein's relativity theory was wrong. They just stop thinking beyond their comfortable "everything is magic" world...
  • Re:This is crap. (Score:2, Interesting)

    by HFh (574258) on Wednesday March 08, 2006 @08:42AM (#14874059) Homepage
    You know what students have a really hard time getting?

    Pointers.

    Actually, indirection is a fairly deep concept, so it's not that surprising.

    Computing is about understanding that MODELS == LANGUAGES == MACHINES, among other things.

    I take the position that understanding grungy details of how languages work, how machines must be implemented and how that connects to models of computing is crucial to getting computing, or even just becoming a very good technician (i.e., programmer). I tend to think of those who want to skip all that because languages hide so much of it from us nowadays as making the same kind of fundamental mistake as folks who want first year programmers to be able to "collaborate" because collaborations happens in the "real world"; it's about internalizing fundamentals, not about, well, whatever else it might be about.

    Peace.

  • Helps grab interest (Score:2, Interesting)

    by supermank17 (923993) on Wednesday March 08, 2006 @11:59AM (#14875512)
    I personally think it's not a bad way to introduce kids to programming, although not necessarily the best platform to teach programming.
      When I first started programming, the school I was at started us off with VB6. It was just an introductary class to computers, and they taught us some basic programming stuff. I was really excited though, because it allowed me to easily make programs that looked like real programs. (at the time I had only ever really used GUI programs) The next level programming class, which I happily signed up for, moved on to C and taught us how to properly code, but VB was what really helped to grab my interest.
  • by BigRare (187855) on Wednesday March 08, 2006 @12:06PM (#14875610)
    BASIC
    Perl
    OO Perl
    Java
    c#

    Perl is a good first language. They should first learn it the wrong way, then go back and learn the OO aproach... Learning Java first, will help them to appreciate c#.

"Say yur prayers, yuh flea-pickin' varmint!" -- Yosemite Sam

Working...