Slashdot Mirror


Is Visual Basic a Good Beginner's Language?

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#?"

190 of 1,100 comments (clear)

  1. Why not both? by Anonymous Coward · · Score: 2, Insightful

    Writing managed code in VS.NET using either VB or C# is mostly a matter of different syntax and control structures - most code looks almost identitical. This makes learning both a good idea.

    And for those of you C++/Java snobs that think VB/C# are for morons, I just got done reading two articles on strategies for high-performance multi-threading of applications and sockets programming. Say what you want, but VB has come a long way from being a beginner language.

    1. Re:Why not both? by Nutria · · Score: 2, Insightful

      real computer scientist.

      "Computer Science" is so bogus. 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 don't know, therefore Aliens" Wafflebox1
    2. Re:Why not both? by AKAImBatman · · Score: 5, Interesting

      Rapid Application Development. Tools like Visual Basic and other 4GL langauges 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.

    3. Re:Why not both? by AKAImBatman · · Score: 2, Interesting

      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.

    4. Re:Why not both? by anomalous+cohort · · Score: 4, Informative
      code looks almost identitical

      There is a lot of devil in the details of that almost, however. C# has developer API comments yet VB.NET does not. VB.NET has more support for shadowing than C#. C# has useful convenience functions like using that VB.NET does not. VB.NET has convenience functions for late binding (considered harmful) and case-insensitive string comparisons that C# does not. C# has more object oriented features such as operator overloading that VB.NET does not. The list goes on and on.

    5. Re:Why not both? by Durandal64 · · Score: 4, Insightful

      It depends on what you're trying to teach the person. If you want to teach someone how to write programs using programming languages, then yes, things like VisualBasic will probably be good starting points. But if you want to teach someone the fundamentals of computer programming, including proper memory management, efficient use of resources and how the compiler is going to see the human-readable code, then I think that C is still the best introductory programming language out there.

      Basically, I'm saying that students of computer science shouldn't start off with VisualBasic. But if you're a hobbyist or a network engineering type who needs to be able to write working scripts and stuff like that, sure, VisualBasic is as good as any other ultra-high-level language, I suppose.

    6. Re:Why not both? by eric76 · · Score: 3, Interesting

      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.

    7. Re:Why not both? by Samus · · Score: 4, Informative

      Time to update to .net 2.0. A lot of the discrepencies that you mention are now gone.

      --
      In Republican America phones tap you.
    8. Re:Why not both? by CSMastermind · · Score: 2, Informative

      Well I suppose that all depends on how you define CS. Wikipedia (http://en.wikipedia.org/wiki/Computer_science) defines it as, " the study of the theoretical foundations of information and computation and their implementation and application in computer systems". With a definition that broard there a many applications that require a better education than what you speak of. There's still a lot of programming that gets done at the assembly level. There's still a lot of programming that isn't involved in staight code. There's robotics and there's AI and there are other emerging feilds that need a degree program to produce people who are educated enough to do the work. Not to mention all the math and physics that are involved in CS.

    9. Re:Why not both? by zootm · · Score: 2, Informative

      That's not entirely true - VB has its own set of libraries, and the .NET systems were designed to be (as much as possible) language-agnostic, rather than "designed for C#". This is a pretty major benefit of the CLI - it was designed with many OO langauges "in mind", and works pretty much as well with all of the languages it ships with (and, happily, they mostly interoperate with one another).

      I hate VB, but .NET does at least make it a fairly serious tool. Some people find Basic easier, or it's what they're used to, so I don't see a particular reason to stop them using it (I gave up trying to "educate" people years ago). VB.NET is, despite how it may look, a pretty clever language in a lot of ways.

      I hate coding in it and reading code examples for it though. Makes my blood boil. But it's quite a difficult tool to dismiss.

    10. Re:Why not both? by NiteShaed · · Score: 3, Insightful

      It sounds like either he had no idea what their VB programmers did, or they had some fairly serious problems with their hiring practices.....If all they did was write meaningless programs that no one used, why did the company have them?

      --
      Some bring out the best in others, some the worst. Some bring out far more.
    11. Re:Why not both? by TheAncientHacker · · Score: 2, Interesting
      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?

    12. Re:Why not both? by cybergenius1 · · Score: 2, Insightful

      I completely agree with your opinion on learning the fundamentals with C. I graduated with my bachelors about a year and a half ago and have been working as a programmer since. My school taught the basics, but only the very basic fundamentals. I really learned how to program on the job. The job entailed programming in ANSI C for 16 Bit DOS/OS2 Warp and 32 Bit Windows environments. On top of that, the environment we develop in is completely custom. The build scripts (batch files), editor scripts (vim), and all the configurations are custom. This was great for learning, but proved to be very time consuming. As my company has moved away from having to develop for DOS/OS2 Warp and is now strictly Windows I am enjoying not worrying about memory management issues so much (great memory overloading learning experiences). I don't know much about .Net yet, but from my experience thus far in multi platform development is Java is portable, C/C++ portable and .Net is not (yet). However I have seen C# .Net 1.1 framework running in a Linux environment (when not compiled to any windows DLL's of course), but not 2.0. Back to topic, beginners should pick up K&R C, read it, do the lessons, then move on to a series of books called "Write Great Code" by Randall Hyde.

    13. Re:Why not both? by abigor · · Score: 2, Interesting

      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#.

    14. Re:Why not both? by kbielefe · · Score: 2, Interesting

      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?

      --
      This space intentionally left blank.
    15. Re:Why not both? by lrichardson · · Score: 4, Interesting

      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.

    16. Re:Why not both? by jbplou · · Score: 3, Informative

      Have you programmed in .NET because I find it hard to believe.

      C# has useful convenience functions like using that VB.NET does not

      VB.NET has imports which is mostly the same as C# using. It lets you short cut your code, but does not allow aliasing like C# using.

      VB.NET has convenience functions for late binding (considered harmful) and case-insensitive string comparisons that C# does not.

      VB.NET string comparison is case sensitive by default. Ex "abc" = "ABC" would evaluate as false. In C# or VB.NET you would perform case insensitive string comparisons the same way, either using string.tolower(or .toupper) on both strings or preferably using string.compare(string1, string2, true).

      C# has more object oriented features such as operator overloading that VB.NET does not

      VB.NET in .NET 2.0 does have operator overloading.

      C# has developer API comments yet VB.NET does not

      There are about a dozen free addin for visual studio to perform this task.

    17. Re:Why not both? by I'm+Don+Giovanni · · Score: 5, Interesting

      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.

      --
      -- "I never gave these stories much credence." - HAL 9000
    18. Re:Why not both? by Beowulf_Boy · · Score: 3, Interesting

      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.

    19. Re:Why not both? by eajhnsn1 · · Score: 3, Informative

      I believe the "using" the poster was talking about was the C# keyword that provides automatic .Dispose() execution once the block is out of scope. It's a shortcut for wrapping the code in a try-finally and calling Dispose() in the finally.

      For example if SomeClass implemented IDisposable:

      using (SomeClass x = new SomeClass())
      { // work
      }

      would be equivalent to

      SomeClass x = new SomeClass();
      try
      { // work
      }
      finally
      {
            x.Dispose();
      }

    20. Re:Why not both? by Fjornir · · Score: 2, Informative
      VB.NET has imports which is mostly the same as C# using. It lets you short cut your code, but does not allow aliasing like C# using.

      I'm fairly certain that anomalous cohort meant using(){} blocks and not the using statement. Ignoring the collision in the keywords using(){} is a wonderful piece of syntactic sugar. Inside the ()s of a using block you can declare and instantiate a set of objects -- and when the closing brace of the using() block the objects are automatically Dispose()ed.

      It seems silly at first -- until you stop to think of it. A VB app is required to Dispose() of its own temporary objects. On trivial objects this doesn't mean a whole heck of a lot -- they can sit hogging whatever trivial resources they want until the garbage collector gets around to noticing they've gone out of scope and does a GC pass on them. On more substantial objects this can mean quite a lot -- I want my DB connections freed up ASAP, for instance...

      "Well, the VB coders can just Dispose() of their objects, no problem...." -- Sure they can -- but if they Dispose() of the object and then accidentally use it again they now have a runtime error to debug. If a C# coder puts the closing brace of a using(){} block in the wrong spot and tries to use one of the objects he instantiated in the ()s of the using(){} block it forces the error into compile-time where it's a bazillion times easier to troubleshoot.

      --
      I want a new world. I think this one is broken.
    21. Re:Why not both? by Fjornir · · Score: 2, Insightful
      VB has all the functionality of an OOP powerhouse but the syntax is different.

      The problem with VB.Net as a beginner language has less to do with the syntax being different in my estimation. It has more to do with the keywords which are used meaning wonky things in relation to their accepted use in OOP parlance. If you take the O'Reilly text on Windows Forms there's a lot of talk about how in C# it's a [foo] (but in VB say [bar])...

      That's fine and dandy -- VB can have its own keywords as much as it wants to... Until the serious student reads a language-agnostic text on the fundamentals of OO Design, lets say, and suddenly he finds that [bar] actually means something different than the [bar] he's been using and that the "right" word to describe it was really [foo] and the only reason he thinks it is [bar] is because VB.Net syntax makes a tremendous number of compromises to make the syntax familiar to users of VB4.

      --
      I want a new world. I think this one is broken.
    22. Re:Why not both? by chthon · · Score: 4, Informative

      Scheme and this book.

    23. Re:Why not both? by Anonymous Coward · · Score: 2, Insightful

      "Computer Science" is so bogus. 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.

      Sure, some people with Chemistry degrees go on to get Ph.Ds and discover new chemicals, but the vast majority of them "just" mix reagents.

      Sure, some people with Astronomy degrees go on to get Ph.Ds and discover new planets, but a lot of them "just" look at the moon.

      Sure, some people who have recieved B.S. degrees go on to get Ph.Ds and discover something new in their field, but 99.9% of them "just" get ordinary jobs.

    24. Re:Why not both? by Shaper_pmp · · Score: 2, Insightful

      Also:

      BASIC was designed as a teaching language, and while it was easy to learn its use of things like GOTOs meant it even sucked at that, encouraging bad programming practice long after it was generally recognised to be bad. Ok, maybe BASIC only allowed (and didn't punish) bad programming practice, but in the context of a teaching language the two things are pretty much equivalent.

      VB was always a shitty language, that carried on teaching bad programming practice. VB encouraged an entire generation of bad coders to write bad code, and because it was so easy the coders often never even realised how bad they truly were. (Contrast in C/C++, where if you're a bad coder you know all about it, because the language doesn't try to hold your hand and wipe your arse all the time).

      The only thing MS could do to make VB.NET remotely credible as a "serious" language (C/C++/C#/Java/whatever) was to... break backwards-compatibility and re-write it completely so it looked almost exactly like all the other serious languages.

      Every new version of VB seems a little more credible, and every version tends it more in the direction of C/C++/C#/Java.

      You do the math.

      --
      Everything in moderation, including moderation itself
    25. Re:Why not both? by devonbowen · · Score: 2, Interesting
      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

    26. Re:Why not both? by packman · · Score: 3, Interesting

      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...

    27. Re:Why not both? by bigtangringo · · Score: 2, Informative

      You know, I like Python, but I swear to god their lack of coding standards drives me absolutely nuts.

      Go look through the modules:
      Modules, methods, properties named with underscores, camel case with upper or lower first letter, etc.

      Batteries included, but they're all different sizes.

      That said, I really dig Python in general.

      --
      Yes, I am a smart ass; it's better than the alternative.
    28. Re:Why not both? by pdbogen · · Score: 3, Insightful

      I disagree. For many programming tasks, you are perhaps correct- but I still don't think computers have advanced enough so that a few lines in Scheme or [insert language of your choice] will make an operating system.

      Let alone an efficient operating system. You're not going to learn the fundamentals of programming from a language that does it all for you. Java, Scheme (apparently), Visual Basic.. There are *concepts* that you need to take away from things like manual memory management. Do you think these features magically appear in a language?

      Learning assembly went a long way towards my being able to understand how to optimize code in a way that makes sense, since it's going to be converted to assembly at some point. If I had never used a language lower-level than C, at best I might have understood this after years of trial-and-error. I shudder to imagine trying to learn to optimize code from using something like Java.

      Your basic argument seems to be that the fundamentals of computer science aren't relevant anymore because there are programming languages that abstract the user from them; this is akin to saying that you don't need to know how addition and subtraction work because we have calculators.

      Seems silly when you put it in terms that you're familiar with, doesn't it? And besides that, someone has to make the calculators.

    29. Re:Why not both? by Phisbut · · Score: 4, Insightful
      Disclaimer : My experience with VB stops at VB6. I have steered away from all that .NET stuff since then.

      I may sound old-school, and then maybe I am, but "programming" and "writing a program" seem like two different things to me. If all you want to do is write programs, then I think about any high-level language could be appropriate because programs can be written in any language and high-level ones hide all the ugly computer part from the programmer.
      However, if you want to learn to program, then you need some serious commitment, and you need to learn (or at least understand) assembly language, and then work with C or C++ or a language that actually lets you play with bits and bytes.

      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.

      VB is a quite high-level language, and is easy to learn (or at least fiddle with). That lead to a whole bunch of VB coders who pretends they are programmers because they can write programs. However, all they do is write lines after lines of VB code (and most of it is *click* *click* *click* through the UI), with no understanding whatsoever of what is really going on when the program runs. It is really nice when, with little effort, a program can be made and performs the desired operation. However, when a bug arises, those coders that don't understand the low-level stuff might not understand the source of the bug (and then sometimes blame it on someone else), and therefore can't debug their own application.

      Every programming language is a tool, and when a job needs be done, one should use the best tool for the job. I suppose there are some jobs for which VB is the best tool. However, when someone claims to be a programmer and only knows VB, chances are he doesn't program, he just knows where to click to create a dialog with some buttons. If he knows VB and C++, Java, PHP, Perl, Python, etc., he's more likely to understand what he does, and will probably write a good VB program if he needs to.

      Know your needs and know your wants. If you want to learn how to program, don't choose a language that will hide all the ugly stuff from you, because you need to know about the ugly stuff.

      --
      After 3 days without programming, life becomes meaningless
      - The Tao of Programming
  2. No. by neoform · · Score: 2, Insightful

    It is a completely unstructured language that promotes very bad coding practices and allows for poorly writen applications to run anyway.

    --
    MABASPLOOM!
    1. Re:No. by hexghost · · Score: 3, Insightful

      I agree. I'd personally recommend Java, as most colleges and classes are using it, plus it lets learners go straight into OO and learn good practices.

    2. Re:No. by ObsessiveMathsFreak · · Score: 2, Funny

      ....plus it lets learners go straight into OO and learn good practices.

      Or run, screaming in mental agony from the building as their virgin eyes behold the Java "Hello World" app.

      --
      May the Maths Be with you!
    3. Re:No. by bateleur · · Score: 2, Interesting

      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.

    4. Re:No. by ObsessiveMathsFreak · · Score: 3, Insightful

      Let's stop referring to it as a programming language too, please.

      I sympathise with your sentiments, but VB is a turing machine just like all the rest of them

      --
      May the Maths Be with you!
    5. Re:No. by neoform · · Score: 2, Insightful

      Do you teach someone to speak english by teaching them ebonics first? No, you teach them proper english with proper grammar.

      --
      MABASPLOOM!
    6. Re:No. by chasingporsches · · Score: 2, Insightful

      have you USED VB.NET? or C#? i can do anything in vb.net that i can do in C#, and it makes my head ache less. i can do C++ programming all day long, mind you... but in terms of getting things done quickly and powerfully... i'd much rather write VB.NET code than anything else. especially if i'm getting paid to do it. you must be talking about VB 6, in which case i'd agree with you. VB.NET is an OO, structured, efficient, powerful language. and i'm a microsoft hater as much as the next guy.

    7. Re:No. by bateleur · · Score: 2, Insightful

      Actually I do have two small children and I most definitely do neither of those things. I taught them first to communicate in whatever ways they found easiest and most effective - it certainly wasn't correct English. Your analogy isn't bad at all!

    8. Re:No. by in10se · · Score: 2, Insightful

      While I certainly don't agree that VB (specifically VB.NET) is a good choice for beginner programmers, I would have to disagree that VB is not a structured language. As the original article states, it is now a fully developed OO language which means you can teach all the appropriate theory on classes, objects, methods, properties, inheritance, etc. However, as a first language, there are too many nuances in VB that could easily confuse a beginner. One of the major strengths of VB is that you can quickly create applications with little work - while great for an advanced programmer, this exactly what you don't want for a beginner.

      I am not a Microsoft hater like much of the Slashdot community, but I do personally hate VB and VB.NET because of its syntax. If you want to go with .NET, C# is definately the answer. If VB is your only background, it is much harder to pick up the more tried-and-true languages such as C, C++, and Java.

      There is also the issue of platform independence. While the Mono project is well on its way to supporting the .NET languages on Linux, the only true support for .NET is Windows-based. To limit a new programmer to Windows might hold them back.

      --
      Popisms.com - Connecting pop culture
    9. Re:No. by RetroGeek · · Score: 2, Insightful

      It is like the difference between a sedan and a sports car.

      The sedan is easy to drive, has power everything, automatic transmission. The sports car has manual rack&pinion steering and a manual transmission.

      Both will get you from here to there, but with the sports car you need to pay attention. The upside is that with the sports car you have much better control over what you are doing.

      Yes it does take several objects to read and write a file, but then you have complete control over HOW the file is being read and written, including inserting your own filter classes.

      With power comes complexity.

      --

      - - - - - - - - - - -
      I am a programmer. I am paid to produce syntax not grammar. Deal with it.
    10. Re:No. by AKAImBatman · · Score: 3, Insightful

      Never, ever, ever, ever start a beginner programmer with Java. The OOP features are guaranteed to confuse the poor soul and turn him/her off to programming forever. The best option is to start a new programmer off with a traditional BASIC variant such as SmallBASIC. Such BASICs can be used to teach a new programmer about how software executes one line after another (don't laugh, this is a big problem for new coders), control structures, and how the computer stores/interprets numbers and strings.

      I only wish we still had command line interpreters around. It was so nice when beginners could execute their instructions directly OR add them to a program. It made playing around and learning so much quicker.

      Once they graduate to more complex programming, something like C is a good choice to introduce concepts like functions, data structures, pointers, libaries, compilers, and linkers. Once they get to the point where they start prefixing every function with a module name, then its time to introduce them to OOP and Java. The Java stuff should make a lot of sense at that point. ("You mean I can group these functions... err... methods together, then store the data inside that grouping so that I don't have to pass a STRUCT around? Sold!")

      The result of this education is that you'll have a well-rounded programmer who's ready to run out and attack any problem. New languages should be easy for him/her to grasp, and they should be looking to learn more computer science beyond just language constructs.

    11. Re:No. by walt-sjc · · Score: 2, Interesting

      Basic? E-gads, man! No, the proper language to start all newbies on is Forth.

    12. Re:No. by ObsessiveMathsFreak · · Score: 2, Insightful

      Yes it does take several objects to read and write a file, but then you have complete control over HOW the file is being read and written, including inserting your own filter classes.

      If you have to go to such trouble, why did you leave C++ in the first place?

      Java is a language designed for people who already know how to program. It starts off, from day one, with object orientation concepts, scope, namespaces, system calls, and in some Hello world cases, typecasting. All this verses a one liner in other languages.

      Using Java as a teaching language is a recipe for disaster. Students won't grok it, will abuse its framework, and come away with a totally backwards understanding of how programming works. That is if they don't walk away in disgust at the first example.

      Showing someone Java's "Hello World" as their first program is an insult every andragogical principle ever written. It's a personal insult to each and every student in the class, and a clear indicator of the incompetance and/or disinterest of the educator.

      --
      May the Maths Be with you!
    13. Re:No. by Rei · · Score: 4, Insightful

      I agree. I would recommend:

      1. (Insert favorite *simple* language here): simple meaning that you can't do much with it, and what you can do is very easy and obvious. Qbasic comes to mind, as that's what I learned with, but there are many which fit the bill.

      2. C: Turn the language from a magical tool that does what you want (poorly) into something that actually reflects the underlying architecture. Helps the programmer understand why their previous language performed so badly. Widely used (and mimicked), so they know a useful language.

      3. C++: Now that they understand what's going on under the hood, teaches them good coding habits - objects which clean up their own memory, const variables, object oriented programming, generic programming, etc. Widely used (and mimicked)

      4. Any other language(s) here: they already know the basic concepts, so it's just implementation details.

      You *could* have them branch out at any other stage, assuming that they've already learned the prerequisites. For example, once they've just learned to program (#1), they could do basic python. They won't be able to write maintainable or fast code, however. If that's not a problem, power to them!

      I haven't used VB since Windows 3.1. I understand it's really changed ;) Back then, I wrote a pi calculator in VB. It ran half as fast as the equivalent program in Qbasic. That's really saying something; I dropped VB as soon as I saw that.

      --
      Beautiful Blueberries
    14. Re:No. by gnuLNX · · Score: 4, Insightful

      "I only wish we still had command line interpreters around. It was so nice when beginners could execute their instructions directly OR add them to a program. It made playing around and learning so much quicker."

      at the command prompt type: python

      BTW I think Python is without a doubt the best language to teach a begginer with.

      --
      what?
    15. Re:No. by Watson+Ladd · · Score: 2

      As a great coder once said: "Teaching BASIC should be a capital crime. It ruins a programer forever." All beginners should learn something simple with C-like syntax like perl.

      --
      Inventions have long since reached their limit, and I see no hope for further development.-- Frontinus, 1st cent. AD
    16. Re:No. by Decaff · · Score: 5, Insightful

      Once they get to the point where they start prefixing every function with a module name, then its time to introduce them to OOP and Java.

      I disagree. This is the wrong way to introduce OOP, as it treats it as some sort of high level way of managing code rather than as a fundamental technique that can be used at all levels. My view is that the best way is to teach something like Smalltalk or Ruby initially in a procedural style, and then show that everything in the language is an object, with methods and properties. Then, perhaps, the compromises made in a language like Java can be explained. One thing that should definitely be avoided is C - for goodness sake teach a safe language like Pascal instead. Beginners should not be dealing with pointers to memory (most developers never need to anyway).

      OOP needs to be taught at the start, not as an optional add-on.

    17. Re:No. by PeterBrett · · Score: 4, Interesting

      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.

    18. Re:No. by Danga · · Score: 2, Insightful

      I agree that Java wouldn't necessarily turn some people off to programming if it is the first language used but I don't think it is a good starting language. My first language I was taught was VB and next was Java, and I have to admit they gave me NO clue about what was going on behind the scenes which is pretty important. It was not until I started classes in C/C++ that I really started to undertand basic programming and OO concepts as well as memory management.

      I think having to allocate and deallocate memory takes away the "magical" appearance that variables have in the first 2 langauges I learned, and it also forces you to understand how the computer works and most importantly how to write clean, memory leak free code. Personally, I believe having a garbage collector from the get go is a bad idea. It does make coding less of a hassle as there is less to worry about but learning how to manage memory is not a very hard concept to grasp and I wish I had started off learning about it from the very start.

      I think the best way to start programmers off is:
      1) Simple programs that only have a main function so they can play around and learn how/what variables are and how to interact with them.
      2) Teach them what arrays are and make them use them.
      3) Move on to simple functions.
      4) Let them create some structs.
      5) Have them create some simple classes and make sure they understand constructors/destructors.
      6) Teach them about basic pointer concepts and how to allocate/deallocate memory and have them create some classes that allocate memory and then check to deallocate it in the destructor.

      Thats how I wish I had started out, I think it would have made learning a lot of programming concepts easier for me.

      --
      Hey, there is only one Return and it's not of the King, it's of the Jedi.
    19. Re:No. by Decaff · · Score: 2

      You can make a Java app a complete pig if you have no inkling of what's going on behind the scenes, and that's why most Java apps suck. They're not coded by people who use the features of Java, etc. as a tool, they're coded by people who use those features as a crutch. Start 'em off with BASIC, show them some C++ so they can get results, ASM so they know what's going on at machine level, and then onto the OO design for big programs. OOP really isn't useful until you hit the big, GUI programs anyway.

      This has to be one of the most old-fashioned views I have read for quite a while. The time when you needed to 'get behind the scenes' and know what was going on at the ASM level has long gone, and the comment that 'most Java apps suck' is no relevance for a reasoned debate. Anyone with a modern understanding of software design understands that safety, security and automated memory handling aren't a crutch, but a major step forward in the quality of software production. These days they are no barrier to efficiency or performance.

      The idea that OOP isn't really useful until you hit big GUI programs went out of date decades ago - OOP is a fundamental technique that can be used at even the smallest level efficiently. To suggest that it is only for GUI and only for large scale is to completely misrepresent what it is for and how it can help software design.

      Of course, I could be reading things wrong, and this post is some sort of ironic joke - a parody of how to teach software?

    20. Re:No. by kuzb · · Score: 2, Insightful

      Depending on the language, and the severity of the error, sure you can. Look at any person's PHP code where they've ignored things like defining variables before use and then accessing them even though they do not exist, using constants instead of strings in array (hash) keys which PHP automagically translates in to a string, using error suppression to stop error output from bad fopen() calls, and let's not forget that errors in MySQL queries won't stop the code from executing either. It's possible to have all kinds of errors, and still have a functional program. While I don't advocate this, it does in fact make your statement blatently false.

      --
      BeauHD. Worst editor since kdawson.
  3. Bad idea by 77Punker · · Score: 2, Insightful

    Clicking on a wizard isn't the same thing as programming. To really understand what's going on and get used to writing programs, it's essential to type every letter of the code yourself. My first CS class taught me Java, which I'd say is a better idea than VB. 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.

    1. Re:Bad idea by 77Punker · · Score: 2, Insightful

      Well, I suppose it'll make you lazy. This particular article, however, is not about programmers. It's about people who are wanting to become programmers. Someone with little to no low-level experience has absolutely no idea what the IDE really creates.

    2. Re:Bad idea by object88 · · Score: 2, Interesting

      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.

    3. Re:Bad idea by ednopantz · · Score: 2, Interesting

      >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%.

    4. Re:Bad idea by Just+Some+Guy · · Score: 5, Informative
      OK, that's just mean.

      I totally disagree. Difficult? Complicated? Sure, but not mean. People who have learned assembler are the ones who understand why

      for(int y=0; y<ysize; y++) {
      for(int x=0; x<xsize; x++) {
      do_something_to_pixel(x,y);
      }
      }
      will usually run faster than
      for(int x=0; x<ysize; x++) {
      for(int y=0; y<xsize; y++) {
      do_something_to_pixel(x,y);
      }
      }
      even though both are conceptually identical. There are many things that seem perfectly reasonable in high-level languages that turn out to be a really bad idea once you learn what's going on in the hardware. I'm sure it's possible to learn that stuff without hitting the metal a few times, but I've never, not one single time, ever met someone who's done so.
      --
      Dewey, what part of this looks like authorities should be involved?
    5. Re:Bad idea by pla · · Score: 2, Interesting

      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.

    6. Re:Bad idea by Atzanteol · · Score: 2, Interesting

      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.

      --
      "Ignorance more frequently begets confidence than does knowledge"

      - Charles Darwin
    7. Re:Bad idea by dedazo · · Score: 5, Insightful
      Mmmkay, since I've noticed that you're some sort of shining star around here and your insight tends to get modded up regularly, I'll try to be as polite as possible, even though my first instinct is to say you're full of it.

      Your first problem is that you're mashing VB6 and VB.NET. They, for all the similarities in syntax, are really completely different languages with a completely different runtime going underneath. Now, since this is a question about a "beginners language", it's unlikely that someone would mistakenly rant off about VB6, since it has been largely deprecated. Anyone starting with "VB" now would use VB.NET, with or without the pretty IDE. I think that's clear enough from most of the posts I've seen so far in this article.

      Some of your points are valid vis-a-vis VB6. It was completely tied to the IDE (the preprocessor infact was the IDE) and it supported a semi-OO model, which is like saying "a little bit pregnant", but regardless, most of these limitations were related to the fact that VB6 was essentially a COM server and consumer platform. The lack of implementation inheritance is a good example of that - since COM is a binary spec, it does not support it. Polymorphism and aggregation OTOH, which permeate COM, were. So pre-VB.NET, "Visual Basic" was both hobbled and all the better off for being tied to intrinsically to the COM spec. VB6 didn't behave like it did because someone at Microsoft didn't have anything better to do, it did because it had to play by the rules - the rules of COM. You could either understand these limitations (if they were to you) and live with them, or just use C++. By the time Microsoft released ATL, COM-centric coding in C++ became extremely easy - I always chuckle at the quitessential "yeah I know C++ and VB sucks, but I don't know a replacement for the GetObject() function and my life suxx0rz" claim from people who think it's really cool to bash VB because it has a large following of hobby developers that know nothing about software design, as if it was impossible to do anything meaningful with it. But I digress.

      Along comes VB.NET, which is essentially the VB6 syntax ported to the .NET CLR. Like the other "mainstream" languages that target the CLR/CLI, VB.NET is essentially a full OO implementation, unless you're willing to call Python or Java "toys" because they don't support multiple inheritance or the concept of friend classed as implemented by C++.

      So you have a fully OO language (for all practical purposes) with generics, operator overloading, partial classes, etc. that can be easily decoupled from the IDE - all you need is a text editor and the compiler, though most people prefer the IDE route. It just happens to look like BASIC. Other than that, I think it's a good beginner's language. Wouldn't you agree?

      That's as far as VB currently goes... the rest of your rant is just the usual bashing a platform that is no longer supported or in active development, nor understood (obviously) by people like you.

      --
      Web2.0: I love when people Flickr my cuil and digg my boingboing until my google is reddit and I start to yahoo
    8. Re:Bad idea by Mr.+Underbridge · · Score: 4, Insightful
      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

      Bad idea. A new programmer should start with small command-line programs, and grow into coding bigger things *by hand* at first. Only when they understand exactly what the wizard does should they start using them as time savers.

      That, I think is the point of wizards - to save you time, not to do for you things you don't understand. When new users start using wizards, bad code WILL result.

    9. Re:Bad idea by object88 · · Score: 3, Insightful

      Given that almost all images are stored with x-adjacent pixels being stored in consecutive memory locations (or nearly interleaved, with other data between them), the first example stands a much better chance of minimizing cache misses.

      Thank you-- I'm going to try to keep that in mind. I appreciate the tip.

      But if they tried to teach that stuff in programming 101 (regardless of the language), the students would leave at the end of the semester complaining that they didn't get to do anything fun, and are less likely to want to continue. A new student will have a hard enough time getting a project working. If you teach complex subjects first, they're more likely to make simple mistakes, rather like the typo you had in your initial example.

      Let them get passionate about the subject by completing small tasks right away, then move on to the heavy material.

      For that matter, in your example, the first code was not a "bad idea", it was simply less efficient. It would have been less efficient regardless of the language complexity, and the concept or cache-misses can be taught regardless of language.

    10. Re:Bad idea by Hosiah · · Score: 2, Insightful
      A new programmer should start with small command-line programs,

      What sad world we inhabit when common sense is in such short supply that things like this have to be *told* to people - and be disbelieved anyway. I wouldn't expect to learn to drive by hiring somebody else to chaffer me around while I sit in the back seat with opaque glass blocking my view of the driver's seat - yet gullible unfortunates out there insist that they will learn to program by paying for somebody else's program to write programs for them.

      Believe it, folks: programming is a PHYSICAL activity. Do it in the console. Unplug the damn mouse and throw it in the closet. SWEAT! Type til your fingers bleed! You shouldn't touch a GUI IDE until you've generated at least your first thousand-line original code block.

    11. Re:Bad idea by mewphobia · · Score: 2, Informative
      VB.NET is essentially a full OO implementation, unless you're willing to call Python or Java "toys" because they don't support multiple inheritance

      class DerivedClassName(Base1, Base2, Base3):

      Granted, it's not the most useful implementation in the world, but python supports multiple inheritance.

  4. still a toy by dunkelfalke · · Score: 2, Insightful

    no matter how much you modify it.
    anyway, i don't see a point in vb. c# is very easy and if you really must take language for learing, why not chose delphi? pascal was always better than basic as a language for beginners and modern pascal dialects (like delphi) are as powerful as any other programming languages.

    --
    Conservatism: The fear that somewhere, somehow, someone you think is your inferior is being treated as your equal.
    1. Re:still a toy by galonso · · Score: 2, Insightful

      It's certainly not a toy, but it's not written or employed in a way that lends itself to good programming practices. Frankly, if a person had to learn with VB I would point them to VBS employing classes, because you can get somewhere close to standard programming practices.

      c, I would argue, is a fine language to learn the 'under the hood' aspects of programming, and c++ or java for moving to the OOP world; not because they are better than Smalltalk, but because they are in wider use. C#, really, is no worse than java, the main thing is to avoid the GUI wizards and such early on so that you have a good foundation.

      I am not surprised, yet am somehow disappointed, that there are so many bashers who seem to bash for religious (anti MS or language snobbery) reasons instead of thinking this through. Yes, I know where we are, but please!

      --
      -[joke removed for your safety]-
    2. Re:still a toy by LDoggg_ · · Score: 2, Interesting

      why not chose delphi?

      Here's 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 a little IDE I threw together ;)

      --

      "If they have both, tell them we use Linux. And if they have that, tell them the computers are down." -Dave Chapelle
  5. Visual Basic by webmistressrachel · · Score: 2, Interesting

    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.

    --
    This tagline was transcoded to result in at least one smirk. If you experience failure to smirk, please consult your Gen
  6. still C by engagebot · · Score: 3, Interesting

    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.

    --
    Han shot first.
    1. Re:still C by beavis88 · · Score: 5, Funny

      *sniff* brings back memories of my first C program

      % ./a.out
      Segmentation Fault
      %

    2. Re:still C by Ratbert42 · · Score: 2, Funny

      $ cat test.c
      #include
      int main()
      {
          printf("Hello world\n");
      }
      $ gcc -o test test.c
      $ test
      $

    3. Re:still C by Pseudonym · · Score: 4, Interesting

      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.

      --
      sub f{($f)=@_;print"$f(q{$f});";}f(q{sub f{($f)=@_;print"$f(q{$f});";}f});
    4. Re:still C by tehshen · · Score: 2, Informative

      That'll be Slashcode stripping out the well-known tag.

      If you don't know this yet: Use &lt; for < and &gt; for >

      --
      Guy asked me for a quarter for a cup of coffee. So I bit him.
    5. Re:still C by phlinn · · Score: 2, Interesting

      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.

      --
      "Pulling together is the aim of despotism and tyranny! Free men pull in all sorts of directions" -- Havelock Vetinari
    6. Re:still C by iphayd · · Score: 4, Funny

      Oh come on.  You know you commented it.

      #include    //Most people put <stdio.h> in this line after #include, but I can't due to a software patent.
      int main()  //Main function is run every time
      {           //Begin Main function
          printf("Hello world\n"); //Print "Hello World" and start a new line
      }           //End Main Function

    7. Re:still C by el+cisne · · Score: 2, Funny

      Flipping brilliant! Thank you. Ahh, yes, the memories. Innocently asking the TA "What's a seg fault?" Innocence was soon dashed, as the Holy K&R I consumed.

    8. Re:still C by cdrudge · · Score: 4, Funny

      You forgot to put your name, class, and project number up at the top of the file as comments. You will also lose point for not properly documenting the method's in and out parameters and how they might be modified. Finally, you also did not declare the "Hello World\n" as a constant to ease modification at a later point in time.

      ...or at least that was the way my first Hello World program was graded (although that was in C++).

    9. Re:still C by stoicio · · Score: 3, Funny

      You failed to notice that he doesn't *return* anything
      from main, which is declared as 'int main'.

      You fail the test!

    10. Re:still C by ignavus · · Score: 5, Funny

      Oh, you mean...?

      #include <stdio.h>

      int main() {
          printf("Segmentation Fault\n");
          return 1;
      }

      --
      I am anarch of all I survey.
  7. Re:No! by Locke2005 · · Score: 2, Insightful

    Python or Ruby, yes. Not C++; you'd be much better off with Java than C++.

    --
    I've abandoned my search for truth; now I'm just looking for some useful delusions.
  8. Visual Basic is horrible; use Python by Anonymous Coward · · Score: 4, Insightful

    Python is a great starter language.

    1. Re:Visual Basic is horrible; use Python by XxtraLarGe · · Score: 4, Interesting

      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!

      --
      Taking guns away from the 99% gives the 1% 100% of the power.
    2. Re:Visual Basic is horrible; use Python by nicolas.kassis · · Score: 4, Informative

      I second that, Python is easy on the beginers but, I still think that to make a good programmer you need to teach him/her 2 languages. C first and then Python. The reasoning behind this is that C teaches a lot of basic (easy and complex ) things such a variable and memory, functions, types, stucture, control flow.... It shows new programmers a lot of concepts that are part of the majority of languages (Even just a Subset of features). After new programmers have done it the hard way, Python is great to start talking about OOP, Data structures, Algorithm... Since it's a pretty quick to code most things in python and that it removes the major pain of memory management, it allows for quick and easy learning of some more complex topic like those I have just mentioned. Finally I say that learning C and Python will allow most to learn any other language in a short period of time. It makes well rounded people. Java is also quite nice for beginers. But C and Python are just more usefull together. They fit in more places. Nic

    3. Re:Visual Basic is horrible; use Python by dancpsu · · Score: 5, Insightful
      The reasoning behind this is that C teaches a lot of basic (easy and complex ) things such a variable and memory, functions, types, stucture, control flow...After new programmers have done it the hard way, Python is great to...

      Why would you want to start with "the hard way"? Bringing students into a EECS program might benefit from starting out with C or even assembler, but for anything else it is overkill. Python teaches variables, functions, structure, and control flow as well, so I don't see the disadvantage of starting with Python. The main thing that Python does not teach is memory management and some of the more interesting bugs that C can produce.

      The main reason to introduce a student to more than one language is to begin without the more complex parts of languages like object oriented code, and even structured code. The nice thing about python is that you can start with procedural code, continue through structured code, and end up at object oriented code, introducing only a few concepts at a time.

      With C, you have the problem of explaining the main() function or doing handwaving before you get around to explaining functions. With Java, you have the problem of classes even before you get to a main function. When even the most basic program requires structured or object oriented code, you have a problem teaching it to beginners. Take the following examples:

      Java:
      class myfirstjavaprog
      {
      public static void main ( String args[] )
      {
      System.out.println ( "Hello World!" ) ;
      }
      }
      Student asks:

      What is a class?, What is that funny looking bracket?, What is public?, What is static?, What is void for?, What is main?, What are the parenthesis for?, What is a String?, What is args?, How come there are funny square brackets?, What is system?, What does the dot do?, What is out?, What is println?, Why are there quotes there?, What does the semicolon do?, How come it's all indented like that?.

      C:
      #include <stdio.h>

      main() {
      printf ( "Hello, World!\n" ) ;
      }
      Student asks:

      What is #include?, What are the greater than and less than signs doing there?, What is stdio.h?, What is main? What are the parenthesis for?, What is the funny bracket for?, What is printf?, Why is hello world in quotes?, What is the backslash-N doing at the end?, What is the semicolon for?

      Python:
      print "Hello World"
      Student asks:

      What is print?, Why is hello world in quotes?

      Get the picture?
      --
      "Scientists don't change their minds, they just die." -- Max Planck
    4. Re:Visual Basic is horrible; use Python by srcosmo · · Score: 2, Informative
      JavaScript is great, as long as you make sure they're testing it on a non-IE browser. Not only are Internet Explorer's error descriptions unhelpful ("object expected"!), but in my experience, even the line numbers are often incorrect.

      Firefox has a great JS console with a log of recent errors, rather than a nasty modal window that pops up every time something goes wrong. And if your students are ever doing a DHTML project, the DOM inspector is a godsend.

      --
      free speach
      Did you mean: free speech
    5. Re:Visual Basic is horrible; use Python by ignavus · · Score: 3, Funny

      Makes a great starter pet, too.

      --
      I am anarch of all I survey.
    6. Re:Visual Basic is horrible; use Python by Euler · · Score: 2, Insightful
      My beginnings were on QuickBasic, which looking back.. it kinda sucked, I only wish I had Python back then. But it's a fact that if I had to learn on C, I would have quit right then and taken up a sport instead of programming. :) It's not worth getting religious about, but i think *Basic, JavaScript, and Python are all reasonable choices for beginners. They can all be used in real applications as well. C and/or assembler is not a good idea until people are ready for it. I don't think there is all that much benefit to learning memory allocation, and all the complexities of declarations, pointers, page violations, header files, and compiler/linker headaches until you really need it.

      To be a good programmer, you will eventually have to study these things and more, including digital logic, system hardware architecture, and assembly. But I don't agree with the 'sink or swim' school of learning, most CS students I knew in college just sank unless they had some experience already. Learning more complex concepts in due time will help you with problem solving and analysis in the future, even if you don't really ever write in C, or design a CPU.

      Back when Basic was the only thing available to beginners there were some major elements missing. For instance it was nearly impossible to do any kind of dynamic data structures unless you somehow implemented your own heap in a giant array, only I didn't know what a heap was at the time. In that case, it would be pretty important to be able to write C functions instead. Now with Python, it becomes second nature to create dynamic data structures... you just append to a list. It was so easy, in fact, that I had to erase years of Basic and C habits out of my head before I could grasp how powerful and easy Python is.

  9. And in other questions... by edremy · · Score: 5, Funny
    Dear Republican National Committee: Would Hillary be a good president?

    Dear Osama Bin Laden: Would you like to come to my bar mitzvah?

    Dear Eagles fans: Would you be willing to sign Terrell Owens again?

    --
    "Seven Deadly Sins? I thought it was a to-do list!"
    1. Re:And in other questions... by lucabrasi999 · · Score: 2, Funny
      She is the ugly woman version of John Kerry. Bland. Impotent. Pandering.....Plus, she is bat-shit insane.

      Come on, quit holding back. How do you really feel about her?

  10. Not really. by c0l0 · · Score: 4, Insightful

    While Visual Basic leads to quick and early (limited) success, your coding style and habits, and your perception of how to solve problems when programming in general, will be badly spoiled for a LOOONG time. I advise you to stay the fuck away from it. Go learn an interpreted, really well-designed language, such as Ruby. -> http://www.ruby-lang.org/

    --
    :%s/Open Source/Free Software/g

    YTARY!
    1. Re:Not really. by digidave · · Score: 4, Insightful

      I was corrupted by VB in my youth. It really does teach you bad programming practices.

      Go with Ruby. It's such a lovely language.

      --
      The global economy is a great thing until you feel it locally.
    2. Re:Not really. by shutdown+-p+now · · Score: 2, Insightful

      In 2006, I refuse to go anywhere near a language which lacks proper Unicode support.

  11. Good Beginner's Language by joekampf · · Score: 4, Insightful

    I think it depends on what kind of a beginner it is. It is some hobbiest, or is it someone who is going to code for a living? If the answer is, someone who is going to code for a living then I think your first language should be a language that does not have a lot of bell and whistles. It should be a language that doesn't have a built in string class. One that makes you create arrays of characters. A language that doesn't provide you data structures right out of the box. A good language would be C or Pascal. Unfortunatly, new programers are learning Java, VB, etc right away. They have no concept as to what goes on under the covers. What it means when I go and create 1000's of strings. Or what it means to have a Hash Table vs a Stack, etc. Thanks, Joe

    --
    When a man lies he murders a part of the world.
    1. Re:Good Beginner's Language by ObsessiveMathsFreak · · Score: 4, Insightful

      They have no concept as to what goes on under the covers. What it means when I go and create 1000's of strings. Or what it means to have a Hash Table vs a Stack, etc.

      An important point to note here, is that most programmers nowadays don't need to be aware of this. At least not to the extent they used to.

      More and more, business and industry needs software to simply automate simple tasks. As processing power increases, as memory space grows, it's not necessarily the case that the basic tasks people need done will grow to match them. Thus it becomes less important for a programmer to optimise or worry about optimisation.

      In addition, although more programmers will be required to create software, they will not be required to delve into programmings basic complexities. It's not required you know about opcodes and memory addresses to write HTML, and soon it will be th ecase that you won't need to know when coding business apps. At all.

      In short, the future legions of greasemonkey coders will be using Ruby on Rails, not C and FORTRAN. When the job gets too big, complex and nasty for them or a hardware upgrade to handle, they'll call in the high priced consultants who can still code in low level procedural languages.

      --
      May the Maths Be with you!
  12. I'd go with C# by hal2814 · · Score: 4, Insightful

    Well Mr. Millbarge, I was going to set up the Disney Channel for you for free but now I'm not going to. If you're looking to learn .NET programming, I'd go with C#. It has a C-style syntax which is makes it easier to pick up other C-style syntax languages like C, C++, Java, etc. VB's OO aspects feel to me like they were bolted onto the language as an afterthought. You can experiment with both on Visual Studio. If you want, it might be a good idea to build a few sample projects each way to see which one you feel more comfortable with. You'll learn programming with either one, but you'll learn more you can use elsewhere from C#.

  13. If I may make a suggestion... by martinultima · · Score: 5, Insightful

    I'd personally like to suggest trying out Python. Not only is it more powerful than, and just as easy to code as – in fact, often considerably easier than – Visual Basic, it also has the advantage of running on many other operating systems such as Linux and Mac OS X. It can take a little while to get the hang of, but once you know what you're doing it's effortless (take a look for yourself at a couple things I hacked together, for example).

    And yes, despite being a Linux hacker now I once did use Visual Basic, and I have to say it took way longer to learn VB than it did Python.

    --
    Creative misinterpretation is your friend.
  14. I'm a fan of Java by egomaniac · · Score: 3, Insightful

    I know I'm going to get bashed for this, but I really think Java is a great first language. It has far more regularity, all of its behaviors (even error conditions) are rigorously defined, which makes debugging easier, and it has a great user interface library in the form of Swing.

    --
    ZFS: because love is never having to say fsck
    1. Re:I'm a fan of Java by jcr · · Score: 4, Funny

      a great user interface library in the form of Swing.

      You really need to get out more..

      -jcr

      --
      The only title of honor that a tyrant can grant is "Enemy of the State."
    2. Re:I'm a fan of Java by pionzypher · · Score: 2, Interesting

      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'll believe in corporations having personhood when Texas executes one... - advocate_one
  15. sort of. by Captain_Stupendous · · Score: 2, Insightful

    VB.NET is a lot closer to C# than, say, VB6 is to C or C++. In that respect, it is a valuable learning tool, since it eases the transition to a so-called "real" language (C#). Ultimately, though, VB.NET code compiles to the same PE format that C# does, so the "real language" vs "toy language" debates largely no longer apply. To those who say that VB "promotes" bad coding habits, I say "not anymore". VB.NET and C# are at least as well structured as Java...

    --


    I am alone, yet I also surf the universal backwash of undifferentiated Being, which is LOVE.
  16. Good ... for what? by rongage · · Score: 4, Insightful

    I guess this depends on what you qualify as "good"...

    • VB is good if you want to write apps for Windows
    • VB is good if you don't care about other platforms
    • VB is good if you don't care much about stability
    • VB is good if you want to learn the "wrong way" to code (who needs type enforcement)
    • VB is good if you want code that you can read but not understand

    I'm sure there are other reasons to consider VB to be a "good" language. Since I don't do VB anymore (thank God), I have lost track of those reasons. I think I'll stick with C and PHP, this way when I get a customer that wants something that'll work on Solaris or QNX or AIX or HP/UX, I have half a chance of success!

    --
    Ron Gage - Westland, MI
    1. Re:Good ... for what? by batkiwi · · Score: 2, Informative

      He's asking about VB.NET, not oldschool VB. None of your comments apart from "VB is good if you want code that you can read but not understand" apply.

      -VB.NET code will run on freebsd and linux
      -VB.NET has no known "stability" issues, as it generates mostly the same bytecode C# does
      -VB.NET is strongly typed as long as you set "Option Explicit On," which everyone does.

      Now, I dislike VB.NET, but due to its syntax. Sub/End Sub instead of {} just bugs the shit out of me.

  17. Bad idea by AKAImBatman · · Score: 4, Interesting

    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, 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.

  18. dont learn vb by Tester · · Score: 3, Insightful

    It has never been a good beginner's language.. I truly really recommend a C-family language. Why? Because most of today's popular languages are in the family (C, C++, Java, C#, etc). C++ is way over complicated for a first language. I would really recommend that you start with old fashioned C. Yes, its not object oriented, but it forces you to focus on the basic thing, OO is just a way to pack code together, its not a defining property of the language.. Then you can easily learn C++, Java, C#..

    If you really want to start with a OO language, pick Java or C#.. But be warned, those are dynamic languages (Java, C#, Perl, PHP, Python, Javascript, etc) and they have some differences compared to "hard-compiled" languages like C. C forces you to understand how the computer works, and it will always help afterwards to know that. Python is also a good beginner's language, its clear, clean, easy to learn, easy to use. Stay away from Perl and PHP, they are very easy to use.. but they teach bad habits.

    And VB is badly considered not because the language sucks (and it did suck last time I used it.. but that was many years ago), but because most VB programmers suck and are not very good. Often not formally trained and they dont really understand many important concepts. Its fine if you want to cook for you familly, but that's not how you cook for a large restaurant. A good formally trained programmer should be able to pick up any not-to-weird language in very little time (since they all have basicly the same concepts)... VB programmers most often can't. Where I work, I have to handle C, C++, Java, Perl, PHP, having a good base is important. The concepts are important, the syntax is just a tool. Get a good tool, dump VB.

  19. Yes. by sglider · · Score: 2, Interesting

    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.

    --
    War isn't about who's right. It's about who's left.
    1. Re:Yes. by edmicman · · Score: 2, Funny

      Wow, I would have to agree. Your comment reminds me of going through 4 years of school, learning C, java, some assembly, etc. Sure, I could do the educational tasks with it, but I wanted something I could *show* people. "Look at how I can parse this string" or "watching me simulate a computer chip - look at the flashing lights!" just doesn't have an appeal. Enter the MS tools. I think VB would be a decent starting language just because you are able to *do something* that is neat fairly easily. C# would probably be just as easy to dive right into, too, and probably has more potential to do advanced things down the road. Or, in a different vein, start off with a scripting language like ASP or PHP. You can get your feet wet in actually writing *something*, and see results immediately, too. And a personal web server is simple to set up. Good luck!

    2. Re:Yes. by egomaniac · · Score: 3, Insightful

      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.

      This doesn't even make sense. Java is a general-purpose programming language -- you can write absolutely anything in it. Client software, server software, command-line tools, graphical tools, compilers, games, anything. What do widgets have to do with things?

      --
      ZFS: because love is never having to say fsck
    3. Re:Yes. by MythoBeast · · Score: 5, Insightful

      Sixty hours? A year? You make this amount of practice sound like a lot of time. I'm fifteen years into C++ and I hack kernel and could write my own compiler. Nonetheless, I'm still learning about some of the things it can do.

      I'm not a programmer because I love to program, I program to do a function, to make some part of my job easier.

      This is a truly key statement in his post. You have to ask yourself what you want to do with programming. If you want to write software that'll do interesting things for your own personal use, then VB is probably about right. It won't produce elegant code, but it will produce simple functionality fairly quickly, and you can build your own tools with it. In a society where computer illiteracy is becoming as problematic as written illiteracy, this kind of programming language definitely has a place.

      On the other hand, if you want to produce programs for OTHER people to use, you shouldn't flinch at spending a year learning how to make a programming language do what you want it to do. It's like mechanical or civil engineering. If you want to build a shed out back or a trebuchet then go ahead and pickup some parts at Home Depot and start nailing things together. If you want to design anything that ANYONE ELSE is going to use, like an office building or an automobile, then you had better figure out how to use something a little more sophisticated than 2x4's.

      A lot of people will come back with the argument that there should be something easier to learn than C or C++ for the beginners, but in my experience that's a flawed argument. Learning a language is an investment in time, and most people are unwilling to discard that investment. Instead, they've bolted on afterthoughts to the programming languages to make them more functional. For that reason, VB6 was always a horse designed by a committee. If you want to learn how to program like a professional then start with a professional language.

      The one exception is Assembly Language. Every time I try to teach people how to program I start by teaching them the Twelve Instruction Programming System (TwIPS), which is a simplified subset of assembly. With this they learn the bare bones of what any piece of software does, how algorithms function inside a computer, and what the instructions are really doing.

      And when they get around to learning C++ they find it considerably less tedious than if they had hit it directly.

      --
      Wake up - the future is arriving faster than you think.
    4. Re:Yes. by pionzypher · · Score: 2, Insightful

      There a link for TwIPS? googled with no luck. Sounds like something worth checking out.

      --
      I'll believe in corporations having personhood when Texas executes one... - advocate_one
  20. Re:Is Visual Basic a good beginner's language by The_Wilschon · · Score: 4, Funny

    I hate when people make statements sound like questions and vice versa?

    --
    SIGSEGV caught, terminating

    wait... not that kind of sig.
  21. In the next episode of Ask Slashdot... by Bogtha · · Score: 5, Insightful

    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#?"

    "Is kicking puppies still a great way of attracting women, or do you recommend kittens these days?"

    VB was never a great beginner's language. It's wrong all over. The only thing that got it a reputation for being a "great beginner's language" was that you could draw the GUI in later versions * before you actually learnt how to write code, so you could get visually pleasing results immediately, whereas the competition at the time meant you actually had to learn how to use a GUI API (and consequently, how to write code) first.

    You want a good beginners language, look at Python. It's been used successfully in teaching environments for a while now. It enforces good practices like indentation and prohibits easy sources of bugs, like if foo = bar: O'Reilly have an article about Python for teaching programming that you might be interested in.

    * 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.

    --
    Bogtha Bogtha Bogtha
    1. Re:In the next episode of Ask Slashdot... by finkployd · · Score: 2, Informative

      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.

      VisualBasic 1.0 was most certainly Windows, I belive you are thinking of QuickBasic.

      I actually started way back when on QuickBasic and jumped to assembler (this was all on a 286), but that was all hobby stuff. When I began programming professionally it has all been C and Java with a little bit of Perl, COBOL (don't ask), and assembler (s390).

      One of these days I really intend to get into Python, I just have not had a good excuse yet

      Finkployd

    2. Re:In the next episode of Ask Slashdot... by Bogtha · · Score: 2, Informative

      VisualBasic 1.0 was most certainly Windows, I belive you are thinking of QuickBasic.

      No, there was such a thing as Visual Basic for DOS. I wouldn't blame you for repressing any memory you have of it :). It's mentioned in this Microsoft Knowledge Base article about preparing Visual Basic applications for Y2K. I quote:

      For all versions of Visual Basic for Windows (including its predecessors such as Visual Basic for DOS and QuickBasic) prior to and including 3.0, two-digit years were always assumed to be in the 1900s.

      --
      Bogtha Bogtha Bogtha
    3. Re:In the next episode of Ask Slashdot... by bdowd · · Score: 2, Informative

      No, when Visual Basic 1.0 was first released at Comdex it was Visual. I believe you are confusing it with some of the other MS Basics which preceeded it. The whole idea was bought from Alan Cooper (sp?) who didn't work for MS at the time.

  22. Try COBOL by Chapter80 · · Score: 2, Insightful

    For that natural language approach, try COBOL. With skills in COBOL, I guarantee you won't be looking for a job in the IT industry very long.

    1. Re:Try COBOL by 77Punker · · Score: 2, Interesting

      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.

    2. Re:Try COBOL by jaydonnell · · Score: 3, Insightful

      I don't believe I was a good programmer until I learned NOT to think like a computer. High level languages let you accomplish a great deal with very clear and concise code, but it is hard to write clean code if you look at a problem and try to solve it by thinking "what does the computer need to do". Making functions that take an input and generate a specified output is easy. Making them faster isn't too hard either. Making code that is easy to understand, debug, change, and maintain is the hard part. I don't believe learning assembly and thinking like a computer helps much in this area. This doesn't mean that learning assembly isn't a good thing, it means that it's not a high priority in my mind.
      when I say programmer I mean someone who designs and writes applications.

    3. Re:Try COBOL by covertbadger · · Score: 2

      I don't believe I was a good programmer until I learned NOT to think like a computer. High level languages let you accomplish a great deal with very clear and concise code, but it is hard to write clean code if you look at a problem and try to solve it by thinking "what does the computer need to do".

      This is a key point. One of the principle benefits of functional languages like Haskell and Ocaml is that they allow you to express what you want to do, rather than how to do it. You don't write for loops to process a list, you just specify an operation and a list and it gets done for you; no need to worry about how the list is traversed, or how the returned list (containing the results) was created, allocated, and populated. Python and ruby are starting to bring these ideas a little more into the mainstream (python's list comprehensions are especially nice, lifted right out of Haskell). Granted there are occasions when you really need to micro-manage how something gets done, but in normal application development it's exceedingly rare.

  23. D'oh! by stuffduff · · Score: 4, Insightful
    Microsoft's language offerings are the result of some other people's way of deciding how things should work. While Microsoft is not alone in this practice, they are the topic of this article. I can't even count the times that I have seen the following: A programmer sits at an IDE, and on the screen is something like this:

    Private Sub Command1_Click()

    End Sub

    What they will do in the process is to go out and grab a bunch of someone else's code, paste it in there, and change the names of a few things. It really bothers me that the product of this process is even called software. At best shouldn't it be called 'macro-gramming?' Sorry to be such a stickler, but does that programmer have any idea what really goes on when that button is pushed? When the end users need a change that is not an exposed property or method of the pre-packaged object, what can they do? They probably have more creative skills when it comes to making excuses than they do at actually programming. Hell, we've all done it. It seemed like a good idea at the time to just slap together a few goodies, make it look pretty and ship it out the door. But what you end up doing is letting someone else make all the really important decisions for you. If you're lucky enough to be able to satisfy all the demands you encounter that way then more power to you.

    In order to learn the principles of computer programming, less is more in my book. The more computer science you know, the less dependent on any particular set of tools you become. When code is dear and time consuming to write debug test and maintain, you will be absolutely amazed on how little of it you can get by on. Take the same algorithm and implement it in a couple different formats, languages, compilers, etc. See how many instructions it actually becomes when it gets run. See where different efficiencies of speed or size become important. Try some Python to see what can really be done in an interpreted environment. Try a C compiler. Try looking for a couple of algorithms and see which one performs better and be able to describe why. Then, no matter what tools you end up using, you will have a much better idea of what is going on, how to make it both secure and efficient from the start.

    --
    "Can there be a Klein bottle that is an efficient and effective beer pitcher?"
  24. OK I'll Bite by GQUEUE · · Score: 2, Interesting

    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).

  25. bad place to ask that question by JeanBaptiste · · Score: 2, Interesting

    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!

  26. Free Pascal by ROBOKATZ · · Score: 3, Informative
    I'd recommend checking out Free Pascal and the Lazarus IDE. These are based on Borland Delphi, of which I believe you can also download a free version, but these are open source and available on many platforms. The Borland products run only on Windows or Linux with KDE (using QT), the Free Pascal libraries use GTK+.

    Object Pascal is a good language for beginners. It has strong typing and object-oriented features, but the typing isn't strict to the point of being obnoxious like in Java. It is lower level, so you will deal some with pointers and memory management but it is harder to make a mess with than C/C++. You can also visually design the UI of your application, but the language isn't a disaster like VB (and doesn't run in a VM like C# or Java, so it's quick).

  27. Yes ... and all the others too. by Spectre · · Score: 2, Insightful

    I use Visual BASIC (I choose to honor BASIC by capitalizing VB as I did), SQL, Fortran, C, Python, and Perl every week. I've written assembler for various CPUs, JCL, Smalltalk, various shell scripts, Pascal, Modula-2, MUMPS, and probably several others I'm forgetting in the past.

    Every language I've learned has been useful on the various projects I've worked on and provided a perspective for evaluating what methods to use for new development.

    Learn every language you can. You'll probably be surprised to find that you don't just get broad shallow experience, but each language actually gives you more in-depth knowledge of the others (and what they may do behind the scenes).

    VB(A) is the scripting language built into many Microsoft products. Whether or not you harbor loathing for Microsoft, knowing VB(A) will be very helpful for many tasks and may be necessary to get a paycheck from many places.

    --
    "Flame away, I wear asbestos underwear"
  28. Re:No! by LWATCDR · · Score: 2, Insightful

    "Because? What makes Java a better language for beginners?"
    A consistent object model with a real base object.
    No pointer/reference weirdness.
    Java has range checking on arrays.
    C++ is a good production language when you need the speed. Java is a "safer" language. STL really helps c++ a lot but it still isn't safe or friendly. However a person that does learn to program well in c++ will probably be a very good programmer.

    --
    See my blog http://ilovecookes.blogspot.com/ for light hearted technical information.
  29. Re:No! by AuMatar · · Score: 4, Insightful

    I'd go the other way- don't start with any language that has manual garbage collection. If you don't learn and understand pointers early, you never quite get them. And if you don't get them, you have no idea how your code actually works under the hood. Without that, you end up writing inefficient buggy code that those who do understand computers need to fix for you.

    The only language a beginner should be using is C, C++, or assembly.

    --
    I still have more fans than freaks. WTF is wrong with you people?
  30. It's decent. by FishWithAHammer · · Score: 5, Insightful

    VB4 was my first "real" programming language (I used QBASIC for years, but that doesn't really count). Since then I've used VB5, VB6, and VB.NET; I am also fluent with C/C++, Java, PHP, and a few other languages.

    The long and the short of it is this: VB ain't bad.

    People will say that Visual Basic is "unstructured," and they're clueless. People will say that Visual Basic is slow, and they're one step up from clueless (VB5 and VB6 compiled to native code and could, when used correctly, rival Win32 C++ applications for speed; VB.NET compiles to the same CLR the rest of the .NET crap does).

    My personal view of the Win32 API is that the inventor didn't like people. Window creation is needlessly masochistic. VB takes that hassle away. I've written applications where the entire backend of the program is in C++ and used the VB interface just to call C++ DLL functions. It's doable. It works pretty well.

    Basically--VB is a viable language if you want to get something done *now* and don't care all that much about whether it's pretty. Would I use it for game programming? No (once was enough, a 2D RPG for a school project in sophomore year of high school). Would I use it to write something quick and dirty that I need immediately? Sure, and I'll be done before a C++ coder even has a window up and running.

    VB also has some pretty nice features that YFTL lacks. You can run the program without compiling it, in interpreted mode--very useful for bug-ferreting. Its class system pre VB.NET was baroque at best, but its built-in garbage collection/memory allocation on-the-fly and the fact that all arrays could be dynamic without external references made it fun to mess with.

    ~Ed

    --
    "You can either have software quality or you can have pointer arithmetic, but you cannot have both at the same time."
  31. Re:Bad idea- compilers by Marxist+Hacker+42 · · Score: 2, Interesting

    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.

    --
    SJW: a person who perceives an injustice, and while correcting it, commits a greater injustice.
  32. Yes. Just to be different. by RingDev · · Score: 3, Insightful

    For starters, you just asked about a VB based syntax on /., you will recieve for the most part nothing but FUD and miss information and the pundits launch into tirades about how VB.Net is a toy compared to C# (which are both the same CLR language), Java, Ruby, PHP, Perl, and some whack job will likely even recommend Python.

    Next up. Right tool for the job. If you're interested in embedded applications, coding on linux, or high performance apps, going .Net is not going to be your tool of choice.

    And finally, to refute some pundits. VB.Net is a syntax option for coding in CLR, the same as C#, J#, PHP.Net and all the other screwy variations of *.Net. Vb.Net is every bit as Object Oriented as C# or Java. VB.Net by default has explicit and strict options off, turning those two options on makes its compiler just as strict as the C# compiler. VB.Net also has almost all of the functionality from C# (I have heard that there are some obscure pointer functions that are not in VB.Net's syntax, but I have never run into them, or the lack there of). Another one of those "What were they thinking?" items though, VB.Net has a "Hide Advanced Methods" option on by default that hides a lot of methods from the autocomplete lists, turning it off allows you to see all of the same functionality as in C#.

    The only substantial differences from VB.Net to C# is syntax Things like:
    VB.Net: Private VarName as String
    C#: Private String VarName

    VB.Net:
    If Var1 = Var2 Then
        'Code here
    End If

    C#:
    If Var1 == Var2
    { //Code here
    }

    -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
  33. Re:Bad idea- compilers by wizbit · · Score: 4, Funny

    and I can always tell the difference in code between a real programmer and Visual Studio Wizards

    So can I. The #Region " Windows Form Designer generated code " seems to be a bit of a giveaway, no?

  34. VB.NET is just C# with different keywords by Stephen+Williams · · Score: 5, Informative

    VB.NET is not the same language as the VB of yesteryear. It's semantically the same as C#, just with a somewhat VB-like syntax to ease VB programmers into working with .NET.

    If you're learning to code using the .NET framework from scratch, I can see no reason to choose VB.NET over C#, unless you happen to like VB-like keywords more than Java-like keywords.

    -Stephen

  35. And now for something completely different... by jcwynholds · · Score: 5, Interesting

    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.

  36. C != Good Beginner's Language by sedyn · · Score: 4, Insightful

    You had me until you said "It should be a language that doesn't have a built in string class. One that makes you create arrays of characters. " Strings are just an abstraction, string foo = "bar" is pretty simple to use, and when the student starts doing more complex things (and learns all about arrays), they will realize that foo[i] is just a character in a vector. It is a much more modular way to teach.

    I agree that bells and whistles increase a languages' barrier to entry, but if they can be ignored (like a lot of the Java library) then it is a moot point.

    C is not, nor ever will be a newbie language. By the train of thought that it is best "to [know] what goes on under the covers", then the logical conclusion of that is to teach a simple assembly language, quickly followed by a compilers and systems course.

    In math, we typically teach younger students how to use a function or expression before we teach them how to prove it (consider it to be the process of giving them the specifications).

    Disclaimer: I have helped and witnessed many students learn C.

    --
    Am I open minded towards open source, or closed minded towards closed source?
  37. Re:No! by brpr · · Score: 2, Insightful

    Oh come off it. Every language (almost) has pass by reference and arrays. The only extra thing C has is pointer arithmetic, and you don't need to know anything about pointer arithmetic in order to write non-buggy and efficient code. In fact, code using pointer arithmetic tends to be slower these days, because it's hard for compilers to optimise.

    --
    Freedom is not increased by mere diminuation of government. Anarchy is freedom for the strong and slavery for the weak.
  38. Re:Visual Studio and Visual Basic by object88 · · Score: 5, Interesting

    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.

  39. Worked for me. by Stoutlimb · · Score: 2, Funny

    "Honey, you'll still be a virgin if you do it THIS way..."

    Worked for me.

  40. Re:why? by macshit · · Score: 2, Interesting
    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)

    --
    We live, as we dream -- alone....
  41. Re:Bad idea- compilers by IAmTheDave · · Score: 2, Insightful
    So can I. The #Region " Windows Form Designer generated code " seems to be a bit of a giveaway, no?

    No... right clicking and selecting "New Form" is a nicety, and far from making someone a non-programmer. Eclipse and other IDEs have wizards as well - a developer using and IDE does not a non-developer make.

    --
    Excuse my speling.
    Making The Bar Project
  42. Where to begin? by Theatetus · · Score: 5, Insightful

    This question is wrong in so many ways...

    • VB is badly OO and confuses the language and the library too much.
    • VB is badly OO and OO is a bad paradigm to first learn to program in (and those two wrongs don't make a right).
    • VB ties you down to using Windows, and Windows is a bad environment to learn to program in.
    • VB does memory management the wrong way from a learning perspective. Rather than specifying allocators and destructors when neccessary you simply let objects fall out of scope.
    • VB does not have first-class functions and cannot fake them: function manipulation and functional paradigms (whether direct or through hacks to fake it like function pointers or true reflection) is crucial to learning to program well and should be started as early as possible.
    • VB teaches bad, verbose naming and programming habits.

    Good beginners languages are:

    • Logo (still the best)
    • Scheme
    • Forth
    • Ruby
    • Python
    These all allow you to do basic, functionally-oriented programming and then "graduate", if need be, to large-scale OO stuff.

    I would say Common Lisp is the best, but if you start programming using Lisp you'll never truly appreciate it because you assume all languages are that well-designed.

    --
    All's true that is mistrusted
  43. choose a good teacher first by sampas · · Score: 4, Interesting

    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

    Java: Barker

    C#: Barker

    Whatever your choice, there are free IDE's for all this now from Sun and Microsoft, 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.

  44. Why not? by blueforce · · Score: 2, Insightful

    Is VB a good beginner's language?

    Sure, why not? But, it depends on what you want to accomplish.

    If you want to write a windows app, a script, do some office automation, connect to a database and shuffle data around, create a Web site, or do other practical business-oriented tasks, then absolutely.

    If you want to write an operating system, then you'll want to look elsewhere.

    First, I would ask "What do you expect to accomplish and what do you ultimately want to achieve?"

    What I've learned over the years - especially from reading /. - is that people are fanatical about their language of choice. Many times to a fault.

    When I was in the military, the old timers were so proud of the way things were when they went through basic training/airborne/ranger/sniper school and how difficult it was "back then". They used to wax poetic and tell tribal stories of when they were at NTC, the drill sergeant that used to dump bunks, or the 100-mile road marches. "Things are so easy nowadays" they'd say.

    As a rule, people are very proud of their accomplishments (rightly so, I would think). Generally, people are both proud and nostalgic about their conquests, overcoming adversity, and place high value on extraordinary achievments.

    You'll read many posts here admonishing VB while extolling languages like C or C++ for what they "teach" that VB doesn't. The real trick is interpreting the value of those statements. Are they saying it's better because it's harder? Or are they saying it's better for pragmatic reasons?

    The world changes. Technology changes. Most things evolve and grow and change. Programming languages change, and it's a good thing too I should think. Could you imagine what the Web or economy would look like today if all we had was BCPL or x86 assembler? The fact that a language hides or automates certain implementaion details such as GUI layout should not necessarily be viewed as a detriment or deterrent. On the contrary, any language that can save time while still accomplishing the task or solving the problem is quite effective. Visual Basic, is relatively easy to learn, can solve many problems and many different types of problems, and dramatically reduces the time it takes to implement a solution. Due to that fact it has, directly or indirectly, facilitated a lot of economic growth by enabling companies to effectively solve problems, create software solutions, implement change, and reduce time-to-market. The fact that it's not a "difficult" language is what makes it so attractive to businesses. Difficult != Good (Difficult Good).

    Personally, I don't particularly *like* to code Visual Basic. While I've solved many problems with it, I wouldn't choose it over C# or Java. That's just me. I'm used to curly brace languages, so that's my general preference. Having said that, I would evaluate the problem I'm trying to solve before I choose. I might very well choose VB over C++ if the solution warrants it. However, I don't think my personal preferences or opinions mean much to the next person choosing a language.

    My advice is, choose Visual Basic if you really want to. Ignore the posts that tell you it's a "toy" language and remember the millions of VB programmers and tens of thousands of companies that have chosen it. I've seen some rather amazing things done in VB by my friends and colleagues - I would say it's far from being a toy. VB didn't become so popular because it's hard to use and doesn't do much. VB.NET is a fully object-oriented language. That puts it in the same terms as C#, C++, Java, Smalltalk, Ruby, Python, et al. It's not cross-platform, so you can't develop for Linux or OS X, but there may be enough challenges just learning an object-oriented language without learning the nuances of each platform at the same time.

    --
    If you do what you always did, you get what you always got.
  45. VB never was a good language. by Peaker · · Score: 2, Interesting

    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.

  46. No. by Werrismys · · Score: 2, Funny

    It's proprietary, runs on one platform only, and it's basic (on steroids).

    --
    'Once scientists, even the dim-witted social scientists, get muzzled, the Western Civilization is finished.' - oldhack
  47. A good tool if you know it, but don't start there by CFD339 · · Score: 2, Interesting

    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.

    --
    The problem with quotes on the internet, is that nobody bothers to check their veracity. -- Abraham Lincoln
  48. No. Absolutely not. Learn Python or PHP. by brosenth · · Score: 2, Informative

    Visual Basic was my first programming language, and it's a powerful language and Microsoft is a powerful platform.

    The problem is that to do anything in the Microsoft family requires continual financial investment. Visual Studio itself (standard edition) is $299. As you learn to program, you'll probably want to program what's called "Client / Server" applications. You'll probably want to buy SQL Server ($6000 for the Standard Edition), Windows Server ($1000-ish). As you develop, you'll always find that you need other products that you don't have, and you'll always be trying to decide is it worth buying the product to learn how to do things.

    Alternatively, you can learn how to program in the open-source environment. You'll find wonderful, free development tools. You'll find a community of people eager to help you learn (rather than paid support options). And, once you learn how to program this way, you'll be able to deploy real applications, without paying high licensing fees.

    I remember, when I started my first company, we were a Microsoft shop, and I wanted to give away some of the technology I had written to non-profits, but I couldn't because they could not afford the licensing fees.

    If you want to program a web-based application, I would install linux and apache-ssl and learn PHP. If you want to program an application to run on a client-computer, I would learn python. Both are very elegant languages that are easy to learn and have huge developer communities that are very helpful. These environments are very good investments of your time, easy to learn, and will prepare you to not have to change courses later on.

  49. Do you really want to learn how to program? by marcosdumay · · Score: 3, Insightful

    Or you just want to get some work done? If you really want to learn something, you should do it with PASCAL. Some people told you do study C, but after trying to teach it to a few people, I am fully convinced that C is not a beginer's language. PASCAL is different because you won't need to know about pointers to do quotidiane stuff, but still have manual memory allocation to study.

    To learn how to program, use PASCAL on a CLI. Don't worry about the time investment, you'll learn VB much faster after you know what you are doing. Just to finish, I'd like to put here a very true quote from Dijkstra:

    "It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration."
  50. Re:Bad idea- compilers by TheRaven64 · · Score: 3, Interesting
    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.

    --
    I am TheRaven on Soylent News
  51. Scheme Maybe? by arthur5005 · · Score: 2, Interesting

    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.

  52. Re:Maybe, maybe not. by TheRaven64 · · Score: 4, Insightful
    or that your compiler wouldn't just optimize the code in the first example anyway

    It probably wouldn't in a language like C, since it is very difficult to diagnose side-effects. If, however, you pick a (functional, or functional-style) language that supports a foreach statement then you could say something like:

    foreach({x,y} in image) ->
    do_something(x,y).

    You compiler / runtime would then pick an optimal number of concurrent threads to do this with for your target environment.

    A lot of the time, going to a lower level is a bad idea because:

    1. You throw away semantic information that the compiler could have used for optimisation, and
    2. Your high-level language compiler is better at optimisation than you.
    --
    I am TheRaven on Soylent News
  53. Nope, start with Pascal by xjimhb · · Score: 4, Insightful

    For a language to teach beginning programming, you can't beat Pascal. Yeah, I know it is not fashionable at the moment, but it is hard to beat as an introductory language. And there exist extended versions of Pascal (like Delphi) that do a great job on OO programmimg (beginners should worry about OO AFTER they learn the fundamentals)

  54. Re:Good example of why it's important by PitaBred · · Score: 2, Insightful

    That code he wrote was clean, concise, easy to understand and debug and change. It was just wrong. The coder obviously didn't realize that implicitly creating a new object like that automatically allocates more memory. Until you've had to allocate memory manually, this kind of thing is never really driven home. It works great for small apps, but not industrial strength ones. C/C++ and the concepts they teach you are still necessary, even in the 4G languages.

  55. Java or C# by The+Waxed+Yak · · Score: 2, Informative

    VB is an excellent choice for mediocre programmers who already have a basic grounding in CS. Unfortunately, VB tends to mask the basic CS skills a developer needs to acquire to grow beyond it. I've worked with several people who had great potential, but were forever stuck in a VB frame of mind. Java and C# are nearly as easy to learn as VB, granted they are lacking a bit of the syntactic sugar. I would recommend Java over C#, simply because the class library adheres much more closely to the standard "Gang of Four" design patterns, which equates to exposure to good design principles for a new developer. Don't get me wrong, .Net has a good class library as well, but I find that it isn't as consistent in its interface definitions as Java is.

    Now, the argument that will probably pop up to correct me is that VB.Net uses the .Net class library, and as such is no different from C#. Having spent the last few months cleaning up after VB.Net developers, I would argue that it would be, if they used it as such. Frankly, when a new or unskilled programmer picks up VB.Net, they immediately use Trim$(myString) versus myString.trim(). Granted, it does the same job in the end, but it is training them to avoid OO methodologies.

    My next big rant would be that VB.Net will spoil a new developer on expecting everything to read immediately like plain English. Don't get me wrong, now, that's one of the nice things about VB. If Then... Gotta love that, except... If they get spoiled by this, then they are forever stagnated in VB. I have one developer I work with, every once in a while, who simply refuses to transition to any other platform just because he is locked into VB's syntax. A syntax which is unlike 90% or better of any other languages out there.

    Java, C#, even PHP and Perl, share more in common in syntactic terms than VB does. Start a new developer out on a platform that will foster a better understanding of other platforms, instead of locking them in like VB tends to.

    <Disclaimer>I made my living for years doing VB, but not by choice. I'm a dyed-in-the-wool C programmer, who prefers Java these days.</Disclaimer>

  56. Java snobs? by PhYrE2k2 · · Score: 4, Funny
    for those of you C++/Java snobs that think VB/C# are for morons


    Please don't associate those Java users with us C++ (and C for the procedural of us) users.
    *shudders* I feel so dirty.
    --

    when you see the word 'Linux', drink!
    1. Re:Java snobs? by moro_666 · · Score: 3, Interesting

      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.

      --

      I'd tell you the chances of this story being a dupe, but you wouldn't like it.
  57. No. Different isn't better. by tyler_larson · · Score: 2, Insightful
    The only substantial differences from VB.Net to C# is syntax

    I guess the only difference between any two languages is syntax--that's what a language is. The rest is just API.

    However, if you're going to program for .NET and you're not an old VB programmer, don't learn VB.NET, learn C# instead. VB is a syntactically ambiguous language, which is why C# to VB.NET translators are easy to come by, but VB.NET to C# translators are a bit more problematic. For example X=A(5) could refer to a function call, an array index, or a number of other possibilities, depending on what "A" is, which you may not know based on just that one .vb file.

    Add to that the classic "bad habits" problems associated with BASIC, and you've got yourself a crappy starting point. For example, BASIC uses a single equal sign for both assignment and testing equality. BASIC uses 1-based arrays, and horror or horrors, allows you to change that behavior. I could go on, but other people will probably cover this subject adequately.

    If you're doing .NET programming, which is a perfectly valid place to start, use anything other than VB.NET. E.g., C#, J#, Python, or one of about 20 other .NET languages. Don't bother with VB 6, it's going away.

    --
    "With sufficient thrust, pigs fly just fine. However, this is not necessarily a good idea...."
    RFC 1925
  58. 1999 called, and they would like there VB back... by geekoid · · Score: 2, Informative

    * VB is badly OO and confuses the language and the library too much.

    Not anymore

            * VB is badly OO and OO is a bad paradigm to first learn to program in (and those two wrongs don't make a right).

    It is nolonger bad OO and OO is a good paradigm to learn to program with.

            * VB ties you down to using Windows, and Windows is a bad environment to learn to program in.
    Acutally, it ties you to .net, and other .net iumplementation i.e. Mono

            * VB does memory management the wrong way from a learning perspective. Rather than specifying allocators and destructors when neccessary you simply let objects fall out of scope.

    Which is how things are done now. However, you can implement garbage collection for those time when it is critical to do it now. However that is an indicator of either poor design, or that you should be using code that is clser to the machine.

            * VB does not have first-class functions and cannot fake them: function manipulation and functional paradigms (whether direct or through hacks to fake it like function pointers or true reflection) is crucial to learning to program well and should be started as early as possible.

    You can do this in VB

            * VB teaches bad, verbose naming and programming habits.

    That has nothing to do with language, however accurate verbose naming is far better then short obscure names.
    Verbose programming habits in application development is a good thing. Not the best, but certianly better then implementing somme little know technique that is hard to deciphire jsut ecasue it saves a 1/100 of a second.

    Funtion oriented programming languages are a poor place to start. The habitrs generated in those create very bad habits in OO programming.

    All but two of your recommendations are total useless for real worled practicality.

    --
    The Kruger Dunning explains most post on /. http://en.wikipedia.org/wiki/Dunning%E2%80%93Kruger_effect
  59. Delphi is alive and well by Eli+Gottlieb · · Score: 2, Informative

    In the open-source community! The Free Pascal Compiler is a working command line compiler for the Delphi language, Object Pascal, and a graphical IDE called Lazarus is available to step in for Delphi itself.

    Beholdeth the Open Source Power, that it doth keep languages from the grave!

  60. No longer accurate... by ZxCv · · Score: 2, Informative

    With .NET 2.0, this is no longer entirely accurate. Even with 1.1, you could have used Array.Copy instead of the loop like someone said. Beyond that, with 2.0, you have access to Array.Resize:


    VB.Net:
    Dim x(10) As Integer
    'populate x
    Redim x(20) As Integer


    C#:
    int[] x = new int[10];
    // populate x
    Array.Resize(ref x, 20);



    Personally, I'd have to say the C# variant is the simpler one now.

    --

    Perl - $Just @when->$you ${thought} s/yn/tax/ &couldn\'t %get $worse;
  61. Visual BASIC as a beginner language by Orion+Blastar · · Score: 3, Informative

    Keep in mind that VBA is used with MS-Office applications, and VBScript is used on IE designed web pages which are related to Visual BASIC. Learning one, can help you learn the others.

    Visual BASIC.NET was a rewrite of Classic Visual BASIC, which added in C++ type error trapping, objects, and other things that many have criticised Classic Visual BASIC for not having. Many VB developers want Microsoft to continue to support Visual BASIC 6.0 or Classic Visual BASIC, but Microsoft wants to move on.

    BASIC stands for Beginners All Symbolic Instruction Code, the first word is for beginners. It was not designed to be anything but a learning tool, like Pascal, Pilot, and many other languages were designed to be. Microsoft used it for early Microcomputers, and then made a GW-BASIC version of it for MS-DOS and then later QBASIC or Quick BASIC for MS-DOS 5.0 and above. Many considered GW-BASIC and QBASIC to be free versions of BASIC and developed for them. Microsoft released Visual BASIC 1.0 and many BASIC developers adapted to it. I recall learning MS-Access 1.0 and using a form of Visual BASIC for applications for it, which they called Access BASIC or something.

    Borland picked up the Pascal craze, in colleges they taught Pascal for data structures courses. There was UCSD Pascal, but Borland came out with Turbo Pascal and it worked faster than most Pascal compilers. Object Pascal became Delphi by Borland, and it is still popular and a competitor to Visual BASIC. Free Pascal tries to use Object Pascal to be more like Delphi and the Lazarus project uses an IDE with Free Pascal to work like Delphi or Visual BASIC.

    I think there is an XBASIC out there that works like Classic Visual BASIC. Someone made a GNOME BASIC. The Novell Mono project has a Visual BASIC.NET language which is used on Windows, Linux, Mac OSX, *BSD Unix, etc.

    The whole argument against Visual BASIC is now moot. Classic Visual BASIC lacked proper OOP, but Visual BASIC.NET fixes that, but at the cost of learning new programming methods and syntax for Classic Visual BASIC developers. While designed for beginners, Visual BASIC has extended itself. Visual BASIC.NET uses a compiler very much designed like C# or C++ to compile into IL (Interprited Language) code (which is like assembly language) to run on the .NET Framework, and it is turned into native code in the final compiltion. Visual BASIC.NET no longer has the bottleneck that Classic Visual BASIC had, and as a result it runs faster.

    You will be shocked to find that most businesses use Visual BASIC.NET for the same reasons that they used to use COBOL, it is easy to learn, uses English words, and almost anyone can learn it.

    Still don't discount C#, C++, Java, Python, Perl, and many others, they can interface with Visual BASIC via the .NET framework. Visual BASIC can be used as a stepping stone to a different language, or it can be used for main development.

    --
    Remember, Slashdot does not have a -1 disagree moderation, and no, troll, flamebait, and overrated are not substitutes.
  62. Interview Question by Cat+99 · · Score: 2, Insightful

    This should give you a decent indicator of my opinion, when I am interviewing programmers for a job I always ask "What is your favourite language?". You get some interesting answers when asking them why, but the main reason I ask that is because anyone who says VB is automatically not in the running for the job. VB does not give you good foundations for programming, therefore if I need a programmer to be versatile then there is no way I want someone that thinks that VB is the be all and end all. Rapid Application Development is for proto-typing only (or for your own hobby simulations if you are so inclined).

  63. Vb never was a good beginner's language by Xtravar · · Score: 2, Insightful

    VB never was a good beginner's language. I'm sure there are 1,000 posts by now outlining the bad habits that VB creates, so I will give you an anecdote.

    When I started VB, I didn't know what types were, I didn't know what strings were, I didn't know what arrays were.

    I didn't know that .Text was the default property on textboxes.

    Now, with that in mind, imagine a fairly complicated program written using textboxes as strings, and in order to hide the textboxes, I would make the form really big and then make it smaller to hide them.

    Once I figured out the existence of strings, I would parse strings to death instead of use arrays.

    But then I became fairly proficient in VB, and I started C++. I tried mapping the VB paradigm of thinking onto C++, and that failed miserably.

    So, it took me a year or two to unlearn VB habits, and then it took me a year or two to learn good programming habbits. This is inefficient. Learn things correctly the first time.

    You see, in other languages, if you do something the 'wrong way', it is much harder to hack your way into making things work. In VB, if you do something the wrong way, you can just add more and more horrible monsterous ass-backwards code and eventually get things working.

    The problem with VB is that it wants to be like C++, but at the same time it wants stupid stuff like variants and default properties, 'on error goto', etc. This doesn't help anyone.

    And as for VB.net, it is just C# with horrible, horrible, awful keywords and semantics. Just learn C#.

    --
    Buckle your ROFL belt, we're in for some LOLs.
  64. NO! by nektra · · Score: 2, Informative

    No, VB is not a good beginner's language for programmers thinking on current and future understanding of languages.
    And worst in 2006...

    Some reasons:

    - Lack of natively data structures and powerful objects.
    - To build new data structures you need to focus in the language and in the problem, not like C when you can focus on the raw problem/algorithm.
    - No real OO, just COM Native.
    - No multithreading.
    - Bureaucratic syntax to do very simple things (i.e: adding a new element to a sized dimmed array, writing to files, etc)
    - Weird syntax (like putting and underline to specify object's events)

    But, it has some interesting properties:
    - Rapid testing of COM/ActiveX Objects.
    - Rapid development of COM/ActiveX Objects (for example: Office Addins)

    But for learning... think in another language.

  65. Is it a good beginner's language? by syukton · · Score: 3, Insightful

    Is it a good beginner's language? Hell no it isn't. It gives the programmer unrealistic expectations of what can be achieved with the computer. Too many of the inner workings of the computer are withheld from the programmer for them to really understand how things WORK.

    Personally, I think it's a toy language because it separates the programmer from the bare metal of the machine, with too many layers of abstraction, confining the programmer to a "digital playpen" much as you would confine an infant. I have similar feelings about C#.

    I started with C64 BASIC, moved on to C, then C++, then I learned MSVC and VB at about the same time, and after that I picked up ASM.

    I really think I learned a lot by following that path, and I'm glad I learned how much work went into writing a GUI long before I dragged and dropped my first VB app.

    --
    Reinvent the wheel only at either a lower cost, greater effectiveness, or your own personal enrichment and satisfaction.
  66. Re:TwIPS by MythoBeast · · Score: 2, Informative

    Is TwIPS just something you made up?

    Well, yes and no. I originally ran into TwIPS when taking programming classes at St. Louis Community College. Like, you, I've been completely unable to find any reference to it since then, so I wrote my own. I'd be happy to hand my code base over to anyone who feels like working with it, or drop it onto something like SourceForge.

    The twelve instructions are Go, End, Move (copy, really), Jump, Conditional Jump, Subroutine Jump, Return, Add, Subtract, Multiply, Divide, and Print. Ok, that's really eleven, but I couldn't remember what the twelfth one was when I recreated it. It uses a 1000 character text array that acts as your entire memory space. You have to allocate buffers, create your initial variables and strings, and store all your code in that space. It will start execution at location 000, the Go was just something that I remember them including, so I did, too.

    I don't think I have any of the exercises I had my students do written down, though, so you'd have to make up your own. It's not too hard.

    --
    Wake up - the future is arriving faster than you think.
  67. Begginers shouldnt learn a language by ferespo · · Score: 2, Insightful

    Begginers should learn how to think, instead.

    In University, I was taught general concepts: structures, recursion, iteration, abstractions, conditions, Logic and programming paradigms, never tied to a specific language. In fact, we used a pseudo-language to express the solution to a problem.

    Using languages belonged to lab practices.

    Pascal, X86 assembler, basic, fortran, C, scheme, SQL, you name it.

    Learn principles, you'll be able to tell which language is right for the job.

    And you'll always be able to catch up with whatever shows up in the ever changing madness of IT.

  68. In-depth answer by Trogre · · Score: 2, Funny

    no

    --
    "Nine times out of ten, starting a fire is not the best way to solve the problem." - my wife
  69. Your SECOND language is the important one! by alispguru · · Score: 3, Interesting
    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.

    --

    To a Lisp hacker, XML is S-expressions in drag.
  70. OOP !=Good/Big/Serious by Tablizer · · Score: 2, Interesting

    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.

  71. Re:On the other hand.... by plastik55 · · Score: 2, Insightful

    if your code is "largely nested" you're doing it wrong.

    --

    I have a positive modifier on Troll. When I mod someone Troll their karma should go UP!

  72. Personal Experience Speaking... by TheNetAvenger · · Score: 3, Insightful

    Personal Experience Speaking...

    VB is pretty good at teaching programming or getting people started in programming. Being a modern 'basic' it can allow people to get the initial concepts of variables, and put them to use in a syntax that reads like common english language, yet not leave them making a turtle follow lines around a screen.

    The simplicity is also good to find the 'clicks' or points where people get it. When not teaching this stuff you forget these clicks, even explaining concepts as variables is something that is hard for some people to catch, even if they understand algebra.

    VB also can do some fairly advanced things now, especially with the current .NET incarnation, in upper level application development.

    A person could start with no programming background, do the hello world, and stick with VB and make a career from it producing ok software.

    Pascal is also another easy to understand language (designed to be a learning language even), and it with Borland's support can be almost as powerful as C/C++. So it is another good starter language that a career can be made from - especially Europe, Delphi does quite well there in comparison to the US.

    I have taken a couple of roads with people, using either VB or Pascal as the 'get it' starting language.

    Then I progress them to some advanced levels in each language, and along the way contrast in another language, C is the poster child here for the contrast. It can show complexity and also levels of creativity not normally used in the other languages. Useful comparisons to stuff they are currently learning as well as 'wows' like a line of C code that is very complex and recursive, but performs as much as an advanced program.

    This lets them 'click' along the way, and will hopefully keep perspective and the certain 'creative' element that syntax complexity of C draws out of people.

    The 'creative' complexity has to be nurtured, even if you are keeping people in Pascal or VB for their career (or they are not going past that). It was the creative of 'how to make it work' concepts that are so dominate in C that define 'good programmers', because in the old days, we had to make it work.

    Yes it is nice to drag a button on the screen and have the IDE do the work for you, but without some of the 'creative' what ifs, and 'how can we' questions, programmers won't be more than glorified form designers, and that is sad for them to invest time in learning something and not fully getting it from both angles. (The logical syntax and function and the creative inspiration of thinking outside the box.)

    Programming is one area of expertise that definately benefits from bridge-brain individuals. Creative Logic at its finest...

    And sadly if the person you are teaching don't fully click in either direction (logic or creative) then you lead them down the road they are good at, and let them pair with a person or team that fills in the other side...

  73. Oh no. Oh Hell no. by darthlurker · · Score: 2, Informative

    I don't have a link on hand. But I recall reading Microsoft reps touting VB.NET maintining the VB6 ability to "code and debug until the code works". To me that should be sufficient reason to not use VB.NET. If you want another reason, please excuse my following rant.

    The language is not isomorphic. For example:

    '2 ways to declare an array of types.
    Dim s1 As String() = {"1", "2", "3"}
    Dim s2() As String = {"1", "2", "3"}

    '2 Different ways to instanciate a class
    Dim o1 As Object = New Object
    Dim o2 As New Object

    'Support for
    Dim n As Integer = 0
    n += 1
    'But not bits (booleans)
    Dim f As Boolean = False
    f And= True

    '3 (unsafe) ways to convert to a char (and using reserved words for variable names?)
    Dim [char] As Char
    [char] = "C"c
    [char] = CChar("C")
    [char] = CType("C", Char)

    Granted in the last case you see use of the "TCHAR" and other such macros in C/C++ code. But these are macros. And not part of the language.

    MS also ported in many of the old global VB6 methods such as Trim(). Even though this is a redundant method of the String class. Format() is another example. But in that case the behavior differs from the the method of the same name in the String class.

    From experience I've found it easy to transistion from one language to another. Except when that language had "quirks" like those in VB.NET.

    VB.NET was a very successful way to move VB6 coders to VB.NET. But is it a Good Beginner's Language?

    No. Hell no.

  74. benchmarks prove snobs don't know threads by GunFodder · · Score: 2, Interesting

    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.

  75. Use a high level language by jbolden · · Score: 2, Interesting

    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

  76. Why does BASIC cop so much flak? by SurturZ · · Score: 2, Interesting

    *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? :-)

  77. Re:Bad idea- compilers by Mattintosh · · Score: 4, Insightful

    I've never used any of those languages, nor do I forsee the need to.

    I learned Logo in middle school.
    I learned QBASIC (ugh), Pascal (ugh), COBOL (ugh++), and RPG (!) in high school.
    I learned C, C++, VB, and Java in college.

    Those landed me a job doing CAD drawings for a small company.

    Eventually, I learned PHP on my own.

    That gave me enough "experience" to get a PHP job.

    So what have I learned?
    - All the languages I was told were going to be useful "in real life" have turned out to be mostly worthless (perhaps I haven't reached the level of the C++ stuff yet... I'm reserving judgement on that one).
    - Concepts are best learned from pseudocode, not from any particular language.
    - Comfortable syntax is learned from languages that are built around a particular concept.
    - Databases are the real reason OOP is a necessity. Data objects are your friends.
    - Most programmers are not architects/designers. They're too impatient. They jump right in and code a plate of spaghetti before thinking about how long they'll have to support that code. Some of them do fairly well at making things efficient, though, so you can't fault them all.

    I don't know ASM, so I tend to disagree with the hardcore "I coded in ASM uphill both ways naked in the snow blah blah blah bring me my cane, sonny" crowd. It's time to pull the plug, gramps.

    I also disagree with the academics that sip lattes, listen to jazz, wear berets, and say that everyone should learn and use [insert obscure language here] and piss and moan that it's not happening. Man up, nancy. The real world uses real tools for real work. Your toy languages are not going to be used. So take your Smalltalk, LISP, and Prolog back to your local Starbucks where you can "ooh" and "aah" about how "advanced" they are.

    If you're going to teach concepts, do so. Don't use a language as a crutch. Teach in pseudocode. Give examples of "how-to" in multiple languages. If you're going to teach a language, don't teach concepts. Teach what that tool is supposed to be used for. PHP is for dynamic web pages. C++ is for, well, damn near anything, but not dynamic web pages. Java is kinda like C++, but slower (unless you fuss with compiling natively), and can be multi-platform with minor changes. Perl is great for a quick, unreadable script. VB is nice if you want to spend lots of money for the ability to build piddly-shit apps that only you will use.

    And remember that not everyone learns things the same way. Someone who "just gets it" with C, C++, Java, PHP, and similar-looking languages might have an aneurysm just looking at code in Objective C. (I did.) Sometimes a familiar syntax matters. And yet, that same person (now bleeding out on the floor) might have no trouble at all deciphering Visual Basic or Pascal even though they're different. (Again, me.) That should tell the designers of the aneurysm language that the syntax is annoying, shitty, and induces aneurysms. (Go Smalltalk and Obj-C!)

  78. With apologies to Douglas Hofstadter.. by Ztream · · Score: 2, Funny

    Question: Is Visual Basic still a good beginners language?
    Answer: Mu.

  79. Re:Python by VoltageX · · Score: 2, Insightful

    I agree, python is excellent for beginners. The prompt allows people oto easily explore new functions and concepts while the indenting syntax forces neat code.

    --
    "Anonymous could not immediately be reached for further comment." - International Business Times
  80. Never improve on perfection :) by CarpetShark · · Score: 3, Funny

    You introduced a bug ;)

    That should return EXIT_FAILURE or something, not 1.

  81. Hmm ... by LupusCanis · · Score: 2, Interesting

    ... 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.

  82. I'd suggest Prolog as a Beginner's Language... by Numen · · Score: 2

    ...on the basis that it's the fastest route to getting a computer to do something either mildly impressive for the first time or mildly useful for the first time. Also once the Beginner has a reasonable grasp of Prolog they'll have a lot of exposure to principles that would be considered advanced to the Beginner starting with Java/C# or Python/Ruby etc.

  83. Concepts come first by faid · · Score: 3, Insightful

    I'm a programming teacher. I've found that the first language that students learn steers their mind in learning coming languages. If they learn perl first and then java, they tend to try to write java programs as if it was perl. If they learn java and then perl, they try to write perl as if was java.

    This is important, because a language that forces you to think in a sane way from the beginning will make you write better code in the future, regardless of which language you then use.

    My first recommendation for choosing a beginner language is thus: whatever you do, don't choose a language with sloppy type checking and/or sloppy syntax. Force the students to learn that explicit variable declarations, explicit type casts and explicit data structures are good things.

    A large perl application structured in an object-oriented fashion, containing explicit variable declarations and care taken to type casts will be a lot easier to maintain than the same application without these features, eventhough the conceptual functionality can be the same. I would thus prefer a student who learned java as a first language to write that perl application in front of a student who learned perl as a first language.

    The conclusion of this is that languages like perl, python, C and visual basic are poor choices for first languages. Languages like java, pascal and delphi are good choices for first languages (eventhough the latter two are a bit dated in regards to object-orientation).

  84. Re:Start with VBA by Jaruzel · · Score: 2, Interesting

    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.

    --
    Together, We Can Make Slashdot Better. I Do NOT Mod ACs. - Check Me Out
  85. Both to expensive by CuteAlien · · Score: 2, Insightful

    Call me a cheapskate if you like, but why should someone who just starts programming be forced to use a language which he has to buy before he can do anything? There are just too many free alternative available which beginners can install at home (without getting in legal troubles for using copied stuff). Actually i'd recommend using python or ruby for learning programming and a supplementary course which does teach the workings of a computer at a lower level (processor, registers, interrupts, memory access, etc.).

  86. This is crap. by sultanoslack · · Score: 5, Informative

    Sorry, but this is a very wrong view of what computer science or programming really are. There are three things being mixed up here which are largely separate bodies of knowledge and any decent computer science program separates them out as such.

    • Algorithms - This is the core of Computer Science; learning to think like a programmer and to break problems down into logical chunks is tantamount to becoming a computer scientist. With this at the core, a language should then be chosen that most facilitates this. When I started college 10 years ago we used Pascal in our lab for our algorithms courses (which notably were just about implementing the theory we covered in the course), and that at the time was a very sane choice. Java's a pretty sane choice these days. Lots of things are really, but something like C forces people trying to learn how to think in algorithms to be side tracked by all of the tedious low level junk. (For reference, I'm a low-level C systems programmer at a large software company, so this isn't some "C sucks" wankery.)

    • Computer Organization - This is usually cross listed in electrical or computer engineering, and for good reason. This is where you figure out how hardware works. C and assembler (RISC works fine here) are appropriate in such a course. As this course naturally follows introductory algorithms courses, you can here put the theoretical constructs learned there in context.

    • Operating Systems - Memory management doesn't belong in either of the above and certainly saying that you learn "memory management" with C is pretty silly. You learn how to malloc and free stuff. Whoopee. "Memory management", in any sort of interesting way, is better treated in an Operating Systems course where you can track what exactly is happening down from the programming language, into the OS and finally at the hardware side. It can be put in context of what actually happens when you call malloc and what that means. Fundamentally, you don't understand anything more about memory management from a basic C course than if somebody tells you in a Java course "When you use 'new' some memory will be allocated, and when you're done with that object there's a thing called a garbage collector that will eventually come and give that memory back." Memory management is a non-trivial topic and one that certainly goes deeper than simple allocation.

    So, is VB suitable for any of this? Not really. VB is kind of orthogonal. Like you said, it's fine for someone who needs to solve certain sets of tasks, but doesn't want or need to bother with really understanding deeper concepts.

    1. Re:This is crap. by HFh · · Score: 2, Interesting
      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.

    2. Re:This is crap. by Ted+Stoner · · Score: 3, Insightful

      Yah, what he said. Start out teaching how computers really work from a software perspective. Bits, bytes, boolean. Abstract if-then logic, do-loops, function calls and subroutines, heaps and stacks, program counters and stack pointers.

      After that, high level languages are just syntax and you have feel for what is really going on. Then add OO principles and pick a language. Crudely, in the last 25 years I've worked full time programming assembler, then C, then C++ then Java. A little VB on the side. Back to assembler and C for embedded stuff.

      Java strongly preferred by me. YMMV. Better than C because OO principles. Better than C++ because of simplicity (no #defines to create massively obfuscated shit). Free powerful IDEs and compilers. Tons of open source. If submerged in MS world consider C#. Java doesn't bind you to MS.

      But it depends on what you want to accomplish. I don't do a lot of GUI and I suppose Java isn't the best there. What works for me might be wrong for you.

      The answer as to whether VB should be used is the same answer as to the question of should abortions be allowed.

    3. Re:This is crap. by Durandal64 · · Score: 2, Informative

      I don't think you're taking allocation and freeing seriously enough. Students, especially ones who learned the basics in Java or another "do it all for me" language, generally have a difficult time with pointers. My school, for example, just switched the two basic programming courses from C++ over to Java. The algorithms course is taught in C++ and gets into memory management and pointer programming fairly deeply. I worked with a guy who took the programming courses in Java, and he had absolutely no idea what was going on in C++ with respect to pointers. You're a low-level C programmer, so pointers are probably like fruit to you. But there are plenty of students out there who can't make sense of them, and it's not entirely their own fault.

      Getting the basics in C or C++ gives students the tools they need to pick up pretty much any other procedural language. Someone fluent in C++ can pick up Java in a day or two. Someone fluent in Java has to learn entirely new concepts (like direct access to memory) in order to pick up C++ or C.

      I don't necessarily disagree with what you're saying, but from my personal experience, if I'd learned Java first instead of C++, I would've had a bitch of a time learning how to program in Objective-C / Cocoa, which is how I make my bread and butter currently. But really, I think that as far as problem-solving methodology goes, students should go through what the field of computer science has gone through. Start out with structured programming and then realize that there are certain problems that it cannot solve easily. Then introduce them to object-oriented programming so they can have a basis through which to appreciate it. I count being able to write a purely structured program as a good thing.

  87. stats on these responses by Chapter80 · · Score: 2, Funny
    Out of curiosity, I did a quick, rough word find on the responses that have been posted.

    Here are my estimates after running through a few that I was curious about:

    Java 500 Python 180 Ruby 120

    Notes:
    - I counted on a few pages, and estimated the rest.
    - This was strictly a word find, so Java and JavaScript would both show up above (and yet, I understand that they are different languages). For this reason, I couldn't easily count C or VB/Visual Basic.
    - Some people mentioned the same language by name multiple times, and thus got counted multiple times.
    - Mentioning that "LanguageX sucks" would still register a count for LanguageX. Further, a message with the Subject "Re: Python", that said "No, try Ruby" would count once for Python and once for Ruby.
    - I am not trying to make any point with this, other than seeing which languages people are mentioning. Someone might want to run a more elaborate test, as this has no statistical significance.
    - This message was constructed to the same number of references to each language counted, so if someone wants to count again, I don't throw off the count much (for the languages mentioned - even LanguageX).

  88. There isn't just one good language for everything by chicovstheworld · · Score: 3, Insightful
    First off, VB isn't a good programming language, period, let alone a good one for beginners.

    As there isn't one good language for every programming task, there isn't one good language for teaching everything in CS. My thoughts:
    • You want to teach the UTTER basics (basic syntax, simple input/output, logic, flow control, iteration), use python, perl, or ruby. It'll get students' feet wet real quick, and show them that programming, above all, is fun, without intimidating them too much.
    • You want to teach memory management, pointers, basic data structures, and hardware? Use C.
    • You want to teach OOP? Use Java.
    • You want to really, really learn how all that hardware works (along with compilers, linkers, etc.)? Use assembly.
    • You want to teach recursion and some of the real art and beauty in programming? Use Lisp.
  89. Helps grab interest by supermank17 · · Score: 2, Interesting

    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.

  90. Best Order of Languages by BigRare · · Score: 2, Interesting

    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#.

  91. Going from console/shell to Window apps by maxII · · Score: 2, Insightful

    FIRST language should be something basic that takes input and output in a top down order via a console.

    You don't want to waste your time with complex syntax and cryptic keyword concerns until you understand the basics of programming.

    Start with an interpreted language like Perl that is forgivable (with effort in consistently readable formatting, actually assume that for every language from the start). This will give you a taste of the power a few lines of code can do for you, using almost plain english (obviously Perl can be poorly written and obfuscated, but you do it the long with with nice naming conventions and formatting).

    Then learn some basic ANSI C and/or Pascal (maybe highly structured Java basics at a stretch which is what they're teaching at first year uni here). This will teach you code structure and algorithms, the grounding you need for OO and will teach you to be comfortable with some advanced syntax before GUI code starts being thrown into your code.

    Then it's time for your choice of Java, VB.Net or C# for more advanced GUI apps and to learn OO.

    I personally went from shell scripts and some ANSI C hacking to Uni where I did Pascal and ANSI C in the first year, while learning Perl at work.

    Recently I played with some Java tutorials and got a basic grasp, this year I'm taking a 1-semester course on C#, this and the VB course requires basic programming concept knowledge before applying, which seems about right.

    Unfortunately I don't have experience with VB, but while learning C# all the code shows the VB.net code snippets that do the same thing. It's not clear what the code does but it could be from never learning VB basics.

    All I can say now is that I'm having fun learning C# and it was extremely easy to get into since I understand the basics from ANSI C/Pascal/Perl. This is my first GUI exposure and I'm looking forward to learning more OO through C#.