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

1,100 comments

  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 77Punker · · Score: 0, Offtopic

      If you're going to put him down, put him down for being a mongoloid CIS guy instead of a real computer scientist. These are comments on a forum, not dissertations. Minor grammatical errors are to be expected.

    2. Re:Why not both? by ROBOKATZ · · Score: 1

      VB was never a beginner language, it is used to do database reports, not teach programming.

    3. Re:Why not both? by AKAImBatman · · Score: 1, Insightful

      I don't think the grandparent (who is now, IMHO, unfairly rated at -1) was referring to grammar. The point I got from his post was that anyone who *just* learned about performance threading/sockets and considers himself a serious programmer, is anything but. The Java/C++ "snobs" are off thinking about how to implement a new compression algorithm, or how to improve packet routing on a cryptographically secure Peer 2 Peer network while the VB "programmers" are patting themselves on the back for "high performance" multithreading and sockets.

      As you say, those are not real Computer Scientists or Engineers. They're sysadmins with delusions of grandeur.

      VB always has been and always will be a RAD tool. Nothing more, nothing less.

    4. Re:Why not both? by 77Punker · · Score: 1

      Nice interpretation. Could you please tell me what a RAD tool is? Personally, I think Eclipse is pretty rad, but I have the feeling you mean something else.

    5. 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
    6. Re:Why not both? by Anonymous Coward · · Score: 0
      mongoloid CIS guy

      he wore a hat, and he had a job, and he brought home the bacon so that no one knew.

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

    8. Re:Why not both? by object88 · · Score: 1

      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.

      Absolutely true for VB6. But that has nothing to do with VB.Net, which is what the submitter was talking about? VB.Net is useful for far more RAD.

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

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

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

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

    13. Re:Why not both? by theStorminMormon · · Score: 1

      VB has all the functionality of an OOP powerhouse but the syntax is different. This isn't a major problem at all, but as an introduction I would definitely go with C#. C# has syntax that is more similar to Java, C, C++ and the like. This will make it a little easier in the near future to branch out from C# to another language.

      I've coded in all three and it's not too difficult to switch from one to another but Visual Basic alwys gives me problems because the sytax is so different.

      -stormin

      --
      The Southern Baptist Convention has creationism. On Slashdot, we have porn.
    14. 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.
    15. Re:Why not both? by Valar · · Score: 0, Troll

      go on to get PhD's and disover better sorting algorithms

      Jesus. Christ. They don't even teach you people to sort properly anymore? That was CS/CE101 when I was still a computer engineering focus. And yes, I mean a multitude of sorts. Good ones. The only time I ever saw a bubble sort was when I had to pick one out of a list of assembler programs on a test.

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

    17. Re:Why not both? by Anonymous Coward · · Score: 0

      Better off with a masters + 4 years experience in your field of choice.

      Actually, it depends on the field. Mine's Game Development (at least, it will be one day)

    18. Re:Why not both? by petermgreen · · Score: 1

      Ever notice how you can spot a Visual Basic application visually?
      yep, edit boxes. in most vb apps they are a whole number of grid points high whereas in almost all other apps they take thier natural height.

      thats the single biggest giveaway for a VB app i can think off.

      I liked delphi myself. good rad frontend (the frontend was a vb clone) and a powerfull language backend. Unfortunately it had a number of annoying problems

      1: lack of unicode support in the VCL
      2: more recent versions produced bloated executables.
      3: lots of stuff in the VCL was declared private or not virtual so even though you had the source you had to copy large chunks of it (which also meant licensing issues should you distribute your source though theese were widely ignored ;) ) to customise some stuff.

      --
      note: i'm known as plugwash most places but i screwd up registering that here somehow in the past and now can't register
    19. 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.

    20. 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.
    21. 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?

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

    23. Re:Why not both? by Nataku564 · · Score: 1

      I'm betting its more along the lines of the person would write many smaller applications based on user requests, and they would never get used more than a few times. So they would continuously write small apps that no one used. I have seen similar things at places where I have worked.

    24. Re:Why not both? by Nataku564 · · Score: 1

      Best way to learn - get thrown to the lions, and try to survive. Besides, not everyone thinks C syntax is all that bad. I particularly like Perl's take on the syntax, where functions and regex are first class citizens, instead of mere objects like in some other languages.

    25. Re:Why not both? by Anonymous Coward · · Score: 0

      "Rapid Application Development. Tools like Visual Basic and other 4GL langauges were intended to improve software development speed and accuracy by providing tools whereby..."

      I disagree completely. In my 7 years of programming, I have written in Basic(A dozen variants),C,C++,Java,Objective C,C#, Object Lisp. In fact, I feel that VB.NET is an excellent language. OO support is comparable to C# and far better than what is available in C++. As for Client/Server programming, and even multithreaded applications in general, Visual Basic.Net shines. Performance is always an issue with managed code, but that is a well understood compromise and totally reasonable in many cases.

      Finally, the reason that you can spot VB applications is that VB dominates as a RAD language. Therefore, disproportionally, you associate the simpler interfaces with VB. I assert that you can duplicate any interface written in C++, using VB. Heck, you can even use "unmanaged" code from VB. Btw, by your reasoning, given VB and C# both employ the same technology under the hood, then C# apps should also look toylike.

    26. Re:Why not both? by theStorminMormon · · Score: 1

      1. I don't know what other languages are like - but I know that C, C++, java and C# are all similar. So even if you don't like the syntax the fact is that it's useful to know it.

      2. If the comparison is C# (etc.) vs. VB I'll take C# any day. I vastly prefer the syntax because it's not at all like written English. VB (in my humble opinion) is just similar enough to be hard to use.

      -stormin

      --
      The Southern Baptist Convention has creationism. On Slashdot, we have porn.
    27. Re:Why not both? by Guspaz · · Score: 1

      Who are these "alot" of you, and why do they say that those are bad syntax ideas? Are you assuming that becaues you dislike certain things, then everybody else must also dislike them?

      I happen to like { and }, and case sensitivity makes code easier to read without being a burden on the coder.

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

    29. Re:Why not both? by raftpeople · · Score: 1

      "...and case sensitivity makes code easier to read without being a burden on the coder."

      I think you have that backwards. Case sensitive languages cause additional compile errors when the case does not match.

      You can still use case to make a program easy to read whether it is sensitive to the case or not.

    30. Re:Why not both? by Xonstantine · · Score: 0

      Some folks don't have the option, unfortunately. For example, 2.0 has much better X.509 support than 1.1 where it's functionally crippled. But guess which one I have to use?

    31. Re:Why not both? by Clockwurk · · Score: 1

      "Grammar is the obsession of the simple minded" - Mark Twain

    32. 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.
    33. Re:Why not both? by Tablizer · · Score: 1

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

      That is not really true. VB stayed far more popular in terms of sales than C++/Delphi. I think you are comparing custom/shop-specific applications with packaged apps (meaning commercial and boxed). VB was certainly lousy at packaged apps but that was not really its target audience.

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

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

    36. Re:Why not both? by Myen · · Score: 1

      Just out of curiousity, what do you think of the JavaScript syntax then? (regex and functions are also first-class, but prototype chains instead of normal OO)

      The usual JS people write for web pages is crap of course, but people can write crap in any language :)

    37. Re:Why not both? by Nutria · · Score: 1
      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?

      You have a point, but discovering a "bug" isn't the same as discovering a new species of arthropod.

      Discovering a radically new code-optimization algorithm, though, that is real Comp Sci.

      Or, is he not a scientist, but more an applied mathmatician?

      --
      "I don't know, therefore Aliens" Wafflebox1
    38. Re:Why not both? by Guspaz · · Score: 1

      Yes, they do, as they should. If a programmer is consistent, this should pose no problem. If they do make some consistency errors, then the compiler is going to point it out to them with clear error messages telling you that a variable/function/etc is undefined.

      If good style is to be consistent when it comes to case, why is case sensitivity a burden? At best a coder should never experience any case-related error messages. At worst, the compiler will help them fix any mistakes in this regard.

    39. 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
    40. Re:Why not both? by Nataku564 · · Score: 1

      To be honest, I have never used the language. Mostly an application developer, although I dabble in PHP when I get the chance. You are right, and most of the JavaScript I have looked at is godawful, but my roommate actually attempted to build a fairly extensive JavaScript japaneseenglish program to help teach the language (Japanese, not JavaScript), so I know it has some potential.

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

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

      hehe, any science that has to call itself science probably isn't really science.

      With the exception of physics and chemesty everything that is pretty universally excepted as science tends to end in ology.

      There are lots of smart people in the our field, just like other similar fields like mathematics (number science?), but in my experience CS is generally more like a field of engineering than a section of science.

      I guess it's hard getting recognition at university for a new field and hence putting "science" in the name. But you know what? Even though I went to school for CS my business card says has the word "programmer" on it, not "scientist". I'm sure the majority of us "scientists" have cards that say "programmer" or "software engineer" and nobody complains in the real world. You won't find a much better confirmation that we're not scientists than the way it actually is.

    43. 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();
      }

    44. 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.
    45. 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.
    46. Re:Why not both? by rainman_bc · · Score: 1

      That's why I enjoy Ruby. You don't have to use {...} -> you can use do ... end instead. Or you can use {...} -> doesn't make much difference really...

      Probably one of the most beautiful languages out there IMO.

      --
      09 F9 11 02 9D 74 E3 5B D8 41 56 C5 63 56 88 C0
    47. Re:Why not both? by anomalous+cohort · · Score: 1

      Other posts have covered C#'s using block. Case sensitivity in string comparisons can be controled through a VB.NET language construct called option compare. When one of the first lines in a VB file is option compare binary, then string comparisons are case sensitive. When that line is option compare text, then string comparisons are case insensitive. It allows the developer to be able to postpone the decision of case sensitivity because you can always switch it by changing that one line of code.

    48. Re:Why not both? by firl · · Score: 1

      to me
      c# is for doing it right
      vb is for the uninformed and quick turn outs
      All too often was the quick turn out a horrible unmanagable code, vb being in the .net framework allows for many easily interface options for the unaquainted and quick turn outs.
      Think of it this way, at least its better than VFP

    49. Re:Why not both? by lucas+teh+geek · · Score: 1
      go on to get PhD's and disover better sorting algorithms

      Jesus. Christ. They don't even teach you people to sort properly anymore? That was CS/CE101 when I was still a computer engineering focus. And yes, I mean a multitude of sorts. Good ones. The only time I ever saw a bubble sort was when I had to pick one out of a list of assembler programs on a test.
      wow, talk about lack of comprehension. think of all the sorting algorithm that currently exist; now know that one better than any currently existing probably exists. someone must discover this better sorting algorithm, long before it can be taught in CS/CE101. you may have a comp sci degree but you obviously didnt pass high school english
      --
      TIAEAE!
    50. Re:Why not both? by Jugalator · · Score: 1

      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.

      As others have said, he probably meant the using block, however VB .NET still has this in the latest version, so it's still not much of a difference at all here. I'd agree he seems to be a VB .NET 2003 (or earlier) user though, but that doesn't mean one can generalize the language to old versions just because of that.

      --
      Beware: In C++, your friends can see your privates!
    51. Re:Why not both? by cosyne · · Score: 1

      tools whereby the computer automatically did as much of the work as possible

      Yes. Because to err is human, but to really foul things up requires a computer...

    52. Re:Why not both? by chthon · · Score: 4, Informative

      Scheme and this book.

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

    54. Re:Why not both? by tubs · · Score: 1

      Does it not all depend on what the fundementals are?

      For example, I would say first fundementals are

      varibles, Sequence, Selection, Iteration.

      Then moving on to encapsulation.

      And finally the object based principles.

      Would C be best for these? I would say that University students should start off with an academic language or strongly typed language - one that will teach and force them to use these these fundementals, maybe one that wouldn't be used in a business environment, and one that doesn't have a fully featured IDE that auto generates lines and lines of code.

      Then they can move onto other languages.

      --

      try to make ends meet, you're a slave to money, then you die

    55. Re:Why not both? by try_anything · · Score: 1
      It depends on how you look at it. I wouldn't call it science. Rather, I would split it up this way:

      Proving the algorithm correct: MATH
      Proving mathematical properties of the algorithm (e.g., big O stuff): MATH
      Observing how the algorithm works on synthetic examples: (experimental) MATH or (speculative) ENGINEERING
      Observing how the algorithm works on real-world examples: ENGINEERING (or market research) (or social SCIENCE, but I think that's a real stretch)

    56. 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
    57. Re:Why not both? by indyweb · · Score: 1

      Can't we all just get along? The days of the exclusive "C#" club should come to an end. It's what you do now that counts. Treating VB like a toy language won't help. True, many beginners may (and probably should) choose VB as their language of choice because of its intuitiveness and ease of use, but what's wrong with that? Extremely powerful and robust VB apps are built and in production. I've converted C# apps and routines to VB and still haven't seen an enormous difference between the languages except for syntax.

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

    59. Re:Why not both? by Nutria · · Score: 1
      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.
      [snip]
      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.

      But are you a good engineer and applied mathmetician, or "Scientist"?


      --
      "I don't know, therefore Aliens" Wafflebox1
    60. 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...

    61. Re:Why not both? by Overzeetop · · Score: 1

      Sounds more like accounting. Recognize an output to be incorrect, trace path of errors, correct errant entry. They don't call them "Financial Scientists".

      --
      Is it just my observation, or are there way too many stupid people in the world?
    62. Re:Why not both? by Anonymous Coward · · Score: 0
      Why not something simple - like Pascal? Basic? A step up, but COBOL?

      Because if you're going to start to learn programming from scratch you might as well start with an object-oriented language like VB.Net or C++. I used to wave the procedural language flag too and I hated programming in C++ since it was a pain in the ass, but then when I started programming in VB.Net I really started to see the power of an object oriented language once I started using Visual Studio since it has a great interface, lets you easily see all the methods available for an object at a glance without going and reading some API manual somewhere, etc.

    63. 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.
    64. Re:Why not both? by chris+macura · · Score: 1

      Interestingly, its been proven that the lower-bound on comparison sort is effectively O(n lg n). You can get faster than that, but not by using ''.

      Radix LSD sort is an example of that. If done properly: linear time sort on *numbers*, but only on numbers.

    65. Re:Why not both? by linuxfanatic1024 · · Score: 1

      What about astronomy? Because "astrology" isn't a science at all.

      --
      Microsoft-free since March 28, 2004
    66. Re:Why not both? by theStorminMormon · · Score: 1

      Thanks for saying that. I meant syntax to include the kinds of keywords you're talking about - so i totally agree with your post.

      -stormin

      --
      The Southern Baptist Convention has creationism. On Slashdot, we have porn.
    67. Re:Why not both? by supersnail · · Score: 1

      A bit of pedantry here.

      BASIC was not designed as a teaching language, it, was conceived of as a language that could be used without extensive teaching.

      Excerpt from Wikipedia:--
      - -
      The eight design principles of BASIC were:

      -- Be easy for beginners to use.
      -- Be a general-purpose programming language.
      -- Allow advanced features to be added for experts (while keeping the language simple for beginners).
      -- Be interactive.
      -- Provide clear and friendly error messages.
      -- Respond fast for small programs.
      -- Not require an understanding of computer hardware.
      -- Shield the user from the operating system
      - -

      Whether this was such a good idea is debatable.
      My personal opinion is that is was like developing an
      easy to use automobile which didn't need driving lessons.

      --
      Old COBOL programmers never die. They just code in C.
    68. 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.

    69. 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
    70. Re:Why not both? by cygnus · · Score: 1

      because the language doesn't try to hold your hand and wipe your arse all the time

      sounds like i'm going to end up with my hand up my ass...

      --
      Just raise the taxes on crack.
    71. Re:Why not both? by Curien · · Score: 1

      If you want to program in C++, why not just do so?

          {
              SomeClass x; // use x ...
          }

      --
      It's always a long day... 86400 doesn't fit into a short.
    72. Re:Why not both? by eajhnsn1 · · Score: 1

      If you want to, then go ahead. However, if you're working in the .net environment the last thing you probably want to do is C++ - last I looked, the Microsoft additions to C++ for .net were disgusting.

    73. Re:Why not both? by skept · · Score: 1

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

      am i the only who sees the absurdity in this generalization? the sensible person would realize that your "lead computer people"'s problem is not in the language but in the people they are hiring and more importantly the management of these people.

      >He seemed to think that hiring Visual Basic programmers was a complete waste
      >of money.

      again i am not exactly sure how you draw this generalization.

    74. Re:Why not both? by petermgreen · · Score: 1

      It was amazing how quickly I could get a nice looking application up and running and doing something useful.
      yep gui builders are great for that. The thing with VB is the gui builder is really the only thing going for it and even thats been widely copied.

      delphi on the other hand has an equivilend gui builder and a decent backend language and the library source is availible (provided you don't get the bottom end edition) which means you can find out how things really work not just how the docs claim they work. Finally you can avoid the nasty deployment issues of activex controls (which must be registered meaning you need an installer and can't simply run off cd etc)

      --
      note: i'm known as plugwash most places but i screwd up registering that here somehow in the past and now can't register
    75. Re:Why not both? by skept · · Score: 1

      >> VB was never a beginner language

      VB stands for Visual BASIC.

      BASIC stands for [B]eginners [A]ll-purpose [S]ymbolic [I]nstruction [C]ode.

      i am not arguing whether vb is for beginners or not but the name implies that it is.

    76. Re:Why not both? by reanjr · · Score: 1

      I do most of my application development in VB. While I have read about C/C++ and Assembly to a great extent, I find actually using them very distasteful (I've done a fair amount of C, but only a bit of assembly that I changed a bit here or there from examples). Like any high-level language, VB is not suited for doing complex computations on large amounts of data, most C++ code I see is spent simply reimplementing standard high-level language functionality. It's educational to understand the low-level stuff, but once you do, and you learn where high level languages suffer, the use of those languages greatly diminishes.

      Back to the original post question, for me the main difference between C# and VB.NET is statement-continuation in VB "_" and statement termination in C# ";" and end statements in VB "End Function" as opposed to bracing code blocks in C# "{ }". In other words, they're trivial; there aren't any significant differences between learning one or the other unless you plan to work with unmanaged code as well, where C# will give you a better basis for using C++.NET.

      I don't think any of the Microsoft .NET languages are well-suited to an educational environment (there are more special purpose languages for different concepts), but for learning coding on your own, they're both great.

    77. Re:Why not both? by TopherC · · Score: 1

      I, too, would highly recommend Python as a first language for learners. Python was about my 14th programming language, and I really love it!

      Having said that, it's really a stupid answer to a stupid question. Well, not stupid, just underqualified. What kinds of things do you want your prospective student to be learning about programming? If you're teaching computer architecture, go straight to a hex editor! If you're teaching memory management, pointers and simmilar low-level concepts, then something like C is more useful. But I would guess that as a very first programming language, the concepts that should be learned include order of execution, variables, breaking down problems into simpler pieces, scope, and code reuse. A short while later, some OOP would be good to learn. Python provides easy ways to apply all these concepts with a minimum of extraneous details. It also lets you write some useful and interesting programs very quickly and easily, so a higher interest level can be maintained.

      I'm not very familliar with VB these days, but in general I don't think the beginning programmer should have to worry about GUI design or need any template code. A terminal-based program provides the most simplicity at the beginning, and there are some great toolkits for Python that can build GUIs later on. Another advantage of Python is the interpreter shell, which makes testing code snippets and general exploration a piece of cake!

      So if you're really wanting to teach basic programming concepts in an interesting and straight-forward manner, Python really has a lot of advantages.

    78. Re:Why not both? by brouski · · Score: 1

      You make some good points, but aren't your concerns related to general programming concepts that should be language agnostic?

      --
      Proud member of the American Non Sequitur Society. We might not make much sense, but boy do we love pizza!
    79. Re:Why not both? by jbplou · · Score: 1

      I was aware of the option compare feature, but my post was long enough already. Technically you can set it in your project options as well to be either binary or text. I know VS.NET ships with VB.NET projects defaulting to option compare binary so that is why I said it is case sensitive, because by default with the normal IDE that people use it is.

    80. Re:Why not both? by RamblerRandy · · Score: 1

      Yay! Someone else knows "The Tao Of Programming" or "...Objects"

      Anyway, ALL 'new' software developers do click, click, click. Hand coding is for us "old fogies".

      Yea, right, like punch card programming is ancient history too? Um....

      --
      I'll think of a really good SIG just before I die.
    81. Re:Why not both? by JimatBoltonUniUK · · Score: 1

      There are many questions involved in selecting a programming language. Is the purpose of programming to understand computers ? Is the student wishing to train as a programmer - and if so will they be developing applications, coding operating systems or writing games And most importantly- are they learning program design ? The greatest problem with VB is the lack of a methodology suitable for the event-driven paradigm when being taught to 'less serious' students. I teach VB6 to these students, but good ones write recursive functions to process data in TreeView components in their second year. This is NOT trivial. Jim Williamson

    82. Re:Why not both? by Anonymous Coward · · Score: 0

      Anyone who says that crapping is not a science has never taken a nice crap. Form a hypothesis about the poop, run an experiment (poop), document the results. Sound familiar?

    83. Re:Why not both? by anomalous+cohort · · Score: 1

      If you are familiar with it, then you already know that option compare is not available for C#. C# string comparisons using the equals operator are always case sensitive.

    84. Re:Why not both? by Anonymous Coward · · Score: 0

      Wow, authors who wrote a book directly competing with SICP think that SICP sucks??? Say it ain't so!

    85. Re:Why not both? by jbplou · · Score: 1

      I was also knew that. I was talking about VB.NET. With c# you could use the string.compare function to get case insentivity.

    86. Re:Why not both? by humblecoder · · Score: 1

      Personally, I found that VB6 (and its various Visual and non-Visual precursors) was a beginner's language, but not necessarily a good language to learn as a teaching tool.

      It is a beginner's language in the sense that it is easy for a non-programmer to pick up, since it hides a lot of the complexity from the developer. Thus, it was well suited for someone who isn't necessarily a coder, but who has a need to write some tool or application for his or her specific domain.

      However, for someone who actually wants to actually learn the craft of programming, it is really not a very good language to start with. It has a lot of constructs which aren't generally found in other languages and which force the programmer to code things in a way that go against good programming practices.

      I think that VB.Net, on the other hand, is the complete opposite of VB6 and prior versions. In my opinion, it is a lot more difficult for a non-programmer to learn. However, because it doesn't have the baggage of the older versions of Basic, it would actually be a good first language to learn for someone who really wants to get into programming. Unlike previous versions, there are a lot of concepts and constructs which actually are transferable to other languages.

      That being said, I think that VB.Net was a big mistake. VB6's "niche" was as a language that a non-programmer could use if they wanted an simple application, but they didn't want to have to go to 4 years of college in order to be able to code it up. As far as I can tell, VB.Net is just C# with some syntactic sugar sprinkled on top. In the Microsoft programming language landscape, it really doesn't have anything to differentiate it from the other languages. You can't even upgrade code from VB6 to VB.Net without re-writing it, so it's not like it provides VB programmers with an upgrade path. Without a clear niche, I predict that VB.Net will die a slow death.

    87. Re:Why not both? by poopdeville · · Score: 1
      Radix LSD sort is an example of that. If done properly: linear time sort on *numbers*, but only on numbers.

      As opposed to what?

      It doesn't seem like it would be too hard to encode an alphanumeric string to a sequence of numbers, concatenate, and sort those.

      (Not a computer scientist)

      --
      After all, I am strangely colored.
    88. Re:Why not both? by Anonymous Coward · · Score: 0
      OTOH, how many people here can take the Nth root of a number by hand?

      Easy. Use the identity e^{pi i x} = cos x + i sin x, conclude that cos nx + i sin nx = (cos x + i sin x)^n, use the power series expansion of sin and cosine to compute.

    89. Re:Why not both? by Anonymous Coward · · Score: 0

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

      I'm sorry but...
      Were the performance discrepencies really down to the choice of language? CICS running on a multi-million $ mainframe, VB running on a PC....
      and
      Debugging in VB6 was always a joy due to step control, change and continue not to mention the intermediate window...
      and
      No language can prevent the creation of spaghetti code. VB's best and worst feature has always been it's ease of use. Anyone can dig a hole but the real trick is having the experience/self-discipline not to bury yourself.

    90. Re:Why not both? by TheAncientHacker · · Score: 1

      OK. Taking them in order...

      Bizarre. You actually argued for Case Dependance by saying that the computer should be hard on programmers to enforce discipline in typing. Wow. Do you really think that accidently typing thisDoesSomeStuff() instead of thisDoesSomeSTuff() should result in two separate objects with no warning? Should we just cut out error messages in compilers and go back to punch cards so we can all get our typing skills REALLY up to shape?

      As for shifted delimiters, the best you can say is they're not that bad a problem. OK. Why have a problem at all when there are better choices. Again, bizarre.

      Next you say, Make Programming Really, Really Hard. Yeah. Had this masochism thing long?

      Then you move on to suggesting that we really need programming tools that make it easy to make mistakes so people can learn to fix these errors. Um, again, you really think that rather than let the compiler stop you from doing stupid things you should spend all your time doing them? Uh, huh. There's that "please beat me" thing again.

      So, essentially your arguement for using C derived languages is that they're unnecessarily hard, unnecessarily unforgiving and unnecessarily error prone. Well, I'd agree with the description but not the masochism.

      The point of a language is to make it easier to get ideas into practice. You seem to have missed that point by taking pride not in what you've created but by the number and stupidity of hurdles you've had to overcome to do anything. And, apparently, that's the C derived mindset.

    91. Re:Why not both? by Anonymous Coward · · Score: 0

      I am in total agreement.
      The only use I have seen for VB is for non-programmers.
      or
      Quick Programs.
      The non-programmers are found in manufactoring environments, electrical engineers, chemical engineers, etc. that need to write a quick bit of code to convert their sensor readings on a smaller project into useful data and send it to a database. They don't need a robust program, and it's a one time sort of thing.

      I did the same thing for job hunting one time, I had so many resumes out, that I needed to manage the job positions, follow-ups, have something to querry company names, and phone numbers so I could quickly refer to what the job posting is about, notes etc. It took me only 1 hour to write my little program for what I needed in VB. Something not so easily done with VB.NET or a lower level language.

      It served a purpose.
      I don't see how VB.NET serves a purpose
      I rather write in one of the many C language if I was doing something important.

  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 Anonymous Coward · · Score: 0

      Well said.

      It's important to learn a proper language first, something like C or Assembler, at least from there learning any other language isn't to hard since you know all the fundamentals.

    3. 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!
    4. 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.

    5. 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!
    6. Re:No. by ampathee · · Score: 1

      I'd somewhat agree with you. My feeling is that VB is good for quick hacks, or for people who just want to dabble in programming. I'd recommend it to people who just want to learn to write excel macros, or assemble simpleish point-n-click utilities.

      I'd probably recommend java for people who actually want to learn to code - it's a relatively easy-in, but pretty powerful and structured, and also introduces you to c-style syntax (so much cleaner than VB's clunky verbosity).

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

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

    10. 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
    11. 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.
    12. 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.

    13. Re:No. by neoform · · Score: 1

      I actually wasn't talking about teaching children since this example was about teaching an adult how to program..

      --
      MABASPLOOM!
    14. Re:No. by LordKazan · · Score: 1

      I knew there was a reason i marked you as friend :D You just described my evolution of programming knowledge :D

      --
      If you cannot keep politics out of your moderation remove yourself from the Mod Lottery.. NOW!
    15. Re:No. by walt-sjc · · Score: 2, Interesting

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

    16. Re:No. by GWBasic · · Score: 1
      It is a completely unstructured language that promotes very bad coding practices and allows for poorly writen applications to run anyway.
      That's not true at all. (flamebait?) All VB.Net code that I've worked with is structured. Loops, procedures, and functions, which are what make a language structured, are core parts of VB.Net. If you are speaking for using VB in the pre-.Net days, keep in mind that VB.Net is a new language that is a considerable improvement over VB 6.

      VB.Net allows for weakly-typed code, which is a double-edged sword. Beginners using weak typing in VB.Net will have problems, however weak typing is easier to use than reflection. Because I don't work with VB.Net on a daily basis, I am not sure if weak typing is enabled by default.

      I've encountered both excellent and horrible code in VB.Net. The quality of the code is dependant on the programmer; had a different language been chosen, the code would have been just as bad.

    17. 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!
    18. Re:No. by Morpeth · · Score: 1
      Utterly and completely wrong. If you're going to do the typical knee-jerk slashdot MS slam, could you try to be at least a little bit informed? Please?

      You could probably get away with your remark IF you talking about VB 4.0 or something, some of the points could apply perhaps to VB 6.0; BUT I'm 99% certain you've never touched VB.NET, or you wouldn't say that. It hardly resembles the VB of pre-.NET days, and has all the features of any fully flushed out OO language. VB.NET used in conjunction with something like Visual Studio .NET enforces sound coding practices and the .NET framework isn't going to "allow for poorly writen applications to run anyway."

      The OP was asking a legitimate question, try giving a useful answer instead of just using it to slam MS without anything to back it up.

      In answer to the OP, VB.NET is fine to start learning, though compared to C# the differences aren't that huge imo, and I see more job postings seem to be looking for C# over VB.NET (FYI, I moved to C# from VB 6/.NET for that reason). So given that, I'd say C#. However, VB.NET is just fine and with .NET 2.0 MS seems to be pushing VB.NET a bit more again, so it's not that big a deal either way really.

      --

      'The unexamined life is not worth living' - Socrates
    19. Re:No. by cryptomancer · · Score: 1

      Using this as an opportunity to remove 'Ask Slashdot' from my preferences, since we can't mod the questions.

      --
      Yes, we understand these tags always apply: fud, dupe, typo, slashdotted, topic name
    20. Re:No. by Tacvek · · Score: 1

      My local community college's "Java" class uses J# 2.0!
      Talk about tring to lock somebody into Windows.
      The textbook is for real Java 1.5.0, but J# 2.0 is equivlent to approximately 1.3.0.

      I feel bad for the fools who go to that college and think they have learned programming.

      I mean it is bad enough that many "programmers" out there are just mindless drones. They are incapable of doing anything that does not closely resemble an example in their textbook. They would never teach themselves anything, or even look up a fuction in the reference guide.

      --
      Stylish sheet to fix many problems in Slashdot's D3: https://gist.github.com/801524
    21. 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
    22. Re:No. by AKAImBatman · · Score: 1

      No, the proper language to start all newbies on is Forth.

      So you mean that we should purchase all new programmers an old SparcStation, hit Stop-A on boot, then tell them to have at it? Sounds like fun. :-P

      Actually, I've recommended Assembler as a good alternative to BASIC, though it does take away some of the user friendliness. Just make sure that you give them a sensible instruction set to work with, so they don't have to be working voodoo just to add two numbers together. x86 Real Mode isn't it. ;-)

      Atari Assembler (6507, a variant of the 6502) isn't a bad choice because some of the emualtors (STELLA!) come with built in debuggers that can let the user watch the program execute. Of course, Hello World! is pretty darn difficult to write on a 2600.

    23. Re:No. by Anonymous Coward · · Score: 0
      • Procedural
      • low-level (asm)
      • OOP
      • Functional
    24. 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?
    25. Re:No. by largenumber · · Score: 1
      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.
      Nearly all Lisp variants like Common Lisp and Scheme have this. PLT-Scheme is nice for beginners with the multi-os IDE, teach packs, and textbooks.
    26. 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
    27. Re:No. by SnapShot · · Score: 1

      For that *simple* language let me recommend Ruby. There's a great "learn to program" book online that uses Ruby here.

      --
      Waltz, nymph, for quick jigs vex Bud.
    28. Re:No. by colman77 · · Score: 1

      "and I'm a Microsoft hater as much as the next guy."

      haha, I love how it's practically required to throw that in there if you want credibility on Slashdot.

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

    30. Re:No. by redalien · · Score: 1

      The IOCCC winner for this year "Chia" sums up Java for me. It is a java programme to count the length of each line in a text file, and output it to STDOUT. It is preceeded by some #defines, where the real fun lies

      Highly recommended.

    31. Re:No. by Ruie · · Score: 1
      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.

      Take a look at R language.

      It has a command-line interpreter, a lisp-like underlying language with *nice* syntax, available on both Linux and Windows (and OS X, AFAIK) and also has some nice plotting facilities.

    32. Re:No. by SanityInAnarchy · · Score: 1

      Also note: ruby has an interpreter. Open up your command prompt and type:

      irb

      But yes, I think while programmers should learn OOP as something that applies at all levels, but they should also learn it as a high-level construct.

      Every programmer should be required to at least look at some assembly, even if they're never even required to write "Hello world" in it. It's important to not only have a good grasp of high-level concepts, but also at what they are actually doing. And it's interesting, too.

      If it's not interesting, should you really be a programmer?

      --
      Don't thank God, thank a doctor!
    33. Re:No. by Hott+of+the+World · · Score: 1

      The problem is that its a syntactical nightmare. semi-colon? Sure, just put them there.. or don't.

      And whats the deal with "for i in range()"? I miss "for (i;i>20;i++)", really feels good.

      Although I agree its nice and simple. I mean, print("Hello World.") and you've just skipped 2 weeks in java.

      --
      | - | - |
    34. Re:No. by anomalous+cohort · · Score: 1
      Never, ever, ever, ever start a beginner programmer with Java.

      I used to be on the adjunct faculty at the University of San Francisco. One of the classes that I would teach was a programming paradigms class to MIS students. I would introduce them to a simple command line balance check book program and go over it line by line. The first time that I taught it, I presented the example code in Java and got immediate push back from the students. It turns out that they didn't like or appreciate the curly braces.

      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.

      try python

    35. Re:No. by thetoastman · · Score: 1

      I think Java is a reasonable first language to learn. I learned languages in the following order:

      • BASIC
      • FORTRAN
      • PL/1
      • C
      • C++
      • Perl
      • Java
      • C#

      I've played with Python, PHP, Lisp, Scheme, Modula-2, and Ruby, but I don't claim to know them well enough to be productive. One of these days I'll try SmallTalk.

      Making the jump from C to C++ and actually writing object oriented code was a big switch. For a while I was writing C in C++. I think the earlier you introduce people to object oriented concepts the better. However, I don't teach programming so that's just my personal viewpoint.

      I have mixed feelings about using command line interpreters to teach languages. On the one hand it does give instant feedback. On the other hand it teaches people to think in a scripting, sequential way rather than a building block object oriented way.

      However, you can do command line interpreters in Java. The one that I know about is BeanShell. It's pretty useful in general.

    36. Re:No. by Polar27 · · Score: 1

      I disagree. Java was basically my first programming language and it certainly didn't "confuse" me and "turn me off programming forever". I thought it was a decent language to start with (and I've played in C, C++, Scheme, Haskell, Prolog, Ruby, Javascript, and maybe a couple others, so I have had some variety). I think the key is not necessarily the language but who's learning it (and to a certain extend who's teaching it). Any language can be a problem if the student simply isn't interested. Most languages are probably sufficient to learn the basics, and once that is done those basics can be applied and compared with new languages to truly learn how to write code.

    37. Re:No. by PitaBred · · Score: 1

      I've seen more people be completely baffled by the idisynchrosies of Java and other "high level" languages. They start getting it much more when they use C/C++ and see how arrays and so on are actually handled in memory. 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.

    38. Re:No. by Anonymous Coward · · Score: 0

      I agree completely with your assessment.

      However, instead of a basic variant, how about scheme?

      Especially the combination of PLT Scheme
      http://www.plt-scheme.org/
      which provides a nice interactive environment,
      with the book "The Little Schemer"
      http://www.amazon.com/gp/product/0262560992/ref=cm _bg_f_2/103-9731106-9419851

      The repl can provide you with instant feedback,
      you can save code to files and re-run them,
      and you can learn about recursive programming!

      (display (format "hello world!~%"))

      What makes it great for the beginner is that there
      are no arbitrary syntax rules to follow, you don't
      have to remember the precedence order to decode a***b.

    39. Re:No. by Topherbyte · · Score: 1, Interesting

      I couldn't possibly agree more.

      Rome was not built in a day.

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

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

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

    40. Re:No. by Anonymous Coward · · Score: 1, Interesting

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

    41. Re:No. by Anonymous Coward · · Score: 0

      Well, that should make it easy to judge who will (and will not) do well in a field that involves *gasp* software. Why not just advise those who 'push back' that they might devote their energies to another career, before they waste more time and tuition? They've no hope of rising to the top of the profession, and it's not like MIS needs more workers of this sort. It seems an injustice for all concerned.

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

    43. Re:No. by Anonymous Coward · · Score: 0

      Nobody is going to agree with me on this, but I'm right:

      If you're trying to teach somebody to be a professional programmer, start with assembly. Then, move up the chain of abstractions to C, C++, Java, SmallTalk, and Lisp.

      If you can't think about what the machine is actually doing, you will never be as good at programming and especially debugging as someone who can. The abstractions that you trust with your program's life will fail you in the end. Then what do you do?

      If you have never fiddled with pointers in memory, then you will be confounded by the differences between:

      foo(bar baz);
      foo(bar* baz);
      foo(bar*& baz);
      foo(bar& baz);


      And heaven forbid that you ever get anywhere near any security-critical code.

    44. Re:No. by Nataku564 · · Score: 1

      Perl is perfect to start out with. Hello World is one line, and it allows for most of the OO features of the "big" languages.

    45. Re:No. by Anonymous Coward · · Score: 0

      bateleur disagrees with Dijkstra! Film at eleven!

      Sorry bateleur, I'm going to have to go with Dijkstra. He was famous in the field. Maybe it had something to do with inventing the stack, etc.

      Nor did he bring up markup languages in a discussion about programming languages. He was also well aware that the earlier errors are caught, the better. Or, are you speaking about syntax only, having some wonderful idea for a *programming* language that ignores syntax, and magically does what you mean, not what you coded?

      Nor is it meaningful to state that, "HTML ... ignores errors..." *Browsers* may, or even validators, to varying extents. The extent to which either adheres to published standards is a measure of it's quality. If browsers had simply refused to render incorrect HTML, from the early days, today's tools would be unimaginably better.

    46. Re:No. by clodney · · Score: 1

      I did that in college ('81), hand assembling and keying into a pdp-8 via the front panel. That was after I already knew Basic and Pascal, but as an introduction to assembler, it was great. The pdp-8 had a very simple instruction set, and after that exercise you truly understood it.

      It helps to be able to follow something all the way down to the bare metal.

    47. Re:No. by dreemernj · · Score: 1

      I really like how you summed that up. I started programming back in the day with QBasic because I had it, it was simple, and the help file was extremely easy to get around with a sample for everything. I think that is a real key to the beginning language, having the help files be as easy to deal with compared to really indepth manuals as the programming language itself is easy to program compared to more robust and capable languages.

      --
      1 (short ton / firkin) = 89.1432354 slugs / keg
    48. 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.
    49. Re:No. by Elektroschock · · Score: 1

      I would add: Procedural languages are good for beginners. why not freepascal? Pascal makes you write clean code. For learning Oop I suggest Smalltalk.

    50. Re:No. by Danga · · Score: 1

      Oh and one more thing I forgot to mention is have everything written as a command line interface program, starting out with GUI's can be way to confusing and is absolutely not necessary. K.I.S.S.

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

      REXX is also IMHO a good alternative, especially to Basic.
      And it's now available for Linux. ;-)

      --
      .
      == WolfriderV6 == I'm willing to admit that *I just might* be wrong... Are you??
    52. Re:No. by walt-sjc · · Score: 1

      Apparently the mods didn't get my joke :-(

      No, I wouldn't want to foster forth on some poor newbie, although forth was cool back in the day :-)

      I've worked with a number of different assembler environments - 6502, Z80, IBM 360, PDP-11, 68000, and yes, x86. X86 is by far the most !@#$%^&*() instruction set ever. And when I went from 6502 to Z80 I thought the Z80 was bad... Sheesh.

      Ruby however IS worth a look for new programmers.

    53. Re:No. by suitepotato · · Score: 1

      With power comes complexity.

      Actually, that is with great power comes great responsibility. And neither are true as meteor impacts, volcanic eruptions, and IT projects all show that great power is often simple and has no responsibility attached other than the clean up afterwards.

      --
      If my grammar and spelling are off, I am [distracted/tired/careless] (take your pick)
    54. Re:No. by rk · · Score: 1

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

      I have found in this modern era of windowed workstations, using a language like python I can simulate this behavior pretty nicely, with one window editing my program, another with the Python interpreter loaded up, and a third to run my program, I get that similar "explorer" mentality back I had as a high school kid in the early 80s hacking on my Trash-80 CoCo. It is so great to be working on a project and say "I wonder if...", bang it out on the command line to test and refine it, then take it and put it in my program.

      The beauty of python is that it scales pretty nicely to do real work, supports OOP beautifully but isn't a Nazi* about it, and if you need more speed than the interpreter gives you, that segues nicely into C programming, which you can write and then link back into your python programs.

      I've not used Ruby yet, but I'm given to understand that you can get a similar experience with it.

      *- did I just Godwinize this discussion? :-)

    55. Re:No. by Omkar · · Score: 1

      Intro CS at Stanford uses Java and the ACM libraries, it's very painless.

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

    57. Re:No. by ajwitte · · Score: 1

      GAAAAAAAAHHHHHH! Perl may "allow" for OO, but it's very ugly. Try Ruby or Python or something. Even PHP5 would be better than Perl for teaching OO.

      --
      chown -R us ~you/base
    58. Re:No. by DahGhostfacedFiddlah · · Score: 1

      Completely agree. Perl has what beginners want - instant gratification. The commands are so simple and easy to learn, and most of the complaints about 90% punctuation disappear when it's introduced in a student environment where students go with what they know until they need something more powerful.

      It's also good for tacking on new concepts as they learn. Pass-by-value vs pass-by-reference is completely natural in Perl.

      I'd probably have them learn OOP in another language though - at least until 6.0 comes along.

    59. Re:No. by DahGhostfacedFiddlah · · Score: 1

      And when learning a language, the most important factor is being able to communicate. Worry about verb conjugation after they know how to say "need toilet".

      Teaching Java to a beginning programmer is like teaching someone who doesn't speak a lick of english exclusively in Haiku. They'll spend a lot of time wondering why this (to them) arbitrary style is enforced on them.

    60. Re:No. by jericho4.0 · · Score: 1
      Have you been living under a rock?

      Python and Ruby both have command line interpreters, full OO, and an elegant syntax. Either would make an excellent choice as a first language. In Python, for example, one could intoduce procedual programming, then OO, and then start intergrating Python with C.

      Let us not ever speak of BASIC again, Visual or otherwise.

      --
      "A language that doesn't affect the way you think about programming, is not worth knowing" - Alan Perlis
    61. Re:No. by Decaff · · Score: 1

      If you can't think about what the machine is actually doing, you will never be as good at programming and especially debugging as someone who can. The abstractions that you trust with your program's life will fail you in the end. Then what do you do?

      How on Earth is understanding assembly supposed to help with this? It is of no relevance at all. You might as well suggest that developers deal with processor microcode. Some of the worst developers are those who won't abstract and insist on handling things at the lowest levels, and won't let the compiler or runtime system do the work for them. I have not developed with a system where I have needed to know about the underlying assembler for about a decade.

      If you have never fiddled with pointers in memory, then you will be confounded by the differences between:

      foo(bar baz);
      foo(bar* baz);
      foo(bar*& baz);
      foo(bar& baz);


      This has nothing whatever to do with assembly. It is to do with abstractions about memory use, and can be understood in a totally abstract fashion.

      And heaven forbid that you ever get anywhere near any security-critical code.

      Fortunately development these days is moving away from the use of languages with the sort of horrors you showed above and towards safer managed systems.

    62. Re:No. by jericho4.0 · · Score: 1
      A syntactical nightmare? I think not. Semicolons are never needed, they are just around to make folk like you feel better. And comparing a generator with a for loop + index var kind of misses the power of generators.

      To each his own, of course. At least it's not pearl. (The "There's 600+ ways to do it, but 580 of them aren't in the book you bought" language.)

      --
      "A language that doesn't affect the way you think about programming, is not worth knowing" - Alan Perlis
    63. Re:No. by sbrown123 · · Score: 1

      No java. This is from a long time Java programmer. Java is not a good language to start with. None of the .NET framework languages either. Whats that leave? A bunch of other bad choices for languages for starting programmers. And remember, we are not aiming for college students here. Need something for younger audience.

      I would say a scripting language may be a better route. Problem is, the major ones are too major: Ruby, Python, and even Perl are too complicated to start with. Don't even go near Javascript, with its horrible prototype base which could completely ruin chances for future development into the world of OO programming.

    64. Re:No. by Anonymous+Brave+Guy · · Score: 1
      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. [...] OOP needs to be taught at the start, not as an optional add-on.

      The problem with this approach, IMHO, is that it presupposes the superiority, and indeed the exclusivity, of OOP. The former is arguable but unproven, the latter is clearly false.

      If I'm teaching someone to program, I want them to learn to appreciate useful, general concepts like modular design, or the nature of an expression, or the effective use of functions, or structured programming.

      OOP, ultimately, is just syntactic sugar for a particular style of procedural programming, a specific application of these general principles. I think that presenting OOP as The One Truth, which you do at least implicitly if you start by teaching a language such as Java or Ruby, is doing your students a disservice.

      Rather, take any student who groks concepts like simple expressions, basic procedural programming, indirection and modular design, and you can teach them the additional layer that is OOP quickly, without misrepresenting it as the universal truth in programming.

      IME, a lot of the problems with programming today stem from the crazy belief that OOP is the only way to do things, which has been widespread in certain parts of our industry for a decade or more. Then people wonder why powerful concepts like higher-level functions and closures, or disjunctive types and pattern matching, remain almost exclusively in the world of academic programming languages, while industrial programming struggles on eternally with the STL, and NULL pointers, and introspection, thinking that these are clever ways to write code.

      --
      If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
    65. Re:No. by danielk1982 · · Score: 1

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

      If you're training a bunch of Arts students maybe, if you're training the next generation of developers, C is the way to go. Its so much easier to go from C to Java than Java to C. C forces good coding practices (not structure =)) while Java encourages sloppy coding with no regard for any optimization. OOP is important and has a place in the curriculum but what I've seen happen is schools focus solely on that, bypassing or not placing enough focus on C (which is great for understanding whats going on under the hood).

    66. Re:No. by rick446 · · Score: 1
      And whats the deal with "for i in range()"? I miss "for (i;i>20;i++)", really feels good.
      Surely this is a troll, right? There's a bug in your C-style loop. Should be i<20, not i>20. In fact, that's one of the reasons why I prefer the "for x in y" syntax. Fewer bugs. Oh, and your print("Hello World.") can be simplified to print "Hello World.". The parentheses are superfluous. Just my $.02.
      --
      http://pythonisito.blogspot.com/
    67. Re:No. by Decaff · · Score: 1

      If I'm teaching someone to program, I want them to learn to appreciate useful, general concepts like modular design, or the nature of an expression, or the effective use of functions, or structured programming.

      Understood.

      OOP, ultimately, is just syntactic sugar for a particular style of procedural programming, a specific application of these general principles.

      No, it isn't. It is far more than just syntactic sugar, introducing ideas such as polymorphism which are fundamental to a the power of OOP development.

      I think that presenting OOP as The One Truth, which you do at least implicitly if you start by teaching a language such as Java or Ruby, is doing your students a disservice.

      I understand this point, but I would suggest it is far better to introduce what OOP can really do right at the start rather than as some kind of later confusing 'add-on' to procedural code, which OOP certainly is not, and OOP used this way is poorly used.

      Teaching OOP is no barrier to the teaching of modular design or structured programming - they are orthogonal concepts.

      I am a great believer in the use of 'pure' languages to teach concepts - Pascal for structured programming, Smalltalk for OOP, Prolog etc. for declarative development, and then you can introduce 'compromise' languages like Java and C++.

    68. Re:No. by Decaff · · Score: 1

      If you're training a bunch of Arts students maybe, if you're training the next generation of developers, C is the way to go.

      Absolutely not. I find it hard to think of any mainstream uses of C that can't now be handled by a safer, more suitable managed language.

      C forces good coding practices (not structure =)) while Java encourages sloppy coding with no regard for any optimization.

      How on Earth did you get this idea about Java? Good design is as important in Java as in any other language. Just because you can get good run-time performance from Java and other managed languages from run-time optimisation does not mean that slopping coding is acceptable.

      Teaching C gives a false impression of what current and future mainstream developers need to know - manual memory management, identity between pointers and arrays etc. These may be vital for device driver developers or compiler writers, but are of no relevance to web coders or financial developers.

      You always get sloppy coding. In Java you are usually protected from the results. In C the results can be disastrous. The aim should be to teach quality coding while protecting the developer (and user) from the consequences of inevitable mistakes.

    69. Re:No. by danielk1982 · · Score: 1

      OOP is a fundamental technique that can be used at even the smallest level efficiently.

      A colleague of mine once remarked that there is currently a trend to dumb our kids down by teaching them that solutions to problems can be found by throwing design patterns at them until one fits, and if none do, to make one fit. OOP is not the answer to everything. Sometimes nothing beats a good Perl script.

    70. Re:No. by An+Onerous+Coward · · Score: 1
      Python is a model of syntactic stringency compared to Ruby. In Ruby, you can call object.method() or object.method and achieve the same results. The parentheses are only necessary if you want the arguments to extend beyond a single line. A looping block can be demarcated in any of several ways:
      for i in 1..30 do
        print i
      end
       
      (1..30).each do |i|
        print i
      end
       
      (1..30).each{ |i|
        print i
      end
      And probably a few others I've forgotten. Even more insane, you can throw an if/unless test at the beginning or end of a statement or block. In Rails, a popular way of passing arguments is to say "arg1, arg2, { dictionary for arg3 }" and then allow the dictionary to be written implicitly (without the surrounding braces). So it looks like "arg1, arg2, arg3=>val3, arg4=>val4, arg5=>val5".

      If it sounds awful and revolting, it really isn't. I've found both Ruby and Python lead to extremely readable code. You're entitled to disagree, but think about this: The semicolons are there to make life easy for the compiler, not for you. I think Python especially latched onto something brilliant when they decided that the compiler derive the program structure from the exact same cues that human programmers do.

      --

      You want the truthiness? You can't handle the truthiness!

    71. Re:No. by An+Onerous+Coward · · Score: 1

      Grr... the last 'end' is supposed to be a '}'. My bad.

      --

      You want the truthiness? You can't handle the truthiness!

    72. Re:No. by Decaff · · Score: 1

      A colleague of mine once remarked that there is currently a trend to dumb our kids down by teaching them that solutions to problems can be found by throwing design patterns at them until one fits, and if none do, to make one fit. OOP is not the answer to everything. Sometimes nothing beats a good Perl script.

      Actually, I strongly agree. I think that the increasing use of design patterns can stifle creativity. However, I think that OOP is another matter altogether. Showing that OOP can be used at all levels is not to show that it need be used at all levels. What I would want to avoid is the idea (depressingly wispread) that OOP is some high-level extension to procedural coding, and can't be used effectively and lightly everywhere if you like.

      All I am saying is that playing first with Smalltalk or Ruby and even adding new methods to simple types such as Strings or numbers is a great way to understand what OOP can really do, before the developer most likely moves on to the more constrained and pragmatic approaches of, say, Java or C#.

    73. Re:No. by An+Onerous+Coward · · Score: 1

      Ebonics has grammar and well-defined structure. In fact, any language children can practice on each other will develop a grammar, even if the parents have no grammar to teach them (read, read).

      Ebonics is not just "sloppy English." The only debate that might conceivably exist among linguists revolves around whether it is a dialect or a full-fledged language.

      --

      You want the truthiness? You can't handle the truthiness!

    74. Re:No. by Nataku564 · · Score: 1

      Its not that bad ... at least, it doesn't have to be. Most of the Perl code you see out there, like the code of most languages, is crap. Moreso in the case of Perl, due to its accessability. 5.6+ has had some pretty good OO support, and Perl 6 promises to be a great leap forward in the language in general, especially OO.

    75. Re:No. by Nataku564 · · Score: 1

      Yeah, Perl 5.8 does have pretty good OO support, but until you get some stronger typing and parameter control its kind of unwieldy. It can still work just as well as any other, but it lacks the static clarity of most of the other languages.

      Of course, Perl 6 seems likely due slightly before the time Duke Nukem Forever comes out ...

    76. Re:No. by Mattintosh · · Score: 1

      Your comment belies your deep misunderstanding of what OOP really is. If you're writing something as simple as a procedural perl script, then the script is the object.

      Java is good at reinforcing this idea by expecting you to name your file the same as the object within, and automatically executing public static void main(String[] args) first. Then you can write procedural stuff to your heart's content within that member function. (I come from the "C++ is god" camp, and I refuse to call it a method. It just sounds gay.)

      Perl and PHP and similar "scripting languages" don't enforce this since they're meant to just cut to the chase and get stuff done. But if you treat them the same way, you're still doing OOP. In fact, "functional" programming is just OOP without enforced objects.

      What's not being taught is pattern recognition. Most people lack the ability to mentally pick something apart, find it's similarities and differences (especially in a fractal or hierarchy), and logically plan out the next level or iteration of the pattern. Personally, I find it frustrating to have to use things designed by mere mortals (hehe...) and worse yet, clean up their messes. Usually I just slash and burn, then replace bad code in the apps I work with. It gets old fast, but at least I don't have to do it twice. Usually.

    77. Re:No. by TigerNut · · Score: 1
      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.

      If beginners shouldn't be dealing with pointers, then don't teach that part until they've grasped all the other aspects of writing procedural code.
      Pointers don't point to memory... they point to things. If you're using pointers to randomly traverse your machine's guts then you deserve what you're getting. There are some things (such as linked lists) that are far easier to construct using pointers than by doing it by maintaining array indices (for example).


      OOP is good for object-oriented tasks. The biggest problem that I see is that when people use C++ they suddenly feel the need to approach everything from an object-oriented perspective, and they begin by picking the wrong objects with the wrong attributes. To pick good object properties, you don't need to understand OOP, you need to understand the problem you're trying to solve and have a clear idea of how you're going to approach it. The key to OOP is design, not the language you're using to do it.

      --

      Less is more.

    78. Re:No. by Decaff · · Score: 1

      OOP is good for object-oriented tasks.

      Depending on the language, that can mean anything. In Smalltalk, every task - even storing something in an array is 'object oriented'. Even in Java, any part of software design can be object-oriented as you can enclose your design in classes for potential re-use.

      The biggest problem that I see is that when people use C++ they suddenly feel the need to approach everything from an object-oriented perspective, and they begin by picking the wrong objects with the wrong attributes. To pick good object properties, you don't need to understand OOP, you need to understand the problem you're trying to solve and have a clear idea of how you're going to approach it. The key to OOP is design, not the language you're using to do it.

      Of course you need to understand OOP to pick good object properties, as you need to understand how those properties can be used for inheritance and polymorphism.

      The big problem I see is developers choosing a language with OOP and not realising all the things that they can use it for. They produce repetitive code that is hard to maintain because they don't know about interitance and polymorphism.

    79. Re:No. by EnderWiggnz · · Score: 1

      funny how MIT starts with functional....

      of course, what the hell do they know.

      --
      ... hi bingo ...
    80. Re:No. by danielk1982 · · Score: 1

      In fact, "functional" programming is just OOP without enforced objects.

      You mean 'procedural' and no its not.

    81. 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.
    82. Re:No. by Mattintosh · · Score: 1

      No, procedural programming is older than functional programming.

      Procedural programming is where everything is in one giant procedure, like QBASIC before GOSUBs.

      Functional programming is where you can break off into "functions", like C. C was never procedural. (Just the fact that it starts in main() makes it functional, much like Java is OO.)

    83. Re:No. by Fjornir · · Score: 1
      Wow... Mind sharing your gripe with OO Perl?

      After school my first programming job I was writing procedural Perl and enjoyed it immensely -- then a job change had me doing OO Perl for a living and I more or less wandered around the office with a goofy grin on my face most of the time I was there...

      Object Oriented Perl is oodles of fun in my opinion. And doing object-oriented work is more or less "free" once you know how to do what you're doing in Perl -- unlike the C to C++ transition I had at the university...

      ...sigh... Sadly I'm no longer working on Perl -- and the work I do seems a lot less like play than it did back then.

      --
      I want a new world. I think this one is broken.
    84. Re:No. by danielk1982 · · Score: 1

      Or is that one of those its not a "method" its a "function" things?

    85. Re:No. by Zeussy · · Score: 1

      When I started C/C++ coding, I found the syntax quite taunting, and even now, the syntax can just be a pain in the fucking ass. I 1st started coding in QBasic back in Primary school, made a few stupid little visual rainbow esc programs thats about it.

      I then did a lot of Delphi programming, I like delphi, fast to prototype in, object orientated, many components already built in, networking support, database connections etc. Very easy to produce a usable product in it, also as a language its not that slow, faster than VB.

    86. Re:No. by CarpetShark · · Score: 1

      I think you're abusing that saying a little. It was never intended to be applied to volcanoes ;) Moreover, the fact that some IT Projects fail massively is an EXAMPLE of the axiom, not a disproof of it.

    87. Re:No. by Hosiah · · Score: 1
      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.

      I've cooked my own goose similarly with likewise comments. Wonder which one of us will be flamed worse?

    88. Re:No. by chthon · · Score: 1

      You should read this.

    89. Re:No. by JulesLt · · Score: 1

      I think Bruce Tate's 'Beyond Java' outlines the problem with the current manifestation of VB - MS have reacted to EXTERNAL criticism of VB from non-VB developers, and tried to impose C++/Java like structure onto VB.

      I think teaching programming with a teaching language is important - I took the root from BASIC on a variety of 8-Bit platforms through PASCAL and then Modula-2 - and currently do most of my development in a flavour of ADA. There's a logical path through those languages in that syntactically they are similar, but each one adds on more structure.

      I think that is the difficulty most experienced developers have in coming back down to beginners level again - we worry about the architecture of our systems and programs from the off, because experience tells us it will matter later - but it is worth comparing 'Hello World' in Java and BASIC to remind yourself of the cost in terms of complexity. Picture yourself explaining it to a complete newcomer.

      The problem is that far too often, commercial development has tried to come to the beginner - i.e. BASIC and PASCAL as commercial development languages in the 80s - rather than making it clear that these are learning tools.

      Not sure about teaching C++ over, say, Java. Obj-C makes far more sense to me as an OO extension of C, but is barely used outside Apple/GnuStep, but some of it's concepts have filtered into Java and C#. It might actually be better to teach OO with, again, a language focused at teaching rather than enterprise development - a Smalltalk dialect? C++ was the reason so many Windows developers stuck with VB and TurboPascal.

      --
      'Capitalists of the world, unite! Oh ... you have' (League Against Tedium)
    90. Re:No. by nietsch · · Score: 1

      and i'm a microsoft hater as much as the next guy.
      The next guy being a certified minesweeper & solitaire expert?

      --
      This space is intentionally staring blankly at you
    91. Re:No. by Anonymous Coward · · Score: 0

      That's excellent! It gets you thinking about the machine, rather than which trendy language is currently in favour. Undergrad physicists at Oxford have to build a basic ALU, using gates. I wish I had been given a project like that. I bought myself a microcontroller (a 68hc11), wire wrapped a board and wrote my assembler. It taught me a lot, I'd recommend everyone having a go.

    92. Re:No. by Nick+Gisburne · · Score: 1
      I found the syntax quite taunting

      That happened to me - I just had to create the smallest C++ program and it would call me names and tell me I was an idiot. These things can scar you for life.

      --
      Watch my YouTube atheist video blog (user NickGisburne2000) for arguments against religion
    93. Re:No. by try_anything · · Score: 1

      I disagree wholeheartedly with this. The first thing a beginner encounters in Java is a truckload of infrastructure and boilerplate that only makes sense to people who have worked on real programming projects. I want a beginner's critical thinking engaged and encouraged from day one; I don't want to start him out doing a bunch of work he doesn't understand the reason for. Either he'll get used to working that way (and I'll be responsible for lowering his IQ), or he'll decide that programming is for people with a slavish disposition.

    94. Re:No. by Butterspoon · · Score: 1
      Ah you youngsters don't even know you're born! In my day (computer science also at Cambridge) we had to program for the 6502 on BBC Micros. And IBM System/370 assembler. And Pascal. And C. And Snobol. And Lisp. And FORTRAN. And Modula-2. And BCPL. And Prolog. (Continue ad nauseam...)

      However, we did also do some honest-to-goodness *computer science* (algorithms, complexity theory, and so on), which I think is going to offer deeper benefits in the long run than your particular choice of programming language.

      --
      pi = 2*|arg(God)|
    95. Re:No. by Reservoir+Penguin · · Score: 1

      Why? Maybe it's ok for engineer types. Programming is a Mathematical activity so why torture your self, the best language to start is Lisp/Scheme.

      --
      US-UK-Israel: The real Axis of Evil
    96. Re:No. by maxwell+demon · · Score: 1

      You mean DNF will be written in Perl 6?

      --
      The Tao of math: The numbers you can count are not the real numbers.
    97. Re:No. by HFh · · Score: 1
      "Language is a dialect with an army and a navy" -Max Weinreich

      The earlier poster's comment is like saying "Would you teach someone English by first teaching them Spanish?"

      Peace.

    98. Re:No. by Jesus_666 · · Score: 1

      I always knew it: C++ is just Haskell with a dumbed down interface. ;)

      --
      USE HOT GRITS WITH STATUE OF NATALIE PORTMAN (NAKED AND PETRIFIED)
    99. Re:No. by DarkProphet · · Score: 1
      Perl is perfect to start out with. Hello World is one line, and it allows for most of the OO features of the "big" languages.

      Hello world, in perl:
      print "Hello World!\n";


      In VB.Net:
      Console.Writeline("Hello World")

      Seriously, which one of these examples looks like it is using OO features? Anyway, I would have to disagree with teaching Perl as a first language. It was my first langauge, and I can't say that it benefitted me in the long run. Perl can be abused and used 'incorrectly' far easier than a .Net language. For example, $perl_variables give no context about what sort of variable is being stored. Is it an Integer? Is it a String? Is it an object reference? .Net is much more strict about this, and the IDE will carp if you don't specifically declare the variable type and the code won't compile. The perl interpreter isn't as picky about strong-typing in general and this can lead to all sorts of confusing debugging scenarios.
      --
      What could possibly hurt the security of the American people more than giving our own government the ability to hide its
    100. Re:No. by HappyHead · · Score: 1

      Definitely. Speaking as someone who has had to mark, debug, edit, and update other people's code a lot, I think that everyone who does any programming should always start out by learning Python. Not because it's a fully featured and powerful language, not because it's easy, interpreted versus compiled, or anything else like that. My reason for wanting people to start their programming with Python is pure self-interest.

      Python is indentation-sensitive.

      Python programmers write easy to read code.

      That, when you are trying to figure out why the interest is being added to someone's account at the wrong day of the month, or why the pixels are being inverted in that sprite but not this one, or why in the world this bit of javascript is always crashing the browser when you move the mouse to the left (but not up/down, or to the right) is more important than anything else at all.

    101. Re:No. by labratuk · · Score: 1
      at the command prompt type: python

      For an even better experience, try ipython. Python prompt with tab completion, coloured output, dynamic introspection, debugger integration, nicer backtraces and much more.
      --
      Malike Bamiyi wanted my assistance.
    102. Re:No. by petermgreen · · Score: 1

      Absolutely not. I find it hard to think of any mainstream uses of C that can't now be handled by a safer, more suitable managed language.
      the biggest one is running on virtually anything. no other language even comes close. With many processors (particularlly low end stuff) the choice basically comes down to C or assembler.

      You always get sloppy coding. In Java you are usually protected from the results.
      exactly so you get away with being sloppy and then fail when you are forced to work in a language that requires care. IMO its best to teach a language thats as close to the metal as possible (assembler for some simple processor like a PIC may even be a good starting point) first then teach more advanced tools later.

      sure if all you ever wan't your students to do is code similar apps over and over in an application category where performance isn't considered to matter (e.g. boring buisness apps) then go ahead teach people the high level languages first and let them think that what goes underneath is black magic.

      i'd liken it to calculators. sure they are usefull tools and kids should learn that they exist but we don't teach schoolkids that multiplication and division are black magic that they can never hope to understand.

      --
      note: i'm known as plugwash most places but i screwd up registering that here somehow in the past and now can't register
    103. Re:No. by Anonymous+Brave+Guy · · Score: 1
      [OOP] is far more than just syntactic sugar, introducing ideas such as polymorphism which are fundamental to a the power of OOP development.

      But is it, really?

      I'm not knocking the power of polymorphism, but the concept exists outside the world of OOP as well. Consider the nature of pattern matching on disjunctive types in several functional programming languages, for example.

      Similarly, I'm not knocking the power of OOP-style function dispatching, but one has to view them in context. C programmers have been using look-up tables of function pointers since a long time before someone thought of "virtual function calls".

      And again, I'm not knocking a data-centric programming style, but you can write data-centric code without trying to turn everything into an object. People have talked about abstract data types and maintaining invariants since a long time before the OOP label took holf. None of this stuff is really new, it's just higher profile now.

      Taking these ideas to the logical conclusion, we reach the concept that methods are attached to objects, or messages are sent to objects, or whatever terminology your particular language uses for this idea, and the resulting behaviour can be changed to accommodate derived object types.

      However, this approach has limitations of its own. It often creates a different syntax for function calls. It often makes the first parameter of the function special. Use of inheritance forces a hierarchical view of the relationships between data types that may not be the most flexible representation.

      All of these things can actually get in the way of sound general programming practices. Almost as bad, they prevent OOP playing nicely with other programming idioms that, as you observed yourself, should be orthogonal to the use of objects, not in competition with it. I realise that not all OO languages have these limitations, but the mainstream ones all do, and I would argue that this is what most people think of when they talk about OOP.

      I write code for a living. I've worked on large-scale projects in OO languages, and seen the power of an effective design taking advantage of polymorphism first-hand. But I also have an academic CS background, and experience of other programming styles. After many years of doing this stuff, I'm more convinced than ever that while OO provides a model of certain ideas that is useful because it's accessible to a wide range of programmers, ultimately it doesn't really have any unique ideas of its own. It simply emphasises particular aspects, and presents a particular view of some general ideas.

      --
      If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
    104. Re:No. by Decaff · · Score: 1

      the biggest one is running on virtually anything. no other language even comes close. With many processors (particularlly low end stuff) the choice basically comes down to C or assembler.

      True, but Java use in this area is growing dramatically.

      IMO its best to teach a language thats as close to the metal as possible (assembler for some simple processor like a PIC may even be a good starting point) first then teach more advanced tools later.

      For technical use, sure. For general use? I don't think so.

      sure if all you ever wan't your students to do is code similar apps over and over in an application category where performance isn't considered to matter (e.g. boring buisness apps) then go ahead teach people the high level languages first and let them think that what goes underneath is black magic.

      This is just not true. Performance matters in business apps too, yet there is simply no need to understand the architecture. The optimisation techniques used by general coders don't need such an understanding. There are many very high-performance multi-threaded portable applications written today that have not required the developer to know anything about the underlying processor architecture.

    105. Re:No. by Decaff · · Score: 1

      Almost as bad, they prevent OOP playing nicely with other programming idioms that, as you observed yourself, should be orthogonal to the use of objects, not in competition with it. I realise that not all OO languages have these limitations, but the mainstream ones all do, and I would argue that this is what most people think of when they talk about OOP.

      Yes, but why should this failing prevent the use of OOP when it's use alone (without the use of other idioms) is more powerful than procedural alone?

      write code for a living.

      Me too.

      I've worked on large-scale projects in OO languages, and seen the power of an effective design taking advantage of polymorphism first-hand.

      Me too.

      But I also have an academic CS background, and experience of other programming styles.

      Me too.

      After many years of doing this stuff, I'm more convinced than ever that while OO provides a model of certain ideas that is useful because it's accessible to a wide range of programmers, ultimately it doesn't really have any unique ideas of its own. It simply emphasises particular aspects, and presents a particular view of some general ideas.

      And I could not disagree more. I think ideas such as inheritance and polymorphism are unquestionably unique and distinctive aspects of OOP, and vastly underused in the software industry. I think their use needs to be far more widely encouraged in order to improve developer productivity and code quality.

    106. Re:No. by PitaBred · · Score: 1

      If you're a parent, then you definitely need to read this.
      Don't worry, it's short. And it may help your kids.

    107. Re:No. by bateleur · · Score: 1

      As it happens, my kids aren't babies anymore. And just as well too, or I might have taken that article far too seriously and worried that I was doing all kinds of things wrong. Don't make me do the annoying parent thing and type out a huge list of how smart my kids are. ;-)

      Fortunately I understand what they're referring to with the benefit of hindsight. No - this isn't the topic we're discussing. Computer languages which condone "sloppy" usage are not about replacing good practice with malpractice. The emphasis is on accepting any communication that is not ambiguous, which is also exactly what one does with a child.

      When a two year old says "Nana please!" and points to the fruit bowl, you will only cause frustration and confusion if you pretend not to understand the request. By all means offer corrections (compile time warnings), but give (or refuse) the fruit anyway.

    108. Re:No. by jgrahn · · Score: 1
      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.

      ?! Why on earth would someone care about BASIC in 2006? I can only assume that you haven't tried any modern ('modern' as in 'recent', not necessarily groundbreaking) languages.

      With the approach to learning you have, Python seems like a perfect match. A subset of it maps well to a traditional BASIC and (unlike in Java) you can ignore the OOP crap. Unlike BASIC, Python is not a dead language, is widely used today, and works well for many tiny, small and medium-sized projects.

      I only wish we still had command line interpreters around.

      The interactive prompt is one of the best things about Python.

      Disclaimer: I suppose I am a Python fanboy. I expect Ruby, Lua and various other modern interpreted languages fit your requirements, too.

    109. Re:No. by Anonymous Coward · · Score: 0

      Actually, the semicolons are for me (the human). They are to make multi-line statements and multi-statement lines easier to write. A compiler can detect a newline just as easy as it can detect a semicolon. But often a human will want to add newlines to help make sense of things (especially in long lines). There are two basic syntactic decisions to make with regard to lines. Either newlines are significant and you need a special character to demarcate multiple-line statements and/or multiple-statement lines. Or some other character is significant and you need that character at the end of every statement. algol-like languages chose the latter because newline is a formatting character and they wanted to make formatting orthogonal with structure so that the programmer could define whatever formatting was most convenient. This was what drove a lot of syntactic decisions for algol-like languages. They wanted to escape the prison of formatting in FORTRAN.

      Now, Python formatting is a long distance from the terror that was FORTRAN, but it has little quirks all on its own. In python, a colon ends control statements and a newline is meaningless inside of a parentheses and ends a statement outside of parentheses. This means that normally multi-line commands are transparent because often there is a function invocation or other occasion for parentheses. But there are random times when it just seems to break down for not reas... until you start matching parentheses to find out where the newline is.

      This is not to knock python. The formatting syntax of python is in many ways cleaner and more elegant than in the languages which use braces and semicolons. But remember that the braces and semicolons serve a human purpose and if you get rid of them, you will likely end up using workarounds that fail in mysterious corner cases.

      btw, C/C++ has the worst of both worlds with respect to line endings. Normally a newline doesn't matter, so semicolons are used everywhere to denote statement endings. But there are cases where it does matter (strings, c-preprocessor), C/C++ has its own clumsy workarounds to allow formatting newlines in those cases (implicit concatenation of adjascent string literals, backslash-newline). Which is nuts.

    110. Re:No. by Anonymous+Brave+Guy · · Score: 1
      Yes, but why should this failing prevent the use of OOP when it's use alone (without the use of other idioms) is more powerful than procedural alone?

      It certainly shouldn't prevent its use -- one should always choose the best tool for the job -- but remember that we're talking about teaching here. In that context, it is impossible to teach OOP alone; it inherently builds on the concepts of procedural programming.

      I don't quite understand what you're driving at when you talk about teaching OOP first and from the start. How can you teach OOP without teaching, say, functional decomposition and structured programming? You wouldn't have any tools to write the methods with! How can you teach OOP without teaching modular design, and separation of interface from implementation? You can't appreciate the organisational power of classes without understanding encapsulation.

      And I could not disagree more. I think ideas such as inheritance and polymorphism are unquestionably unique and distinctive aspects of OOP, and vastly underused in the software industry.

      This is interesting. We seem to have similar backgrounds, and we've obviously both thought about this a fair bit, yet we seem to have very different experiences and to have drawn completely opposite conclusions. I would say that inheritance was the most over-used tool in the OOP world; I've seen countless occasions where composition or some other form of collaboration between classes would provide a far more flexible design. Indeed, I have often wondered whether the only time one should use inheritance in a robust OO design is when polymorphism is to be employed, since anything else binds more tightly without gaining any particular benefit over composition.

      I think perhaps we'll just have to agree to disagree here. I don't see that either inheritance or polymorphism is unique to OOP, as mentioned in earlier posts (c.f. pattern matching and disjunctive types in the case of polymorphism). One should certainly teach them, but if we're to achieve the greater depth of understanding that we both seem to want, I think you have to come at it by teaching the wider implications of polymorphism, which first requires understanding of many other concepts. I don't believe that throwing students in at the deep end with Java or the like really works, because it's been common practice in many academic institutions for years; if it worked, we wouldn't be having this conversation.

      --
      If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
    111. Re:No. by Decaff · · Score: 1

      In that context, it is impossible to teach OOP alone; it inherently builds on the concepts of procedural programming.

      I don't quite understand what you're driving at when you talk about teaching OOP first and from the start. How can you teach OOP without teaching, say, functional decomposition and structured programming?


      I had what I thought was a really good example of how to do this from years back - it was the tutorial for Digitalk Smalltalk in the mid 80s. It had a superb introduction to OOP that started from the simple basis of everyday arithmetic and how this could be considered to be messages, and built up from there. This was development for absolute beginners - no mention of functional decomposition or structured programming. And it worked! It had been demonstrated to work a decade earlier during the early development of Smalltalk.

      I am not saying this is the way I would do it - just that you can teach pure OOP in isolation.

      I would say that inheritance was the most over-used tool in the OOP world; I've seen countless occasions where composition or some other form of collaboration between classes would provide a far more flexible design. Indeed, I have often wondered whether the only time one should use inheritance in a robust OO design is when polymorphism is to be employed, since anything else binds more tightly without gaining any particular benefit over composition.

      This is why we differ, or rather, why we don't! I was not talking about the OOP world - I was talking about how languages that have the potential to use OOP for development are used in practice by a very large number of developers - about how developers are using C++ like C, or how they are using Java as simply a set of rich libraries, and barely using any OOP facilities in their own code. I agree that inheritance can be overused by people who use OOP heavily, but that was not my point.

      I don't believe that throwing students in at the deep end with Java or the like really works, because it's been common practice in many academic institutions for years; if it worked, we wouldn't be having this conversation.

      And I agree with this too, because Java is a complex mixture of paradigms.

    112. Re:No. by PeterBrett · · Score: 1
      Why? Maybe it's ok for engineer types. Programming is a Mathematical activity so why torture your self, the best language to start is Lisp/Scheme.

      Because computer scientists don't design integrated circuits, engineers do. So learning how processors work at the fundamental level is quite a large component of our information engineering course this year.

      At the other end of the scale, our mathematics course this year contains MATLAB & C++ software engineering[1]. But by working at both ends of the spectrum, I think we get a better view of how programming works.

      [1] Notably, the emphasis in the C++ course is on the importance of starting out with a good design on paper before writing any code... AFAIK, we don't do any pointer arithmetic or object oriented stuff until the specialized computing courses in 3rd year. I personally think Python would have been a better language to start us off with...

    113. Re:No. by Nataku564 · · Score: 1

      Yes, with full support for all 7 layers of the fully realized OSI model.

    114. Re:No. by Nataku564 · · Score: 1

      Well, the lack of needed OO support was kind of the reason why I thought Perl would make a good language. Its easy to get into and do non-OO stuff at first, instead of throwing you headlong into OO which, IMO, first year students are not ready for.

      Besides, aren't you missing the static main with the args, and the surrounding class, and the system import? The perl code I quoted will run as it is.

      With the .Net stuff, you have to at least explain the reason for all these things in a cursory way. In the case of Perl, you just have to tell them that the print command prints stuff.

    115. Re:No. by bensch128 · · Score: 1

      I have a serious problem with python and whole "lets use indentation to denote scope" thing.
      What the hell does this mean?

      proc doIt(b):
          a = 0
          if b==true:
                  a++

                  a++
          return a

      Does doIt(true) return 0, 1, or 2? What about doIt(false)? How could a casual reader tell?

      Seriously, Im starting to believe that python programmers have their heads shoved up their asses when it comes to readability and code maintance. Sure it might be easy to write the first time around when you can happily dispense with the braces or the if-end pairs but what about in 6 months when the junior programmer has to fix a bug in your code and has 1 day to do it?

      Jeez,
      Ben

    116. Re:No. by Quintessentially · · Score: 1

      I do not think that word means what you think it means.

      I believe you mean Structured Programming; Functional refers to programming languages like Lisp or Scheme.

    117. Re:No. by DarkProphet · · Score: 1

      With the .Net stuff, you have to at least explain the reason for all these things in a cursory way. In the case of Perl, you just have to tell them that the print command prints stuff.

      Yes, that is definitely true. I guess it comes down to whether or not one believes teaching OO right away is necessary or appropriate. I started off with perl (well QBASIC, but I don't really count that ;-), and sometimes I think that I'd have been better off learning OO concepts around that time as well. OTOH, I've made some pretty robust applications with just the perl core.

      /me shrugs

      --
      What could possibly hurt the security of the American people more than giving our own government the ability to hide its
    118. Re:No. by Nataku564 · · Score: 1

      I think for the very first semester or two, OO is just a bit too much. Since procedural logic is very much a part of OO ( or any other style of programming ), I feel its important to get that down early. Its also a much easier concept for people to grasp.

      Of course, this is how I learned, and I seem to have turned out reasonably well, so I assume it would work for others. For me, the starting language was C++ ... the whole throw them to the lions and see who survives idea. 20 hour programming assignments every week (I usually did them in half the time, but others didn't catch on so quick) meant a 50+% drop rate in the second semester of programming. They did go into objects, and the basics behind object oriented programming, but it wasn't stressed like a true OO class.

      I do believe OO should be taught right after you figure all this stuff out, though. The OOP class at my university was like a junior/senior level course, and I think it should probably be held right after the procedural/OO intro.

  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 Anonymous Coward · · Score: 1, Interesting

      Clicking on a wizard isn't the same thing as programming.

      The same can be said for any modern IDE. VB, PERL and some of the other more forgiving languages are probably poor choices since they don't reinforce strong typing and syntax.

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

    3. Re:Bad idea by FishWithAHammer · · Score: 1

      You don't have a clue about what you're talking about.

      As of VB5, VB objects could be instantiated, given constructors, etc., just like any other language you'd mention. The syntax was a bit different, but the concept was the same.

      Also as of VB5 (though it may well have been sooner), it was possible (and in most versions of VB6 I've used, the default) to have "Option Explicit" active, aka typesafety that required explicit conversions and declarations.

      Mod parent -1, clueless.

      ~Ed

      --
      "You can either have software quality or you can have pointer arithmetic, but you cannot have both at the same time."
    4. Re:Bad idea by RetroGeek · · Score: 0, Troll

      learn assembler first so that you know what's REALLY going on inside that computer.

      Try machine language! And entering it directly into RAM using paddle switches. Then setting the CPU bootstrap address to the beginning of your code. And the RAM LED addressses to where you placed you results.

      (Did this in the advanced digital class)

      --

      - - - - - - - - - - -
      I am a programmer. I am paid to produce syntax not grammar. Deal with it.
    5. Re:Bad idea by AKAImBatman · · Score: 1

      Uh, yeah. I did quite a bit of programming in VB5. The frustrating thing was that I could never set up an event system because objects were always static. Microsoft's documentation included with VB claimed that's how it was supposed to be. If you know how to implement proper instantiations, and pass objects as instances, please share. I'd love to know, because Microsoft sure as heck never documented it properly.

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

    7. Re:Bad idea by object88 · · Score: 1

      If you know how to implement proper instantiations [in VB5], and pass objects as instances, please share. I'd love to know, because Microsoft sure as heck never documented it properly.

      Um, if I understand what you're saying, try using VB6? Just as there was a huge difference between VB6 and VB.Net, there's a huge difference between VB5 and VB6.

    8. Re:Bad idea by Anonymous Coward · · Score: 0

      The first thing that I do is turn on "Option Explicit" and "Option Strict" in VB.NET. Typed varibles are enforced. Want to put an integer into a string? You must use .ToString method of the integer varible to make it work.

      Don't base all of you assumptions on an old version on the language. Also don't think that what you consider to be the pinnacle of all languages to be the easiet for someone else to learn.

      There are problems and solutions. Coding is only part of the journey, not the destination. Get over yourself.

    9. Re:Bad idea by AKAImBatman · · Score: 1

      I have used that as well, though I will grant you that I'd pretty much given up on Microsoft's interpretation of "Object Oriented Programming" by that point. If you've got some documentation that shows that "real" objects were possible in old-style VB, please do share. I'll be throwing things at the walls for all the trouble that could have saved me back then, but I'd still think it's a nice thing to know. :-)

    10. Re:Bad idea by AKAImBatman · · Score: 1, Informative

      The first thing that I do is turn on "Option Explicit" and "Option Strict" in VB.NET. Typed varibles are enforced

      And how will a new programmer understand how to use that option, why it should be on, or even what it does? If you've got them in a classroom, you can force all the machines to be configured that way, but how much of their education will consist of them screwing around at home?

      Not to mention the fact that newbies can be dangerously clever. If their program doesn't compile, they're going to work hard to make it compile. At some point they might start fiddling with compiler options. (*Shiver* I remember doing stuff like that. Not a good idea.) Once they figure out that turning off that option makes their programs compile (and run flawlessly!), they'll take it to heart that they always need to do that. They *might* read up on what the switch does, but since they don't understand it, they'll assume it's an "Experts Only" thing and keep it off.

      Before you know it, all your classroom machines will have their settings reversed. Oi Vey!

      Also don't think that what you consider to be the pinnacle of all languages to be the easiet for someone else to learn.

      I actually recommend BASIC (the real thing) to start off with. See my other posts in this topic for more info. :-)

    11. Re:Bad idea by Anonymous Coward · · Score: 0

      I think that a lot of the "ease" of modern programming comes down to IDE tools and integration.
      A child who learns to walk only with crutches will not be able to stand on their own feet when those crutches are not available.
      Learning to program without all of the fancy IDE tools forces you to actually know what you're doing, and think about it. It develops skills you will be able to use to make yourself a better programmer, and if you ever get put into a job where you must write without the IDE, having started your learning with it will only hurt you.

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

    13. Re:Bad idea by Anonymous Coward · · Score: 0

      these days, it's tougher to "know what's REALLY going on" even with assembly, with all the pipelining and microcode layers and multiple execution units, etc. on CPUs. still, it'd give you better appreciation of inside working than java and other "interpreted" executions.

    14. Re:Bad idea by artlogic · · Score: 1

      I don't know about VB5, but in VB6 real objects exist for the most part. You can't do some of the more interesting things, like inheritance or polymorphism, but the base is there. Basically, just create a class module. Everything you put in the class module (functions, properties, etc...) are a part of your class definition. Then, instead of calling these via the class module (like a static object, or a regular module would be used) instantiate your object by using code like this:

      Dim objTest As clsTest
      Set objTest = New clsTest

      Then you've got an instance object. Combined with strict usage of Option Explicit, VB6 can actually do OOP reasonably well. The biggest problem is the lack of inheritance. I've gotten around this by creating a instance of the object I wanted to inherit in my Initialize routine and then exposing the methods I wanted to call via public methods in my class that actually call that object's methods.

      You can also do some interesting things in VB6 by using WithEvents although there are some limitations - but I managed to create objects to do TCP/IP communication that would throw events (i.e. non-blocking). Additionally, VB6 has Static and Friend keywords with can define the scope of it's functions. Static pretty obvious, but Friend... I imagine there must be some sort of limited inheritance - though I can't say how that would work.

      --
      "A Mathematician is a machine for turning coffee into theorems." ~ Paul Erdos
    15. Re:Bad idea by Anonymous Coward · · Score: 0

      And how will a new programmer understand how to use that option, why it should be on, or even what it does?

      Yeah, and new C programmers never learn to use #include

    16. Re:Bad idea by westlake · · Score: 1
      As an expirienced user, I have no problem manually typing...

      I think this makes the case for the IDE for the beginner.

    17. Re:Bad idea by object88 · · Score: 1
      A child who learns to walk only with crutches will not be able to stand on their own feet when those crutches are not available.

      Have you ever watched a child learn to walk? A child does not just suddenly stand up and amble over to the couch. A child crawls, then learns to stand up by holding on to something, then takes a few steps with the help of a parent or by leaning on a nearby object. Only then, once it's surefooted, will it walk. All children learn to walk with "crutches". It's ambition that makes them give up crutches.

      Learning to program without all of the fancy IDE tools forces you to actually know what you're doing, and think about it.

      Or it will cause extreme boredom and frusteration. Not necessarily, but quite possibly.

      ...and if you ever get put into a job where you must write without the IDE, having started your learning with it will only hurt you.

      Alternately, you will figure out how to manually add the boilerplate code (since you're already familiar with the language structure), then get on with doing what you already know-- the meat of the programming.

    18. Re:Bad idea by AKAImBatman · · Score: 1

      Nice. Man do I wish that VB6 was available when I was doing VB coding. (If you can call it that.) It would have made my life so much easier. Of course, I would have preferred not to do VB in the first place, but there were just too many OS features I needed to interface with in the projects I did.

      I suppose it's possible that was in VB5, but there was no documentation that suggested it at the time. (Not that Microsoft's online help was worth much.)

    19. 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?
    20. Re:Bad idea by object88 · · Score: 1

      I think this makes the case for the IDE for the beginner.

      Ah, if only I could have compiled my comment before running it, I would have seen my error. Oops. I never could spell that word consistantly. :)

    21. Re:Bad idea by wonkavader · · Score: 1

      What a reactionary post! And right on the money.

      If you want to be a programmer, you can read some books, solve some problems, have some successes, get a job, and do what everyone else does.

      And that's a perfectly understandable end for some people.

      But if you want to be a good programmer, some studies in comparative anatomy is in order. Learn VB (many that puts a bad taste in my mouth as I write it) if that's where you want to start, but then learn C, and yeah, some assembly. Figure out what happens in assembly and C, and you'll understand what's going on under the hood in VB.

      (So you can then reject it in favor of perl.)

      The key is that, while a good programmer doesn't always know what's going on all the way down his program, he has a good idea of the way it's working at any point in the code.

    22. Re:Bad idea by slashdotnickname · · Score: 1

      Clicking on a wizard isn't the same thing as programming.

      Yes it is. It's just not your definition of programming. An assembly programmer might not think much of your "computer programming" skills if all you use is a high-level language like Java, but programming is relative to the context of what you're programming. In a development environment rich in shortcuts and wizards, knowing how to use the right shortcuts/wizards properly to achieve some goal is just another form of programming.

    23. Re:Bad idea by presleyster · · Score: 0

      You either didn't read the write-up, or your h8 for MS has gotten the best of you. You're speaking of VB6 era VB, which is dead(ish). The writeup did say: 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. Which is the long way of saying VB6 != VB.NET. Lrn2Read, pls. Then you go off... 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. I dunno about you, but I use all the tools in my toolbox to write software, not just the one that makes the prettiest interface. VB.NET/C# are great RAD tools, but instead of suggesting a better language or tool and giving a comparison, you painted us up with your nits over a programming language. Good job!

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

    25. Re:Bad idea by Anonymous Coward · · Score: 0

      Because you can compile so many programs without #include. If you think that's the same thing as a switch to turn on type checking, you need to go back to school and ask for a refund.

    26. 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
    27. Re:Bad idea by AKAImBatman · · Score: 1

      Hmmm... lemme see. I said, "fixed in VB.NET"? Check. The rest of it still holds true.

      instead of suggesting a better language or tool and giving a comparison, you painted us up with your nits over a programming language.

      Better choices. =)

    28. Re:Bad idea by anomalous+cohort · · Score: 1
      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.

      Your argument is against the VS.NET IDE and not the VB.NET language. If you just use the always freely available SDK and avoid the VS.NET IDE, then you will have to code every letter and you will learn a lot more about .NET too.

    29. Re:Bad idea by Eric+Dryden · · Score: 1

      You speak of typing as if it is manual labor. I would not like to imagine your physical proportions nor do I believe I can.

      You fall into the same category of people that believe loading cities with overpopulated underpaid schools will somehow cure public "idiocity".

      No matter what language a programmer programs in, it is the understanding of programming concepts and logical REASONING that makes a good programmer, no amount tool-tips or auto-completion can change that. There are some things that cannot be taught. If you cannot program on notepad, you cannot program on an IDE, and you cannot program, it's as simple as that. Whether you can not program in notepad or not program in an IDE the fact stands that you cannot program.

    30. Re:Bad idea by object88 · · Score: 1

      People who have learned assembler are the ones who understand why [snip] will usually run faster than [snip]

      No, it's fairly obvious that one will run faster than the other. For a non-square pixel area, one will no-op for a range of pixels, or quite possibly crash before running to completion. But I'm guessing that you mistyped your example.

      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.

      I'm not saying that someone shouldn't learn assembly, but generally speaking beginners aren't going to care about the kind of optimization that learning assembly will teach. Not only that, but the scope of doing anything more than absolutely trivial tasks in assembly is going to be completely overwhelming to a beginner.

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

    33. Re:Bad idea by Just+Some+Guy · · Score: 1
      No, it's fairly obvious that one will run faster than the other. For a non-square pixel area, one will no-op for a range of pixels, or quite possibly crash before running to completion. But I'm guessing that you mistyped your example.

      Bzzzt - wrong answer. Yes, that was a typo, but no, that's not why one would be faster than the other. 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. For large images, the second example nearly guarantees an extremely high miss rate.

      But that they don't usually teach that stuff in VB 101. It's not that they inherently couldn't, but that they just don't. Your typical ASM class, though, will coerce you into learning more about what your silicon is actually doing than you might want to know. That's good stuff to know, even if you don't ever plan to program in ASM again.

      --
      Dewey, what part of this looks like authorities should be involved?
    34. Re:Bad idea by object88 · · Score: 1

      No matter what language a programmer programs in, it is the understanding of programming concepts and logical REASONING that makes a good programmer, no amount tool-tips or auto-completion can change that.

      Indeed, that's true. But we're not talking about a good programmer, we're talking about a beginner programmer. The transformation from beginner programmer to good programmer can be aided by tooltips, auto-completion, and other IDE-related tools.

      Given two beginner programmers, one using an well-rounded IDE, the other just notepad, and a programming task, I think that the one with the IDE will be well into the debugging stage before the one with notepad has written all his code. Neither of them will grasp the Windows message loop yet, but the IDE user will at least have some hands-on experience with the "other half" of programming. And that goes a long way toward concrete understanding programming concepts and logical reasoning.

    35. Re:Bad idea by bubkus_jones · · Score: 1

      [quote]Or it will cause extreme boredom and frusteration. Not necessarily, but quite possibly.[/quote]

      Shouldn't someone who's really interested in becoming a programmer be able to make it interesting for themselves (or find someone who knows what they're doing to help them)? Do you really want people to think programming is simple, or would you rather have people experience the real grit of programming to see if they like it or not?

      How many here complain about those who create webpages through point-and-click programs like Frontpage? How many say that they should learn to handtype the code in a simple text editor before they go onto more professional tools? It's the same with programming, or with ANYTHING. You must learn the basics before you can get fancy. As you said, you must learn to crawl before you can walk.

    36. Re:Bad idea by Danse · · Score: 1

      You should check out VB.NET (2005 version preferably). It's what VB should have been all along. Has everything that an OO language should have, and then some really, and it all seems to work as it should. It's basically the same as C#, but with VB-like syntax.

      --
      It's not enough to bash in heads, you've got to bash in minds. - Captain Hammer
    37. 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.

    38. Re:Bad idea by Danse · · Score: 1

      And how will a new programmer understand how to use that option, why it should be on, or even what it does?

      Because I assume they aren't just sitting down and trying to teach themselves how to program. And every tutorial and beginner's book on VB will tell you to turn it on (in fact I believe it defaults to on in VB6 and VB.NET). If they really want to know what it does, they could just put the cursor on it and hit F1. Easy as that.

      --
      It's not enough to bash in heads, you've got to bash in minds. - Captain Hammer
    39. Re:Bad idea by Anonymous Coward · · Score: 0

      unless you're willing to call Python or Java "toys" because they don't support multiple inheritance

      FYI, Python supports multiple inheritance.

    40. Re:Bad idea by Anonymous Coward · · Score: 0

      I'm going to have to agree here. I'm doing a simple DB interface in VB.Net, and I've spent 50% of my time trying to explain the other people in my class that it takes more than just dragging and dropping to do things like that.

    41. Re:Bad idea by Danse · · Score: 1

      Hmmm... lemme see. I said, "fixed in VB.NET"? Check. The rest of it still holds true.

      Well, you most certainly could create real objects in VB6 as well. They could be instantiated and everything. You couldn't do inheritence, but other than that they were just like objects in many other languages. Yes, you could create modules that just had a bunch of functions and couldn't be instantiated, but then you weren't creating real objects. You were just adding functions to your program. Now, there were other problems with your post as well.

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

      Fixed in VB.NET. It doesn't create any more code for you than most other languages, and what is created is understandable and explained by most any tuturial or book.

      VB also loses major points for failing to include typed variables.

      You probably understand by now that every version of VB from 5 to the present has had typed variables. Yes, you had to use Option Explicit, but they work as expected, and everything out there tells you to use option explicit.

      The lack of useful documentation and/or a good documentation browser only serves to increase confusion.

      VB6 and VB.NET have very good documentation. You might want to update your knowledge of the language before bashing it based on a 10 year old version.

      --
      It's not enough to bash in heads, you've got to bash in minds. - Captain Hammer
    42. Re:Bad idea by object88 · · Score: 1

      Shouldn't someone who's really interested in becoming a programmer be able to make it interesting for themselves (or find someone who knows what they're doing to help them)?

      First impressions last a very long time, and you want the first impression to be a good one. You want people to believe that they can achieve something interesting. And if they're really interested in programming, they will go beyond the scope of that first project on their own. When they come to their first serious project, they will expirience "real grit" sure enough, but at least at that point they've have some confidence and experience with their tools.

      Coding everything by hand does not mean you understand the basics.

    43. Re:Bad idea by Eric+Dryden · · Score: 1

      I believe otherwise, if anything the IDE will oversimplify the process and take away from the COMPREHNDING EXPERIENCE, though it may add to a falsified illusion of true learning. No IDE makes that difference, COMPREHNSION is a process in and of itself it happens independently. Let us assume that in the most ideal of situation, merely for the sake of argument, that a programmer uses an IDE so simplistic and easy to use that it completely changes the language that it is meant to work with, this new programmer will have been learning a language completely different in essence, ideas such as programming style will be lost as the programmer becomes more and more accustomed to the comforts of the IDE. This is the most extreme situation and in many ways it stands true for most modern IDEs. This is most evidently a matter of opinion and I have reason to believe that no matter how much we disagree neither of us can truly change the other.

    44. Re:Bad idea by Audacious · · Score: 1

      I still go with the age old adage of "You have to learn how to crawl before you can walk" or maybe it's walk before you run, look before you leap? Whatever....

      Anyway, I'd say someone should start small and work their way up to the more modern languages. So my suggestion would be:

      1. First learn something like the Apple ][+.

      1a. Learn Applesoft and maybe some DOS 3.3 or ProDOS assembly. This will make you thank god someone came up with floating point math processors and disk drives that don't require knowledge of how to time when to read/write something to a disk drive.

      2. Then learn something like the Apple //gs, Atari, or Amiga.

      2a. So you can learn that color really makes a difference. Here you can learn Pascal, about compilers, and the like.

      3. Then try the Macintosh and try out Windows.

      3a. And ask yourself why Apple, after going all the way to the //gs with color suddenly decided that black and white was all the rage. You can also learn a lot about structured programming, handles, Pascal, C, FORTRAN, COBOL, and lots of other useful information.

      4. Then try Linux and you will go - why didn't everyone go with this to begin with? You can also then learn OOP, C++, Ruby, Python, PHP, and everything else.

      If you give six months to each of the above you will be a lot better off knowing why some of the things that are still drawbacks to OSs are still in there. Some are just carry-overs from yesteryear. The important thing though - is that you will at least have a grasp of the "why" certain things happen like they do. (Or maybe at least you'd have a hint as to the why.)

      For languages I'd say Applesoft Basic first, then maybe QBasic (which I hear is now free from Microsoft), then FORTRAN (to learn the separation of variables into float, int, etc...), then Pascal (to help with the structuring), then C, then C++, then into Python, Ruby, whatever.

      The thing is - if you do not get the basics, then you wind up like the System Programmer I once met. Didn't even know how to make a cursor move on the screen. "Duh....the terminal does that. I can't control what it does." Ever hear of ASCII control codes? "Nope. What are they?" Ever hear of the curses routines? "Nope. What are they?" Yeah. System's Programmer.

      Or you get the System Operators who were running the computer at a company I used to work with. They were running a program that slowly but surely gobbled up all of the memory on the system and then the computer would crash. (This was a mainframe system with something like 10GB of memory on it back in the late 1980's! Although at the time I think they referred to it as 10,000MB of memory. Each person on the computer gobbled up 100MB each because of the program they were running and there were 300 people who kept trying to use the program.) I went over, looked at what they were doing and told them to run a program (which was in their manuals) that would recover the memory let go by programs. "We can't do that," they said, "it might crash the system." I looked at them and said "And the alternative is....?" They wouldn't do it and so I just went "Well, it's not my system so crash away!" They did - on a daily basis. Sometimes two or three times a day. Their solution? "WE NEED MORE MEMORY!"

      --
      Someone put a black hole in my pocket and now I'm broke. :-)
    45. Re:Bad idea by loraksus · · Score: 1

      And how will a new programmer understand how to use that option, why it should be on, or even what it does? If you've got them in a classroom, you can force all the machines to be configured that way, but how much of their education will consist of them screwing around at home?

      I dunno, maybe because their teacher / prof / whathaveyou will tell them to have those options set and will refuse to grade anything without Option Strict set?
      Might not work so well with people learning by themselves, but I'd be surprised if your average "self taught" book doesn't tell newbies to turn these options on, since they can save newbies a lot of frustration and time, which, in turn, lets people experiment and actually code more.

      --
      1q2w3e4r5t6y7u8i9o0pqawsedrftgthyjukilo;p'azsxdcfv gbhnjmk,l.;/
    46. Re:Bad idea by chris_mahan · · Score: 1

      I write all my code by hand.

      I don't use wizards.

      I am very picky about my tools. I told my boss: jEdit or I walk. I got jEdit. (it's my tool of choice, don't complain)

      I hardly ever copy/paste more than variable names.

      I optimize code at the end, if necessary, and if it won't break anything (which means almost never).

      I learned to program with BASIC, then moved to GWBasic, skipped QBasic, did VBA, then VB5, then VB6, then ASP (still a lot) some PHP, now in Python.

      I cannot tell you how many times I've been tempted to use wizards to make things faster only to self.wristslap "don't go there, you'll be sorry".

      It's like cars: If you've always used an automatic transmission, you can't drive all the cars. It's easier than stick shifts, but limits your choices.

      I would rather have a programmer who codes well but slow than one who codes fast but sloppy.

      --

      "Piter, too, is dead."

    47. Re:Bad idea by object88 · · Score: 1

      COMPREHNSION is a process in and of itself it happens independently.

      So it doesn't matter if the programmer is using an IDE, the programmer will still understand or not understand. So why not use the IDE?

      Let us assume that in the most ideal of situation ... that a programmer uses an IDE so simplistic and easy to use that it completely changes the language that it is meant to work with ...

      How does an IDE change a language?

    48. Re:Bad idea by Anonymous Coward · · Score: 0

      That's why, ideally, your project (or the API you're using) should have a consistent naming scheme. Learn it for one function and you can do it the same way for the rest of the library. Obviously there's still areas where autocomplete helps, but it's no replacement for a sane, readable set of coding guidelines.

    49. Re:Bad idea by Penguinoflight · · Score: 1

      The general idea is there, but what about when you want to start writing Java as a beginner? Do you really think that someone should understand/memorize the "public static void main (String [] arg)" line? Even experienced programmers from C/C++ wont understand what all of those things mean, and it really just means main(). Maybe books are better because they encourage a programmer to understand, but juggling everything on your desk can get bothersome.

      --
      "And we have seen and do testify that the Father sent the Son to be the Savior of the World"
      1 John 4:14
    50. Re:Bad idea by object88 · · Score: 1

      A new programmer should start with small command-line programs, and grow into coding bigger things *by hand* at first.

      Wizards and IDEs are not the exclusive domain of GUI apps. Visual Studio will happily give you boilerplate code for a command line app. I agree that starting small is important.

      When new users start using wizards, bad code WILL result.

      New users will often generate bad code regardless of whether they're using wizards or not-- they don't have the experience to produce good code yet. Practice will change that, not the use or non-use of a wizard.

    51. Re:Bad idea by mkiwi · · Score: 1
      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.

      This is all too true yet some people refuse to accept it. If you program java and don't know that javac does the compiling then you have a significant problem when trying to write more advanced code. It sets up a learning barrier that is often hard to overcome.

      It's actually pretty educational to watch a software package written in C compile on the command line- you learn that not only gcc but ld and a little script called libtool are very important in many applications (for *NIX at least). Knowing how to hack these little pieces makes your code more efficient and better as a result.

      For example, I noted to a certain professor that there are both compiling and linking stages in a multi-file program. At first he did not believe me, so I told him to ask a CS professor about it. That is one of the biggest barriers to really understanding how code turns into a program.

    52. Re:Bad idea by Richthofen80 · · Score: 1

      As an expirienced user, I have no problem manually typing

      private void Button1_Click(object sender, EventArgs e)
      {
      }



      And as an experienced user, I find double clicking on the element in the windows form to get the default 'event' handler is way easier than copy/pasting another event handler and renaming it. I like being able to re-factor code by bringing up the properties tab in Visual Studio, it makes renaming and following conventions easier. I also love intellisense, etc. I don't think these tools make anyone any LESS of a programmer, if anything, it lowers the entry bar. Some people do get stuck and rely on the widgets soley, yes. But that's true anywhere. But those same people would just replace widget clicking with copying and pasting from a tutorial or a textbook, which is how people did it before these tools.

      --
      Reason, free market capitalism, and individualism
    53. Re:Bad idea by Danga · · Score: 1

      Neither of them will grasp the Windows message loop yet

      Neither programmer should even have a REASON to have that in a program they are writing yet. I think an IDE is great to have, but I strongly believe that beginner programs need to stay as simple as possible too. A GUI should never be part of a beginner program, stick to a command line interface and programs that strictly consist of a main and once they understand how variables work move them on to functions and structures/classes. GUI wizards or any other type of wizard for that matter should not be used. An IDE to help with syntax issues and a decent debugger should be more than enough to start out with.

      --
      Hey, there is only one Return and it's not of the King, it's of the Jedi.
    54. Re:Bad idea by szhao · · Score: 1

      I don't believe having a wizard is a bad idea, for instance in visual c# or basic .net all you use the wizard for is GUI. This basically means the ability to skip the non-programming portions of coding small and simple projects. Granted, doing so you basically encourage the development of library black box programmers, this might not be good for open source but is very effective for industry. Additionally, IDE like visual studio 2005 offers an easy way to see what your doing wrong and understand what you need to do instead. The dynamic help offers valuable code examples and helpful resources that I believe is essential for beginners. HOWEVER, I don't think newer programmers will even notice the difference between c# and vb .net. The differences is mainly with coding preference and your ability to put ";" at the end of line. In that respect, I think learning c# instead would be a better idea cause it teaches you that in most languages you need some sort of end of line character. Nevertheless, using c# or vb.net as a gateway language will only be useful for users wishing to learn object oriented programming, I guess a little bit of perl, python, and a variety of smaller language if you push the ideas a little.

    55. Re:Bad idea by Anonymous Coward · · Score: 0
      people who have studied any programming language would point out that you have a bug:
      x<ysize
      should be
      x<xsize
    56. Re:Bad idea by bubkus_jones · · Score: 1

      [quote]First impressions last a very long time, and you want the first impression to be a good one. You want people to believe that they can achieve something interesting.[/quote]

      What do you think would make a better impression, them making a program via a few buttons in some fancy IDE, or them making the same programs out of some keystrokes, a text file and a compiler?

      [qutoe]Coding everything by hand does not mean you understand the basics.[/quote]

      No, it doesn't. However, many people figure out what code to put in there by reading tutorials and books which generally give a piece by piece explanation of the code. That will help the programmer/student a better chance of understanding the basics than they would have with just pressing buttons and the like.

      I can tell you of my own experience with VB and C. In highschool the computer class I taught had us doing some basic crap (and it was crap) in VB4/5 (we upgraded mid-semester). I learned nothing (partially because our "computer" teacher was an English teacher with little programming experience).

      Now, fast forward a couple years of disinterest in programming. I find a discounted C book at the library during one of their unused book sale, rummage through the first little bit and create a few small programs on my own with nothing more than VIm and gcc.

      When it came to VB, I felt no connection to actuall programming. I felt like I was creating a word document. With C, I felt like I was actually doing something.

      Of course, I'm still inept at it, but that's mainly due to a lack of time to be able to devote to it.

    57. Re:Bad idea by blugu64 · · Score: 1

      Ya know the Mac came out before the IIgs did

      --
      "Personal ownership is a hallmark of conservative capitalism. And I don't believe I am entitled to anything that I did n
    58. Re:Bad idea by tartley · · Score: 1

      complaining that they didn't get to do anything fun,

      Real programmers think that optimising around cache-hits is fun. If you don't want to program, you probably shouldn't be learning to be a programmer, no?

    59. Re:Bad idea by Wolfier · · Score: 1

      Bzzzz.

      I know what you mean in that code (tho it may contain mistakes) - it does NOT take assembly experience to see the cache benefit - granted I know 6502 and x86 but I figured most optimization tricks for high and low level languages alike, are readily learned from C++.

    60. Re:Bad idea by jonwil · · Score: 1

      If you combine Java with some kind of IDE/wizzards that can give you the RAD functionality of Visual Basic, that would be a great first language. Although if you did that, you would have something not to different to C# :)

      I learned Pascal as my first language and it was good.
      The latest incantation (Delphi 7, the new .NET version is crap IMO) is still good.

      For a first language for new programmers today, I would suggest Java or one of the .NET languages (C# & VB .NET seem like a good place to start)

      I learned Java as my first language in University, never programmed the .NET languages and use C++ for most of my programming I do nowadays. The only downsides to Java are the exception handling (which generally only becomes a problem when doing I/O) and the way of doing GUIs (specifically the fact that, unlike Visual Basic, Delphi, the .NET languages and any language using win32 dialog resources, Java makes it difficult to get precice positioning of controls on dialog boxes and forms).

    61. Re:Bad idea by seebs · · Score: 1

      "will usually run faster than"? Why?

      People who did a lot of assembler, in my experience, are full of theories about "what will run faster" that stop being true six months later.

      --
      My blog: http://www.seebs.net/log/ --- My iPhone/iPad app: http://www.seebs.net/seebsfrac/
    62. Re:Bad idea by Marble68 · · Score: 1

      That assumes an x86 platform, correct? I used to do assembly on the old Apple IIe and its memory layout of the screen was some type of twisted 8 bit maze of memory pages that made drawing a diagonal line in assembly an epic effort.

      Ah the good old days... wink

      --
      /me sips his coffee and ponders a new sig...
    63. Re:Bad idea by Eric+Dryden · · Score: 1

      Language is merely how we express ourselves, if an IDE is equiped to simplify that process of expression with auto-completion and what not, it is non the less changing that form of expression thus changing the language. Why do you not comprehend and in your lack of comprehension why do you persist?

    64. Re:Bad idea by shadow_slicer · · Score: 1

      Wizards complicate the issue.
      A person beginning to program has difficulty understanding the basic syntax that they themselves are using, much less trying to understand the advanced code the wizard creates so they can figure out where it went wrong.
      If you want to learn, start simple.

      You don't learn to fly using the autopilot of a 747.

    65. Re:Bad idea by jbolden · · Score: 1

      And the reason they get confused is because those concepts are simply too complicated for a beginner.

      Why have private variables? They are worthless for small programs.
      What does a "void" function mean? Why use a paradigm where everything returns a struct of some sort and then use an exception in your earliest examples?
      What are EventArgs and object senders.

      Yuck.

      What about the brackets are parenthesis what are they for?

      How about a more reasonable language:
      On left mouse click do abc

      Now that's teaching programming not syntax.

    66. Re:Bad idea by jbolden · · Score: 1

      It's not that they inherently couldn't, but that they just don't.

      I've taught into to programming. Its no they couldn't. The students don't understand what the "for" means, or what pixel is, or what "x xmax" is for. That's what 101 teaches.

    67. Re:Bad idea by Anonymous Coward · · Score: 0

      LOL, why don't you go build your car from scratch too. Fucking moron.

    68. Re:Bad idea by torokun · · Score: 1

      Are you a native spanish speaker? I think you meant to say "right?" or "should you?" instead of "no?"...

      This has been seeping into colloquial English for a while now, and it's one of my pet peeves. I apologize for my obsession, but hope you'll consider avoiding this construction...

    69. Re:Bad idea by gangien · · Score: 1

      as long as any of those are following by some upper/lowercase combination of getlaid()

    70. Re:Bad idea by Mattintosh · · Score: 1

      Turn it around.

      When I was a new programmer, I used GUI generators to autogenerate a bunch of crap for me. I would name everything really strangely, and I wouldn't actually make anything useful. My instructors used to wonder what I was doing.

      I would pick apart the autogenerated code and find the places where my weird-named objects would turn up, then I would try to figure out how it got called and what it called in turn. Basically, I would build a hypothetical call stack and unravel the "secrets" of autogenerated code. It's an amazingly effective way for me to learn. You might give it a shot sometime.

      Screw that "by hand" stuff, though. If there's a wizard, it's there for a reason and I should use it. I just need to know why, when, and how.

    71. Re:Bad idea by hyperion454 · · Score: 1

      The thing is, OOP loses most of its power if there's no inheritance.

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

    73. Re:Bad idea by Hosiah · · Score: 1
      Aw, shit, I've been saying stuff like this. But now that I've seen Batman agreeing with me, I know I'm wrong.

      I take it back, folks: VB is super-leet!

    74. Re:Bad idea by renej_frog · · Score: 1

      and ++x is better than x++

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

    76. Re:Bad idea by SilentMobius · · Score: 1

      Um I'm no Assy coder but I'm assuming that you forgot to flip the xsize and the ysize in the second example. I also assume you trying to make a point that writing across memory is quicker then writing once every xsize*pixelsize bytes but surely than depends on the method of screen memory mapping?

      If I'm wrong please feel free to correct me, I'm actually quite interested in the answer

      --
      Loop, twist and loop again.
    77. Re:Bad idea by cduffy · · Score: 1

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

      Python's multiple inheritance implementation (using post-2.2 new-style objects) is pretty darned good; I'm curious as to what limitations you see in it.

    78. Re:Bad idea by Anonymous Coward · · Score: 0

      Huh?

      In my experience, the differences between VB5 and VB6 were minimal. The latter added a few more library functions and a couple of array assignment features, but other than that it was pretty much the same. There might have been some technical COM implementation stuff that was different, but for me as a standalone client developer it was never an issue.

      The quantum leap for VB classic IMO was between VB3 and VB4, really. That was when they added the COM object and interface support into the language.

    79. Re:Bad idea by Jackmn · · Score: 1
      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,
      Then good riddance.

      Let the people who are serious about programming remain, and the rest can bugger off.
    80. Re:Bad idea by HappyHead · · Score: 1

      Coding everything by hand does not mean you understand the basics.
      No, but being kept from seeing or knowing what's actually going in to your program because all you did was click on widgets and select choices from drop-downs does mean you aren't going to understand them.

      The other thing to keep in mind here is that these people who are learning pseudo-programming via point-and-click are going to be going out into the world thinking they're every bit as good a programmer as the people who have learned actual programming skills, getting themselves jobs that require actual programming skill, and then they'll be in completely over their heads. The question here isn't about good first impressions, it's about false ones.

    81. Re:Bad idea by Just+Some+Guy · · Score: 1
      I know what you mean in that code (tho it may contain mistakes) - it does NOT take assembly experience to see the cache benefit - granted I know 6502 and x86

      But that's the thing: I don't know a single person who doesn't know assembler who understands the tricks you do. That was my point. I've gotten a lot of replies from people who understand CPU architecture who think the cache miss thing is obvious, but not one from a HLL-only programmer who saw the problem.

      The two are not mutually exclusive - there's no inherent reason why you can't learn about low-level stuff when learning high-level programming - but that seems to be only a theoretical possibility. Again, I've never actually seen it in real life.

      --
      Dewey, what part of this looks like authorities should be involved?
    82. Re:Bad idea by Just+Some+Guy · · Score: 1
      I'm assuming that you forgot to flip the xsize and the ysize in the second example. I also assume you trying to make a point that writing across memory is quicker then writing once every xsize*pixelsize bytes

      Correct on both counts.

      but surely than depends on the method of screen memory mapping?

      Yes, but as I mentioned in another poster, images are almost always stored as an adjacent list of the values of one row, immediately followed by the list of values of the next row, etc. In other words, pixel[x,y] is most commonly at pixelarray[y*width+x], and iterating across that list in linear order will usually be the optimal algorithm.

      --
      Dewey, what part of this looks like authorities should be involved?
    83. Re:Bad idea by colinrichardday · · Score: 1

      What does the structure of an image file is stored have to do with assembler? One could make that optimization merely by knowing the image format. Also, what would assembler tell you of the image format?

    84. Re:Bad idea by Danse · · Score: 1

      The thing is, OOP loses most of its power if there's no inheritance.

      I wouldn't say it loses most of its power. Just some. Encapsulation and polymorphism are powerful concepts as well. VB6 did those fine. Regardless though, VB.NET has fixed the inheritance issue now anyway and the language is quite full-featured.

      --
      It's not enough to bash in heads, you've got to bash in minds. - Captain Hammer
    85. Re:Bad idea by P3NIS_CLEAVER · · Score: 0

      But unless I am programming graphics drivers nobody could give a fuck less. I work on web applications where performance is limited to a 50+ ms call to the database.

      --
      Please sign petition to restore sanity to our banking system!!!

      http://financialpetition.org/
    86. Re:Bad idea by powerlord · · Score: 1

      From my own experiance ...

      We ended up covering this sort of topic in OS Design, which, Ironically enough I took in my last semester. In order to take Operating Systems, we had to already have finished the sequence track for programing (including Basic Programing, Alogrithms, Data Structures and Advanced Data Structures), and the Hardware sequence of classes (which included basic logic design, Assembly programming, Intermediate Logic Design and a few other odds and ends).

      I already knew about accessing consecutive memory locations to minimize cache hits (was actually back in school finishing up my degree:) ), but it was more or less as you suggested. The class was FULL of interesting things about OS/Hardware design and the trade-offs inherent in all the different approaches. I actually thought it was a lot more fun than some of the previous semesters of work, and it was a good idea of why finishing the degree is a "Good Thing"(tm) :)

      --
      This space for rent. All reasonable inquiries will be entertained at proprietors discretion.
    87. Re:Bad idea by rp · · Score: 1

      You're misinformed. Unlike Perl, VB.NET has an option to enforce strong typing.

    88. Re:Bad idea by Mr.+Underbridge · · Score: 1
      I would pick apart the autogenerated code and find the places where my weird-named objects would turn up, then I would try to figure out how it got called and what it called in turn. Basically, I would build a hypothetical call stack and unravel the "secrets" of autogenerated code. It's an amazingly effective way for me to learn. You might give it a shot sometime.

      That's pretty interesting, and sounds effective, but I don't think it would work for everybody. That's pretty cool, though.

      Screw that "by hand" stuff, though. If there's a wizard, it's there for a reason and I should use it. I just need to know why, when, and how.

      Oh, I fully agree. Wizards are great - as I said, as long as you know exactly what the wizard does. But I stick with my original point, which was that a wizard in the hands of a beginner is no way to learn to program. I also think that what you did is a fantastic way for an expert in a language to learn exactly what the wizard is doing.

    89. Re:Bad idea by object88 · · Score: 1

      No, but being kept from seeing or knowing what's actually going in to your program because all you did was click on widgets and select choices from drop-downs does mean you aren't going to understand them.

      OK. Let's say that you're writing a program because you need to remove all files from a directory and all subdirectories with the extension ".backup". You can code the entire thing by hand, absolutely. Or you can use a wizard to give you the boilerplate code.

      No wizard is going to give you the code to iterate through the file system, do string comparisons, etc. And that's the "real" program. Not the UI (whatever form that might be), or the library inclusions, or whatever. The programmer is going to have to understand the "real" problem-- how to manipulate files. The problem has nothing to do with how public class FileSearch arrived. Later, when the programmer has some experience with the language, he/she should start to learn how a message pump works, and how to attach an event to a control, etc. But start with the basics in a meaningful way. A programmer who can write the most elegant UI skeleton is worth little next to the programmer who uses wizards to write the UI for most elegant search routine-- the skeleton doesn't do anything; the search does.

      Not specifically directed at you, HappyHead, but a lot of people in this discussion talk about "real programmers". Real programmers are the ones who solve real problems. A problem is no less solved whether some code was templated out for the programmer or not, or if it was written in notepad, Visual Studio, or Word.

    90. Re:Bad idea by object88 · · Score: 1

      Language is merely how we express ourselves, if an IDE is equiped to simplify that process of expression with auto-completion and what not, it is non the less changing that form of expression thus changing the language.

      I disagree. Whether I manually type public class AnalogWatch : UserControl, or its generated by a wizard, it's the same expression. The language is the same.

      Since we're talking about language as a means of expression, are you going to tell me that a sentence written on paper is different than the same sentence delivered via morse code?

    91. Re:Bad idea by try_anything · · Score: 1

      Really? Is it really straightforward to look at assembly and know what the computer is doing? Assembly language tells you exactly what happens in a simple little machine with a certain number of registers where everything happens in a known order. Many modern CPUs are thousands of times more complex than the abstract machine described by their instruction set; they match the behavior of the abstract machine without containing a physical instance of it. Unless you're dealing with a very simple processor (probably an embedded one), the idea that you can know "what's REALLY going on inside that computer" is just a comforting fantasy that will be ripped out from under you sooner or later.

      What is important is not the "realiness" (apologies, Stephen Colbert) of the abstraction you're working with. The important thing is to learn how to understand an abstraction and write good code for it, whether that abstraction is a J2EE application container or an assembly language interpreter. Then programmers start to ask the right questions: What am I promised by this abstraction, and what is merely accidental? How might different instantiations of this abstraction differ?

      These are slightly different questions than the questions asked by a programmer who believes in thinking about "what's REALLY going on inside that computer," and in my opinion, they're much better. In the real world, you often have no control over or foreknowledge of which "real thing" your code will be running on, only which abstractions it will implement.

    92. Re:Bad idea by dedazo · · Score: 1

      You're absolutely right, I stand corrected. I didn't know Python had that particular feature - I must say I'm impressed. Very nice.

      --
      Web2.0: I love when people Flickr my cuil and digg my boingboing until my google is reddit and I start to yahoo
    93. Re:Bad idea by PitaBred · · Score: 1

      I love how the saying is still lingua Franca when the current standard is actually English, much to the dismay of the French. Go ahead, keep thinking that Java is bad ;) I'm not saying C/C++ isn't good, but Java certainly isn't something to loathe. It actually offers many advantages over C/C++ in different situations, including performance advantages due to the JIT profiling code at runtime, which alters the programs execution depending on the data it's going through. You just can't do that in C/C++.

    94. Re:Bad idea by Audacious · · Score: 1

      I always wondered if the Mac was gay, but I never thought the //gs was! ;-)

      (Actually, I have six Macs at home. :-) )

      --
      Someone put a black hole in my pocket and now I'm broke. :-)
    95. Re:Bad idea by mewphobia · · Score: 1

      Granted, I haven't use python much, and not more than 50 lines of code in over a year but as I remember it, if you have inherit from two classes that have the same baseclass, Python only adds the base class's variables once.

      Coming from a c++ background I found this terribly annoying - in c++ you can duplicate this behaviour but making the inheritance virtual, but by default you get two instances of the base class's variables.

    96. Re:Bad idea by cduffy · · Score: 1

      Let me get this right -- two instance of the base class's variables within a single instance of a class which has inherited from two subclasses... and you *want* this behaviour? I'll grant that there may be cases where it's useful, but I just don't see them off the top of my head -- especially when using something like super() for calling one's superclasses' constructors in MRO order such that a given constructor never gets called more than once.

      For an example of why I consider Python's multiple inheritance implementation to be superior, see the MRO algorithm used in modern interpreters (for new-style objects only, to prevent backwards compatibility issues).

      That said, I've never much liked C++ -- for low-level work I've always tended towards C, and for high-level work I prefer powerful languages that didn't have the kitchen sink thrown into the syntax (read: not Perl either) -- so I probably don't know C++ as well as you do. That said, I do use Python on a regular basis, including some code that makes heavy use of some of its more obscure features. ("Obscure features" is relative, of course -- there's no syntax specifically for most of them [take swapping out an object's class with another dynamically constructed class inheriting from a dynamically generated list of bases as an example], and they work pretty naturally with the language, but they're things most folks not used to Python wouldn't expect to be able to do). (And wrt the dynamic-class-generation thing -- yes, I have a real-world use for that).

    97. Re:Bad idea by blugu64 · · Score: 1

      Ohhh man....it was a setup I swear....

      --
      "Personal ownership is a hallmark of conservative capitalism. And I don't believe I am entitled to anything that I did n
    98. Re:Bad idea by The+Bungi · · Score: 1
      Nice. Man do I wish that VB6 was available when I was doing VB coding.

      Ah, Batman. Full of shit, as always. You based your entire retarded rant on VB4, didn't you? You said "I did a lot of coding with VB5" but somehow you missed the fact that class instances could be created?

      What a hoot. But hey, bashing Microsoft never cost anyone any karma around here, eh?

    99. Re:Bad idea by tartley · · Score: 1

      Hey. Actually I'm English. And I appreciate your comment, but I really disagree. The unparalleled expressiveness of the English language derives from its flexibility - its voracious and gleeful enthusiam for incorporating words and idioms from new sources. Without this, the language would be unable to represent new ideas and experiences with the fidelity and grace it currently has, and, worse, would become tired and stale in our mouths and on the page. To exercise the rules of grammer is to exercise our minds. Those rules should be flexed, that we should know their limits, and in appropriate forums we should be empowered to knowingly break them for effect. This is how the language evolves, and without such evolution it is dead - and would be supplanted by other languages which lend themselves more willingly to do the task at hand. Communication is the goal, the rules and conventions of grammar are subservient to it.

    100. Re:Bad idea by Anonymous Coward · · Score: 0

      Your use of postincrement in the for loop is creating and destroying extra copies of those integers each time you pass through it. Not such a big deal with integers, but something to consider with iterators and other larger classes.

      Consider using preincrement instead.

    101. Re:Bad idea by torokun · · Score: 1

      Well, language changes. That is a fact. But I tend to think that we'd all do well to keep the change at a slow pace, except where necessary to express new ideas.

      English is a protocol, and the more you change it, the less likely it is that your message will be correctly interpreted and understood.

    102. Re:Bad idea by pclminion · · Score: 1
      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.

      Having a basic understanding of the hardware (including the cache) doesn't require understanding of the assembly language itself. All modern CPUs share certain characteristics like finite cache. I have no knowledge of G5 assembly language for instance, but I can still write code that works well with the cache. (In fact, the code I develop commercially is for fast 2D imaging and rendering and cache coherence is an ever-present concern -- still, I never have to delve into assembly language.)

  4. No! by In+Fraudem+Legis · · Score: 1

    For Christ's sake, stay away from that crap. I recommend you start with Python or C++, they're both extremely impressive languages.

    --
    Per Aspera Ad Astra.
    1. 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.
    2. Re:No! by ObsessiveMathsFreak · · Score: 1

      Not C++; you'd be much better off with Java than C++.

      Because? What makes Java a better language for beginners?

      --
      May the Maths Be with you!
    3. 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.
    4. 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?
    5. 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.
    6. Re:No! by AuMatar · · Score: 1

      Neither pass by reference nor arrays explain how the underlieing system works. Pointers do. Not because you can use them to pass by reference, but because it teaches them how arrays work on a hardware level, and how memory allocation works in general. If you don't understand these things, you will not be writing good code.

      --
      I still have more fans than freaks. WTF is wrong with you people?
    7. Re:No! by 1729 · · Score: 1
      Every language (almost) has pass by reference

      Java doesn't. Everything is passed by value.

    8. Re:No! by brpr · · Score: 1

      Wow, you're so wrong. Objects are always passed by reference, primitive types are always passed by value. (Or if you like, everything's passed by value, but there's no such thing as an object value, so you have to pass an object reference by value...)

      --
      Freedom is not increased by mere diminuation of government. Anarchy is freedom for the strong and slavery for the weak.
    9. Re:No! by brpr · · Score: 1

      Neither pass by reference nor arrays explain how the underlieing system works. Pointers do.

      This is often stated but never explained. It's rubbish for a number of reasons. First, an array is a pretty good model of the underlying system. It's a linear block which can be indexed. The reference to the array is (amongst other things) a reference to the place where the block starts.

      Second, C pointers are a fairly good model of a PDP11's memory architecture, but they abstract away from a lot of facts about the underlying system, such as memory segmentation/paging, and the fact that if you add 1 to a pointer to a 32-bit int, you actually get a pointer to the second byte of that integer, not the the next integer along in an array.

      As I said previously, many other languages have everything C does except pointer arithmetic, and pointer arithmetic isn't really fundamental to the way in which arrays are implemented at a lower level.

      Finally, it's just nonsense to state that you can't write good code without understanding the nitty-gritty of memory alllocation. You just need a basic understanding of the space behaviour of the data structures your language supports, however low-level or high-level it is. In C, this translates into a knowledge of memory allocation at a low level, because C is a low-level language, but in a high-level language it doesn't.

      --
      Freedom is not increased by mere diminuation of government. Anarchy is freedom for the strong and slavery for the weak.
    10. Re:No! by 1729 · · Score: 1
      Wow, you're so wrong.

      No, I'm not.

      Objects are always passed by reference, primitive types are always passed by value. (Or if you like, everything's passed by value, but there's no such thing as an object value, so you have to pass an object reference by value...)

      The last part is right. Object references are passed by value. This isn't mere pedantry: consider the following code fragment:

      public static void swap(Object a, Object b)
      {
      Object tmp = a;
      a = b;
      b = tmp;
      }
      Because Java does not use pass-by-reference, this method has no effect.
    11. Re:No! by Anonymous Coward · · Score: 0

      I programmed Java for four years before becoming a game programmer. Now I program in C/C++ and let me assure you that your statement is wrong.

      Yeah it does nothing because you are swapping references. You are not actually changing the data the objects are referencing. If it were true that java passes all objects via copy (which is what it would do if it passed by value), then java would be several orders of magnitude slower for sufficiently large objects.

      heres an example to contradict your assertion:

      ObjectPtr extends Object{
        public Object ptr = new Object();
      }

      public static void setNull(ObjectPtr op)
      {
        opl.ptr = null;
      }

      public static void main(String[] args)
      {
        ObjectPtr op = new ObjectPtr();
        assert(op.ptr != null);
        setNull(op);
        assert(op.ptr == null);
      }

      Now whatever ObjectPtr you pass will have it's object set to null, and this will be true for the object after it has exited the lexical scope of the setNull function.

      You probaly had your erroneous conception of java because Strings seem to act like they are passed by copy, when infact they have a copy on write policy.

    12. Re:No! by 1729 · · Score: 1
      I programmed Java for four years before becoming a game programmer. Now I program in C/C++ and let me assure you that your statement is wrong.

      Yeah it does nothing because you are swapping references. You are not actually changing the data the objects are referencing. If it were true that java passes all objects via copy (which is what it would do if it passed by value), then java would be several orders of magnitude slower for sufficiently large objects.

      heres an example to contradict your assertion:

      Your example doesn't show anything. You pass a reference to an object BY VALUE and then change the value of the object itself. There's no contradiction. You simply don't understand the difference between pass-by-value and pass-by-reference.

    13. Re:No! by brpr · · Score: 1

      OK, but by your logic C doesn't have pass-by-reference either, contrary to normal usage of the phrase.

      --
      Freedom is not increased by mere diminuation of government. Anarchy is freedom for the strong and slavery for the weak.
    14. Re:No! by 1729 · · Score: 1
      OK, but by your logic C doesn't have pass-by-reference either

      That's true. C doesn't have pass-by-reference. This isn't by "my logic"; it's just a fact.

      contrary to normal usage of the phrase.

      Your "normal usage" is wrong. There is an important distinction between passing pointers or Java object references by value, and passing parameters by reference. Just because you don't understand the difference does not mean that it is "contrary to normal usage." From Section 1.8 of Kernighan and Ritchie: "In C, all function arguments are passed 'by value.' ... This leads to some different properties than are seen with "call by reference" languages like Fortran..."

    15. Re:No! by brpr · · Score: 1
      I think it's a category error to say that a usage is wrong. One often hears people say that C has pass-by-value and pass-by-reference, and it's perfectly clear what they mean.

      As for whether I understand the difference, it should have been clear that I do from the bracketed portion of my first reply to you.

      --
      Freedom is not increased by mere diminuation of government. Anarchy is freedom for the strong and slavery for the weak.
    16. Re:No! by 1729 · · Score: 1
      I think it's a category error to say that a usage is wrong. One often hears people say that C has pass-by-value and pass-by-reference, and it's perfectly clear what they mean.

      Yes, it means they don't really understand what they are talking about. It is a fundamental error to believe that one can pass something by reference in C or Java. Just because passing a pointer or object reference by value resembles pass-by-reference semantics, it does not mean that they are the same thing. See http://java.sun.com/developer/JDCTechTips/2001/tt1 009.html

      As for whether I understand the difference, it should have been clear that I do from the bracketed portion of my first reply to you.

      It's clear that you understand how Java passes parameters. It's not clear to me that you understand how this differs from passing parameters by reference.

    17. Re:No! by brpr · · Score: 1

      Just because passing a pointer or object reference by value resembles pass-by-reference semantics, it does not mean that they are the same thing.

      I know, but because terminology is rather fluid, it does mean that you can sensibly refer to them using the same phrase. Especially given that there isn't a short phrase with the meaning "language-which-is-pass-by-value-but-has-a-referen ce-value-type".

      It's clear that you understand how Java passes parameters. It's not clear to me that you understand how this differs from passing parameters by reference.

      Then reread what I wrote. I gave a very explicit explanation of how one could also say that Java was pass by value, but that it had a reference value type, thus demonstrating my understanding of the difference.

      --
      Freedom is not increased by mere diminuation of government. Anarchy is freedom for the strong and slavery for the weak.
    18. Re:No! by Tablizer · · Score: 1

      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 while you are at it, learn how to use Go-to's early :-)

      And if you don't get them, you have no idea how your code actually works under the hood.

      Some schools of thought are that this is a good thing. Learning how to think high-level/abstract first may be better than starting with nuts and bolts. But, I have no strong opinion on this yet. It may depend on the individual. Different people learn differently.

  5. 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 Tester · · Score: 1

      Although Pascal is fine language. It has been mostly superceded by the C-syntax languages. Its an evolutionary dead end. Only Ada and Delphi are still being somehow developed. They dont have nearly the same level of tools are C-syntax languages (C, C++, Java, C#, etc)

    2. 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]-
    3. 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
    4. Re:still a toy by killjoe · · Score: 1

      VB.NET is just C# with lipstick anyway. I just don't see the point in it.

      Anyway it doesn't matter. All the VB developers will migrate to it, I certainly can't see anybody migrating to it from any other language.

      --
      evil is as evil does
    5. Re:still a toy by kz45 · · Score: 1

      Although Pascal is fine language. It has been mostly superceded by the C-syntax languages. Its an evolutionary dead end. Only Ada and Delphi are still being somehow developed. They dont have nearly the same level of tools are C-syntax languages (C, C++, Java, C#, etc)

      are you serious?

      Have you used delphi lately? Delphi is more advanced than c/c++ and just as good as c#,java. It has the power of a language like c# (great ide, easy to make gui apps) with the ability to still use pointers. It also doesn't require the shitty .net runtimes (making your app just a small executable).

      I have always thought java apps were slow and clunky. Even on the fastest processor available, I can always tell when a company has written their installer/app in java. When I can't tell the difference, I might consider using it.

    6. Re:still a toy by penguin-collective · · Score: 1

      Yeah, and you're still irrational and prejudiced, no matter how much you learn.

      The problem with BASIC used to be that it didn't have any data structures, objects, or structured programming constructs. Well, those things have been fixed. VB is a modern dynamically typed language. It wouldn't be my first choice for a teaching language (among other things, because it's proprietary), but it's a reasonable choice.

      C#, Delphi, and Java are too complex as first programming languages. In fact, I think first programming languages just shouldn't be statically typed.

      Personally, I'd choose Python as a first programming language: it's clean, has everything a programming language needs, and it's also useful.

    7. Re:still a toy by Danse · · Score: 1

      It's certainly not a toy, but it's not written or employed in a way that lends itself to good programming practices.

      What exactly does that mean? What bad practices do you believe it encourages?

      --
      It's not enough to bash in heads, you've got to bash in minds. - Captain Hammer
    8. Re:still a toy by Sylver+Dragon · · Score: 1

      i don't see a point in vb.

      From this statement, I would guess that you are a programmer. The point of VB, and where it should stay, is for us IT guys who don't want to get a CS degree to write little one-off apps to make supporting Windows systems eaiser. VB.Net is nice and easy to work with when I just want to get something done, and I don't care enough about it to buy a professionally written aplication. The reason I don't use C# or J# or one of the other .Net languages is that I have a bit of a history with BASIC. And, quite frankly, VB is easy to pick up and use.
      Yes, using VB.Net to write a full blown application suite would be like using a hand-saw to cut down a Giant Sequia; it will work, but it's not necessarilly the best choice. On the other hand, for little one-off apps, C++ or Java is like using a chainsaw to remove a sappling, overkill.

      --
      Necessity is the mother of invention.
      Laziness is the father.
    9. Re:still a toy by Eli+Gottlieb · · Score: 1

      I concur. My kernel is written in Object Pascal, Delphi's backend language. After all, there's two open source compilers which both work with normal binutils. And the language is C++'s cleaner cousin!

    10. Re:still a toy by Craig+Maloney · · Score: 1

      Unfortunately, one of those things you learn as a programmer is "there is no such thing as a one-off application". Even the lowliest shell script to rename a bunch of files in a directory will one day rise up to be used again and again. It's best to use the right tool for the job.

      Back in the VB 6 days, I was called in to bring an application that was coded in VB6 to a usable state. It was a sickly application, with programming constructs that would make children cry. (If-then-else constructs instead of a SQL where clause). I re-wrote it in Perl (Remember, this was 1998) and made it a web application, where the customer ultimately wanted the application.

      And I see no problem using a chainsaw on a sapling. It's not overkill if it gets the job done, and scales properly. That said, I'm not about to write a complete C GUI application where a simple Perl script will do.

    11. Re:still a toy by Sylver+Dragon · · Score: 1

      I do understand the constantly growing applications, I've watched it happen a couple times. Still, for stuff that I am going to use once or twice, and no one else is going to see, I still prefer to do quick one-off apps. And they stay that way. If it's something that might get out of my hands, I make a programmer do it (I am not, never have been, and have absolutly no desire to be, a programmer). This is why I pointed out the difference in mindset, I actually do have one-off applications lying around. This is because I use them, and then delete them, and no one knows but me. Actually, I do tend to keep the source code on my drive, so I can go back and re-use bits when I need to. Still, they never get past the one-off nature. When a project comes up, which is similar to what I have done, I will voluteer bits, but never the application as a whole; as I know it's not going to be a good solution.
      One of the differences is that I don't have a customer for my applications. I write them and use them myself, I don't write stuff for other people. This means that I inherently know what I want the application to do, and I don't get caught up in the feature creep cycle. If it's something which is going to be deployed, I either buy a pre-made package or have our in-house development guy write it. He is actually a programmer, with a good understanding of things like garbage collection, memory management, and a number of other bits of programming theory which I have neither the time nor the inclination to learn. Despite what many on Slashdot seem to think, IT and programming really are seperate realms. Yes, some overlap exists, but they really are separate fields.

      --
      Necessity is the mother of invention.
      Laziness is the father.
    12. Re:still a toy by stanmann · · Score: 1

      Odd, you could have written the same crap (if then else instead of proper SQL) in Java or C(++/#).

      --
      Food not Bombs is a nice platitude but it breaks down when you notice that the Bombees are usually well fed
    13. Re:still a toy by Craig+Maloney · · Score: 1

      True, crap like the if-then-else clause I saw could show up anywhere. Unfortunately it was the icing on an already pretty bad tasting project. Funnily enough, it was also a project that was several years overdue, and had already used up lots of money in custom components. (Don't get me started on the third-party component market, and how un-portable that code can be, even amongst identical machines.)

    14. Re:still a toy by galonso · · Score: 1

      One thing I've noticed from VB programmers, and I'm sure this is true of many of the VBesque GUI builders, no matter what the language, is the lack of 'program sense' which is often seen. Much of the code I've had to debug or repair over the years is really just a bunch of code snippets crammed behind some sort of control, without any cohesive structure or paradigm.

      Granted, you can build many useful little programmes (if you will), but these coders, again in my direct experience, all too often cannot write without all the little wizards and pre-gen code.

      It's almost the difference between a program and a script; a script can be a wonderously useful thing, and it can be very well written, but they are often poor examples of programming practice, the 'art,' if you will, of programming.

      Does that make sense, or am I rambling? :)

      --
      -[joke removed for your safety]-
    15. Re:still a toy by Danse · · Score: 1

      One thing I've noticed from VB programmers, and I'm sure this is true of many of the VBesque GUI builders, no matter what the language, is the lack of 'program sense' which is often seen.

      That's understandable if all they've ever written is small applications that don't require much design or flow. That probably describes a good number of VB developers as well as those from other RAD languages. However, if they've learned enough and worked on real business apps, then they should have just as good an understanding of programming as developers in other languages.

      --
      It's not enough to bash in heads, you've got to bash in minds. - Captain Hammer
  6. 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
  7. C# by gcnaddict · · Score: 1, Interesting

    I have always recommended C# as a beginner language simply because it is very organized. VB (during the old days) was easier to learn because alot of it was behind the scenes, but now that everything is put out in the open with VB, C# is a better option because it's less confusing. It just has this "orgamizedly arranged" feel to it.

    --
    Viable Slashdot alternatives: https://pipedot.org/ and http://soylentnews.org/
    1. Re:c# by Decaff · · Score: 1

      Did you say C# and constrained in the same sentence? It seems to me that C# is designed to break all that is sacred in the OO paradigm (I'm looking at you, keyword new).

      By constrained I meant not being able to use OOP at all levels.

      There is nothing wrong with the new keyword! It has a long history of use in OOP languages.

      However, C# is heading is dangerous, messy directions.

    2. Re:c# by selfdiscipline · · Score: 1

      Well, at least we agree on something.
      And I dunno if I was clear, but I meant the new keyword in context of masking functions.

      --


      -------
      Incite and flee.
  8. 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 Penguin+Programmer · · Score: 1

      Exactly. If you start with something like VB, you may never learn what's actually happening when you execute your code. That's fine when you're building your little four-function graphical calculator, but when you start building serious things, it's a huge problem.

      If you want examples of why people should start programming in a real language, just read the Daily WTF. I guarantee the guy in this story didn't start with C.

    4. Re:still C by Mr.Bananas · · Score: 1

      I fully agree- C is a great first language to learn the basic elements of programming. Howvwer, I will say this: I think Visual Basic is a fun tool for complete newcomers that are just curious about what it's like to build computer programs. It's a useful tool to stimulate the interest of potential programmers who could go on to take a first programming course in C; it allows you to quickly create a tangible and visible program without requiring too much complexity and background knowledge, but still exposes you somewhat to the thought process of designing software. Frankly, I think it's kind of a fun tool to use, though I don't think I'd ever do anything too serious with it. (I admit I haven't looked at the latest .NET iteration of VB, but I'm sure they haven't made it any harder to graphically create GUI elements and quickly customize them by modifying simple subroutines).

    5. Re:still C by Anonymous Coward · · Score: 0

      hahaha!

      the number of times I did that before it finally totally sunk in.

    6. 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});
    7. Re:still C by lakeland · · Score: 1

      Seems gcc has got smarter

      test.c:1:9: error: #include expects "FILENAME" or
      test.c: In function 'main':
      test.c:4: warning: incompatible implicit declaration of built-in function 'printf'

    8. 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.
    9. 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
    10. Re:still C by Kjella · · Score: 1

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

      And if you ever need to explain it to someone use &amp; to write the & in &lt; (btw, do you know how hard to quote that post is?)

      --
      Live today, because you never know what tomorrow brings
    11. 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

    12. Re:still C by jbplou · · Score: 1

      I think it depends on the end purpose of learning to program. If your talking COMP SCI major might as well through them into the deep end of the pool and give them C. But if your talking a business major or math major who take it for secondary learning use a managed lanuage like C#.NET, VB.NET, or Java so you don't have to worry about memory management.

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

    14. Re:still C by ao_coder · · Score: 1

      I hate to paste a "me too" post, but YES. Start with K&R's The C Programming language if you are looking for a good beginning towards becoming a good programmer (as opposed to a "good-enough" programmer).

      If you ever plan on writing programs that do more than throw up a simple gui and connect to a database, you WILL need to understand memory intuitively, and there is no better time to get that understanding than at the start.

      I think people confuse accessibility with power. I don't think that VB is really any easier to learn than C is- it's just that the results as you learn are a lot more impressive (powerful).

      Some programs are best implemented in C or assembly. Others are really fastest to do in a 4GL. I think every programmer will want both in their toolkit, but starting with C will give you much better long-term habits than starting with VB or C#.

      --
      The best lack all convictions, while the worst Are full of passionate intensity. -Yeats, The Second Coming
    15. Re:still C by aychamo · · Score: 1

      This is one of the few times on the internet I actually did LOL in RL.

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

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

    18. Re:still C by Vraxx · · Score: 1

      Too true. Let's face it, there's just some things in life where you have to get your nose tweaked to learn. Hrm... reminds me where's my copy of K&R and Knuth books.

    19. Re:still C by Pharmboy · · Score: 1

      If you don't know this yet: Use < for < and > for >

      And if you ever need to explain it to someone use &amp; to write the & in &lt; (btw, do you know how hard to quote that post is?)</em>

      Piece of cake, use Extrans. Except for the <em> tages I wanted to use to show what part I was quoting....

      --
      Tequila: It's not just for breakfast anymore!
    20. Re:still C by jonwil · · Score: 1

      I still love C.
      A large part of the stuff I program is in C or "C++" (as in, C++ without actually using any OOP stuff like classes except for when I call COM objects).

    21. 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.
    22. Re:still C by Anonymous Coward · · Score: 0

      and of course the lack of a return statement should make your compiler complain like crazy

    23. Re:still C by Anonymous Coward · · Score: 0

      gcc won't call you on it but // are C++ comment markers not C comments

      the only valid C comment markers are /* */

    24. Re:still C by thogard · · Score: 1

      Your right about C. It comes after they know assembler. When I talk about assembler, I mean real assembler like 6502, Z80 or 6809 not this compiled assembly like stuff for the x86.

      Once you understand what the computer is doing on the inside, then you can move to the tools that help you use that knowledge. No high level language should ever be taught until the student understands that all the computer is doing is moving a whole bunch of numbers around with the occasional add, multiply or compare.

    25. Re:still C by Anonymous Coward · · Score: 1, Informative
      $ cat test.c
      int main()
      {
      printf("Hello world\n");
      }
      $ gcc -o test test.c
      $ test
      $
      For those who missed it, it should be ./test, test invokes /bin/test
    26. Re:still C by freedom_india · · Score: 1
      Djikstra said: "Teaching of /FORTRAN cripples the mind. So it should be banned"

      --
      "Doing what i can, with what i have." ~ Burt Gummer
    27. Re:still C by KlausBreuer · · Score: 1

      No - how about Pascal in the first semester?
      Designed to be a teachers language, and you can get both DOS-based Turbo-Pascal for free, as well as freeware clones of the rather nice Delphi language for Windows, Linux, BeOS, Mac...
      (Delphi itself is very good, but shockingly expensive).

      Pascal is easy. It's easy to read, easy to write, and allows you to fool about with strings as much as you want to.
      Switch to C++ in the second semester/year, but stay away from that single-OS-closed-source VB stuff.

      --
      Free PC version of ChipWits at http://www.breueronline.de/klaus/chipwits/
    28. Re:still C by 16384 · · Score: 1

      It reminds me of my first C program

      #include <stdio.h>

      int main()
      {
          Printf("Hello, World!\n");
      }

      It took me an hour to figure out what was wrong :)

    29. Re:still C by locofungus · · Score: 1

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


      Doesn't have to return anything from main. But it must be defined as int main(void) or int main(int argc, char *argv[]) or equivalent.

      5.1.2.2.1 Program startup for the valid definitions of main.

      and

      5.1.2.2.3 Program termination
      If the return type of the main function is a type compatible with int, a return from the initial ... reaching the } that terminates main function returns a value of 0.

      (from n2794.pdf)

      --
      God said, "div D = rho, div B = 0, curl E = -@B/@t, curl H = J + @D/@t," and there was light.
    30. Re:still C by mennucc1 · · Score: 1

      actually, getting to a.out was not that easy either: I remember fighting with 'cc foobar.c' for a while

    31. Re:still C by maxwell+demon · · Score: 1
      For those who missed it, it should be ./test, test invokes /bin/test


      Depends on your shell. On bash, test invokes a shell builtin (unless you disabled that, of course, and of course unless you did an alias or shell function definition of that name, say alias test=./test).

      BTW, AFAIK in C (unlike in C++) you still have to explicitly return a value from main, i.e. your program has undefined behaviour. Moreover, AFAIK you have to add #include <stdio.h> because functions with variadic argument lists (such as printf) have to be explicitly declared and prototyped even in C.
      --
      The Tao of math: The numbers you can count are not the real numbers.
    32. Re:still C by Anonymous Coward · · Score: 0

      It depends on the person. I would have preferred to learn what was going on behind the curtains before I moved on to a higher level language. Assembly is unnecessary in practice, but it helps to understand how your machine works. C is still an excellent language for beginners IMO. Better they learn something worthwhile than the latest bastard fad in programming.

    33. Re:still C by stygianguest · · Score: 1

      My first real programming lessons (at the university) were all about haskell. Actually the course wasn't about programming in itself, it was an introduction to computer sciences. It might be odd to teach a language that isn't used much in 'the industry', since why not teach something 'useful'.

      However the big advantage was that haskell put everyone at the same level; no-one had any experience with the language. About half of the students had taught themselves some programming language like C or BASIC. The other half had no real programming experience whatsoever, especially since we had students from the AI department as well.

      If we were using some imperative language like C, possible combined with some OO (java), half of the class would've been bored and the other half would have been struggling with syntax.

      Haskell's syntax can easily be limited to only very few constructs at the time, which allows the teacher to introduce only the things that are needed. No prior knowledge would be needed of, for example, the object oriented paradigm.

      I was actually looking for haskell in this discussion to see if anyone suggested it. My personal opinion is that it would make a very nice kandidate for the first programming lessons for the above reason(s). Especially for a more theoretic approach of computer science (say, university). If you're teaching future engineers, maybe it's not a very good choice.

    34. Re:still C by wrp103 · · Score: 1
      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.

      I have been teaching introduction to programming for many, many years. What I have seen is that about half the class finds C easy to learn, while the other half found VB easy to learn. Eventually, what I did was taught the principles of programming, and then gave examples in both C and VB. I had sample programs available on my web site that did the same thing, but one was written in C, and one in VB. I included notes that explained how the different languages influenced how the programs were different (e.g., console or GUI). I then told the students that I didn't care which language they used to write their programs.

      This approach improved the overall success rate for students. They were able to work in the language that "made sense" to them. I think the difference was in how the student approached understanding the programs.

      The ones who preferred VB tended to run the program and see what it did. These students could quickly get a program to run, and then experiment to make it work the way they wanted.

      The ones who prefered C liked the fact that they could print out the entire program and look at a small amount of code and figure out what it did. When they tried that with VB, they got a lot of GUI code that they found confusing.

    35. Re:still C by gstoddart · · Score: 1
      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.

      I spent a bunch of years programming in C. I learned it after Basic, Logo, Pascal, and PDP assembly -- the latter of which made the C language pretty intuitive.

      As much as I love the language, starting right off in C would probably be really bad -- until you've grasped the concept of call-by-reference and call-by-value, the pointers in C will absolutely screw you up. That and the fact the language is completely unforgiving as it'll let you try anything that isn't syntactically invalid (which you can frequently wave away with a few well placed casts =)

      I remember a lot of my fellow students never really grasped the way the pointers and memory was structured. They could never figure out when to derefernce, when not to, and what they could and could not access via subscript (damned near anything ;-).

      If you really want to make a beginner cry, try and explain the concept of "arrays of pointers to pointers to printf-like functions" and how to populate and invoke them.

      A first language should have at least a few training wheels. C just has too many sharp corners to start out with for most people. You could poke an eye out. While I wouldn't use Pascal now, I appreciated it for it's fairly decent way of handling some of the nastier bits.
      --
      Lost at C:>. Found at C.
    36. Re:still C by Anonymous Coward · · Score: 0

      AFAIK they're now allowed by the ISO C99 standard, which came out 7 years ago.

    37. Re:still C by stoicio · · Score: 1

      "Doesn't have to return anything from main. But it must be defined as int main(void) or int main(int argc, char *argv[]) or equivalent."

      Actually the following is K&R standard and works just fine:

      main()
      {
          printf("hello world\n");
      }

      http://en.wikipedia.org/wiki/C_programming_languag e#.22hello.2C_world.22_examplehttp://en.wikipedia. org/wiki/C_programming_language%23.22hello.2C_worl d.22_example

    38. Re:still C by locofungus · · Score: 1

      It's K&R but it's not ISO. In ISO C defining your main function as main() or int main() has undefined behaviour.

      --
      God said, "div D = rho, div B = 0, curl E = -@B/@t, curl H = J + @D/@t," and there was light.
    39. Re:still C by bensch128 · · Score: 1

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


      I think that Ruby is a much better language for beginners to learn. It's simple, procedural (if you want), OO (if you want) and doesn't need loops. So 90% of the concepts will be how to organize code into classes and do encapsolation properly. Finally there's a good unittesting library for them to fortify their code with.

      Cheers,
      Ben
  9. No. by Vorx · · Score: 0, Redundant

    No. That was easy. Nothing to see here, move along, move along

    --
    Yes this is my real UID. No, it was not bought from EBay.
  10. 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 huckda · · Score: 1, Offtopic

      ruby is quite juicy as well...
      and if you want to do webapps..ruby on rails...yummy!

      --
      "Just Smile and Nod." --Huck
    2. 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.
    3. Re:Visual Basic is horrible; use Python by largenumber · · Score: 1

      Scheme is also a good starter language. Especially PLT-Scheme (DrScheme, MzScheme, etc) which includes a set of teaching packages and texts that take a student from beginning to advanced. It also comes with a nice multi-os IDE with a built in help desk.

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

    5. Re:Visual Basic is horrible; use Python by advs89 · · Score: 0

      Ha, Python is harder than unmanaged c++, you've got to be kidding me... even unmanaged c++ makes more since than python!!!

      --
      Rirelobql xabjf gung EBG-13 vf gur yrnfg frpher rapelcgvba rire, ohg jbhyq lbh jnfgr lbhe gvzr npghnyyl qrpelcgvat vg???
    6. Re:Visual Basic is horrible; use Python by Peter+La+Casse · · Score: 1

      I agree. Plus, learning C first really gives a good appreciation of the features of Python (or whatever other modern language you choose.)

    7. Re:Visual Basic is horrible; use Python by getmerexkramer · · Score: 1

      Yeah I agree, Javascript fits the bill nicely. No software to install for most people, immediate results, similar-but-simplified syntax to other languages, lots of free resources and examples on the web, cross platform, don't have to learn how to use an IDE at the same time as learning how to program etc...

    8. Re:Visual Basic is horrible; use Python by ensignyu · · Score: 1

      The downside is that it's a pain to debug when things go wrong, even with strict(er) checking enabled.

    9. 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
    10. 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
    11. Re:Visual Basic is horrible; use Python by http · · Score: 0, Flamebait

      IMHO any language where whitespace is a delimiter is -not- a good language for a beginner.

      --
      If opportunity came disguised as temptation, one knock would be enough.
      3^2 * 67^1 * 977^1
    12. Re:Visual Basic is horrible; use Python by lokedhs · · Score: 1
      Whitespace is a delimiter in almost all languages (except FORTRAN I believe).

      I think you meant to say that whitespace indentation matters, in which case I agree with you.

    13. 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.
    14. Re:Visual Basic is horrible; use Python by Euler · · Score: 1
      Beginners also don't have pre-conceptions or habits based on indentation. It can be pretty easy for a beginner to get lost in a mess of brackets.

      I've always found Python to be a lot like creating an outline for a term paper. Most people new to programming really get that concept pretty well.

      Although you need to have a good editor to make Python effective. Textpad is the best IMO.

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

    16. Re:Visual Basic is horrible; use Python by nicolas.kassis · · Score: 1

      Sure I understand your point. I just think that a person who learn Python first will have a hard time getting around this:

      int x;
      float y;

      Maybe I don't give enough credit to new programmers but I just find that understanding that behind the simple statement

      x = 5

      in python there is such a thing as memory location and a little understanding of where the 5 goes and of what a type is.

      Anyways you make a good argument. Maybe introducing C first is a little harsh and will scare many when they hit there first segfault.

      Nic

    17. Re:Visual Basic is horrible; use Python by nicolas.kassis · · Score: 1
      ut 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.
      I have to admit you are right about this. I think solution would be to find a student that had some experience before. I help a lot of my friends in there courses. Sometimes teachers expect the student to think about solutions that are extremely unobvious. In the end unless you had to do it before finding the solution is usually hard and students need help. Tutoring them is the best way. Just not make it to easy for them is good. I like tutoring it's fun and seriously, it's the best way to study. Nic
    18. Re:Visual Basic is horrible; use Python by http · · Score: 1
      It can be pretty easy for a beginner to get lost in a mess of brackets.
      i haven't had that problem myself (except for short forays into lisp (or scheme (or their derivatives))) so maybe i'm speaking with a prejudice for my personal strong points.
      term papers were troubling for me, so it could also be that i'm speaking with a prejudice against my weak points.
      i sit corrected, realizing that once again i hadn't thought about it hard enough before hitting `submit'.
      --
      If opportunity came disguised as temptation, one knock would be enough.
      3^2 * 67^1 * 977^1
    19. Re:Visual Basic is horrible; use Python by majiCk · · Score: 1

      ... little understanding of where the 5 goes and of what a type is.

      I imagine the best way to learn what a type is is to learn a type-safe language, like ML or Haskell. Come to think of it, that's probably better than Python and C!

    20. Re:Visual Basic is horrible; use Python by maxwell+demon · · Score: 1

      Ok, then probably the right language to teach is Whitespace.

      --
      The Tao of math: The numbers you can count are not the real numbers.
    21. Re:Visual Basic is horrible; use Python by P3NIS_CLEAVER · · Score: 0

      Bringing students into a EECS program
      Who the fuck seriously signs up for a computer science/engineering degree and hasn't at least spent a couple years programming in high school on their own? When I was in 6th grade I checked a timex synclair out of the library and made video games using BASIC.
      If somebody goes into this program with no past programming experience they fucking deserve to be lost.

      --
      Please sign petition to restore sanity to our banking system!!!

      http://financialpetition.org/
    22. Re:Visual Basic is horrible; use Python by rp · · Score: 1
      Alas, you forgot to link the content of your reply to its title:

      VB.NET:

      Sub Main()
      Console.WriteLine("Hello, world!")
      End Sub
    23. Re:Visual Basic is horrible; use Python by oliverthered · · Score: 1

      OpenOffice.

      Just record the macro, no programming required.

      Why don't you teach people in OpenOffice?

      --
      thank God the internet isn't a human right.
  11. 10 PRINT "FIRST POST!" by Anonymous Coward · · Score: 0, Funny

    20 GOTO 10

  12. 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 ToxikFetus · · Score: 1

      Dear United States citizens: Would you vote for Ralph Nader again?

    2. Re:And in other questions... by maxume · · Score: 0, Flamebait

      The republican national committee would love Hillary as a candidate. For the Democrats. She is the ugly woman version of John Kerry. Bland. Impotent. Pandering.

      Plus, she is bat-shit insane.

      The democrats, if they wish to remain relevant, need to abandon the strategy of trying to out-slither Karl Rove, stop attempting to convince everybody that they stand for whatever, and actually take a stand for something.

      --
      Nerd rage is the funniest rage.
    3. 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?

    4. Re:And in other questions... by maxume · · Score: 0, Troll

      OMG! Flamebait?!

      Certainly obnoxious, but it is closer to true than it is to false, and I was actually trying to make a point about the pathetic floundering of the democratic party.

      Really, my political leanings are pretty much what-should-be-libertarian-but-
      they-the-party-are-bat-shit-insane-and-I-slightly- prefer-social-justice-
      to-low-taxes-so-the-republicans-are-just-as-bad, this isn't flamebait.

      Oh well, back to the vodka.

      --
      Nerd rage is the funniest rage.
    5. Re:And in other questions... by aftk2 · · Score: 1

      Plus, she is bat-shit insane.

      Yeah, that's totally above flamebait.

      --
      concrete5: a cms made for marketing, but strong enough for geeks.
    6. Re:And in other questions... by maxume · · Score: 0, Offtopic

      I am getting down-modded unfairly in this thread. There is nothing trolling about my grandparent comment. Feel free to disagree, but that's the way I see it. My comment is certainly inflamatory, but I am pretty sure that calling Mrs. Clinton bat-shit insane falls on the inflamatory side of things, not the flame bait side. It's an opinion about a somewhat major public figure, not a personal attack towards somebody on slashdot.

      Oh well, I have had my own personal trolls before, why not do it again, worrying about slashdot karma is like worrying about what the drunk guy in the bar thinks of you.

      --
      Nerd rage is the funniest rage.
    7. Re:And in other questions... by Lord+Kano · · Score: 1

      Dear Republican National Committee: Would Hillary be a good president?

      As a Republican, I sure do hope that the Democrats make her their 2008 candidate. It would be as good for us as it was for the Democrats when we ran Bob Dole in 1996.

      LK

      --
      "Hi. This is my friend, Jack Shit, and you don't know him." - Lord Kano
    8. Re:And in other questions... by Anonymous Coward · · Score: 0

      I'm of the opinion it might also help third parties, like the Libertarians, since it is so obvious the Democrats would have no chance that all the Republicans pissed with the Republican mismanagement of budgets, civil liberties and foreign policy would feel comfortable voting for someone else besides the "lesser of two evils" for the change.

    9. Re:And in other questions... by slashdot_commentator · · Score: 1

      Yeah, and I was so willing to vote for a war hero. I really wanted the Bob Dole of 1984. But he decided to go against almost every issue that I, a non-geriatric anti-fundamentalist liberal, considered important. Hell, Poppy Bush did a hell of job in Gulf War I, but blithely belittling the significance of the young unemployed (as I was at the time) and putting Clarence Thomas into the SC pretty much sealed that deal.

      --
      There is no America. There is no democracy. There is only IBM and AT&T and DuPont, Dow, General Electric, and Exxon
    10. Re:And in other questions... by Anonymous Coward · · Score: 0
      I am getting down-modded unfairly in this thread.

      I agree completely. Those should clearly have been modded down for being off-topic, not flamebait. You did notice that the topic is Visual Basic and not Hillary Clinton, didn't you?

    11. Re:And in other questions... by maxume · · Score: 0, Offtopic

      Sure. But often, replies to a comment take on a context that extends further than the parent story. I am at least as on topic as the comment I replied to.

      --
      Nerd rage is the funniest rage.
    12. Re:And in other questions... by Lord+Kano · · Score: 1

      Clarence Thomas into the SC pretty much sealed that deal.

      His decision to nominate Justice Thomas is what made me decide to look into Republican politics. When I learned enough, I decided that I was one of them.

      BTW, It was a Democrat controlled Senate that confirmed Justice Thomas.

      LK

      --
      "Hi. This is my friend, Jack Shit, and you don't know him." - Lord Kano
    13. Re:And in other questions... by maxume · · Score: 1

      Holy shit!

      --
      Nerd rage is the funniest rage.
    14. Re:And in other questions... by Anonymous Coward · · Score: 0

      Your defense amounts to "but he did it too!" Replying to an off topic post doesn't make you on topic. Obviously, pretty much any post is gong to have some topic.

    15. Re:And in other questions... by Anonymous Coward · · Score: 0

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

      I didn't know Terrell Owens was in the Eagles ! Did he replace Don Henley, or did he just sing back-up vocals ?

    16. Re:And in other questions... by Anonymous Coward · · Score: 0
      I am getting down-modded unfairly in this thread.

      I think the "flamebait" mod on your first post was wrong - as others said it should have been off-topic.

      Posts about moderation are almost always modded off-topic, so don't feel singled out.

      Mainly, I just wanted to remind you of the "Post Anonymously" checkbox. It's very helpful in these situations. ;-)

  13. VB vs. Java by genbitter · · Score: 0

    Building a form in NetBeans is just as easy as VB, plus Java will work on non-windows boxes. So I would say Java is a good beginners language.

  14. 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 korbin_dallas · · Score: 1

      Agreed! 100%

      I used to fix other peoples VB apps. Then I learned python, java then ruby, and somewehere in there C.

      Ruby is so nice, its small, easily deployed. And the language fits in 1 book.
      Unlike Java where one has to refer to volumes of tomes (or online).

      Also for the ultimate in cross-platform single file deployability see Tcl/Tk.

      --
      They Live, We Sleep
    3. Re:Not really. by Nikker · · Score: 1

      Turing!!!

      It's strict and DOS mode is all anyone really needs....

      --
      A loop, by its nature, continues. If that didn't make sense, start reading this sentence again.
    4. Re:Not really. by torokun · · Score: 1

      Reminds me of the time I interviewed one of *those* sorts of programmers one time.

      We asked him how long a string could be if it were represented, like in PASCAL, with a one-byte length indicator at the beginning.

      He said 9 characters.

      Because he thought it meant one _digit_. And he didn't even consider zero.

      See, this is how incredibly skewed peoples' perception is when they use strings all the time that auto-convert to decimal representation... aggh.

    5. Re:Not really. by s-twig · · Score: 0

      printf("Amen.");

    6. Re:Not really. by Anonymous Coward · · Score: 0

      I programmed in Visual Basic too, from VB 3.0 until 5.0. It allowed me to be a programmer, but not a good one. I didn't realise that until I was forced to use use Linux.

      Then I learned the Unix philosophy: Write programs that do one thing and do it well. Write programs to work together. Write programs to handle text streams, because that is a universal interface.

      Learn Perl, Python or Ruby.

    7. Re:Not really. by Duhavid · · Score: 1

      I had a compiler for that around here somewhere.

      --
      emt 377 emt 4
    8. 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.

  15. My experience by Anonymous Coward · · Score: 1, Informative

    In my experience, no it is absolutely not. In my experience with freshman-level college programming courses, I actually find that the people with Visual Basic experience actually experience greater difficulty than the people with no programming experience at all. Persons who have used some language other than the one the course is targeted at essentially understand how to program, and simply must learn the new language. Persons who have used no language do not know how to program, and must learn. But persons who have used visual basic have a wrong idea of how to program, and must un-learn it, then learn what is right.

  16. To be honest by jswalter9 · · Score: 1, Flamebait

    I counsel all newcomers to avoid anything Microsoft specific.

    --
    Retired from software... maybe. Sort of.
  17. 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!
    2. Re:Good Beginner's Language by Anonymous Coward · · Score: 0

      WTF is this "hobbiest" which crops up all the time? Is he related to a hobbit????
      Surely nothing to do with a hobbyist?

    3. Re:Good Beginner's Language by LaminatorX · · Score: 1
      So ya gotta ask yourself: "Do I wanna be the greasemonkey, or the high-priced cinsultant?"

      The answer should be obvious.

    4. Re:Good Beginner's Language by gardyloo · · Score: 1

      Unfortunatly, new programers are learning Java, VB, etc right away. They have no concept as to what goes on under the covers.

            Pfft. You're posting to the wrong crowd.

    5. Re:Good Beginner's Language by complete+loony · · Score: 1

      Don't say that. I've seen small web apps written by web designers (I should note without much formal coding experience). They tend to write really bad code. SQL Injection, XSS scripting... A public web server is the last place I'd wan't code running that was written by someone who did not have any basic understanding of what their code actually did.

      --
      09F91102 no, 455FE104 nope, F190A1E8 uh-uh, 7A5F8A09 that's not it, C87294CE no. Ah! 452F6E403CDF10714E41DFAA257D313F.
    6. Re:Good Beginner's Language by jaydonnell · · Score: 1
      In short, the future legions of greasemonkey coders will be using Ruby on Rails

      This is an extremely uninformed opinion. To code in ruby on rails requires a very solid understanding of OO concepts. We are now a rails shop and you'd be very surprised to know that I've seen many programmers struggle with rails because they don't get all the OO stuff. Rails is an extremely powerfull tool that lets real programmers create apps very fast, but "greasemonkey coders" have a very hard time with rails after they get past the simple tutorials. I've seen it many times.
    7. Re:Good Beginner's Language by roman_mir · · Score: 1

      This is moded 'Insightful'? Great, let's look at what he is actually saying:

      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. - Basic doesn't have that many bells and wistles. Basic is a step above macro-assembler. I am certain that you can start teaching basic principles of logical reasoning in Basic, and those are the principles that are needed for any development - software or hardware. It is easy to teach someone binary logic just using Basic without the need to get into low level implementation details. Basic can be used as a tool to teach functional programming, first step.

      It should be a language that doesn't have a built in string class. - this is ridiculous. You can teach people programming by using the simplest concept: a Turing Machine. There is no need to even mention that there are differences between memory arrays and String objects until you get to the next level of understanding of what computers are. Most definitely it doesn't matter whether the language in question has a String library (surprise, C has a string library, so does C++, so does Java, so do many other languages.) In fact there are languages that can teach someone functional programming with strings only, I will use Prolog as an example.

      One that makes you create arrays of characters. A language that doesn't provide you data structures right out of the box. - this doesn't make any sense. Plenty of languages come with String and other data structure libraries, but a general purpose language always gives an ability to use the simplest data structures. Even object oriented languages do. What about Lisp, ML, Scheme, Prolog? You can build quite sofisticated knowledge base tools without even differentiating between simple and complex data-structures.

      A good language would be C or Pascal. Unfortunatly, new programers are learning Java, VB, etc right away. - again, you have your C libraries for complex objects, you have your OO Pascal.

      They have no concept as to what goes on under the covers. - this is where the real difference between someone who is interested in programming versus someone who is only here to 'make money' comes into play. I was 11 when I learned Basic from a book, I didn't have computer access AT ALL for a year. I wrote applications ON PAPER (robots game, car game, target shooter, calculator, spreadsheet,) in Basic. I traced my programs by hand, produced input/output tables by hand. With Basic it was quite simple to do this without any memory consideration headaches. Would it make sense to write C apps on paper and trace them without touching a compiler? Finally I got access to a computer and could type my programs in and I saw them work. Later I learned C, C++ and Assembler, wrote virus TSRs, learned object oriented Pascal, Scheme, ML, Prolog, Perl, Java, etc. But I wouldn't want to start learning programming in a language that would take me away from the pure programming into the low-level world right away, because there was a point to what I was doing - I was writing stuff that worked, and that was what made it interesting for me in the very beginning. I am certain that with some people you can easily put them off programming entirely if you don't teach them to think about the algorythm, but steer them away from the IDEA of what they want to achieve into the IMPLEMENTATION DETAILS.

      What it means when I go and create 1000's of strings. - what you are teaching here is the LIMITATIONS of the machine but what do the limitations have to do with the idea behind the algorythm? The limitations force you to modify the algorythm, to fit into the rule-set of the limitations. I would rather teach the person to think through the algorythm without clutter of the limitations specific to the programming platform. Then I would teach them about the limitations. This is how you create a programmer.

    8. Re:Good Beginner's Language by jbplou · · Score: 1

      should be a language that doesn't have a built in string class

      A good language would be C or Pascal.

      Pascal has a built in string class.

    9. Re:Good Beginner's Language by danielk1982 · · Score: 1

      An important point to note here, is that most programmers nowadays don't need to be aware of this.

      Yay for mediocrity?

    10. Re:Good Beginner's Language by Anonymous Coward · · Score: 0

      Amen to that.

      Considering that our little software company's flagship product - that sells for $6,000 a pop or so - is written in VB, it's certainly a "commercial language". And that's exactly what it does - it's a neat little piece of automation software. It was written in VB because it happened to be the easiest and fastest way to get it implemented on the "widest range of Wintel installations with the minimum amount of hassle".

      We are looking to hire someone to port this to something that would work on other platforms - don't know what that should be yet - because we are now seeing demand for that. But VB really was an awesome way to get a product out the door and start selling fast. Beginner's or not :-)

    11. Re:Good Beginner's Language by rehtonAesoohC · · Score: 1
      I agree with this wholeheartedly.

      I learned on VB6 a long time ago, and now I am a Java developer. It took me a bit to finally get over my VB tendencies and move to an OO language, but once I did, I was no worse for wear. And, I have been able to write numerous automation tasks regarding Microsoft Access, Excel, and PowerPoint that I would have never been able to write unless I knew VB. There's no way I'm going to write some COM bridge so I can access the Win32 API relating to Microsoft Office... no freakin way- not when I can just fire up VB and say
      Dim oPpt as PowerPoint.Presentation
    12. Re:Good Beginner's Language by oliverthered · · Score: 1


      And that's why they still have that box in a corner that takes a day to do a job that could be done in real time.

      If people knew how to program properly I wouldn't need a gig of ram in my PC and vista wouldn't need a cray to run properly.

      --
      thank God the internet isn't a human right.
  18. 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#.

    1. Re:I'd go with C# by LesFerg · · Score: 1

      I'm seconding him. VB.Net was just included so that VB programmers would not feel alienated in the .Net world. There is no benefit in using VB.Net instead of C#, it is more verbose and takes twice as much typing to achieve the same outcome.

      If you used VB previously, you have probably been ruined and can't learn anything else, but if you are new to programming you may as well start with something that is similar to a number of other languages, and learn from coding your own stuff, not using a bunch of wizards to assemble templated code.

      Also, you can start with a free IDE, SharpDevelop, to learn the language and produce C# programs - they don't have asp.net support yet tho.

      --
      If I had a DeLorean... I would probably only drive it from time to time.
    2. Re:I'd go with C# by geekoid · · Score: 1

      "There is no benefit in using VB.Net instead of C#, it is more verbose and takes twice as much typing to achieve the same outcome."

      I do both, and I'd like to see an example of what you are tlaking about.

      Not to mention the IDE when using VB.NET is far less buggy then C# . Remember what used to happen to c# dlls that where over 100k?

      "If you used VB previously, you have probably been ruined and can't learn anything else, but if you are new to programming you may as well start with something that is similar to a number of other languages, and learn from coding your own stuff, not using a bunch of wizards to assemble templated code."

      ok, that is nothing but crap and bigotry and crap. I said crap twice because there is so much of it.

      Also, sharpdevelop supports VB.net.

      --
      The Kruger Dunning explains most post on /. http://en.wikipedia.org/wiki/Dunning%E2%80%93Kruger_effect
    3. Re:I'd go with C# by code+addict · · Score: 1

      Not to get in the middle of war, but I'd have to agree that:
      if (x==42) {
         // do something
      }

      is less verbose than:
      If x = 43 Then
         ' do something
      End If

      But this shows my preference for punctuation over then "Then-End" style

    4. Re:I'd go with C# by Anonymous Coward · · Score: 0

      Yeah, but I just hit return after

      If x = 43

      VS.NET completed the Then/Else for me.

      Work smarter, not harder.

    5. Re:I'd go with C# by Dun+Malg · · Score: 1
      Yeah, but I just hit return after If x = 43 VS.NET completed the Then/Else for me. Work smarter, not harder.

      Verbosity isn't just about how much you have to type. It also affects code readability. a simple '}' marking the end of a functional block is much easier to register visually than "end if". It was bad enough in pascal, with the "begin" and "end" crap.

      --
      If a job's not worth doing, it's not worth doing right.
    6. Re:I'd go with C# by Anonymous Coward · · Score: 0

      Well of course their requests for subsidies was not paraguayan in and of it is as it were the United States government would never have if the president, our president, had not and as far as I know that's the way it will always be. Is that clear?

      Emmett Fitz-Hume

  19. 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.
    1. Re:If I may make a suggestion... by bnenning · · Score: 1

      Seconded. The only danger of learning Python is that it might make one less willing to put up with the silly limitations, inelegance, and verbosity of "mainstream" languages. Or maybe that's just me.

      --
      How to solve most of our problems: 1.Lots of nuclear plants. 2.Cure aging.
    2. Re:If I may make a suggestion... by Thorsten+Timberlake · · Score: 1

      What's really good about python imo, is the "live" interpreter, I'm not very experienced as programming goes, and it helps me a lot to be able to see what happens to the data underways and how it's organized. The many modules help a lot too - so far there's been one when I looked for one... PIL, numpy, scipy, etc. But for cpu intensive stuff it's a bit slow.

    3. Re:If I may make a suggestion... by martinultima · · Score: 1
      I just like how trivially easy it is to sit down and start coding. Just a couple weeks ago I dug up the latest version of PyWord from wherever I'd been keeping it – haven't really written that much Python code in a couple years now – and it was almost too easy to get started with it again.

      “But for cpu intensive stuff it's a bit slow.”


      You try telling that to Bram Cohen, the Enigma code-breaking guys, Industrial Light & Magic, or Google... :-)
      --
      Creative misinterpretation is your friend.
    4. Re:If I may make a suggestion... by bill_mcgonigle · · Score: 1

      There was a story here, I think, a half dozen years back about the Navy's plans to get Python into schools so that we'd have a workforce capable of supporting a software-driven military by 2030. They did the survey and the experiments and found Python to be the best tool for teaching children how to program 'properly' (for their definition of properly anyhow).

      And no, I haven't signed the blood oath to proselytize Python as the One True Language for every application, but in this case it appears to be the right tool for the job.

      --
      My God, it's Full of Source!
      OUTSIDE_IP=$(dig +short my.ip @outsideip.net)
  20. Why? by RobinH · · Score: 1

    I don't think that anything .NET, or VB6, is really a good beginner's language, just like I don't think Perl is a good beginner's language. I think you should start with a very general language that enforces good behavior, like Java.

    You move from Java to .NET, VB6, or Perl basically for the added features and simplicities that each one brings to the table. .NET if you want to write a quick windows application, VB6 if you need a rapidly developed windows application that is mostly GUI, and Perl if you need to write a text parser. You take what you learned from Java and you can apply it anywhere else, and you know what pitfalls to avoid. If you start with a language for a specific application, you will always see all your programming through that lense.

    --
    "I have never let my schooling interfere with my education." - Mark Twain
    1. 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....
    2. Re:why? by PitaBred · · Score: 1

      All of which serve to confuse a new programmer. Garbage collection is a great tool, but it's not one that should be used without knowing what it does. Many new Java programmers make horrid mistakes because they don't understand this.
      Let them learn the small programs on C/C++, let them know what the computer does, then give them the power tools to build bigger, more powerful programs that will actually run well.

    3. Re:why? by macshit · · Score: 1

      All of which serve to confuse a new programmer.

      No, in my experience (watching people learn program) it does not -- rather in many cases it helps remove distractions. It is certainly useful to learn programming at a "lower level", as seeing the mechanism behind the abstractions can simply one's mental model in some cases, but often the dirty details are just that, and serve simply to distract from whatever is being taught (algorithm X).

      Good CS programs generally use a healthy mixture of languages, both to give students breadth of understanding and to allow the emphasis to be on the concepts which are appropriate to each course.

      --
      We live, as we dream -- alone....
    4. Re:why? by PitaBred · · Score: 1

      I understand the "concepts" thing, but the courses need to be sure they're teaching the CORRECT concepts. Many people seem to come away with "If I type this, some magic happens, and things work", rather than knowing what's going on. I've also watched and helped many people learn how to program, and found that this is what they come away with if they don't have the more base concepts and are thrown right into a high level language. First off they want immediate results, then they need to understand how it works, and then they should move into larger projects. The trick is just in making sure the immediate results part doesn't serve to give them false understanding.

    5. Re:Why? by jbolden · · Score: 1

      If you want an object oriented language that enforces good behavior why would you pick one with:

      1) An enormous library which inconsistent and grew up historically
      2) A syntax designed to resemble C rather than one designed to teach a clean way to code
      3) Neither pure function nor simple procedures
      4) All sorts of hooks for things like CASE tools which are designed for poor team programming

  21. Is Visual Basic a good beginner's language by johnw · · Score: 0, Offtopic

    Q: Is Visual Basic a good beginner's programming language.

    A: No.

    Next!

    1. 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.
  22. Visual Studio and Visual Basic by biocute · · Score: 1

    In my opinion, any language is good for beginner, the idea is to get you started and hooked, and as you progress, you will find out what are good and bad habits, and you will develop your own discipline.

    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.

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

    2. Re:Visual Studio and Visual Basic by Anonymous Coward · · Score: 0

      beg to differ

      >Look at it this way... no-one got hooked on pot because they liked making bongs.

    3. Re:Visual Studio and Visual Basic by JianTian13 · · Score: 1

      Umm, I got hooked on cigarettes, because I started buying handrolling tobacco to practice rolling joints...

      Just sayin'...

    4. Re:Visual Studio and Visual Basic by dingen · · Score: 1

      That's how you'll get 'em hooked. If you don't get hooked by the fact that you can create anything on your computer if you put your mind to it and though it might be tough, the sky is limit, you'll never be anything close to a serious programmer anyway. People who need the "fun" of dragging and dropping to build an application is the reason why VB is regarded as a toy.

      --
      Pretty good is actually pretty bad.
    5. Re:Visual Studio and Visual Basic by Beryllium+Sphere(tm) · · Score: 1

      >Umm, I got hooked on cigarettes, because I started buying handrolling tobacco to practice rolling joints...

      Oh my, it's true after all? Marijuana really is a gateway to dangerous hard drugs?

  23. 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 Bloater · · Score: 1

      I think they should start with haskell, but only very basic function composition stuff, and do putStrLn ... hand hold through typing errors.

      Then move them on to python, showing function composition there, and quickly adding in imperative/OO style and more complex I/O.

      Then move on to Java to introduce the concept of fully specified interfaces, and demonstrate the usefulness of static checking. Introduce the GUI.

      Then move on to C++, introduce memory management, explaining the leaky behaviours of the above languages. Cover interface design and binary interfaces/serialisation. Introduce generic programming and boost. Introduce assembler and machine code.

      Go full circle back to Haskell showing more advanced haskell stuff building on the C++ generics. Add template haskell.

      Move on to prolog show some techniques that the prolog compiler can use for optimisation.

    2. 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."
    3. 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
    4. Re:I'm a fan of Java by MuMart · · Score: 1
      Having just spent the day with MS.NET I concur that modern Java is highly underrated. It's fast, clean, easy to learn, has great API documentation, portable, and feature-rich.

      Have you ever wondered why MS.NET apps aren't more common? I suspect that there are still some significant API holes (MIDI support is the one that bit me).

      Also if you don't want to pay for VS.NET I found the free development tools such as SharpDevelop to be somewhat buggy at the moment. With Java you are spoilt for choice with free, mature, industrial-grade IDEs.

      If your goal is writing Windows-compatible software in a "modern" language, Java is the best choice in my opinion. It has it's problems, but from what I've seen, the grass really isn't greener on the other side.

    5. Re:I'm a fan of Java by sco08y · · Score: 1

      and it has a great user interface library in the form of Swing.

      I just unloaded out a great meal in the form of a turd.

  24. 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.
    1. Re:sort of. by Tyger · · Score: 0

      Just because it compiles to the same thing doesn't mean the languages can be compared. The toy language thing is not about the language interpreter, but how the language is structured. That goes doubly so for the coding habbits it promotes.

      Why are you trying to compare apples to oranges? The fact that VB is now translated to CIL does not change the structure of the language significantly.

    2. Re:sort of. by object88 · · Score: 1

      Why are you trying to compare apples to oranges? The fact that VB is now translated to CIL does not change the structure of the language significantly.

      In this case, GP is comparing gala apples to fuji apples. I've never written a line of VB.Net code, but I understand it, because I've programmed extensively in C#. VB.Net really is pretty far from VB6 (which I've also used), and quite close to C#.

    3. Re:sort of. by Tyger · · Score: 1

      But that doesn't really have anything to do with it. C# and VB.NET share the libraries of the .NET framework, so it's not hard to imagine someone who knows one language could understand what the other one was doing. You read through it and see words you recognize and know what they do.

      But that still has nothing to do with the structure of the language. The fact that VB.NET uses CIL and that it uses the .NET API does not change the basic syntax of the language, and it is the syntax of the language that makes people say it is a bad choice for learning programming.

    4. Re:sort of. by object88 · · Score: 1

      and it is the syntax of [VB.Net] that makes people say it is a bad choice for learning programming.

      Can you give me a concrete example?

  25. 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 itior · · Score: 0

      Assuming we're speaking about VB.NET here, how on earth can you justify
      a) comments about stability - VB.NET runs on the .NET runtime like all other CLR languages, so this has ~nothing~ to do with the language itself.
      b) comments about type enforcement - VB.NET is a fully OO, strongly typed language, so you're just plain wrong.

      Then you say you'll stick with PHP, I guess because it's typing system is much more robust than that of VB.NET.

      Way to spread FUD.

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

    3. Re:Good ... for what? by nogginthenog · · Score: 1

      VB6 has type enforcement too with 'Option Explicit'.

  26. Many of us started on things like Applesoft BASIC by Richard+Steiner · · Score: 1

    Many of us started by using things like Applesoft BASIC, and we survived.

    I am not familiar with VB beyond glancing through some code, but it could be worse. :-)

    --
    Mainframe/UNIX Bit Twiddler and long time Windows/Linux Hobbyist.
    The Theorem Theorem: If If, Then Then.
  27. 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.

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

    1. Re:dont learn vb by Lord+Kano · · Score: 1

      22+ years ago, my first language was BASIC. Later I moved on to C. Learning C made it really easy to pick up C++ and alter Java. I learned "just enough" to do what I needed to in VB6. When M$ discontinuted support for VB6 RealSoftware gave away free licenses for RealBasic. Now, when I'm doing anything simple I use RealBasic. Java and C++ are great for heavy lifting, but for simple tasks I prefer RealBasic.

      LK

      --
      "Hi. This is my friend, Jack Shit, and you don't know him." - Lord Kano
    2. Re:dont learn vb by Anonymous Coward · · Score: 0

      I totally agree. I did some programming in BASIC in formal classes and learned very little (a long time ago) but when I got hold of a Shareware C compiler (as a hobby) I learned heaps! The C compiler I got lacked a standard library so I built one from scratch learning heaps as I went along including inline assembly code, full functions implemented in assembler, etc.

      I have been able to translate what I learned into quite a few different languages from that point including SAP/ABAP, Perl, and VB depending on the demands of the job.

      And I am not a programmer; I am an accountant. But having a good grasp of how things actually work has helped me with data conversions, accounting system interfaces and glue applications, and conversion of business requirements to actual application or report code.

      I have only got into OO in a small way, not having had any projects that lent themselves to it recently but the concepts seem to make more sense when coming from a procedural background where you have put effort into properly modularising your code.

      I found a solid grounding in C was more use to me than the earlier Pascal or BASIC could ever have been.

  29. VB.net == C# They are the same language by JumpSuit+Boy · · Score: 1

    TSIA
    They are the same languaqe just different syntax and spelling. SharpDevelop among other dev tools has a menu item to translate between the two. That C# looks alot like Java so it get's you two frog with one stone.

    Not that I like writting anything in either language anymore, give ruby any day.

    --
    Oh really?
  30. Headache by NitsujTPU · · Score: 1

    VB gives me a headache just to look at. I can't imagine anybody's learning anything valuable.

  31. 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 Anonymous Coward · · Score: 0

      Oh, remind me never to hire you.

    3. 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
    4. 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.
    5. Re:Yes. by Anonymous Coward · · Score: 0

      Okay when I was 12 years old (about 20 years ago,) basic was an awesomely powerful language, with little barrier to entry. However now, there are a ton of better languages available to any developer. When using VB your problem is more how to solve this problem with VB, that's primarily because the constructs that VB uses are awful. The statement in the original article that VB is now a complex language, is also ridiculous, the best languages in the world are a simplified, and have a very limited syntax, thus providing even more understandability.

      In order of my preference:
      Python
      C/C++
      C#
      ASM
      Delphi

      Yeah you'll notice nothing about VB on there, however I consider C# to be so close to that of VB, especially on Windows that I don't see the point in using VB at all.

    6. Re:Yes. by KermodeBear · · Score: 1

      The parent comment brings up a good point. It really depends on what the programmer wants to accomplish. If all you want is to automate some simple tasks or write something simple and quickly without wanting to get into the complexity of other languages, then I would say that VB would be okay.

      If the point of learning a programming language is to learn how computers function, then VB is not a good choice. Personally, I started my real programming education with C/C++. This was great; I learned a lot about how computers do things on the lower levels, things that are hidden from you when you use languages like C#/Java/VB.

      Starting with C#/Java or some other OO language isn't terrible, but it does leave out some experiences; Managing your own memory, for instance (Although you CAN write un-managed code with C#), and not using objects at all. Personally I like OO code, but I realize that a LOT of code out there is just a bunch of functions. Then you have functional languages like ML; I did a bit of ML in college and loved it, it was very different from anything I had done and it stretched my brain in new directions.

      Ideally, it would be best to learn several languages, not just one. Different languages are best suited for different things; C is great for low level stuff; Java/C#.Net is great for large systems; PHP is great for web development; Perl is great for masochists and whackos everywhere.

      So the answer to your question, as is often the case with technology, is "it depends."

      --
      Love sees no species.
    7. Re:Yes. by miyako · · Score: 1

      I wonder if the grandparent was confusing "Java" with "Javascript".

      --
      Famous Last Words: "hmm...wikipedia says it's edible"
    8. 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
    9. Re:Yes. by Anonymous Coward · · Score: 0

      I wouldn't call it "excellent." While the tools are pretty good, the language itself is crappy. Really, they should write a good RAD for Python/Ruby/etc. Or maybe Apple could revive Hypercard :)

    10. Re:Yes. by Wrathernaut · · Score: 1

      Exactly my situation. I'm not a programmer, I make VB scripts/macros/programs that are required for the re-formatting of word documents that come from multiple sources. Different spellings, fonts, line spacing, control characters, all done pretty easily with visual basic. I never read a book on it. I never had a class on it. These macros are saving my section at least a couple of man-hours (and much sanity) every day. Yes, I have to create work arounds for limitations within visual basic, and it's not the fastest program either, but if this language didn't exist, I'd be categorically insane right now. I am tempted to move up to a real programming language, but even if I could create a nice "real" program it wouldn't interface with MS Word 2003 seamlessly, with a simple toolbar, without requiring Admin rights to install. VB is a great starter language the way Legos lead to carpentry.

    11. Re:Yes. by Wikipedia · · Score: 0

      Damn straight. I used this book:

      http://www.duntemann.com/assembly.htm

      --
      P2P Anonymous Distributed Web Search: http://www.yacy.net/
  32. But.. by Anonymous Coward · · Score: 0

    I like making hundreds of small buttons flash on an off. It gives people seizures. If a program can't give me a seizure, it probably isn't that good anyways...

  33. why? by everphilski · · Score: 1

    why? I understand not starting people off with C++, I wouldn't suggest starting someone off with C++, but other than religous zealotry why java over C++?

  34. 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 dunkelfalke · · Score: 1

      there was visual basic 1.0 for dos, think of a turbo vision style gui

      --
      Conservatism: The fear that somewhere, somehow, someone you think is your inferior is being treated as your equal.
    3. Re:In the next episode of Ask Slashdot... by Anonymous Coward · · Score: 0

      Actually, the first version of VB was available for DOS and Windows. I don't know if they were mutually compatible, but there was definitely a VB for DOS with a GUI builder -- otherwise it would have just been a new version of QuickBasic.

      dom

    4. Re:In the next episode of Ask Slashdot... by Inner_Child · · Score: 1

      Visual Basic 1.0 was available in original Green Death DOS flavor as well. Not popular, but it did exist.

      --
      Today is red jello day - all workers must eat all of their red jello. Failure to comply will result in five demerits.
    5. 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
    6. Re:In the next episode of Ask Slashdot... by KingMotley · · Score: 1

      Visual Basic 1.0 first come out on DOS. It was very similiar to quick basic, and it had a "GUI" (Character based) that you could place forms, windows, command buttons, lists, etc. The nice thing was that you could then take the VB 1.0 for DOS app and load it up in VB 1.0 for Windows and it'd work. Although there was some minor issues with things being in a frame. Apparently, controls at coordinates 0,0 in a frame under DOS meant just inside the frame (OK, it's character based, so 1 character down, and 1 to the right), in windows, it meant right on top of the frame (And actually a bit left and up from being "inside"). So while it would run, it was pretty ugly, but 5 minutes later of re-placing the controls and you had an application that ran in both DOS and Windows (natively -- no DOS Box).

    7. Re:In the next episode of Ask Slashdot... by Danse · · Score: 1

      I doubt you've seen a modern version of VB. It could serve quite well as a teaching language. Learning to indent is rather silly. I had to learn to do it back when I first started learning, but any modern IDE should handle that for you. Yes, you get a free WYSIWYG GUI editor, but that exists for several languages now, and VB.NET does it very cleanly. It clearly marks code created by the IDE and that code is quite easy to follow, and a starting place for most tutorials or books on VB. From there you can simply start writing code that has obvious effects for the user. Granted, it may not be where you want to start if you're planning to major in CS, but for most others it should do fine.

      The bottom line is that it's easy to get started with, and it's become a full-featured OO language now.

      --
      It's not enough to bash in heads, you've got to bash in minds. - Captain Hammer
    8. Re:In the next episode of Ask Slashdot... by Anonymous Coward · · Score: 1, Interesting
      * Yeah, the first versions of Visual Basic ran on DOS and didn't have the GUI builders that later versions did. I'm not quite sure what qualified them as basic of the "visual" variety, it's not like you had to type your code in with your eyes shut in other basics.


      Interesting that I had Visual Basic 1.0 with its windowed GUI builders... it did have a DOS runtime environment that used text-graphics windows instead of windows windows.
    9. 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.

    10. Re:In the next episode of Ask Slashdot... by Anonymous Coward · · Score: 0
      Learning to indent is rather silly. I had to learn to do it back when I first started learning, but any modern IDE should handle that for you.

      I'm sure even when you first started learning there were beautifiers and pretty printers to "properly" indent your code for you. But identation is definitly not silly in Python, since that is how you create blocks of code in it.
    11. Re:In the next episode of Ask Slashdot... by Danse · · Score: 1

      I'm sure even when you first started learning there were beautifiers and pretty printers to "properly" indent your code for you. But identation is definitly not silly in Python, since that is how you create blocks of code in it.

      And people actually like that as a feature of the language?! Sounds pretty annoying to me. I like code that clearly identifies the beginning and ending of a block. Using whitespace for that seems like an ugly solution.

      --
      It's not enough to bash in heads, you've got to bash in minds. - Captain Hammer
    12. Re:In the next episode of Ask Slashdot... by Mr2001 · · Score: 1

      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.

      As others have pointed out, this is incorrect - the very first version of VB ran on Windows and included a GUI builder. VB/DOS came later, but it included a "GUI" builder that was much the same, with text-mode forms made out of line-drawing characters.

      Perhaps you're thinking of QuickBasic, the DOS Basic compiler that came before VB, or QBasic, the stripped-down QuickBasic interpreter that came with later versions of DOS.

      Or maybe you're thinking of Visual C++, which in fact was not "visual" in any sense other than (1) you could look at your source code as you typed it in and (2) it came with a dialog box resource editor like every other Windows IDE. It wasn't until Borland C++Builder (and Visual C++ .NET, several years later) that there was a Windows C++ IDE with a GUI builder.

      --
      Visual IRC: Fast. Powerful. Free.
    13. Re:In the next episode of Ask Slashdot... by cduffy · · Score: 1
      And people actually like that as a feature of the language?!

      Perhaps it's telling as to the value of the feature that folks who've used Python for a while do come to consider the use of significant whitespace to be a feature: If folks who actually use it come to like it quickly, is it likely to really be as bad as folks who haven't used it tend to think?

      In other languages, whitespace provides an opportunity for confusion if the whitespace doesn't match the actual flow control; in Python, the whitespace always matches the flow control. Moreover, Python code simply looks clean. (There are some post-2.x language features which allow for funky-looking code if abused, but "funky-looking code" by Pythonic standards is much, much cleaner than what almost any other group would call "funky-looking").

    14. Re:In the next episode of Ask Slashdot... by ishepherd · · Score: 1

      You're back-to-front on the chronology. VB 1.0 first came out on Windows. They later added the DOS version.

      --
      fud, notfud, yes, no, maybe
  35. Definately by FST · · Score: 1

    I personally began to code with VB4, and I believe that that was the perfect place to start. Everything is simplified, there are no pointers to deal with, and you can get "purty" programs done in a matter of minutes. The best thing is, while it is a lot like English, the actual coding is so similar to that of the major languages (C, CPP, Java, PHP, etc.) for every type of developement that once you are able to code in VB, you can code in anything. It is similar to learning to ride a bicycle: first you use training wheels, but after you finish using training wheels you can quickly learn the real thing, after only a small amount of bumps and bruises (pointers).

    --
    46487 466780 252994 376409 96920 39622 205366 244315 622115 512361 668040 63608 259203 955314 811176 652718 166330 23922
  36. 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 tsm_sf · · Score: 1

      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.

      Who the hell modded this Troll? A decent COBOL programmer can still write his own ticket. There are more COBOL jobs out there than people who want to spend their time working with the language.

      Of course, it's not exactly a skill I'd rely on to see me into retirement =p

      --
      Literalism isn't a form of humor, it's you being irritating.
    3. 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.

    4. Re:Try COBOL by 77Punker · · Score: 1

      Your approach makes alot of sense. I've developed such a strong opinion towards assembly because I'm currently learning it. Had I understood it in past classes, debugging my homework assignments and other programs would have been much simpler.

    5. Re:Try COBOL by Anonymous Coward · · Score: 0

      Then your professor sucks. In C, there is a fairly close mapping from C code to assembly.

    6. Re:Try COBOL by GlassHeart · · Score: 1
      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.

      Either your professor is wrong, or you misunderstood your professor. On a superscalar architecture, the CPU may be executing the instructions you wrote in a different order (but with the same intended effect) than in your assembly source code. If you consider features like register renaming, the CPU is also doing something rather different than your source code would suggest.

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

    8. Re:Try COBOL by glyphi · · Score: 1

      I hear what you say and in the areas you discuss I agree. However there are times I still find the ability to 'think as the computer does' can be a real advantage. However writing maintainable code is IMHO frequently more important than most else - especially given the magnificent increase in computing power over say, a 6502 or an 80186. The fact I have that understanding does, I hope, improve my abilities.

    9. Re:Try COBOL by jaydonnell · · Score: 1

      haskell was fun in college. We also learned OZ which made my brain explode ;)

      Along these same lines it's really nice to use blocks in ruby for things like database result sets and file io. It will automatically clean up the resources for you.

    10. Re:Try COBOL by rblum · · Score: 1

      I'd consider switching Prof's. I'm by no means brilliant, but it sure as heck doesn't take me a day to figure out what a line of C++ does.

      Add to that the fact that it might be the equivalent of hundreds of assembly instructions, which are way harder to grok...

    11. Re:Try COBOL by Anonymous Coward · · Score: 0

      Your way of thinking is EXACTLY what is wrong with the hordes of modern ASP .Net morons who are going around calling them selves "programmers". You are working on something which eventualy, at some point, will be converted directly to binary code that needs to be executed ON COMPUTER HARDWARE!! You write code FOR the machine, not to make a pretty picture that other lamers can admire! How ever, I am sure there is a nice job waiting for you at Microsloth, where pretty looking code that compiles into wades of wasted op codes is a way of life. High level languages are supposed to speed code development by allowing you to use libraries of routines that have been well designed in ASM or some other lower level language. They are not an excuse to become ignorant of what is going on under the hood! The goal is still the same regardless of what level you are coding in, create an efficient chunk of binary code that gets the job done. I have run into your type very recently. While talking to some asp .net moron I have to deal with for a customer, I asked what kind of processing power and memory foot print their application was going to require. This should be a very straight forward question for any real programmer. Well, they guy literaly told me: "I am a programmer, the hardware side of things is not my responsibility, so I can't tell you that". What?!? Hello, idiot, what do you think you are writing the code FOR? HARDWARE!! This is what happens when you train your self not to think like the computer/hardware, you STOP being a real programmer...

    12. Re:Try COBOL by aug24 · · Score: 1

      I agree - moreover, I think this is key to OO coding.

      We take the instructions to the computer and wrap them up in manipulable objects. Most, if not all, of the business code should be objects interacting. Below that level the objects will talk to the computer.

      This enables us to both think in business terms and in efficient execution terms.

      Justin.

      --
      You're only jealous cos the little penguins are talking to me.
  37. 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?"
    1. Re:D'oh! by Anonymous Coward · · Score: 0

      The amount of C++ programmer snobbery on this thread is simply amazing.

    2. Re:D'oh! by Anonymous Coward · · Score: 0

      You know, thats pretty insulting to some of us that write all our own code, often for the benefit of others... and could do it in a number of languages. We use VB at work ALL the time. We don't use VB because we can't use anything else, its because its the best tool for the job. Can I write virtually anything I do on a daily basis in JAVA? Of course. C++? Yep.

      But why? I can do it with 40% of the dev time if I do it in VB. My code is as clean as anyone elses, and usually more stable than any C++. THAT, friend, is a good business decision.

  38. On the other hand.... by Anonymous Coward · · Score: 1, Interesting
    It is a completely unstructured language that promotes very bad coding practices and allows for poorly writen applications to run anyway.

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

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

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

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

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

    1. Re:On the other hand.... by RetroGeek · · Score: 1

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

      Hmm, maybe, but it requires such a LARGE number of key words:

      if/then/else/end if
      while/wend
      for/next
      select case/end select
      sub vs function vs property

      and so on. The C like languages at least have a consistent block syntax.

      --

      - - - - - - - - - - -
      I am a programmer. I am paid to produce syntax not grammar. Deal with it.
    2. Re:On the other hand.... by darkain · · Score: 1

      because lord knows
      } } } }
      is much easier to figure out what the hell is going on

      no, i'm not trying to say VB is great, but sometimes the braces becomes a head ache in largely nested code. and no, i'm not saying i write code like this, but have had to deal with it picking up and fixing other's libraries.

      VB is much easier for the beginer, because it is much clearer. its syntax was designed to be cloesr to spoken english then harsh machine code, therefor its over-all easer to pick up and get into for a novice.

    3. Re:On the other hand.... by microsage · · Score: 1

      Also, braces aren't bad if you indent properly, and don't just line them up.

    4. Re:On the other hand.... by RetroGeek · · Score: 1

      cloesr to spoken english

      You would love COBOL then, as it was designed to be read by PHBs.

      --

      - - - - - - - - - - -
      I am a programmer. I am paid to produce syntax not grammar. Deal with it.
    5. Re:On the other hand.... by RetroGeek · · Score: 1

      braces becomes a head ache in largely nested code

      [shrug]

      Which is why code formatters exist.

      --

      - - - - - - - - - - -
      I am a programmer. I am paid to produce syntax not grammar. Deal with it.
    6. 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!

    7. Re:On the other hand.... by chthon · · Score: 1

      Have you ever tried COBOL ?

    8. Re:On the other hand.... by RetroGeek · · Score: 1

      Oh yes.

      Now there was (is?) a wordy language.

      I read somewhere that there is an OO version. Scary thought.

      --

      - - - - - - - - - - -
      I am a programmer. I am paid to produce syntax not grammar. Deal with it.
  39. 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).

  40. NO! by panic911 · · Score: 1

    Use C#. VB won't teach you anything except how to write ugly code. C# is a very easy language to use and almost seems more intuitive, to me, than VB. It will also teach you how to maintain a C/C++ style structure to your code and C/C++ style syntax. C# also resembles java pretty closely. You will have a much easier time learning those other languages (C/C++/Java) if you learn C#, rather than VB (which doesn't resemble any standard language, at all, except MAYBE delphi/pascal... two other proprietary programming languages). VB will just confuse the hell out of you when you decide to learn a new language.

  41. It was once a great beginner's language by Gavin+Scott · · Score: 1

    VB was a great beginner's language (when it was version 1.0 and was clean and simple and fully documented in a couple of relatively thin manuals that came in the box). But now the beginner may be overwhelmed by the available functionality and the documentation is now hundreds of megabytes of text available electronically.

    Of course the same thing can be said about Java 1.0, and early versions of pretty much every similar language. As people demand to be able to do everything in a programming system it will eventually be come almost unusably complex no matter how simple and clean the original design and the first version were.

    If someone wants to be a Windows programmer, or especially a professional VB programmer, then they have to start somewhere and VB is probably a fine starting place for someone moving into the world of Windows programming.

    If you're interested in programming in general with less of a "Windows GUI Apps" concentration then there are lots of (probably better) options.

    One I like to recommend for kids to get them into the basics of programming is POV-Ray for Windows which provides a very nice little IDE for writing programs that produce beautiful pictures when run. You can give a kid a program that draws a shiny sphere floating over a checkered landscape and then show them how to code a loop to make it 100 randomly positioned spheres, etc. and leave them to experiment with making changes to the program and seeing how that affects the output. Way more interesting than your average "Hello World!" in a window.

    It's free too

    G.

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

    1. Re:bad place to ask that question by Chris+Burke · · Score: 1

      That's a very good point. I think the assumption many -- at least myself -- are making is that "beginner programming language" means "introductory teaching language", as in someone who is trying to learn to be a programmer as a career (or full-time hobby, the scenario I learned under). In the that case, VB would be an insanely bad choice as it deliberately hides the fundamentals that one needs to know in order to be successful in the long term. If that isn't the case, if it's more like the unfortunately forklift operator you describe who is a beginner who needs to create a program, it very well may be the best choice.

      --

      The enemies of Democracy are
  43. 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).

    1. Re:Free Pascal by ROBOKATZ · · Score: 1
      I'd also like to ammend my comment after browsing others in the article -- unlike the other fad languages being mentioned here, Pascal was designed as a language to teach programming. It also compiles to native code, and is not interpreted or run in a VM. Depending on what your goals are, you may want to seriously consider how isolated you want to be from the underlying system. If you are trying to learn fundamental CS concepts like data structures, Java may be appropriate because of it's annoyingly strong typing and garbage collection features, and you probably won't want to deal with any system level issues. On the other hand if you want to hack the Linux kernel or develop high-performance games you may want to start off with C. If you just want to write "fun" scripts maybe Perl, Python, or Ruby would be appropriate, or maybe something like LISP.

      I recommended Pascal because it can give you the most exposure to all aspects of programming with little barrier to entry. It is object oriented and strictly typed for high-level conceptual programming without the mess of C++, while allowing you access to system level programming. In addition the component-based UI designer can give you a good top-down introduction to creating UIs.

  44. 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"
    1. Re:Yes ... and all the others too. by apost8 · · Score: 1

      OMG, based on that list of antiques, you're probably as old as I am! How about RPG, COBOL, Algol or PL/I?

      Anyway, I agree with you that it's never a waste of time to learn a new language and that VB (in its various incarnations) will come handy at some point. However, VB is a very poor first language.

      Imagine the begining Spanish student who only knows English. For the first months (years ?) conversation is mentally translated Spanish -> English -> Spanish. The same is true for programming languages. The new student is always looking for an analog in what he already knows.

      I would go with Ruby or LISP way before VB.

    2. Re:Yes ... and all the others too. by Anonymous Coward · · Score: 0

      imho, this is the most insightful comment in this discussion so far

      oh, and for everyone else who did nothing but complain about how terrible VB is, well it's just like dising pliers and bragging about your crescent wrench

      in truth, programming is programming

      why some 'programmers' think 'real' code is more effective or 'holier' than some end user's macro is simply beyond me

      i've seen elegant VB code

  45. Re:No. Well, Yes by AngelofDeath-02 · · Score: 1

    It depends on your teacher. Honest! In highschool I learned qbasic. It was taught as an introduction to concepts like variables and loops. That was the whole point ..

    You could learn some of the basic but crucial programming concepts required before getting so frustrated with syntaxial errors that you gave up the class all together.

    Of course, if your teacher is bad you will not take much out of the class, as with any other course.

    --
    No, I am not an English major. My posts are subject to typos and incorrect grammar. Do not expect perfection.
  46. No. by rain9441 · · Score: 1

    I created a tool in VB to learn VB, the only thing I learned from VB is if you use VB, you regret that you did and wish you used Java.

  47. 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."
    1. Re:It's decent. by galvanash · · Score: 1
      VB4 was my first "real" programming language
      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...

      I call bullshit. No one, and I mean NO ONE, who learned to program using VB and later moved on to a real language could possibly make those statements... I dont deny that the language can be used in the manner you described, but I can use a pipewrench to drive a nail... that doesnt make it a good hammer. VB.NET? Ok, they fixed most of the truly stupid shit, but prior to that (i.e. VB6 and back) it was a joke.

      --
      - sigs are stupid
    2. Re:It's decent. by ajpr · · Score: 1

      I agree partly with what you say as I think in general it applies, but my personal experience was very different.

      I spent a year of school learning BASIC on the Acorn Archimedes, but found it hard to pick up. The next year I started my project from scratch and began writing it in Visual Basic. I found VB much easier to use and the tutorials a great help. I managed to get a B grade for the project and decided I should continue my programming at Uni. So off to Uni I went, and to my shock we had to learn Java...using emacs....on redhat 6.2. I realised I had no proper understanding of programming and needless to say I didn't pass all of my exams. Obviously with hind-sight it would seem that my problems were evident at the start with BASIC. Anyway, a few months after leaving uni I somehow got a job as a software programmer, in... VB 6.0. and SQL 2k

      I had to brush up as I hadn't done much VB for a few years. However, I did struggle and after the trial was up I decided to leave as I was really slow and took a lot of flak from my work colleagues. At this point I finally chose to give up on being a programmer and so I went back to Uni to study a completely different degree. I graduated last summer and have been unemployable in anything but menial jobs in supermarkets etc (I can't even get admin work!).

      This isn't an intentional rant it's more of a counter to every post I've read modded 3+. As the posts I've read have been either for VB or against it but without actual experience or knowing anyone that has started in VB and failed pretty badly. I can honestly say I've never really understood functions, classes or OO in general. It's not from lack of trying, it's just I can't get my head round it but procedural languages I can do more.

      So yes, VB (pre .net) I can say for certain is a bad beginning language as you will never know if you have the potential to become a programmer, and really that is what counts. The new .Net I've had a look at and I find it a lot harder to understand as it resembles Java more than it resembles the old VB. However, I still don't think VB.net is close enough to a real language as it has SO many automatic things for you. I managed to write a small program in .Net without really knowing what I was doing when I was autocompleting, I just tried something that looked like thw right word(s) and used trial and error. Doing that seemed to work so it still doesn't force you to learn and understand programming.

      Therefore I have to conclude that VB (and VB.net to a lesser extent) is useless for a beginner that wants to BE a programmer. If you are already a programmer then it's a great tool to quickly make client GUIs. If you are hobbyist then it's fine to use, but really as a hobbyist the hobby is programming and VB isn't really programming as you don't need to understand much to actually use it.

      To sum it up, I wish I had never learnt VB and then I would have almost certainly failed my BASIC project and never attempted a career in programming.

    3. Re:It's decent. by Kiaser+Zohsay · · Score: 1

      Oh, where to begin, where to begin.

      People will say that Visual Basic is "unstructured," and they're clueless.

      VB is unstructured. For that matter, C only is loosely structured. In C, the only code structure is functions, and they can call each other from anywhere, and in any order. You CAN write structured code in VB, or in C, or in assembly for that matter, but you are responsible for the structure, not the language.

      Window creation is needlessly masochistic.

      Agreed. The Win32 API was/is a series of extensions to the Win16 API, which was built to run as a layer on top of 16 bit DOS, which was originally designed for 8088 IBM PCs. Talk about historical baggage. However, VB is not the only way to encapsulate the low-level pain of Win32. Any decent class library will do, such as MFC (and I'm not talking about the App-Wizard generated mountains of MFC, but an actual program written by an actual person).

      ... and used the VB interface just to call C++ DLL functions. It's doable. It works pretty well.

      Is this statement intended as an argument for VB or against it? You're falling back on C++ because VB can't do the heavy lifting. If you like being able to paint the GUI, give Delphi a shot. Object Pascal has all of the object oriented features you would expect (except maybe multiple inheritance) and a really clean class library. However, I would not recommend Delphi as a beginner's language.

      Sure, and I'll be done before a C++ coder even has a window up and running.

      I can run a one-off perl script from the command-line before you can set the name of your OK button. But I CERTAINLY don't recommend Perl as a beginner's language. I don't even recommend Perl as an advanced language, but since I have managed to pick up a bit of it over the years, I put it to good use when I need it.

      I will endorse Python as a beginner's language. Now I only need to find a decent cross-platform beginner's IDE with python support.

      --
      I am not your blowing wind, I am the lightning.
  48. 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.
  49. It doesn't matter by C.Batt · · Score: 1

    :sigh:

    This question is like the common cold. Just when you think it's gone, it comes around again.

    Folks, LANGUAGE DOESN'T MATTER. It's irrelevant ESEPCIALLY at the beginner stage.

    More important is to just find something that provides quick feedback so that they can work on something, then turn around and quickly see the results. Something that encourages exploration.

    Far more important than that is a grounding in basic analytical thinking processes, logic, etc... The ability to think in abstracts, to model a concept, and to conceive of a solution. The language then just becomes the means of expression and the developer will be better equipped to choose the right tools for the job, rather than getting bogged down with ideology.

    Ultimately it all depends on the end goal of the individual in question. Do they:

    a) want to be a good software developer, or

    b) hack out an application every so often?

    If a then follow my advice above, otherwise sure, VB, VBA, or VB.NET is as good as anything else.

    --
    -- All views expressed in this post are mine and do not
    -- reflect those of my employer or their clients
    1. Re:It doesn't matter by object88 · · Score: 1

      More important is to just find something that provides quick feedback so that they can work on something, then turn around and quickly see the results. Something that encourages exploration.

      I'd mod you up if I had any mod points, and hadn't already posted the same idea earlier. I completely agree. My first programming language was BASICA, but I don't put line numbers at the beginning of every line. My second programming language was LISP, and I'm not completely obsessed with parathesis. :)

  50. I don't think by Giometrix · · Score: 1

    that object oriented languages are good for beginners. In the end, hardware is procedural, not object oriented. Beginners should work the way hardware does before they learn to think in more abstract ways (OO, functional, etc). VB6 might be a good choice, as it has a friendly syntax; however, there are lots of things about it that can really mess up a beginner - type safelessness being one of them (you can turn this off, however). C/C++ is how I learned. The nice thing about c++ is that it is procedural AND object oriented; so essentially you can learn the same language to learn both methodologies. Of course, you lose the coolness factor of having a RAD tool (unless there is one for unmanaged c++ now...I haven't been keeping track), which might drive some people away from programming. VB6, love it or hate it, captured lots of people's imaginations because you could make a professional looking app without much effort. Most people in c++ land were stuck with cli apps, which are significantly less cool for most student programmers.

    --
    Download free e-books, lectures, and tutorials at bookgoldmine.com
  51. 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
    1. Re:Yes. Just to be different. by UtucXul · · Score: 1
      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.
      And what exactly is so wrong about recommending Python? (Okay, except for that stupid whitespace thing which is too close for comfort to the FORTRAN 77 I deal with every day).
    2. Re:Yes. Just to be different. by Anonymous Coward · · Score: 0

      > miss information

        Hey, don't badmouth Miss Information! She's a lot more knowledgable than you, or she wouldn't have won that contest!

      > some whack job will likely even recommend Python.

      .... Yeah. A LOT more knowledgable than you.

    3. Re:Yes. Just to be different. by SuperMog2002 · · Score: 1

      How about adding space to an array without losing the existing data?

      VB.NET
      Dim x as int[10]
      'Populate x
      Redim x as int[20]

      C#
      int[] x = new int[10];
      //Populate x
      int[] temp = new int[20];
      for (int a=0 ; a<10 ; a++)
      {
        temp = x[a];
      }
      x = temp;

      VB.Net is the clear winner here, requiring only one simple line of code and no loops.

      --
      Sunwalker Dezco for Warchief in 2016
    4. Re:Yes. Just to be different. by RingDev · · Score: 1

      Nothing is "wrong" with Python, but can you honestly say you would recommend it as a 1st language? I only tag it so as a humorous prodding, but I should have noted that (seeing as how my own chuckles never seem to get attached to my posts).

      -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
    5. Re:Yes. Just to be different. by Phil+John · · Score: 1

      Or you could use the array copy function instead of a loop.

      --
      I am NaN
    6. Re:Yes. Just to be different. by Danse · · Score: 1

      Actually, I think you have to use the Preserve keyword to do that in VB.NET. Like:

      Redim Preserve x as int[20]

      --
      It's not enough to bash in heads, you've got to bash in minds. - Captain Hammer
    7. Re:Yes. Just to be different. by Tuross · · Score: 1

      I would.

      Python is easy enough for a beginner to pick up, rigid enough they don't wander off into bad practises while learning, yet also powerful enough to be universally useful. It also has a wide acceptance in the Real World (tm) which ensures that students aren't being disheartened by having to learn a language that, while academically sound, is practically useless to them (eg, Haskell).

      To those of us down under, VB is a particularly cheap & nasty .... drink labelled as beer. Just like Visual Basic is a particularly cheap & nasty ... paint program labelled as a programming language. Avoid both at all costs.

      --
      Matt
      1. Read Slashdot
      2. ???
      3. Profit
    8. Re:Yes. Just to be different. by Anonymous Coward · · Score: 0


        You gotta ask yourself 1 question, punk. Why the hell are you working to increase the size of a fixed-length array? Why not use a collection, or better yet a typed collection? Or perhaps you should think about your design a bit and find out why you have an fixed-length array the wrong size in the first place. Habits like that snippet above are compiled into similar code, but VB doesn't understand value types vs. reference types, thread locking, etc. Only a VB programmer would even post such a thing.

    9. Re:Yes. Just to be different. by strider44 · · Score: 1

      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.


      I think you're right there, though I'd go a bit further with saying what you shouldn't use .NET for. The main problem with VB.NET is that using a layout manager GUI with some code for only the important bits isn't really teaching you much. VB is a RAD language - it's not really a programming language. Asking whether VB is a good *Beginner*'s language is like asking whether designing a simple bridge is a good practice for beginning engineering. Sure it might help for construction engineering but it'll only slightly increase a small subset of the skills needed for say chemical engineering.

      Anyway, for someone who wants to be a designer or a scripter, or being able to program for personal use, without wanting to get a job as a serious programmer then perhaps VB would be a good beginners language. If they want to be a serious programmer then they're going to need to learn enough C to get knowledge of memory management, touch on a bit of assembly to get knowledge of how computers read instructions and how they actually work, learn a pure OO language, probably pure Java would be best (at least it's the most "safe"), and learn SQL to get knowledge of database management. Then they may need to go into some specialisations, perhaps OpenGL/DirectX if they want 3D graphics work, or an ASP scripting language (OK maybe VBScript) or PHP if they want to design a web frontend. Learning VB wont exactly help you in an actual job though.

    10. Re:Yes. Just to be different. by geekoid · · Score: 1

      man, compare to spread some more FUD?

      VB.NET is just as powerfull as Java, C#, C++ for application development. BTW, most development is application development.

      You want to teach driver writing? building an OS? Firmware? then no vb is notr the language, but wither is Java, and in some instance C++ won't cut it.

      VB.NET gives you the advantage that you CAN teach basic practical programming while allowing the students to see their results immediatly.

      When someone begins to get confident they will be embiggened* to lok deeper into programming as a whole. At which point that cab think about at what 'level' they whioch to program. Application, machine, whatever.

      *It is a perfectly cromulent word.

      --
      The Kruger Dunning explains most post on /. http://en.wikipedia.org/wiki/Dunning%E2%80%93Kruger_effect
    11. Re:Yes. Just to be different. by lordofthemoose · · Score: 1
      Actually, I would recommend it as a first language.
      At my university (somewhere in France), we've chosen it to teach programming to 1st year students (who have actually already had 2 years of higher education, 70% of them in maths, 30% in economics). Prior to this, C was taught. A good half of our students are computer illiterate, by which I mean they have never ever used a computer before.
      • C was a complete failure
      • Python was a complete success
      C was a failure because students needed to understand how a computer works (pointers, memory and other malloc-related atrocities), and had to fight with a bizarre syntax, while at the same time trying to figure out what an algorithm was. They spent most of their time puzzling why their code didn't compile, and not enough why it didn't work. And above all, most of them ended up believing that coding was for a special class of uber-gurus.
      Python was a success because students could focus on understanding what was happening when the code was running (interpreter + very simple english-like syntax). The use of indentation as a logical block delimiter was also a tremendous help to them, along with the fact that you could write simple non-OO code or OO code. Finally, they could write useful programs -or fun programs, we've had quite a few games using pygame as projects- that did something and looked good.
      The net result is that most of them understand what an algorithm is, quite enjoy coding, understand that it can be fun, and many more of them now enroll in the optional C++ course. Even more interesting, since our switch to Python, they are actually better at C++, and seem to find it a lot easier. They just see it as another way of expressing things with a more arcane syntax and with pointers, and not as something inherently difficult.
      I'm not saying I dont'like C, it's quite the opposite actually. It's just that it's not suited to absolute beginners.
    12. Re:Yes. Just to be different. by Anonymous Coward · · Score: 0

      I think you might just have a point.

    13. Re:Yes. Just to be different. by RingDev · · Score: 1

      "VB is a RAD language - it's not really a programming language."

      That's like saying "English is an engineering language". RAD (Rapid Application Development) and its more recent iterations (agile and extreme development) is nothing more then a project management style. You can do RAD in VB.Net, C#, Java, Ruby, or heck, even C++ if you have enough libraries and frameworks in place. And having frameworks in place hardly makes what you are doing "less programing."

      For instance, I maintain an extension that reports data from a 3rd party leasing system for my job. I spent a good amount of time designing a data abstraction layer and abstract functional classes. This afternoon I was given a request for a new report. Using the framework we had in place I turned out a production ready report in under 2 hours (including all data pulls, calculations, XML generation, Crystal Reports display, and Excel exporting). So yeah, you could argue that VB.Net is just a toy, and that real programmers use C++ to do everything. Me, I'll use the best tool for the job and save myself weeks worth of man hours.

      "Anyway, for someone who wants to be a designer or a scripter, or being able to program for personal use, without wanting to get a job as a serious programmer then perhaps VB would be a good beginners language."

      Let's get something clear here. VB.Net IS NOT VB. And neither of them has EVER been a scripting language (You are thinking of VBA which was the scripting language of choice for Office). The original poster was asking about VB.Net. VB.Net is fully Object Oriented, structured, and event driven. The GUI design tools that VB.Net has are also available in C# and while they are handy for throwing together user interfaces, are a pretty small part of the picture.

      -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
    14. Re:Yes. Just to be different. by eh2o · · Score: 1

      At least with Python one is forced to learn proper indentation on day one.

    15. Re:Yes. Just to be different. by RingDev · · Score: 1

      /shrug

      Microsoft's .Net IDE (and SharpDev, its open source competitor) automaticly indents. Learn it or not, your code will be correctly indented.

      -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
    16. Re:Yes. Just to be different. by Anonymous Coward · · Score: 0

      VB.NET is just as powerfull as Java, C#, C++ for application development.

      That depends on what you mean by "power". I believe the grandparent was saying that Python was "powerful" in that you can write huge amounts of code in it without it turning into spaghetti. It can be used to solve big problems as well as small ones.

      If you know that all you are ever likely to do is write front-ends to command-line applications and similar small stuff, then go ahead and learn VB. Or Python. Either are fine for the little things. But trying to do bigger stuff in VB is a recipe for disaster, while Python copes just fine.

      Think of it this way: what's the best way to get an inch off the ground? Jump. What's the best way to get a foot off the ground? I guess you could jump still. What's the best way to get ten feet off the ground? Jumping ain't going to work there, you need a step-ladder. Just because something works for the small stuff, it doesn't mean you can keep using it for the big stuff with the same results.

      An inch off the ground is Hello, World. A foot off the ground is a front-end to a command-line application. Ten feet off the ground is a large application. VB is jumping. Python is a step-ladder.

      VB.NET gives you the advantage that you CAN teach basic practical programming while allowing the students to see their results immediatly.

      Practically language in the world has that advantage. Which languages are you thinking of that require masses of theory to print Hello World?

    17. Re:Yes. Just to be different. by dcam · · Score: 1

      Vb.Net doesn't do function/operator overloading (at least until Whiteby). C# does.

      --
      meh
    18. Re:Yes. Just to be different. by notwrong · · Score: 1
      Totally.

      At my university there is a computer science summer school run for bright and interested high school students.

      I was a tutor this year, and we had each group of around 15 students build a working search engine in python in one week. The engines only had to index a single site, but still, all the groups succeeded in just one week.

    19. Re:Yes. Just to be different. by Anonymous Coward · · Score: 0

      I dont know about C, but the array copy is a 1 liner in C

      int *myElements = malloc( sizeof( int ) * 10 );
      /* populate array as you choose */
      int *myExpandedElements = malloc( sizeof( int ) * 20 );

      /* memcpy(3); #include ; memcpy( from, to, size ) */
      memcpy( myElements, myExpandedElements, sizeof( int ) * 10 );


      free( myElements );
      myElements = myExpandedElements; /* if you want to keep using the other variable name... */

    20. Re:Yes. Just to be different. by strider44 · · Score: 1

      Of course I was generalising with the RAD, and well also you seem to have misunderstood me, but *shrug* generalisations are there because they're right for most of the time. RAD itself is a software development process, not a project management plan. A project management plan may or problably not include RAD as a tool for its development, but it itself is not a project management style or plan. Damn this is reminding me of some of the more boring classes at university. And yes I would class your example as RAD and no I don't think real programmers don't have to use C++ or C or assembly (though I am using C++ for my current project). I also never said that VB.NET is a scripting language (and yes I should have had the .NET there but it's oh so tiresome to write).

    21. Re:Yes. Just to be different. by RingDev · · Score: 1

      let me burst that bubble for you. VB.Net has Overrides, Overloads and Shadows options for Functions. And so far as I know C# does not have Operator Overloading. I'll have to double check on that part though. I also believe .Net 2k5 does have Operator Overloading, but I'll have to double check on that one too.

      -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
    22. Re:Yes. Just to be different. by Anonymous Coward · · Score: 0

      Not an acceptable substitution.

    23. Re:Yes. Just to be different. by dcam · · Score: 1

      Operator Overloading In C#.

      Operator Overloading in VB.NET Whidbey.

      So I was wrong about function overloading, but I am right in saying that VB.Net does not support operator overloading until Whidbey.

      --
      meh
  52. Edsgar Dijkstra by 26reverse · · Score: 1, Informative

    "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". -- Edsgar Dijkstra (and if you don't know who that is.... stop calling yourself a programmer)

    For other possibilites: I'll suggest Ruby. Not because it's a great language (all have their own issues) but specifically because of this "Poignant Guide"
    http://poignantguide.net/ruby/. I found it a wonderful way of approaching programming from a very NON-technical manner... not just that it's amusing (the author has the same off-beat humor as myself), but because it relates common Object Oriented concepts to real world examples better than I've ever seen before (specifically the whole section on English grammer: verbs, nouns, adjectives becoming methods, objects and attributes).

    Don't think of the anti-VB sentiment as "throwing the baby out with the bathwater" think of it as "no matter how pretty the architecture... if the foundation is crap, the building will fall".

    1. Re:Edsgar Dijkstra by Darkseer · · Score: 1

      you posted it seconds before I was about to. Thanks...

      --

      BOFH, My model for being a sysadmin :)

  53. Where do you want to go with it? by dslauson · · Score: 1

    The OOP tools you need to write good, maintainable applications (inheritance, polymorphism, etc...) were not there in version of VB before .net. That is why it was considered a toy language. It really is much better now.

    That said, I still wouldn't recommend it as a first language. I think C++ is a really good learning language. Failing that, maybe go with C# or Java.

    The way I look at it is like this, though. If you learn to drive on a stick shift, when you get the hang of it you'll be able to drive any stick shift vehicle in the world with a little practice. If you learn on an automatic, you'll have a more difficult time making that transition.

    C# and Java (and VB.net) are like an automatic. You don't have to think about important things like memory allocation and stuff like that, and it's much too easy to rely on code generated by visual studio, which is not a good programming practice.

  54. Not on your life by RexDevious · · Score: 1

    My second programming language was VB 2.0 (on the heels of 2 months of QBasic). It was a great way for a self-taught and over-worked beginner programmer to knock out quick windows solutions. I stayed true to it, and developed amazing robust and stable applications, all the way until VB.net. VB.net is IMHO, nothing more than a copy of C#.net, that had it's syntax mangled in order for it to bare a passing resemblence to the VB of old. A beginner who uses it is not only going to wind up discouraged by it's complexity and rigidity; but led further away from other programming languages by it's pointless tributes to the once simple RAD. If you're going to start on the .net platform, start with C#.net. There a few minor IDE features missing that you'd get in VB.net; but at least you'll be able to read articles featuring C, C++, or even PHP and understand what you're looking at. VB was a great way let people get a taste of programming before they've committed to it as a career. If people want to get their feet wet like that these days; they're much better off playing around with VBA or something.

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

  56. Troll! by ZxCv · · Score: 1

    Your post smells strongly of a troll, but I had to respond just in case you're serious.


    I don't think that anything .NET, or VB6, is really a good beginner's language, just like I don't think Perl is a good beginner's language. I think you should start with a very general language that enforces good behavior, like Java.

    Do tell, what exactly makes Java a good beginner's language, but not C#? In fact, I'd be willing to bet that most developers that know both well would side with C# as being the easier of the 2 to get your head around.


    ... .NET if you want to write a quick windows application, ...

    If you want to write a quick windows application? How about if you want to write a high-volume tcp-based server daemon to run on Linux? Because, thats exactly what I'm doing with .NET, and it's been running without a single hiccup for going on 8 months now. Only being able to do "quick windows applications" is a rather limited view of .NET's capabilities, and like the rest of your post, hints at a certain lack of experience with nearly everything you're talking about.

    --

    Perl - $Just @when->$you ${thought} s/yn/tax/ &couldn\'t %get $worse;
    1. Re:Troll! by RobinH · · Score: 1

      I agree, .NET can scale all the way up, sorry for getting your blood pressure so high. :)

      I just think that Java is more of a beginner's language because Java is designed as more of an academic language and when you're learning you should start with the general and work toward the specific. I can see how C# is almost as general, and other than syntax there is no difference between C#.NET and VB.NET (except this rather obscure VB compiler option that is missing when you're trying to compile a user control for the compact framework).

      You sure are angry... do you think it's normal to get emotional about a newsgroup posting? Did it ever occur to you that a rational response would be more appropriate than slamming your fist on the desk and grunting? Or are you just having a bad day and decided to try and deride someone online that you don't even know?

      --
      "I have never let my schooling interfere with my education." - Mark Twain
    2. Re:Troll! by ZxCv · · Score: 1

      Ha!

      Sorry for sounding so angry. I was certainly a little annoyed but by no means angry...

      And perhaps it could have been put more rationally, but my basic point remains: Java has no advantages whatsoever over C# when it comes to a beginner. C# is just as 'academic' as Java, if not more so. In fact, I was even trying to point out that, in many cases, C# just flat out makes more sense in its way of doing things (not only my opinion here).

      Again, sorry for jumping all over you, but your post just seemed to fit that I'm-Gonna-Talk-Shit-Even-Though-I-Don't-Know-Shit profile you see so much on /. Maybe next time you could give some actual examples to back up your statements, and then I won't be able to jump on you ;-)

      Thanks for the reply, and take care...

      --

      Perl - $Just @when->$you ${thought} s/yn/tax/ &couldn\'t %get $worse;
  57. POV-Ray by cab15625 · · Score: 1
    The POV-Ray scene description language is a better language than VB.

    Grain of salt: I haven't touched VB in about 5 years and use a mix of C, Perl, and Python for my programming needs.

    Someone above mentioned assembly ... there's a good book called "Programming from the Ground Up" by Jonathan Bartlett out there for people who want to go that route. Start with assember (i86) and work your way up through c and perl, all in one book.

  58. Find something with a decent interpreter by Doctor+Memory · · Score: 1

    I learned BASIC "back in the day" (back when it was still spelled in upper case) using an interpreter. I still think this is the best way if you actually want to learn to program. If you just want to write something simple with a GUI, then yes, VB is probably the way to go. I wouldn't classify that as "learning to program", any more than "learning electronics" by building a crystal radio from a kit. Yes, you'll get results, but all you've done is put together some components someone else has made.

    If you want to learn to program just to know how, I'd recommend setting up Squeak and playing with that. Or a good Scheme system, there are certainly enough of those around. Something that allows you to explore interactively, instead of having to wade through edit/compile/run cycles.

    --
    Just junk food for thought...
  59. like butt-fucking a virgin by Anonymous Coward · · Score: 0

    Starting a beginner off on Visual Basic is like starting off a virgin by butt-fucking her. YOU DON'T DO THAT. You start with something that isn't going to hurt her, like, you know, kissing and licking. Long-term, Visual Basic destroys a programmer's brain.

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

  61. New VB isn't old VB by billcopc · · Score: 1

    Old coders hate VB because VB used to be shite. VB.NET is wholly new and redesigned from the ground up as a CLR dialect. I had given up old VB in favor of Delphi because it was easier to interface with 3rd party software, and of course much much faster since Delphi is compiled rather than interpreted. This is no longer true with VB.NET, which is now perfectly acceptable as more than just a RAD tool, yet still "easier" than C++ (hell, INTERCAL is easier than C++ :P)

    --
    -Billco, Fnarg.com
  62. Does first language matter? by Crussy · · Score: 1, Interesting

    The short answer is yes, but in the end if someone is serious about programming, they will have learned multiple languages and paradigms, so much that the original language loses most of its influence. Every language has obvious good and bad sides, likewise every language will both teach good and bad methods to beginners.

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

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

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

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

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

    Is VB a good language for beginners? probably not. Is C++/C#/java/the next language? likely more so than VB, but not definite. There is no "best" beginners language as much as there is no "best" language. Infinitely more important is how well you learn. A poor C++ teacher will likely be more detrimental than a good VB.net teacher

  63. No by Dr.+Sp0ng · · Score: 1

    The reason VB has been a "beginner's language" for so long is because of two things - garbage collection, and powerful (enough), easy to use standard libraries. While it still has these benefits, so does every other .NET language. The syntax of VB, while different, is not really any "easier." Learn C# - the underlying fundamentals and APIs are the same, it's just the syntax that's different.

    And it's a syntax that'll make it easier to transition to another language (like C++ or Java) should the need arise. Not to mention you'll avoid the bizarre VB-isms that'll teach bad habits, like non-short circuiting conditionals and so on.

  64. easy by selfdiscipline · · Score: 1

    C++ is way too complex. I suppose it'd be fine to teach a beginner a small subset of C++, but in that case, why not teach them a simpler language like C or Java? Plus, when the beginner goes online and looks up how to do in C++, who knows what kind of horrible hacks they'll find?
        Anyway, this ask slashdot question needs to provide more background info. If it is a beginner who plans to have a career in programming, I think they should be taught the languages that best teach them paradigms without confusing them. Also, Java has an extensive native API and online reference that lets beginners quickly get a gui put together so that they can interact with their program and get visual feedback.
        Personally, if I were to each a beginner a language, I'd go for haskell. Hopefully they'd learn thorough and elegant problem solving techniques this way. Or it would leave them irreparably scarred.

    --


    -------
    Incite and flee.
    1. Re:easy by JWW · · Score: 1

      Great post. My only minor nit, isn't C a subset of C++?

    2. Re:easy by ArbitraryConstant · · Score: 1

      "My only minor nit, isn't C a subset of C++?"

      Mostly. There's a few conflicts.

      But I don't think C is a good beginner's language either. Best to teach someone how to code in an environment where they don't have to worry about other stuff like pointers.

      Once they know how to code, then they can learn other concepts like pointers.

      --
      I rarely criticize things I don't care about.
    3. Re:easy by AKAImBatman · · Score: 1

      isn't C a subset of C++?

      More precisely, C++ is a superset of C. Some of C++'s extensions are obvious (e.g. class support), while other extensions (e.g. streams and // style comments) are often not realized by those who think they are coding "pure" C. Some of the C++ extensions were backported into the C standard.

    4. Re:easy by 1729 · · Score: 1
      isn't C a subset of C++?

      More precisely, C++ is a superset of C.

      More precisely? That's exactly the same thing: B is a superset of A if and only if A is a subset of B.

    5. Re:easy by moo083 · · Score: 1

      Pretty much. Its evolved since, but the original C++ compiler wasn't really a compiler, but a converter that converted C++ to C and used preprocessing directives, etc...

    6. Re:easy by JWW · · Score: 1

      True, I agree pointers are not for beginning programming.

      Personally the first language I learned was basic on the Apple II. I think it was a good starting point, but Visual Basic is not the same thing. As for for other intrepreted languages (like basic was on the apple), I can't see recommending PERL either since it has so many strange (and yes wonderful at the same time) constructs.

    7. Re:easy by ArbitraryConstant · · Score: 1

      Indeed.

      I'm torn. C and C++ are too complex and expose too much. Java is too pedantic and large (at least the API is), yet Python and other similar languages are too permissive.

      Pascal is pretty reasonable. It has the benefit of not being that useful by itself, so you have to broaden your horizons a bit, but structured enough that it won't teach bad habits.

      --
      I rarely criticize things I don't care about.
    8. Re:easy by Jesus_666 · · Score: 1

      ...which is a compiler. It does not matter whether you compile to machine code, to your own bytecode or to C. A compiler just translates stuff from language A to language B.

      --
      USE HOT GRITS WITH STATUE OF NATALIE PORTMAN (NAKED AND PETRIFIED)
  65. 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.

    1. Re:And now for something completely different... by dima · · Score: 1
      Python has enough of the niceties of VB (no strong types, ... etc)

      That's not quite true. Python is strongly typed. It has dynamic types, which is not the same thing.

    2. Re:And now for something completely different... by geekoid · · Score: 1

      "
      Developing in an IDE like VS obfuscates and distances the programmer from the code."

      that is up to the developer.

      "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."
      not at all.

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

      Same with VB.NET, or C#

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

      VB.net as more

      3. The syntax of VB and python would seem similar enough to a beginner.

      Just similiar enough to confuse them.

      --
      The Kruger Dunning explains most post on /. http://en.wikipedia.org/wiki/Dunning%E2%80%93Kruger_effect
    3. Re:And now for something completely different... by Anonymous Coward · · Score: 0

      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.

      VB.NET does have strong types, as well as everything else.

    4. Re:And now for something completely different... by A+Numinous+Cohort · · Score: 1

      I have taught an intro to programming course using C, Python and Euphoria. I found Euphoria best for teaching, followed by Python and C. With C I found myself dwelling more on syntax, and struggling with unintuitive string handling and obscure compiler error messages. With Python, indentation can be a problem--a student's code can look correctly indented in the editor and yet not run. I think Euphoria hits a sweet spot with simple syntax, informative error messages from the interpreter and easy string and list handling (strings are actually lists of characters).

      Having said that, I have to confess that I am using Python to teach the course these days, since it's more likely to useful to the students after they graduate.

  66. Your mom is a toy by DogDude · · Score: 1

    It's only a toy if you don't know how to use it. I think that VB is excellent for a beginner, because most people will be able to quickly make a functional program, instead of getting frustrated with the 20,000 lines it takes to build a "Hello World" app in Java or other similar languages. I know that that's what happened with me. I tried to start with C++ and Java, but the amount of reinventing the wheel that was needed for even the most basic of applications was so frustrating that I dropped them both. I started with VB. I learned AND did functional stuff at the same time. Since then, I've picked up other languages.

    There's no reason that learning programming should be a miserable experience.

    And of course, it depends what you're doing. If you're trying to get work done, and VB will do that, then it's the right tool. There's no point in learning how to re-bore engine cylinders if you just want to be able to change your own oil. If you want to make action games, or deal with massive amounts of database transactions, then no, VB probably isn't the right tool. Of course, it still isn't a bad place to start.

    Learning how COM worked was a hell of a lot more useful than learning about pointers.

    --
    I don't respond to AC's.
    1. Re:Your mom is a toy by scatters · · Score: 1

      20,000 lines of code... I think that you're putting in too much exception handling :)

      --
      A One that isn't cold, is scarcely a One at all.
    2. Re:Your mom is a toy by TheSpoom · · Score: 1
      class HelloWorldApp {
          public static void main(String[] args) {
              System.out.println("Hello World!"); //Display the string.
          }
      }
      And I suppose you're not counting the 70-odd lines per form generated by the VB form designer in your VB Hello World?
      --
      It's better to vote for what you want and not get it than to vote for what you don't want and get it.
      - E. Debs
    3. Re:Your mom is a toy by stanmann · · Score: 1

      msgbox "Hello World"

      --
      Food not Bombs is a nice platitude but it breaks down when you notice that the Bombees are usually well fed
  67. 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?
    1. Re:C != Good Beginner's Language by john83 · · Score: 1

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

      In maths, we teach kids who don't have a certain maturity of thought. There are certain ways of thinking that are best drilled into a newbie programmer.

      --
      Strange women lying in ponds distributing swords is no basis for a system of government.
    2. Re:C != Good Beginner's Language by PitaBred · · Score: 1

      Multiplication, subtraction, addition and division are central to all numeric math. That isn't formulaic. We don't start kids with "Just put 2 where you see X in 2*5X+8 and put it into your calculator, then give me the answer", which is basically what Java and other high level languages do. We teach them how the numbers work together, and THEN we work on abstracting out that concept into algebra and other higher level concepts.

  68. Re:Bad idea- compilers by object88 · · Score: 1

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

    Not really. That's just boilerplate code, and is no big deal. Why would a "real programmer" care?

  69. Re:Bad idea- compilers by Marxist+Hacker+42 · · Score: 1, Interesting

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

    Well, some remove that- and #Region wasn't in earlier versions of VB at all. But the lack of any code other than in events was still a bit of a giveaway. As was the use of datacontrols.

    --
    SJW: a person who perceives an injustice, and while correcting it, commits a greater injustice.
  70. You all forgot one! by codered82 · · Score: 1
    Perhaps my next statement is why I don't really get into /. conversations about programming...
    Have you considered giving Visual FoxPro a try? It has great syntax and powerful data manipulation.
    --
    History does not long entrust the care of freedom to the weak or the timid. ~Dwight D. Eisenhower
  71. Advice from an old timer by lurker412 · · Score: 1

    I don't think it matters much. Programming languages are a lot like girlfriends. Doesn't much matter where you start, but you would be well advised to sample more than just a few.

  72. Java? Try Javascript by gnalre · · Score: 1

    I work part-time for a distance learning university(Open University) which produces a number of computing courses from beginner up to MSc. The students we get often have absolutely no experience and are aged 18 to 108. About 5 years ago they redesigned there basic course and had to decide on a language to use. After considering a number of languages including Logo(the academic's farorite), VB and Java, they finally decided to use Javascript.

    When I heard I was aghast, but thinking about it now Javascript has some advantages for the beginner.

    Firstly the tools to develop and run Javascript programs are freely available. Secondly it is quite a forgiving languge being weakly typed(very important for a beginner), thirdly it is quite easy to get to the stage where the programmer has achieved something. This cannot be dismissed lightly, since we all probable remember getting our first program going.

    Finally it teaches all the major constructs that they are likely to use in other languages.

    After that they can move on to courses with Java, C++ and smalltalk

    --
    Choose your allies carefully, it is highly unlikely you will be held accountable for the actions of your enemies
    1. Re:Java? Try Javascript by tehshen · · Score: 1

      There is actually an interesting advantage to learning to program with JavaScript - that it is very limited.

      A student can still learn the standard things - document.write(), alert(), prompt() et al, and then go on to do stuff with strings, functions, arrays, and even objects. But by this time, they can be learning how to do file I/O, image processing (using libraries), and designing GUIs. Obviously JavaScript is very unsuitable for this, and the student will have to learn something more complex, such as C, Perl, Java, or Python - languages that are now much easier to pick up after the basics (functions, etc) have been learned.

      Contrast this with someone who first learns Visual Basic - it is powerful enough that a student goes on to do every possible program in it, thinking that drag and drop GUIs are how everything works.

      Also, it is set up for you. There is a web browser on the computer, right?

      --
      Guy asked me for a quarter for a cup of coffee. So I bit him.
    2. Re:Java? Try Javascript by gedhrel · · Score: 1

      I'm not sure why it is obvious that javascript (or ecmascript) are _very_ unsuitable for the things you list. It doesn't just run in a browser; don't confuse the language (which I'm a big fan of) with the environment and APIs that it exposes.

      Both Rhino and Spidermonkey are two examples of "embeddable" javascript implementations that permit the exposure of library functionality. In the case of Rhino, you pretty much get all of Java's APIs "for free" in the example command-line interpreter.

  73. BASIC first, then the world! by fortunatus · · Score: 1
    nobody's said it yet (i think.. i didn't see it anyways), so i've *got* to come out with this:

    BASIC is the best for beginners!

    problem with C is, beginners don't even know a computer does one step, then another. block structured syntax blows beginners away... they need to know about stepwise execution before all the Algol-ish syntax/symantic issues.

    10 PRINT "type your name"

    20 INPUT A$

    30 PRINT "hello, ", a$, "!"

    40 END

    BASIC for two - six weeks, then go to whatever you want, they'll be ready.

  74. Depends on how you define 'Beginner' by fbg111 · · Score: 1

    If by 'beginner' you mean someone who just needs to learn a language to do simple projects for their homework or something, and who has no aspirations of becomming a software engineer or computer scientist, then yes it's probably a decent 'beginner's' language. Lots of free stuff from MS, including their free (for one year) Visual Studio Express IDE's and free (indefinitely) SQL Server 2005 Express edition.

    However, if by 'beginner' you mean an aspiring computer scientist or software engineer, then by all means no, it's a terrible beginner's language. In that case, start them out with Assembly, as someone suggested in an earlier thread. Or, if you want them to learn the two fundamental language paradigms, start them with C and LISP (preferably the Scheme dialect for starters). C teaches pointers, LISP/Scheme teaches recursion.

    --
    Flying is easy, just throw yourself at the ground and miss. -Douglas Adams
  75. MS Kid's Programming Language by fbg111 · · Score: 1

    There's also MS's free Kid's Programming Language. Based on BASIC, but structured rather than linear.

    --
    Flying is easy, just throw yourself at the ground and miss. -Douglas Adams
  76. Loaded question... by slavemowgli · · Score: 1

    With all the fancy changes, is VB still the great beginner's language it once was?

    Wow. What is this from, Microsoft's monthly newsletter?

    --
    quidquid latine dictum sit altum videtur.
  77. It depends what you mean by programmer by Curmudgeonlyoldbloke · · Score: 1

    If it's someone with a mathematical background who is planning on writing compilers in a few years time, then it probably isn't. But if it's someone who's initial goal is to link a few screens together with a bit of code behind them, and then maybe go on to more "traditional" programming, then it's an excellent choice - and so are Delphi, Java and probably lots of others.

    Someone above said something along the lines of "people should start with assembler and then work from there". I don't agree - it's like saying that you need to be able to build an internal combustion engine from scratch before getting a driving licence. Speaking as someone who DID learn assembler programming (Z80, on the venerable Spectrum*) pretty early on, I'd have to say that assembler can be a really good way of teaching people really bad habits. The level of indirection that an "object view" of things gives you is a good idea - that's why it has stuck around!

    * I suppose it's worth mentioning here that Z80 assembler was pretty rich in some ways - one instruction to "move this block of memory from here to here" for example. That, and the well-documented Spectrum ROM functions made writing assembler programs that "did something useful" (even though all they were really doing was calling lots of existing functions) was relatively easy. A bit like VB...

  78. Well. by Drakin030 · · Score: 0

    Well it wouldnt be called BASIC if it wasnt. :-P

  79. Try Python by Tetris+Ling · · Score: 1

    I would suggest Python as a good beginner language. It's simple, easy to learn, but it also holds up well as you become more skilled. Best of all, its sytax enforces a lot of good programming habits that will carry on even if you move to other languages.

    And with IronPython, you can even take advantage of all the .Net libraries, if that's what you're after.

  80. Dijkstra by naken · · Score: 1

    I could think of so many reasons why VB is a terrible language and terrible to teach to anyone, both from the language itself and Microsofts runtime environment for it. But really I think Edsger Dijkstra said it best:

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

    1 2 1 2 The Naken Crew

    1. Re:Dijkstra by Anonymous Coward · · Score: 0

      10 print "Go to hell!"
      20 goto 10

    2. Re:Dijkstra by jonwil · · Score: 1

      That statement clearly only applies to people experiencing Basic as their first language.

      My first language was Turbo Pascal (version 6) and I have also had exposure to Visual Basic. I have no problem writing C, C++ and others :)

  81. Yes, with a warning... by BRSQUIRRL · · Score: 1

    Don't go with VB, use VB.NET. There are a lot of reasons for this:

    * unlike classic VB (version 6 or prior), the current version of VB.NET is fully object-oriented, supporting generics (templates for you C++ folks), interfaces, full inheritance, abstract classes and members, overloading (including operators), etc.

    * the english-like syntax of old-school VB is still present and is now applied to the object-oriented aspects of the language (e.g. which keyword makes more sense for someone learning OOP? VB.NET's "NotInheritable" or C#'s "sealed"? VB.NET's "MustImplement" or C#'s "abstract"?).

    * the relevant express editions of Visual Studio are currently free and very powerful.

    My warning is related to the last item: resist the urge to use all of the IDE's bells and whistles at first. In my experience, those developers who rely on Visual Studio to do everything for them never really understand what is going on behind the scenes and have trouble later on. Use the IDE just for syntax highlighting and IntelliSense at first (i.e. start with simple console applications and develop from the "Empty Project" template, even building Windows Forms applications from this starting point...THEN use the snazzy designers and wizards).

  82. Start with something functional by hlee · · Score: 1

    VB let's you get productive very quickly, but it doesn't teach you to be a good programmer. Unfortunately, languages that teach you to be a better programmer generally don't let you build nice applications with a flashy front end.

    I see a lot of posts talking about C and even assembly. I strongly disagree here. At university, the first language we were taught was a functional one (Miranda, which is similar to the freely available Haskell). Thought it was bunk at first, but after a while, I found it changes the way you think. You don't think of chars, or strings, but in tuples, concatenations, heads and tails. The higher level of abstraction is critical when you're thinking about algorithms. When designing your new kickass sort or indexing mechanism, you shouldn't be thinking about memory allocation or garbage collection - those things come much later.

    Elegant, efficient algorithms are the meat of all applications. Try using Haskell (I recommend Hugs) to prototype logical aspects of your program. Then translate this portion to VB, Java, or whatever platform that suits your taste.

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

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

    Worked for me.

  84. Because BASIC was bad for you by sycomonkey · · Score: 1

    I learned some BASIC in middle school, and then when I got to C in college I was barely able to keep up, because virtually nothing I had learned with BASIC carried over. I gave up on programming. But then I started messing around with Perl and then Ruby. And then I took Visual Basic. Visual Basic is NOT BASIC. BASIC was wrong about everything. GOTO is obviously not a good default control scheme, just as an example. It didn't teach you anything about procedural programming that you couldn't learn in a better language. That's why VB is not taken seriously. Well, it's also not taken seriously because it's a confused language, trying for both the simplicity and readability of Ruby(so it can be a learner language) while trying to adopt all the methods and classes of C#, which isn't even vaguely a beginner language. It doesn't do any one thing very well except that you can make the most simplistic windows programs imaginable with it without any thought. In that regard it's actually fairly useful. But I don't think it's a good learner language.

    --
    --The universe will not be altered by forum threads, even those which are very wry. --Tycho Brahe (Penny Arcade)
  85. Try Perl by bryanporter · · Score: 1

    Having trained literally hundreds of programmers, I must say the finest programming language to train up on is Perl. I know, I just heard an audible gasp from the majority of Slashdot viewers, but let me explain.

    First off, these are programmers who had typically graduated from college with a Computer Science or Mathematics degree; the problem was, they had never worked in a corporate environment, and had no experience with the stresses and research requirements of corporate software development. After trying numerous methods of training, I eventually settled on Perl for a few reasons; one, a great number of our systems were written in Perl, and two, perl is a very expressive and forgiving language.

    Expressive, in that you can do a great deal with it, with a minimal of fuss, and forgiving, in that you have (albeit ugly to OOP purists) an OOP environment without the ugliness of memory management. It is very easy to quickly get a working application together, and in my experience, individuals could quickly get up to speed on our internal systems written in Perl.

    Now, that's not to say that Java couldn't do the same thing here (and, as C# is very simliar to Java, C# may be a great choice as well). When I was using Perl as my training facility, Java wasn't nearly as approachable as it is now - the tools have gotten much, much better.

    You should also take into account the types of people you are training. Are they science majors? Or are they really people who are just interested in software development, but have no rigorous background in logical thinking?

    Good luck!

    Bryan Porter
    ==

  86. Wizards by nurb432 · · Score: 1

    Wizards can save you time, if used sparingly.

      I totally agree with the statement about assembler.. So many kids today dont have a clue what their code is *actually* doing.

    --
    ---- Booth was a patriot ----
    1. Re:Wizards by Profane+MuthaFucka · · Score: 1

      Do not meddle in the affairs of wizards for they are subtle and quick to anger. They also don't save you much time if you know your underlying toolkit well, or if they get out of synchronization with the source you are working with, or if you are maintaining a project, or if you are doing something that is not typical, which is almost all the time.

      --
      Fascism trolls keeping me up every night. When I starts a preachin', he HITS ME WITH HIS REICH!
    2. Re:Wizards by Jerry+Coffin · · Score: 1
      I totally agree with the statement about assembler.. So many kids today dont have a clue what their code is *actually* doing.

      I think a pretty strong case could be made that the same is true for anybody who's only learned assembly language -- you're still working with a conceptual model that bears (especially in a modern CPU) only a distant relationship with reality.

      If you really want to know what you're code is actually doing, you just about need to learn a hardware design language (Verilog and VHDL are the two big ones) and desig at least a simple CPU of your own. If you want to understand a modern CPU in full detail, plan on spending some time at it though -- designing a CPU with things like caching, out of order execution, branch prediction, etc., is a decidedly non-trivial task.

      No, I'm not being sarcastic here -- I really do think hardware design is worth learning about. Fortunately, nowadays it's much easier to get into than it used to be. You can pick up an FPGA-based development kit for $100US or so that'll let you do real designs that do real work.

      Speaking from experience, it can also be quite a bit of fun. The first time you watch a program running on a CPU you designed from the ground up, it's definitely very cool -- even if it's only an 8-bit CPU running at 10 MHz.

      --
      The universe is a figment of its own imagination.
  87. What's with all the machine-level advocacy? by spentrent · · Score: 1

    I'm seeing evidence of a consensus here that beginner programmers should understand low-level details, as though this were axiomatic. I completely disagree. The LAST thing a beginner programmer should worry about is digital logic, machine code, memory allocation, and so on.

    Beginners need to learn how simple logic is expressed, as this is the heart of programming. Variables and control structures -- abstract concepts -- are the basis of programming, much more relevant to a newbie than registers and flops per second. A beginner can write hello_world.whatever in any high-level language without knowing a single thing about hardware. And that's a good thing!

    When a newbie understands what a variable is, what a type is, what if-then-else mean, what foreach means, he's made a ton of progress and is ready to apply that basic knowledge to any future task.

    So the language?

    Who cares? BASIC, Perl, PHP, Python, Scheme, LISP, Ruby..... doesn't matter. I prefer an interpreted language for quick feedback, but it's not a deal-breaker.

  88. Secrets of programming by metamatic · · Score: 1

    Here are some secrets I'll let you into, having written code in well over a dozen languages...

    1. Once you've learned to program in one language, you can pick up pretty much any other language much faster. By the time you've learned a handful, you can pick up a new one in a weekend.

    2. Languages which are good for learning are rarely what's used in the real world. That's because conceptual simplicity has a performance penalty.

    3. The language is the easy bit to learn anyway. The hard part is the standard libraries or OS API.

    With this in mind, just because you eventually want to write .NET applications, doesn't mean it makes sense to start out by learning to write in a .NET language.

    I would pick almost anything over Visual Basic. I write code in a VB variant almost every day, and after a decade I still find it painful. The type system is crappy, the syntax is fussy with lots of varieties to remember, it's hard to get an overall view of the code, the containers are crappy, and lots of modern programming conveniences are missing.

    C#, as a clone of Java, is a somewhat better choice. If you're really limiting yourself to one of those two, I'd say go with C#.

    However, I'd pick Ruby or Python over either of them. Ruby is great for getting out of the way and allowing you to actually think about the problem, rather than having to remember syntax. I'm told Python's the same way, except it likes to boss you around more, which is probably why it has started to get traction as a tutorial language.

    I'd also actively discourage C++, Perl, PHP, and Common Lisp. C++ is a huge language that takes years to become proficient in, and it's very easy to shoot yourself in the foot with it. Common Lisp is bigger than C++. Perl is full of misfeatures for various historical reasons, and has loads of obscure syntax to remember. PHP is somewhat like Perl with cleaner syntax--just as many misfeatures you can run into, because like Perl it grew out of something much simpler, with no real forethought going into the design.

    Actually, you could do a lot worse than learn to program using JavaScript. It's a fairly small and clean language, and it'd actually be useful to a .NET web developer in the long run.

    --
    GCHQ Quantum Insert installed. If only our tongues were made of glass, how much more careful we would be when we speak
    1. Re:Secrets of programming by Alderin1 · · Score: 1

      I've been programming in many languages across a couple decades myself. Whenever someone asks me "How do I get started in programming?" I tell them "JavaScript". Why? Because all you need are the myriad of online tutorials, notepad, and IE, which all of these people already had. No downloads, installations, or configurations necessary. No purchases needed, and if they find that they just don't think the way you need to think to program, they've lost only "hobby time".

      I'm not saying that JavaScript is the best first language, but a master of JavaScript will easily pick up other C-like languages (Java, C++, C#, PHP), and someone scared off by JavaScript will have lost very little.

      --
      No conformist ever made history.
  89. Use PHP by Richard_J_N · · Score: 1

    Had you considered PHP? It has the huge advantage of simplicity (you can get started very very fast); it's also very powerful and widely useful (many many functions are available). In many ways, it is similar to C or Perl, so it's easy to migrate. The online documentation is brilliant. Also, you can use it as a scripting language (php-cli), for a simple GUI (php-gtk), or even for network-socket programming.

    P.S. Visual Basic is, and always was, utterly horrid.
    http://www.ddj.com/documents/s=1503/ddj0001vs/jan0 0.htm

    1. Re:Use PHP by Anonymous Coward · · Score: 0
      Had you considered PHP?

      You're going to have a truly horrible time trying to teach someone why there are =, == and === operators.

      They're going to have a truly horrible time understanding why some function names are this_way() and some thatway(), who is_to_blame() for the former, who is2blame() for the latter, and why they need to have a cheat sheet for all the strriiirevririrtrpos(needle, haystack, needle2) functions out there (compare PHP's string functions to Perl's).

      They're also going to have a horrible time once they figure out they need to name_their_functions_and_classes_using_a_bucketloa d_of_words() because PHP has no namespaces and the code can't be organized properly, so a "clever" naming scheme is the only way to ensure something does not break. You know, you're not the only one who thought that read() makes a nice function name; once you get started working with other people on a project, awful things tend to happen.

      That said, I'd recommend Pascal. It was designed as a teaching language, and every OS has free compilers and IDE's that can be used easily. Why not something else? OOP is *way* too hard for a beginner to grasp. C relies on pointers a lot, which is even harder for beginners to understand (Pascal also uses pointers, but rarely). Python and Perl? Well, they're C-ish in syntax, and beginners mostly don't like code that looks like {@@@32%$&111}!@#%_||(!@#)@$% to them. Pascal and VB seem more natural, but MS-lockin might not be appropriate. Hence, Pascal it is, in my most humble opinion. Pascal just doesn't seem that scary; VB doesn't either, but for the reason stated above, I wouldn't recommend it.

      Once your beginner understands the basics (no pun intended) of programming and problem solving, it doesn't matter anymore. They'll be able to pick up any programming language, because the difference is syntax. They need to start THINKING like programmers - once the problem is clearly defined, implementing a solution is easy in any of the programming languages. Understanding OOP and !$)!%$)*%*!(!!43{} code is something they can do alone once they're ready to move forward.
  90. Learn Haskell! by master_p · · Score: 1

    Forget all the other languages. Lazy evaluation is the future. I am not trolling, I am serious. As I programmer from 1986 who played with almost every programming language around, Haskell is the best programming language ever.

    2nd best is Eiffel.

    1. Re:Learn Haskell! by shutdown+-p+now · · Score: 1
      2nd best is Eiffel.
      Not until it gets a decent namespacing facility.
    2. Re:Learn Haskell! by jbolden · · Score: 1

      I think Haskell is a little too tough for a first language. Functional purity is a huge advantage. But the first language doesn't need to be a good language it needs to teach basic concepts. Haskell forces people to confront advanced problems very quickly.

      BTW I love Haskell too, no slam on Haskell here.

    3. Re:Learn Haskell! by master_p · · Score: 1

      Actually, the most basic concepts are Lambda, what it means to evaluate a function, what is a side effect, what it means to combine functions etc. That's the most basic concepts in programming, and once you know that, you can comprehend the other languages much better, where these languages suffer, how to right proper code etc. By starting with Basic/C++/Java/, the mentality of the person is twisted so much that when it deals with a proper programming language like Haskell, the person does not ever understand it (even if it is much easier in reality).

    4. Re:Learn Haskell! by jbolden · · Score: 1

      Let me give you an example of a language I think is better and that gets rid of the side issues regarding Basic/C++/Java: Logo

      Logo has procedures. These can be called and evaluated. Procedures can call other procedures and you don't have to worry about freeing memory or any of that stuff. So f(g(x)) is quite natural. Further because of the limited sequence you end up doing it very quickly. As for lambda its part of the language (Logo is a Lisp dialect). The only difference is that functions aren't pure. They are global variables and any procedure can manipulate them. Which means that functions aren't first class.

      I can (and have) taught my 6 year old what a procedure means from a logo stand point. She understands the word, and uses it perfectly. She writes procedures instead of typing the same things over and over. I could never teach her about Monoids.

      If you are starting with someone who already I would argue that first class functions require you already have a mathematical sophistication which I don't think should be assumed in a first time programmer.

      Does that make sense?

    5. Re:Learn Haskell! by master_p · · Score: 1

      Logo is a good starting point if the intention is not to do real-world tasks. To Learn Haskell though one does not need mathematical knowledge of any kind: it comes natural. But in order to program in Basic/C/Java/Whatever one has to understand the Turing model first.

  91. Not VB..... by orion41us · · Score: 1

    VB is has way to many things that makes the programmers job easy.... It hides a crap load of code from you - to learn you need to learn how to make the wheel not just how to put it on a bike - C++ if you ask me is the best one to start with -

  92. Dont confuse VB with VBScript by Anonymous Coward · · Score: 0

    The question was about Visual Basic, not VBScript.

    Visual Basic has normal typed variables but with VBScript everything is a "variant" data type.

    It is flat-out wrong to say that objects created with Visual Basic cannot be instantiated. How can you say that VB objects are utterly useless for OOP development when they can implement multiple interfaces?

    Just because you couldn't be bothered to read the help file or buy a book doesn't mean it is impossible!

    Oh, and I'm talking pre VB.Net here.

    1. Re:Dont confuse VB with VBScript by AKAImBatman · · Score: 1
      The question was about Visual Basic, not VBScript. Visual Basic has normal typed variables but with VBScript everything is a "variant" data type.

      More evidence of the VB "elite".

      Lemme ask you. What happens when this code executes (Apologies if my VB is a bit rusty):
      DIM X as Integer
      DIM Y as String
       
      X = 10;
      Y = X;
      If you answered, "X gets cast into a String", you've just proven my point.
    2. Re:Dont confuse VB with VBScript by Danse · · Score: 1

      Lemme ask you. What happens when this code executes (Apologies if my VB is a bit rusty):

              DIM X as Integer
              DIM Y as String

              X = 10;
              Y = X;

      If you answered, "X gets cast into a String", you've just proven my point.


      Well first of all, it won't compile because VB doesn't use semicolons to end a line. Second, if you're using Option Strict On, then it won't implicitly cast X to a string, so it won't compile. Like I said in a previous post, any tutorial or beginner's book on VB will tell you to turn that on to keep you from making hard-to-track-down mistakes.

      --
      It's not enough to bash in heads, you've got to bash in minds. - Captain Hammer
    3. Re:Dont confuse VB with VBScript by AKAImBatman · · Score: 1

      Well first of all, it won't compile because VB doesn't use semicolons to end a line.

      Good catch. It's so automatic at this point, I couldn't stop myself. :-)

      Second, if you're using Option Strict On, then it won't implicitly cast X to a string, so it won't compile.

      IF. Big IF. Regardless of whether modern tutorials tell you to turn it on or not now, it has been correct syntax in VB since the Dinosaurs roamed the earth. VB is not a strongly typed language. Period, end of story. The grandparent's point about VB vs. VBA was just silly.

    4. Re:Dont confuse VB with VBScript by Danse · · Score: 1

      IF. Big IF. Regardless of whether modern tutorials tell you to turn it on or not now, it has been correct syntax in VB since the Dinosaurs roamed the earth.

      I've been using VB since the early days of VB6 (I'm glad I missed 5), and I've always seen Option Explicit and Option Strict recommended by books and tutorials. I've always used them, and it's always been the way I've seen it taught by others as well. It's just how things are done in any real environment. Now if the person was determined to learn without using any books or tutorials or even the help files, then I'd say they weren't serious about learning and they'll never become even a decent programmer anyway.

      --
      It's not enough to bash in heads, you've got to bash in minds. - Captain Hammer
    5. Re:Dont confuse VB with VBScript by AKAImBatman · · Score: 1

      VB6 is recent history, at the point where the market was already leaving VB for Java in droves. Sorry, but you're a young'un.

      VB 1.0 was made for DOS and pre-3.x versions of Windows of all things. VB's heyday was between version 3.0 and 5.0. Now we're sitting in a position where VB.NET != VB, and is a clone of C# with stupid switches to turn type safety on and off. Why would anyone continue to subject themselves to a half-baked, BASIC ripoff syntax that wasn't very good to begin with and is incompatible with previous versions when you can do the same thing with a real syntax like C#? (As someone who actually programmed BASIC in the day, I can say with certainty that VB is not BASIC. It's not even close.) There's just no reason I can see to continue using it. And I certainly wouldn't recommend teaching it as there's nothing of value there that can't be had better elsewhere.

    6. Re:Dont confuse VB with VBScript by NutscrapeSucks · · Score: 1

      Option Strict is new for .NET and did not even exist for VB5/6, so that is incorrect.

      --
      Whenever I hear the word 'Innovation', I reach for my pistol.
    7. Re:Dont confuse VB with VBScript by Danse · · Score: 1

      Option Strict is new for .NET and did not even exist for VB5/6, so that is incorrect.

      I was referring to both VB6 and .NET at the same time which is why I mentioned using both options. In VB6 I used Option Explicit. In VB.NET I use both.

      --
      It's not enough to bash in heads, you've got to bash in minds. - Captain Hammer
    8. Re:Dont confuse VB with VBScript by Danse · · Score: 1

      Why would anyone continue to subject themselves to a half-baked, BASIC ripoff syntax that wasn't very good to begin with and is incompatible with previous versions when you can do the same thing with a real syntax like C#?

      Maybe because there's really nothing wrong with the syntax. You may prefer C#-like syntax, but that's just your preference. There's nothing inherently wrong with VB's syntax. It's easy to read and can do anything that C# can do, so it just comes down to personal preferences.

      --
      It's not enough to bash in heads, you've got to bash in minds. - Captain Hammer
    9. Re:Dont confuse VB with VBScript by AKAImBatman · · Score: 1

      Have you ever actually done any serious programming in anything other than VB? (And no, I don't mean, "I created a Hello World! program.")

    10. Re:Dont confuse VB with VBScript by NutscrapeSucks · · Score: 1

      That's nice, but Option Explicit is irrelevant to the discussion.

      --
      Whenever I hear the word 'Innovation', I reach for my pistol.
    11. Re:Dont confuse VB with VBScript by Danse · · Score: 1

      Yes, I've worked with c++, delphi, and java. I liked delphi and java better than VB6, and c++ is good for some things, but business apps isn't one of them. I prefer VB.NET and C# now though.

      --
      It's not enough to bash in heads, you've got to bash in minds. - Captain Hammer
  93. So there are two answers to this question by mindaktiviti · · Score: 1

    The question that should be asked is: Does the person learning programming want to become a professional programmer and get his/her fundamentals down? Or do they want to just be able to build applications that aren't too complex to handle their own type of work. In this case then yeah, VB and some scripting language, if you want to get the basics down, I'd probably start with assembly or C++.

  94. RubyCocoa by Anonymous Coward · · Score: 0

    If you've got a Mac and want to play with making nice desktop applications, I can't recommend RubyCocoa enough. It's a Ruby/Objective-C bridge that allows you write Cocoa Mac applications in Ruby.

  95. in short: NO by wardk · · Score: 1

    VB creates boatloads of crappy habits as well as the notion you need a windows box and a driver letter to get any work done. the world has plenty of this developer already.

    imho, VB is a destructive virus

  96. Python then Schema by stormcoder · · Score: 1

    Easy to learn but powerful. Schema is a good followup language.

    --
    Sorry my bullshit sensor overloaded.
  97. Is Pascal dead? by canoramix · · Score: 1

    Hi, My first programming experience was with GWBasic long time ago. We did several things but the goto's and gosub's left any program a mess. Then I learn Pascal (Turbo Pascal) and everything look structured and make sense. I think Pascal should be the first language people should learn and pratice. Maybe C#/Java is a good alternative too.

  98. That's why Python rocks for beginners, by loqi · · Score: 1

    that and a lot of the documentation being built into the interpreter.

    --
    If other reasons we do lack, we swear no one will die when we attack
  99. No. by Goodgerster · · Score: 1

    Monolithic API, limited GUI capabilities, bastardised Javascripty syntax, Windows-only, one must pay Microsoft to use it. Give me Glade and Gedit any day. This is the kind of language learnt in English secondary schools by A-level students who are fully aware that whatever job they get it won't involve VB.

  100. 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
  101. Don't be ridiculous by Salsaman · · Score: 1

    I wouldn't let a beginner anywhere near either VB or C#

    They would get the idea that the way Microsoft does things is the way everything is done.

    Much better to let them learn a cross-platform language like C, Python, Ruby, PHP or Perl.

  102. hmm by SuperGhost · · Score: 1

    OOP is OOP no matter what pair of gloves you're using to learn it.

  103. How to think like a Computer Scientist by Anonymous Coward · · Score: 0

    I'd recommend going to
    http://greenteapress.com/

    and reading one of the "How to think like a Computer Scientist" free PDF books (and if you really love it, buy a dead tree copy)

    Intro to real programming in Python, Java, or C++ with emphasis on WHAT you're doing, not HOW. Almost every language out there is just a rehash of a few basic concepts. Once you learn one, it's just a matter of learning new syntex and a few cool "Hey, this language makes it really easy to do X" things.

    Don't concentrate on a language- concentrate on the concepts.

  104. Python is the answer. by monopole · · Score: 1

    Actually that wasn't the question.

    Ok the answer is no. Visual basic is platform dependent, ugly and limited.

    Basic should have been put out of its misery decades ago.

    A beginner working with visual basic will not have a ground up perspective of programming, and will find that transfering their knowledge to other languages is terribly difficult.

    On the other hand pyhton is simple and acessible enough to teach as a first language, and avoids the annoyances and pitfalls associated with pointers and other beginner unfriendly constructs. On the other hand python is powerful enough to serve as a primary language, has fantastic data structures, is bound to just about every known API, and allows the beginner to do serious programming almost immediately. Finally python is cross platform and free 9 as in speech, beer and sex) .

  105. Button1 ? by russianspy · · Score: 1

    Is this really what using those wizards has brought us to. What happened to using descriptive names? Button1 is definitely not descriptive (well.. at least I know it's a button).

    1. Re:Button1 ? by DarkProphet · · Score: 1
      In the context of the code you were referring to, Button1 is simply the name of the object that is being manipulated. If you change the name of the button object to someting more descriptive, such as "SelfDestructButton", the wizard will use that when generating the click event handler instead, which would look like this:
      Sub SelfDestructButton_Click(ByVal sender As Object, ByVal e As EventArgs)
      ...
      End Sub
      So, blame the unimaginative coder that doesn't use descriptive variable names, not the IDE wizards ;-)
      --
      What could possibly hurt the security of the American people more than giving our own government the ability to hide its
  106. Looking Back by jrmiller84 · · Score: 1

    Personally, I started programming with just using markup languages like HTML (which isn't programming if you ask me) but then progressed to javascript which ultimately lead me into VB. I can honestly say that I do regret the path I took as I sometimes have trouble wrapping my mind around some concepts that are foreign to IDE driven languages. I do feel more in tune now that I have pushed those languages aside and took the time to learn real coding languages like c/c++. I almost feel a sense of shame for taking the easy way back then and using those IDE's, but what the hell, I was like 15 when I started and didn't know any better. Ohh, so young and ignorant...

    --
    I will forever be a student.
  107. I'll pass on the FUD, but maybe some cheese... by xiphoris · · Score: 1

    Mod parent down -- FUD! VB doesn't have anything to do with "wizards" more than does C# or C++ (as presented in Microsoft Visual Studio 2005 IDE) or Java does (in Eclipse, or IntelliJ).

    Sure, when you first create a project, a wizard comes up asking (for C++) "Do you want a GUI or Console? MFC, ATL? Precompiled headers?". But that's not doing any *programming* for you; that's just setting the project up. As a professional developer, I consider such things a time saver.

    In Visual Basic, just like in every other language, you do the programming yourself. All that happens for you is project set up and the insertion of hooks, such as:

    User: *double click*
    IDE: here you go, this empty delegate will be called when a user presses that button

    It's pretty hard to many any sort of "real" application all the while only relying on what's generated for you.

  108. Java... by Pengo · · Score: 1


    Learn Java or C#

    They are probably a little harder to learn the basic concepts, but there is countless materials for learning it.

    I would also consider learning Python or Ruby if I was to put myself through a crash-course in programming with Hindsight.

  109. 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
    1. Re:Where to begin? by Theatetus · · Score: 1

      Sorry to self-reply, but other good options are:

      • ocaml
      • haskell
      • MMIX
      --
      All's true that is mistrusted
    2. Re:Where to begin? by Anonymous Coward · · Score: 0

      I'm sorry but Haskell (and Lisp, and other functional languages) are NOT good for beginning programmers. They are confusing because people are used to thinking in a task-oriented step by step fashion. Functional languages imply thinking recursively, which is not a natural thing to do.

      Now yes, once someone wraps his/her head around a functional language, I think it makes them a better more versatile programmer overall, in any form of code. But I wouldn't start someone off with it.

    3. Re:Where to begin? by estar · · Score: 1

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

      By what definition? Because it doesn't have semi-colons? C# and VB.NET are 95% similar in how they handle the framework, memory, and setting up object. The big C# difference is how it handles unmanaged code. The big VB difference is that it a lot easier to sink events with VB syntax (via the handles keyword)

      If you say that C# is badly OO then you have a valid argument.

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

      OO is a bad paradigm to learn from but on the other hand you can write to console with any .NET langauge (VB, C#) so that usually a good way to proceed. However printing and graphics are a magnitude harder in .NET and earlier version of BASIC and that is not so good.

      > * VB ties you down to using Windows, and Windows is a bad environment to learn to program in.

      MonoBASIC isn't done yet but with Mono this arguement doesn't hold water.

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

      Cough Cough, Ruby, Cough. Like the trend isn't for modern langauges to manage that for you. But to be fair non-derministic finalization in .NET is a step back. But it is nice to get away from COM's reference counting.

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

      Delegates, anonymous functions, need to read up on the latest. Again to be fair Lisp the originator of this stuff still does it way better than anything else.

      > * VB teaches bad, verbose naming and programming habits

      Wow, that is simply amazing, a langauge that has structured language elements at the least just magically teaches bad programming. But be the lack of those semi-colons. Damn I feel for the assembly langauge guys they don't have even what GW-BASIC has. They must have some really bad programs.

      Then what do I know, I just been programming 15 years, wrote a complete CAD/CAM machine controller in Visual Basic 6, and a complete simulation of the Mercury and Gemini space capsules in C++. I guess been just a bad programmer.

      In serious, this attitude is why Visual BASIC 6 has been so royally screwed by Microsoft. Someone BASIC is magically inferior. Deal is this if you are a company or an organization in charge of a programming langauge you need to give an upgrade path that doesn't require your users to rewrite their applications to move on. Most applications don't live in Internet time, they need to be supported over a decade or more. The applications you read about in the news are just to the tip of the iceberg. For every Microsoft World there are dozens of VARs selling specialized software to hospitals, lawyers, factories, etc. Every time a "purist" goes and mucks around with a langauge it winds up costing these guys a ton of money.

      Sometimes there is some change involved like going from DOS to Windows. But it is better manage like the transition between QuickBASIC and VB 1, than how it is being done with VB6 and VB.NET

    4. Re:Where to begin? by Vraxx · · Score: 1
      Hehe and here I was thinking nobody remembered Lisp.

      While I think VB is suitable for teaching some concepts I don't think it serves as an all around tool for educational purposes. Like quite a few other posts here, I think you need to see a breadth of programming languages to understand how the concepts gel together and where there's commonality and change.

      When I started out it was:
      Pascal -> C -> C++/Java, MAL (MIPS Assemb), Lisp, VC++/VC#

      They've all got pros and cons, and while I may never program in C for the rest of my days, it was a great learning experience, i'd say the same for learning MIPS assembler.

    5. Re:Where to begin? by Anonymous Coward · · Score: 0


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


      Wow... amazing. A list post on slasdot where every single line item is absolutely wrong.

    6. Re:Where to begin? by slim · · Score: 1

      OO is a bad paradigm to first learn to program in

      Actually I would LOVE to have started learning to program in an OO language -- not that such a thing existed outside academia at the time.

      The paradigm shift from procedural to OO is a massive wrench, which I wouldn't wish upon anyone. In fact, although I've been on several Java courses, I usually fall back on a procedural style in C or Perl, because it remains my comfort zone.

    7. Re:Where to begin? by borgboy · · Score: 1

      More specifically, learn Scheme using SICP. MIT has videos of the lectures, and Berkeley is podcasting both audio and video streams of current class session. There is a free Scheme environment for all manner of OS free and not here

      --
      meh.
  110. That's More Funny than Interesting by Greyfox · · Score: 1

    C'mon who didn't make this mistake at least once learning C on a UNIX system. At least those of you whose universities didn't put '.' at the beginning of the path. And those who did get the hand-holding from the uni probably ran into it later in less forgiving environments. How long did it take you to figure out what was going wrong? I think I spent at least 2 or 3 hours trying to figure out what was going on (And why it magically worked when I renamed 'test' to 'hello' heh heh heh) To this day I run without '.' in my path, even in Windows.

    --

    I'm trying to teach myself to set people on fire with my mind... Is it hot in here?

    1. Re:That's More Funny than Interesting by klparrot · · Score: 1
      To this day I run without '.' in my path, even in Windows.

      Isn't '.' implicitly in your path in Windows? I wasn't aware there was a way to take it out.

    2. Re:That's More Funny than Interesting by Pieroxy · · Score: 1

      There is no way to take it out. The guy just got carried away I think.

    3. Re:That's More Funny than Interesting by Greyfox · · Score: 1
      Oops, well you CAN edit it out in your system environment variables (My computer->control panel->advanced->environment variables) but it apparently is still implicitly in there, even if it doesn't show up in echo %path%. How typically Microsoft...

      I'll disclaim that I only use Windows to run outlook and do all my actual WORK in vmware VMs running Linux.

      --

      I'm trying to teach myself to set people on fire with my mind... Is it hot in here?

  111. No, here is why by scorp1us · · Score: 1
    Python (or Ryby) beats the pants off of it. I am programming in VB after a several year gap. Here is what I hate about VB

    • Nothing - You must use "is", and "is" alone: "if X is Nothing" but "if X is Not Nothing" does not work. Its syntatically legal, but youhave to do if Not(X is Nothing)

    Function calling is not uniform - Some calls are "Call Foo()" and others just "Foo"

    If you delete an array of pointers (which are set to objects), it deletes the objects too - I use this in mouseover code. I have to manually set them to Nothing before deleting the array.

    Several controls just don't work if you have them disabled.

    Array subscripting - you can DIM Foo(X to Y) where X is non zero

    Option Base - no better way to confuse people than for some modules to use 1 and others 0 in the same project

    Windows - the damn event model is inconsistent.

    Timers - the docs say interval=0 is the same as disabled. Not true. interval 0 sill allows it to fire 1 more time.

    & - it does strings as well as speficy hex

    + - adds a space _sometimes_

    No epoch seconds - impossible to do simple date calculations. Timer() is seconds today. All other date funtions are ascii strings MM/DD/YYY or DD/MM/YYYY depending on locale.


    Theres more but time for home.

    Oh yeah. Python? Consistent and extremely flexible. (Ruby too)

    --
    Slashdot's rate-of-post filter: Preventing you from posting too many great ideas at once.
    1. Re:No, here is why by maxwell+demon · · Score: 1
      Nothing - You must use "is", and "is" alone: "if X is Nothing" but "if X is Not Nothing" does not work. Its syntatically legal, but youhave to do if Not(X is Nothing)

      Didn't Microsoft get granted a patent for ISNOT? I guess after they figured out this extremely innovative operation, you can use "if X ISNOT Nothing" :-)
      --
      The Tao of math: The numbers you can count are not the real numbers.
  112. My first language by HaMMeReD3 · · Score: 1

    I learnt originally on QBasic that was in DOS back in the day. I can't say that I'm particularily fond of basic, it feels like I lost my virginity to an ugly girl I never wish to see her again.

    As with .net, sure it could be taken seriously, it's just a little bit of syntax difference, but the complexity of coding the equivalent app in c# or c++ is pretty much equal. I think basic should have been left doing basic applications though, because the language just doesn't format all that well, and I really dont like to read it. Other then that, it's a matter of syntax preferences, all managed languages are ~=.

  113. Question: Is .NET the new VB? by maillemaker · · Score: 1

    I played with VB a several years ago when I was still doing programming.

    I have wondered what .NET was, but have not been motivated to go look. Is .NET what they are now calling VB?

    Steve

    --
    A work that expires before its copyright never enters the public domain and thus enjoys eternal copyright protection.
  114. Language doesn't matter by nsayer · · Score: 1

    The fact that you can use C#, VB.net or Managed C++ illustrates that it's not the language that matters. It all winds up being the same CLR code in the end. Every programmer can feel free to use the one that makes the most sense to them.

    For me, the choice would be C#, because it's the one whose syntax makes the most sense to me (and I have used all 3).

    The problem is not language. The problem is the class hierarchy. I much prefer Java because the Microsoft one is a mess. That, and the platform-tie-ins are skillfully camoflaged to insure that (like Microsoft's Java) though you may think you're writing OS independent code, you're not.

  115. I Recommend.... by TheZorch · · Score: 1

    Either PERL or JAVA.

    Both are cross-platform, powerful, and its easy to learn the basics but takes a while to learn the more advanced stuff.

    --
    Michael "TheZorch" Haney
    thezorch@gmail.com
    http://thezorch.googlepages.com/home
  116. VB Advantage by jonv · · Score: 1

    One of the advantages of VB for the complete beginner is the ease of building a GUI for an application without having to pick and learn a toolkit that would be needed with Python / Ruby / C etc.
    This means that people can quickly get results and hopefully gain an interest in developing and move onto learn other languages and proper design and development techniques.

    It's a bit like going back to eduation in the 80's and comparing Basic with Logo. Logo could do pretty things very easily and get people interested. Basic took more skill and effort to achieve a similar thing.

  117. Good if you don't want to be a programmer. by Elwood+P+Dowd · · Score: 1

    VB.NET has decent RAD tools and doesn't require expertise in order to begin creating useful applications. So it is good for a beginner in that they can quickly become productive. It is bad for a beginner in that they will never learn complex programming concepts that are not encapsulated in pleasant little clicky-draggy-things.

    If your goal is to become a programmer, learn absolutely anything else instead. C# or Java would be better, but so would C, ASM, Lisp, Scheme, Smalltalk, Objective C, C++, ML, Haskell, Python, or Ruby. Anything. Then you may still wind up using VB for certain tasks, but that's your business.

    If your goal is to program something without becoming a programmer (Not a bad idea!), VB.NET is great. VisualStudio.NET 2005's RAD tools are fantastic.

    --

    There are no trails. There are no trees out here.
  118. NO HELL NO by tgrigsby · · Score: 1

    VB is not a decent structured language and bears little resemblance to one. I agree with the posters that say that using a wizard is not the same as programming.

    I would recommend Java instead or, better yet for a beginner, Borland Pascal. Notice I didn't say Delphi. If you want them to actually focus on coding and not on making buttons pop up windows, start the beginner off with structured, object oriented concepts, then work your way up to GUI IDEs. Java comes with more widgets and networking goodies, but is less forgiving.

    The point being to put the person in front of a clear, concise, readable language implemented in an easy-to-use compiler without distractions like GUI controls.

    Just my $.02.

    --
    *** *** You're just jealous 'cause the voices talk to me... ***
  119. language doesn't matter that much by MORTAR_COMBAT! · · Score: 1

    i would recommend either VB or C# to a beginning programmer (but of course i would recommend a score of other languages first, but that's beside the point).

    you're trying to teach a beginning programmer (in order of priority):

    0. prequisite: general problem solving
    1. if they will enjoy being a non-beginning programmer
    2. beginning programming

    just about any language is sufficient for task 1 (well, maybe not Perl. we aren't sadists...) task 2 can be accomplished with any number of languages.

    the problems with teaching VB or C# are:
    1. the cost of licenses for the single-source operating system
    2. the costs of licensing for the development environment
    3. the expense of powerful enough machines to run the above development environments

    if you have a lab of reasonably powerful windows machines, by all means, bring out the VB and C#. you can, however, teach beginning programming with a room full of BSD or Linux 386 or 486 machines just fine. in honesty Perl would do nicely to accomplish the principal task of instructing a beginning programmer: demystifying what programming is, so they can decide if they might like to learn more. after that, the language is only a medium for communicating your problem's solution for the computer to compute, and that can be done in any language.

    --
    MORTAR COMBAT!
  120. christ no by syrinx · · Score: 1

    VB represents all that is soulless and wrong.

    VB.Net is better, mainly because it is C# with different syntax that requires more typing. If you're going to do that, just do C# in the first place; the syntax will translate better to other languages.

    Someone suggested Javascript, I think that's a good idea, though it can be hard to debug. PHP might be good too.

    I think GW-BASIC is a good starting language, it worked for me. :P

    --
    Quidquid latine dictum sit, altum sonatur.
  121. Good example of why it's important by xiphoris · · Score: 1
    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.

    I wouldn't be so sure of this. One of my first tasks in my first job out of college was to optimize some incredibly slow code. The code was creating large XML text documents to send to other components. I share the mentality "start with C", or at least "fully learn C", but it was obvious the guy whose code I was fixing did not.

    Needless to say, the C# code I was working on looked something like this:
    string document;
    foreach(s in something) {
    document = document + "<blah blah>";
    }

    I changed the code to use "StringBuilder" (which grows a buffer rather than allocating a new string every time) and sped up the code by something like %10,000. My manager was quite pleased.

    But yes, I think knowing "what's going on under the hood" will always be important...
    1. Re:Good example of why it's important by jaydonnell · · Score: 1

      You don't need to learn C to know that "blah blah" creates a new object on each iteration. You can learn ruby or python and learn this at the same time. In fact learning ruby should make it very clear that this is the case. I think the person who wrote that could simply wasn't a good programmer and wouldn't have been any better if they started with C.

      I said it in another post and I'll say it again. The most important ability for a programmer to have is the ability to write clean concise code that is easy to understand, debug, change, and maintain. Learning C or assembly first does not help in this regard.

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

    3. Re:Good example of why it's important by pthisis · · Score: 1
      Wow, I would've expected C# to be smarter than that. These days even Python will optimize:
      a = ""
      for i in range(1000):
          a += "Hello"
      return a
      so that it grows a rationally rather than allocating a new string every time. Indeed, that's faster than doing the obvious do-it-yourself equivalent:
      a = []
      for i in range(1000):
          a.append("Hello")
      return "".join(a)
      (and list.append is optimized for extension so it's not reallocating the list every time through the loop; this form was the preferred form before modern versions of Python added the += optimization to strings)

      Java optimizes this kind of string extension too, and has done so far longer. It's just such a common operation that there's no reason for high-level languages not to optimize it, and I would have expected Microsoft to implement it since it can dramatically improve the performance of a lot of naively written web pages.

      Your basic point that understanding why doing the "literal" translation of the code in C would be horrendous is valid.
      --
      rage, rage against the dying of the light
    4. Re:Good example of why it's important by code+addict · · Score: 1

      No you don't, but then again that's not the problem. It's the assignment that creates a new string object.

      The problem stems from the fact that in C# strings are immutable, and therefore appending is not a quick operation as it creates a brand new string to store the result. That why StringBuilder solved the problem. StringBuilder does the rough equivalent of collecting each append in a linked list, then doing one string allocation at the end and copying the contents of the linked list to it. JavaScript has the same issue with it's strings as well if I remember correctly.

      I believe what the poster was trying to get across was that regardless of what language you work in, it is important to have an understanding of how the language features are implemented. The best phrase I've heard to describe those who don't FULLY understand what is going on is "programming by coincidence".

    5. Re:Good example of why it's important by jaydonnell · · Score: 1

      It takes less than 1 minute to explain to someone that writing " a new string" creates a new object each time it's called. No need to learn C for that. Keep in mind that i"m not saying that people shouldn't learn C, just that it's not high on my list of what's essential for a programmer. I'd put things like learning how to write automated test suites and how to automate deployment way above learning C.

    6. Re:Good example of why it's important by jaydonnell · · Score: 1

      Good point, but it's not an argument for learning C which is how I took the comment I replied to.

    7. Re:Good example of why it's important by borgboy · · Score: 1

      1. Dont use string manipulation to build XML documents. Please. Use XML APIs to build XML, mmk? XmlTextWriter is your friend.
      2. String is what String is - an immutable string. It is reasonable to expect concatenation operations on any immutable object to be a copy-on-write operation. Its nice that Java and Python optimize for this case (yet Java cannot make the component aspects of a JavaBean a first class language citizen. Properties, people! Come on!), but the docs on System.String are quite clear about the immutability of String and the appropriateness of StringBuilder. You dont even have to read that far!

      --
      meh.
    8. Re:Good example of why it's important by Anonymous Coward · · Score: 0

      The coder obviously didn't realize that implicitly creating a new object like that automatically allocates more memory.

      What he obviously didn't realize is that concatenating a lot of strings can be slow if you do not use StringBuilder. More specifically, he didn't understand that creating lots of objects can be slow. You don't need to know jack about how memory allocation works to understand that.

      Until you've had to allocate memory manually, this kind of thing is never really driven home.

      Yeah, and unless you've changed your oil manually, you can never understand that oil changes are important to keep your car running smoothly.

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

    1. Re:choose a good teacher first by jamesots · · Score: 1

      BlueJ is a good tool to teach programming with. It uses Java as the language, but you don't have to mess around with creating main functions and the like - you just create objects, and can instantiate them and use them interactively in the IDE. And the objects you create are shown as a class diagram instead of a list of files.

      You can then teach OO without worrying too much about teaching IDEs.

      --
      Ho hum for the life of a bear
  123. Surely not by Anonymous Coward · · Score: 0

    But it depends on what your goals are!

    With VB, you may manage to display a window on the screen quite quickly, but you're not going to learn anything regarding programing.
    In the school where I work, the first programming lesson is taught in parallel both in C and ocaml.
    The course end up with a practical that consists in writting a small C compiler and a microprocessor simulator in ocaml. After this course, the students are completely aware of how a processor executes code, what registers and ALU are, how a compiler work, what preprocessing and linking mean and what a langage is (like what is a grammar, a token). Another inovative technique in this course consist in a slight change in the specifications a couple of day before the work is due. This helps to show them why it is important to write well structured and maintainable code.
    just my 2c though

  124. In reality it went more like this... by Anonymous Coward · · Score: 0

    % ./a.out
    Segmentation Fault
    % go to hell
    sh: go: command not found
    %

  125. And one more option by Monster_Juice · · Score: 1

    I feel that VB scripting is an excellent way to INTRODUCE people to programming. They can learn to create variables, set constants, create sub routines, read and write a file, read and write to the registry etc. None of these things use the same syntax as say C++ or Java but they do provide a starting point to build off of.

    It can provide instant gratification to the user by seeing what their work has done. Sure you cannot build a program with VBS but it is a great tool for sys admins, it is free and you can get thousands of examples off the internet.

    --
    Slashdot +1 funny -4 Insightful +1 informative -2 Redundant
    Karma: Somewhere between SCO and Microsoft
  126. C# vs. VB for beginners... by wrfelts · · Score: 1
    C# for serious work (better support out there...). I was mainly a VB programmer, but the support was so poor I switched. C# is just as easy as VB.Net. Neither one will teach you the in and outs of managing your own code (memory issues and such.) They also cripple you a bit in that they teach you to be utterly dependant on Microsoft's way of managing code for you.

    Use C# as a starter language to get your feet wet. Then move to (non-Microsoft) C or C++ to learn how to manage more intricate things. Then migrate you knowledge to other platforms (Unix, Mac OSX, Linux, etc..) to see the need for such things.

  127. vb has one good thing going for it by circletimessquare · · Score: 0

    it's case insensitive

    c# and java endeavour to catch common c++ gotchas, and they've done a good job, mostly, all except for one legacy of the c language i will never understand: case sensitivity

    what is the point of case sensitivity? simply because of how the human mind works, it can lead to nothing but confusion. anything you can tell me as a positive about case sensitivity i can reply with the simple observation that case sensitivity burdens the human mind with an extra level of attention that is not necessary and would better be reserved for attention to other aspects of your programming

    i wish the next major c-derived programming language would try to remove case sensitivity, and would also thereby remove the last attractive thing about vb

    --
    intellectual property law is philosophically incoherent. it is your moral duty to ignore it or sabotage it
  128. Both are bad choices for a beginner by NutsAboutOS · · Score: 1

    Any programmer should be thorough with basic fundamentals and once they master the fundamentals its not a big task to learn new languages. I strongly recommend C because it exposes programmers to certain details that improves his understanding on why certain things like garbage collection, object oriented programming etc. are needed (or atleast why they were invented).

  129. NO. by Anonymous Coward · · Score: 0

    Short answer: NO. NOOO!!

    You should never teach OO (And esp. something so no-standard and cluky as VB) to a beginning developer. Use something like C.

    Teach them about pointers, and make them do the low level work themselfs. Without it, crappy thrown together code comes about (no matter the language!) & when true problems arrise, they are completly stuck.

  130. not just one use lots of them by Anonymous Coward · · Score: 0

    depends on who is learning
    i started to understand programing in java
    vb made it easy to implement making me truly understand java

    if you are going to teach someone, vb.net has a free starter kit java is free
    most scripting languishes are free so teacht te free ones
    making 6 helo worlds doesnt take that long and your student has time to see what is hapening in the difrent languishes.

    yes it will take a bit longer but it's well worth it

  131. VB.NET actually runs faster than C# by Anonymous Coward · · Score: 1, Funny

    ... by about 6 weeks.

  132. C# is really an hard language to teach by Assoupis · · Score: 1

    Not to say C# expensive, need unbelievable amount of memory and often weird in their error message and behaviors, it just mix up a lot of concept to make the simplest things hard. For example: how to hide the OO aspects of the language when you come to teach scope ? How to hide classes when you need to draw a button, a textBox, and use Convert.ToDouble just to get a number out of the GUI ? Why you have to mess with objects, properties, and often functions, to make the program write a single thing in a GUI ?

    If I had choice, I would use any free implementation of DOS 6.22 and borland turbo pascal 7 for teaching the first course of algorithmics. Why ?

    - You get real easy drawing system using 320*200 256 colors systems, while having great shell user demanding system
    - You get a language which make lot more sense than C based system, using begin and end instead of { and } (more expressful), = instead of == (less dumb errors), := instead of = (look more of an arrow, giving an idea of the sense of the affectaction) and finally, iteration is a lot clearer: "for i := 1 to 10 do" or "if a = b then" are much clearer than any C based language constructions.
    - You get strong types as in C, which help a lot dealing with variable scope
    - You use ; as in c
    - You get clear compiler message
    - You can give out bootables disks of the compiler and OS, without caring about the computer they use at home.
    - You can make fast conversion to C language at the end of the course, once the concepts behind all the structures are clear. At this point, they'll get irritated by the formal begin end, but will bet harassed by C[++|#|] weird syntax.

  133. VB != VB.net by autopr0n · · Score: 1

    Visual basic is a "real" OO programming language, but VB6- was not going from writing code in java C++, to VB6 was a huge pain in the ass due to the limitations of the language itself.

    In plain C or other procedural programming languages, you can use function pointers to get most of the functionality, if not the maintainability or uniformity of implementation of OO languages like C++ or Java.

    --
    autopr0n is like, down and stuff.
  134. 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.
  135. Bah! Kids These Days! by Greyfox · · Score: 1
    Why, back in my day we didn't have no fancy graphics! No GUIs! No widgets[*]! You were lucky if you got a 50 bps paper TTY with one line of text as the UI, I tells ya! And if you were that lucky, you'd have to type a bootstrap sequence into raw RAM in octal to jump to the first sector of your 8 inch floppy disk! We didn't have no newfangled BIOS in those days, and we liked it that way! The only fancy buttons were on the operator's panel! Why I oughta pound you with my walker, sonny!

    Heh heh heh, seriously though, I'm not that much of a geezer despite having done all those things. Anyway... Logo was a good starting language. Well structured, iterative and graphical, allowing the student to get instant results after changing a function. PASCAL was a good starting language, you could learn the basics of structural programming and the language was powerful enough that you could learn recursion and other goodies in an uncluttered way. Smalltalk would probably be a good starting language, teaching solid OO principles in an environment that seems very similar to Logo. BASIC was a very different beast in those days and was a very bad starting language. Don't get me started on COBOL or ADA...

    These days you could do worse than Squeak or some other Smalltalk environment. I like Ruby but it strikes me as being a little too syntatically bizarre for a total newbie. Not that the total newbie has to dig into the bizarre syntax. Or closures...

    It's really kind of funny, though. Talk to someone who has very little idea of programming and the most interesting part of the program to them is usually the user interface. Talk to an experienced programmer and the least interesting part of the program to them is usually the user interface[**]. If you want to put something together today then VB or some other happy GUI builder might work for you, but don't mistake that for learning how to write a program.

    [*] Except for the Sun guys, they had X11 back when Microsoft's biggest product was DOS 3.3
    [**] Except the human interface and usability guys, that's their cup of tea.

    --

    I'm trying to teach myself to set people on fire with my mind... Is it hot in here?

  136. Yup. by autopr0n · · Score: 1

    As you say, those are not real Computer Scientists or Engineers. They're sysadmins with delusions of grandeur. Exactly. I read about using multiple threads for networking back when java 1.0 came out, when I was in high school.

    --
    autopr0n is like, down and stuff.
  137. 14 year veteran programmer's perspective by Anonymous Coward · · Score: 0

    Yeah everyone hates VB. VB.Net is the same thing as C#, but with different syntax. (OK there are a few differences, like optional parameters and operator overloading.) Anyone that says VB.Net is a toy doesn't know what they're talking about.

    Scripting is a great way for a new programmer to get their feet wet. Check out AutoITv3 (hiddensoft.com) for example. Also, programming JavaScript on web pages can be fun for beginners.

    Next up would be the classic compiled language, C. The syntax can be ugly but it is very concise and elegant when you start to learn it. Great things can be done with little knowledge, and K&R's "The C Programming Language" is a great primer.

    Once a beginner knows the basics of all languages (loop structures, variables, functions, error handling, debugging, etc) then they can start learning OOP languages. My recommendation for right now is C#. The syntax is easily understood from C. It has garbage collection, automatic reference counting, it's OOP, and an extremely robust framework class library. Oh yeah, and you can make decent money programming in it.

  138. Not a good beginners language by BoneFlower · · Score: 1

    A good beginners language should be more than easy to learn syntax. A good beginners language should introduce the learner to multiple programming styles. The beginner should not be forced into a given paradigm, and should be exposed to how things actually work- things shouldn't be hidden to the extent of VB. You might not use the internal workings knowledge on a daily basis, but understanding it will help.

    I'd advocate C++. C++ has direct support for several programming paradigms, and the features can be used to support other styles as well without undue difficulty. The syntax and some of the minutae can be rather challenging for a beginner, but it does expose many programing and design strategies and doesn't inherently hide details needed to understand how things work(except for the hardware specific stuff- but that isn't too important. some behind the scenes understanding is good, but you don't need total understanding)

    From what I understand of Delphi it might be better, but I don't have more than passing familiarity with it so I can't really advocate for or agaisnt it.

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

  140. Sadly, yeah by autopr0n · · Score: 1

    Most CS people just end up doing programming, but the stuff you learn later on (like algorithm running time, and sometimes language and complier design, sometimes functional programming with XSLT) do come in handy.

    When you consider how many "programmers" barely even know how to do OO, a real comp sci person can do things no mere programmer could ever dream of.

    --
    autopr0n is like, down and stuff.
    1. Re:Sadly, yeah by Nutria · · Score: 1

      Most CS people just end up doing programming, but the stuff you learn later on (like algorithm running time, and sometimes language and complier design, sometimes functional programming with XSLT) do come in handy.

      When you consider how many "programmers" barely even know how to do OO, a real comp sci person can do things no mere programmer could ever dream of.


      Sure, all that is darned useful.

      But in all the things that you mentioned, there's Engineering and Art, but precious little Science.

      --
      "I don't know, therefore Aliens" Wafflebox1
    2. Re:Sadly, yeah by Nataku564 · · Score: 1

      Engineering is a science.

      2 a : the application of science and mathematics by which the properties of matter and the sources of energy in nature are made useful to people

    3. Re:Sadly, yeah by Nutria · · Score: 1

      Engineering is a science.

      2 a : the application of science and mathematics by which the properties of matter and the sources of energy in nature are made useful to people


      The key word is "application".

      --
      "I don't know, therefore Aliens" Wafflebox1
    4. Re:Sadly, yeah by Nataku564 · · Score: 1

      Yes, Engineering is an applied science. Most universities that I know of classify it as such. The thing is, in order to apply science, you must first _know_ science.

    5. Re:Sadly, yeah by jasen666 · · Score: 1

      Yes, but "software engineers" are not engineers.
      Weren't some of the real engineering groups making a fuss a few years ago, about computer people being given the "engineer" title?

    6. Re:Sadly, yeah by Nataku564 · · Score: 1

      Yeah, but I take that as a bit of an ego thing. After all, most of the engineering types I know spend the bulk of their time in AutoCAD and writing programs for cnc machines. If he gets to be called an engineer, I sure the heck can be.

    7. Re:Sadly, yeah by poopdeville · · Score: 1
      You mean you studied engineering in school and moved on to pass your state's engineering test? Congratulations.

      Otherwise, calling yourself an engineer is unethical and often illegal.

      --
      After all, I am strangely colored.
    8. Re:Sadly, yeah by Nataku564 · · Score: 1

      Yeah, see, that whole ego thing again. "You must be judged by our standards, even though its a completely different field". A good portion of people have more sense than that, and know that software engineering takes a different skill set than other varieties of engineering. And a bad software engineer can do as much damage as any other kind, although generally in a different way. Usually no one dies because of it, but some do have to worry about such things. The software engineers who work for the military, or a health care company like GEMS, do have to worry about such things and go through extensive systematic testing in order to prevent fatalities from poorly engineered code.

    9. Re:Sadly, yeah by poopdeville · · Score: 1
      Do you claim that misrepresentation of your professional status is not unethical?

      "Engineer" is a professional title, much like "Doctor". Do you think people who haven't completed their M.D. examinations should call themselves doctors? Do you think people who haven't completed their Bar exams should call themselves lawyers?

      --
      After all, I am strangely colored.
    10. Re:Sadly, yeah by Nataku564 · · Score: 1

      If I get a PHD in compsci, I am also a doctor, and may freely call myself so. Same thing. Or do you now also claim that only people with doctorates in medicine can be called doctors, cuz only they are special like that?

      To put it another way, we call the people who designed the pyramids engineers, yet they havent taken my state's test. I say we sue them. While we are at it, we should sue GE, since they call their people software engineers. We should be suing a lot of software businesses, come to think of it.

    11. Re:Sadly, yeah by poopdeville · · Score: 1
      Do you have a point?

      A PhD has earned the title 'doctor.' Without passing his state's qualifying examination, even a PhD has not earned the title 'engineer'. You might want to sue the ancient Egyptians, but our laws are not retroactive.

      --
      After all, I am strangely colored.
  141. Behind the 8 Ball no matter what with MS by Anonymous Coward · · Score: 0

    By the time they offer the general population the tools they need to be "current"...."current" is OLD! You have to be a deep pocket player to get into the game (ie Symantec). It has always been ... just as you thought you were there the game changes completely requireing retraining and recertification...remember how NT4 was "ELIMINATED"! Sheesh! Oh yea...VB 1-6 ELIMINATED! Give yourself a break and stop chasing your tail.

    VB6 NATURALLY COMPILED CODE... who hooo no C+++ ..... VB6 [deprecated]

    You must remember you are fighting against a group that makes money selling you development software so when it is "good enough" ... IT MUST BE CHANGED! Otherwise we break to many chairs and that gets costly.

    I had held out hope for Kylix but it seems they made a pact with the devil themselves.

    My last resort ... LAMP... shine on!

  142. For my money... by Valar · · Score: 1

    I'd say python. Most of the simple programs that you run through when teaching someone to program (hello world, calculators of various sorts, sorting, simple search, etc) are all very easy to read in python. It has a rich library (like you would get with .NET), which makes it fairly simple to write more interesting and more satisfying programs sooner. Also, you might occasionally see it in real world software. Indeed, there are tons of open source samples to look at once your student is ready for that.

  143. The last "easy to understand" version of VB was 3 by mstefan · · Score: 1

    I could see where Visual Basic 3.0 would be considered a good "beginner's langauge" because it was easy enough for folks to put together useful programs, and it introduced the concept of component-based development in a pretty straight-forward way. The introduction of classes was the beginning of the downward spiral for "hobbiest" type developers who just wanted to write simple, useful programs and didn't want to have a computer science degree to do it. Start talking about issues like polymorphism, inheritance, operator overloading and virtual methods and their eyes just glaze over. They're the engineers, the business people, the ham radio operator etc. that just want to write something that's personally useful for them. As for teaching programming, it's information overload (no pun intended). You can't just sit someone down and from scratch start throwing even basic concepts like classes at them and expect them to have a clue. .NET in general has made the learning curve impossibly steep for folks who are completely new to the programming world.

    --
    "Only two things are infinite, the universe and human stupidity, and I'm not sure about the former." --Albert Einstein
  144. VBNet Vs Command line by moochfish · · Score: 1

    As a programmer who started on the command line languages, I'd say starting with an interface centric language like VB might be a bad idea. I'll admit it is powerful, but that's a seperate issue from whether or not it is a good beginner language. It has several important beginner-friendly features.

    1. Drag and drop interfaces remove the pain of being bogged down creating user interfaces. In traditional languages, this part can take up half your implementation time.
    2. A great library that does 95% of the things you might need on a daily basis. In other langauges, these libraries exist, but they aren't necessarily part of the compiler or default installation of that language.
    3. Hit F5 to immediately see how you're doing. Might take a little more work in other languages (such as FTP => browser => F5).
    4. Auto code formatting to make all your code pretty like a pro

    That said, I believe VB spoils you in certain ways that can be extremely detrimental. This is because programming in VB is nothing like programming in PHP/Perl/C++/Python/etc. Part of being a programmer is being able to pick up new languages down the road, which may be less managed than VB.NET. Going from HIGHLY managed code to unmanaged code, in my opinion, is much, MUCH more difficult than the other way around. There are many things a VB programmer may do by accident when programming in another language that could cause serious bugs or security holes simply because they are not used to covering all the bases the compiler would otherwise deal with. Additionally, the ease of the language may promote programmers to start coding without fully learning or understanding important programming principles (such as good class implementation, naming standards, common logic shortcuts, etc). This ultimately will produce a lower quality programmer in the long run.

    So, yes, it is a good language for a beginner to pick up, but it also makes it harder to jump into a lower level language down the road. Of course, you want to be careful about what language you start at since if you start at assembly you'll probably kill yourself. C and C++ are traditional favorites, but only because they are the industry standard. I have programmed in many languages for many years, and I find PHP to be my favorite because it balances basic OO principles without overly complicating things (aka Java). It is also easy to learn and an easy step to or from C++. I have recommended many friends to try it as their first language and have seen positive results.

  145. Re:Where to begin and C++ by w1z7ard · · Score: 1
    Don't forget SML which has a super optimized compiler (mlton.org). It does lack OO design however.
    And one more comment, why has no one mentioned C++?

    Yes its ugly and a syntactical mess, but it's arguably the most practical language out there. It's multiplatform so that avoids the "windows only" issue. A person teaching C++ to a student can also choose a small subset of its features to keep things initially simple. And any way one wants to mold this future programmer is possible because C++ covers most of the basic design ideas. It's got OO, templates (algorithm driven programming), a full featured STL, functors and it doesn't force garbage collection at the language level. Ideas like const references, const members, pointers, stacks, etc. is an important principle to learn early on.

    Having said all this, I like the idea of teaching higher level languages early so programmers don't get too narrow minded. Concepts and design are important and typically high level languages handle these things. Chances are that 20 years in the future many programmers won't have the slightest clue whats happening at the architectural level because it won't matter with the language they use and problems they solve.

    --

    "Recursive bipartite matching"- try it!

  146. 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
  147. Maybe, maybe not. by autopr0n · · Score: 1

    Well, that assumes that you have a memory mapped, square image to work on, which might not always be true, otherwise it would crash since you typed it wrong.

    Not that it matters either way. Can you tell me how to rig up logic gates in order to implement that function? I can, it was required in my CS program to take an introductory digital circuit design class that went all the way up to building whole CPUs.

    You can always go to a lower level, that doesn't mean that your smarter then someone, or that your compiler wouldn't just optimize the code in the first example anyway.

    --
    autopr0n is like, down and stuff.
    1. 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
    2. Re:Maybe, maybe not. by Space+cowboy · · Score: 1
      Not that it matters either way. Can you tell me how to rig up logic gates in order to implement that function? I can, it was required in my CS program to take an introductory digital circuit design class that went all the way up to building whole CPUs


      Well, to be fair, that sounds hard, but it's only ~200 lines of verilog for a simple 16-bit CPU with an ALU and no pipelining/RAM prefetch. Designing CPU's is a hobby of mine... (So, yes, I can tell you how to do it [grin]). Although I'm more interested in compression systems at the moment - I'm currently trying to build an HDTV H.264 digitiser/encoder in hardware to connect via firewire to my Mac Mini...

      He had a typo in his example (which is why it'd have to be square), but I believe his point was to do with locality of reference - the second example would miss the cache almost every time (with most image-storage algorithms, anyway. Images are generally stored left-to-right,top-to-bottom rather than vice-versa).

      Simon
      --
      Physicists get Hadrons!
    3. Re:Maybe, maybe not. by AmPz · · Score: 1

      2. Your high-level language compiler is better at optimisation than you.

      I know people think that is true. The very same people are usually writing very inefficient high level code.
      A compiler will never become better than the human brain.
      By manually optimising the checksum calculation in a TCP/IP stack, I can pretty much double the performance of the entire TCP/IP stack. No compiler can come even close to that.

    4. Re:Maybe, maybe not. by PitaBred · · Score: 1

      JIT code sometimes has an advantage in that it can run-time analyze and refactor code better than any person ever could. But I agree with you for the most part... someone knowing about the architecture as a whole can make better guesses than any compiler ever could. At least any compiler that's feasable to write in our lifetimes.

  148. 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
  149. Oh really? by bmajik · · Score: 1

    As fun as it is to be pejorative, what makes VB.NET "still a toy"? Are you aware of its functional overlap with C#? You know that you can more or less do automated code conversion between the two, right?

    I have a soft spot for Pascal - that's where i really cut my teeth programming, with borland 5.5, 6.0, and 7.0. Hell, i wrote a multi-threaded OS/2 program in BP 7.0 with some secret compiler from germany. I wrote a _lot_ of borland pascal code for DOS back in the day.

    However, none of that compared to the rapidity with which you could crank out working code in VB6. IIRC, VB6 was Microsoft's biggest money-making developer product. VB6 turned all BASIC programmers into Windows COM programmers, and if you've ever done COM in C/C++ you know that you really want to be using something like VB instead :)

    VB helped bring non-expert app development to the Windows platform in a way Delphi never did. Not because Delphi is necessarily bad, it just didn't work out that way.

    VB is beautiful because it works in the real world. Somebody really smart must have thought "everyone learns BASIC as their first programming language.. let's make an environment where you can write real GUI programs that do real useful work in the language even school children can learn" (i started writing applesoft 3.3 basic programs as a 5th grader.. it wasn't until jr high that i got into pascal on a 486)

    When I hear people being snobby about VB they're usually pushing something where someone else will be snobby about _that_ (that person is probably pushing "haskell" or "eiffel" (sp?) as the "one true faith". Yet I'd speculate that VB has made more people more money (and i dont just mean microsoft - i mean the computer industry) than all other languages/environments combined.

    --
    My opinions are my own, and do not necessarily represent those of my employer.
  150. Ruby all the way by phauxfinnish · · Score: 1

    I just recently got into Ruby, but I wish I would have started learning programing with it. Its got the OOP learning curve to get over, but the way that nearly everything is an object in Ruby gets you over that pretty quick. Besides, its best to get the whole OOP thing done with so you can learn good programming. Ruby has been useful to me in the common areas I deal with - shell scripts for sysadmin tasks, graphical applications using various toolkits, and web application development.

    Ruby also gives some great tools for beginners to the language, or programming in general. Irb, the interactive ruby shell, gives you instant feedback while trying out new(-to-you) features of the language. Erb, embedded ruby, is great for the web, but also allows you to create templates for non-web files. All without needing to learn another templating language. And while we're on it, Erb allows you to move your programming skills onto the web. Most newbie programmers who ask me about programming either don't understand the difference between classic applications and web-apps, and are mostly interested in the latter. By giving them a way to immediately see the results of their programming efforts in a familiar way gets them deeply interested in expanding their knowledge.

    While there isn't a flood of books and online resources for Ruby, there is one coming. The current market is thankfully filled by such excellent texts as the Pragmatic Programmer's Guide (maybe if I pimp them enough they'll hook me up with some free books) and the entertaining Why's (Poignant) Guide to Ruby.

    Ruby provides the perfect mix of logical syntax and language features to make it a great beginners language. Starting with Ruby will give an up-and-coming programmer the skills needed to work with OOP and create clean, beautiful code.

    I haven't even talked about Rails yet... and I won't. It rocks, thats all I'll say.

  151. Pascal sucks by Werrismys · · Score: 1
    Pascal types, strings and mem allocation methods suck donkeys balls. Delphi hides most of that but.

    Besides, Kylix3 sucks ass and is unsupported, so Delphi remains Win32-only-area.

    --
    'Once scientists, even the dim-witted social scientists, get muzzled, the Western Civilization is finished.' - oldhack
  152. Re:Bad idea- compilers by Dhar · · Score: 1

    Wait....you mean that line isn't mandatory? I've been typing it in for years!

    -g.

  153. Advantages and disadvantages by raider_red · · Score: 1

    VB does give a good framework for learning programming languages, and understanding the concepts required for computer programming.

    It has two major disadvantages though. First, since it's not an open standard, you'll be limited to learning on Windows Based platforms. While a lot of people won't see that as a disadvantage, for someone like me who uses no Windows systems, it's a drawback. Second, you have to pay for it.

    As an alternative, consider some of the advanced scripting languages like Perl or Python. They're free, well supported by large user communities, and run on nearly everything.

    --
    It's good to use your head, but not as a battering ram.
  154. 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.

  155. Alice by AusIV · · Score: 1
    It seems that many people in this thread are discussing the points of specific languages, and while yes Basic is good for teaching line by line execution, it's not great for teaching data structures. I've not dealt with visual basic in about four years, so I may be outdated, but my opinion at the time was that it simply created confusion. There was a screen for building the interface, and another screen for coding events related to the object. I didn't feel it gave an accurate portrayal of how the program worked, because so many thing were done automatically, the programmer doesn't see half of what goes into the program. As many users have pointed out, Java will confuse new programmers because of it's strict object oriented nature.

    In my opinion, you should begin strictly conceptually. A man who was friends with my highschool programming teacher wrote a program called Alice, which is intended to teach programming on a strictly conceptual level. The user creates an environment in which they can create animations with 3d objects. It introduces concepts of object oriented programming, if statements, else statements, functions, for loops, while loops, recursive loops, data structures, and virtually every other necessary concept in programming, without ever having to look at raw code. Once someone has these concepts under their belt, they can generally move to any programming language, only needing to work on syntax, which varies from language to language anyway. I really feel that Alice is the best way to learn programming concepts without having the concepts be tied to a specific language.

    Another plus about Alice, is that because it's intended as a teaching tool, it comes with a set of prepared lessons. If you missed the link in the middle of the last pargraph, here it is again. Hope it suits your needs.

  156. Try SmallTalk by Atroxodisse · · Score: 1

    It isn't used much anymore but it was one of the very first object oriented programming languages. OOP is very important for modern programming. If you're applying for a job most companies will require that you do OOP. Its very easy to learn and it teaches you the fundamentals. If you want to jump right into the thick of programming start with C# or C++. .NET is a good bet for a job right now. Most places will expect you to have a computer science degree.

    --
    Read my short stories - You won't regret it.
  157. Java. VB just teaches how to be sloppy by jerryodom · · Score: 1

    I learned more about OOP in my Java programming courses at LSU than I did in any other class I had while I was there. It was just cleaner than any other programming language I learned in and not near as hard for me to debug as C. Visual Basic was an experience and I felt I didn't learn much. I noticed that the other students in the class learned primarily just how to be lazy through use of VB. It promoted programming that was lazy, clunky and bad interfaces.(However I haven't programmed in VB since 2002.) I wonder why they don't initially teach students control structures, functions, data structures etc. on something like PERL at first since its so much easier to debug or PHP since it can be done from most any computer and works with web pages easily. Then again I'm not a teacher so I suppose there's a perfectly good reason for doing what they do.

    --
    For some reason I refuse to use either spell check or the spacebar properly.
  158. Beginners Languages by Kirby · · Score: 1

    I don't really buy into the idea that languages are good for beginners or are expert only.

    A programming language is good if it is easy for you to express powerful ideas in. Any language will cause you to become comfortable with it to the exclusion of others for most people; therefore, you're far better off sucking up the learning curve of a language you want to keep using, than learning Logo and Pascal and throwing them away. If a language forces you to use conceptual language that you can't get your head around, that is not the right language for you.

    It's also a good idea to pick a language that's actually used if you want to have a career in it, or others will support your code later. If you don't know what language to learn, the cutting edge is probably not the place to start.

    I recommend: perl, python, C, lisp. Maybe C# or Java, but my personal bias says that if you want to go that route, python is a better language. They're reasonable languages, though. If you know you have a particular need to write utility scripts for windows applications, particularly MS Office, you probably should consider VBScript, but once you've used something else, you'll never be able to go back.

    If your goal is not to have a programming toolkit in your back pocket, but instead to understand programming languages, I'd recommend basic understanding of: Assembly (to really know what's going on behind the scenes), Lisp (to really see what a powerful abstract language can do), C (to have a low level control in a high level language), and perl (to have a useful blend of high level abstractions of things you don't want to worry about (memory allocation, strings) and still have a more natural syntax than pure lisp.) Once you can write a non trivial program in all four of those languages, you'll have a good understanding of what you value and don't in a language, and can make informed decisions.

    (I've done all of those, and a few others, and found I like perl the best. Different problems and different people are suited towards different solutions.)

    (However, with this many parenthesis in a post, you'd be right if you concluded that I also think lisp is nifty.)

    --
    -- Kate
  159. horrible choice by penguin-collective · · Score: 1

    That will just raise another generation of programmers who confuse pointer arithmetic with efficient programming. We already have too many of those, and that's why applications keep crashing left and right, and why software releases keep getting delayed.

    People need to learn about pointers, but they need to learn about it understanding that's it's a special purpose technique to be used rarely. C# is a good language for that, since it has pointers but discourages their use.

  160. 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."
  161. 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
  162. Logo. by draziw · · Score: 1

    I say Logo ;) Think of the cool pictures (or goto staements :) ) I did Logo, old school BASIC, years later I did a little C, then Z80 asm, then C/C++, then steped back into Modula (blah vs C). If I were starting today I'd probably go with Python as a first...

  163. VB.NET is just a mess by randomErr · · Score: 1

    I use VB.NET and its a message. Ehe programs are huge, slow and can't be distrubuted without a 100 megs of addition binary. But enough bitching, you asked for a solution, here's what I have IMHO:

    VB/VB.NET - Good at teaching GUI concepts. A little clunk at some of it OOP.

    C# - Its Java with a nice GUI

    C/C++.NET - Its nice, but for someone learning I think its overkill.

    I would recommend:

    Freebasic - Its free and compatible with most QuickBasic code. It compile to Window, Linux, DOS platforms.

    Bloodshed Dev-C - Its free, makes small binaries, and actually is a VERY nice gui for MingW/GCC. Oh and you don't have to worry about setting up GCC, it does automatically for you.

    --
    You say things that offend me and I can deal with it. Can you?
  164. Depends on the beginner by AgentDib · · Score: 1

    This question has no answer unless you specify why the beginner wants to learn how to write code.

    Is the beginner trying to start a career path towards becoming a programmer? I would definitely recommend they start with Java, preferably by taking a class at a local community college. It's not as easy or enjoyable for an introduction to programming - but enjoyment isn't the goal.

    On the other hand, if the beginner is simply interested in the field and wants to tinker around a bit in their spare time, by all means start them on VB.Net. A complete beginner can be running applications of their own making that have text inputs, clickable buttons, menus, and shiny picture graphics... in their very first session. This has an enormous effect on their confidence and enjoyment, and they learn about variables and procedures very painlessly. Most importantly, this will have the strongest real world applicability for them. Not many people I work with would write their own java application for something, but a significant amount regularly use VB macros.

  165. No, Python is great when you know what to do by Werrismys · · Score: 1
    Disclaimer: Python is excellent. I loathe Java, I love C but hate C++ in earnest.

    For the beginner, learning C is the best thing. Just what is memory? What is a pointer? Referencing? Dereferencing? Variable types? Get all that, and learn the functional paradigm, and make the poor bastards program some.. AFTER that teach them about the OO paradigm. The most important thing, in the beginning, is to get visible results. THEN explain how those came to be. And so on. Keep them clear away from proprietary, dead bullshit like VB.

    OO is not the end-all either. It all depends on where and how the end product is used... I can use /bin/sh and netcat for most stuff :-)

    --
    'Once scientists, even the dim-witted social scientists, get muzzled, the Western Civilization is finished.' - oldhack
    1. Re:No, Python is great when you know what to do by asdfghjklqwertyuiop · · Score: 1

      For the beginner, learning C is the best thing. Get all that, and learn the functional paradigm,


      C is a horrible way to learn functional programming. It doesn't make a very good language for that... If you want to teach functional programming, you teach LISP or something similar to that. Learning and understanding that language provides great insight into programming in general...
    2. Re:No, Python is great when you know what to do by jonwil · · Score: 1

      If you want to teach procedural programming, forget C.
      Teach Pascal. Sure, no-one actually uses it for anything serious but if you start with Pascal, you can teach procedural basics in a nice easy manor. Then you can move up and teach object pascal (or move to something else) to give them OOP skills.

      Who was it that said that teaching BASIC would ruin perfectly good programmersd for life?

    3. Re:No, Python is great when you know what to do by zippthorne · · Score: 1

      IIRC, pascal was invented as a teaching language. No one was ever supposed to do anything serious with it. But.. that's what makes it so great for learning.

      --
      Can you be Even More Awesome?!
    4. Re:No, Python is great when you know what to do by tricore · · Score: 1

      LOGO Lego rcx native BASIC pascal Visual Basic C++ C python Java x86 Assembly SML sh matlab O'caml That's the order I started learning languages in. I'm still learning C++, java, x86 assembly, SML, python, sh and matlab, and I've been coding for 14 or 15 years now (I'm 22). I'd start students on BASIC, starting with goto's but then quickly moving to looping structures because it gives a good idea how the machine really does stuff, and of serialized execution. Serialized execution can take a while to sink in sometimes, so you really need to stay with something that stresses those concepts. then teach them both scheme or lisp, and assembly at the same time, preferrably have them write a few of the same functions. This will drive home what's happening in a functional language, and how all languages are fundamentally the same, and give a nice avinue for recursion vs. iteration. Then teach them C and SML or haskell to drive home the translation between languages. C will also let them hit their heads on recursion vs. iteration, and get some pointer, debuging and systems experience etc. and talk about how strongly typed languages work. Slap smalltalk on there for the OOP paradigm, and they've really got it all. C#, C++, python, ruby, O'caml, and perl are all fine, but they are just clugy amalgamations of concepts from other languages. I'm actually a fan of python as well, and would not be apposed to swapping python for BASIC, as long as you don't touch any of it's features (OOP, anonymous lambda expessions etc.) for a while. After that, they just figure out whatever language they need to use. Note that we are intentionally driving them through a gambit of languages. Language's and language paradigms are like modes of thaught, it's useful to have as many sitting around in your head as possible. To recap, BASIC, LISP/asembly, C/SML, OOP Oh yeah... and somewhere in the "assembly" section, you should learn how circuits work, how to program a touring machine, and design a very simple processor from nand gates.

    5. Re:No, Python is great when you know what to do by tricore · · Score: 1

      oh yeah... Short of that if you really just want to learn one language. Go with python, I've taught alot of people python, and it's as easy as they come, and has all of the power to boot when you learn how to use it. Still, starting there's not the best way to learn.

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

    1. Re:Scheme Maybe? by PitaBred · · Score: 1

      Scheme is a freaky damn language. I still can't get my head all the way around it, maybe because I learned C/C++ first off. I understand the list processing, the recursive loops, etc. But some of the things people do with it still seem semi-magical. Maybe I need to look at it again after taking a break from it for a while.

    2. Re:Scheme Maybe? by eyrieowl · · Score: 1

      I went to one of those universities: Rice. And I am absolutely a believer in using Scheme as an introductory language. By design scheme and lisp are very mathematically oriented, they are type-free, and lend themselves to both simple code and more complex, mathematical reasoning about programs. You can start off learning scheme in an on-the-fly editor like Dr. Scheme, and even after you've learned other languages, return to it to talk about things like proving program correctness (a la Spidey). I highly recommend it.

    3. Re:Scheme Maybe? by jbolden · · Score: 1

      There are professional quality Lisps for development. There are Lisp dialects which you can use for special purpose languages. The fact is Scheme is practical for development maybe not for employment but.... BTW its not seamless. Going from an academic language to a professional language means learning a massive library of highly specialized and erratic functions/modules. Since you come from Waterloo think about having to actually use a large percentage of the Maple library.

    4. Re:Scheme Maybe? by Anonymous Coward · · Score: 0

      Unless it changed in the past couple years without my noticing it, Waterloo uses Java as an introductory language. They don't have you learn other languages until second year in which you learn C++, Scheme and the assembly language of the year (DLX assembly in mine).

      The year before I came, they used Pascal and Modula-3 instead of Java and C++ though, so it might have changed again.

  167. Scheme, anybody? by arrrrg · · Score: 1

    If you want to really learn how to be a good programmer, Scheme is a good place to start. It's extremely simple, and a great way to learn recursion, etc. If you just want to be a code monkey, maybe something else would be better though. I know learning Scheme substantially improved my programming abilities... The fact that Berkeley, etc. use it as an intro programming language is another good argument in favor.

  168. Simple Answer by Anonymous Coward · · Score: 0

    No!

  169. Get over it by csherriff · · Score: 1

    There is so much talk on what's a real language, what's not, blaa blaa. I actually think M$ has done well with vb.net. Granted syntax is pretty much all that survived (along with a bunch of add-on's for old timers) Personally I've come down the path of Ada -> C/C++ -> Java -> C# -> vb.net -> as well as a few other wieldo lauguages along the way. I'll say it.... VB.NET is pretty good. Yes VB6 sucked balls but this is not the same environment and it should not be viewed in the same light. As long as you understand how to program and what the hell is going on behind the scenes it holds it's own for the correct application environment. This mentality of real programming really gives me the shits, but I understand it as I was once there. Market forces in rational thinking won me over eventually. Bottom line whatever. I've got a job to do and this tool works.

  170. VB is a Toy Language, Windows is a toy OS by Anonymous Coward · · Score: 0

    Those who disagree are toy developers.

  171. no by Anonymous Coward · · Score: 0

    no
    no
    no

  172. It depends what you want to learn by grrrgrrr · · Score: 1

    I like squeak if you want to have fun learning programming and are creative use squeak. If you like math and logic and learn some theory (lambda calculus) use scheme or lisp. if you want to make somthing that works for windows use vb. if you want to be a system programmer learn c . if you want to automate a workflow on a mac learn applescript. python and ruby are very usefull and general languages. if you .... But learn to write in a good style from the first moment. Try to disect the problem at hand in smaller problems.Try learn some theory and be always critical.

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

    1. Re:Nope, start with Pascal by Trifthen · · Score: 1

      I disagree. If you want a Pascal-like language, nothing beats Ada. Except for the object syntax, Ada totally kicks ass. It makes me a happy DBA, knowing that Oracle's PL/SQL and Postgresql's PL/PGSQL are both based on Ada.

      --
      Read: Rabbit Rue - Free serial nove
    2. Re:Nope, start with Pascal by pogson · · Score: 1
      Big plusses for Free PASCAL:
      • small vocabulary - quickly learned
      • strong type checking - teaches discipline
      • output is assembler - so you can see what the hardware will do with the high level language
      • highly readable - given any care to layout
      • lovely string type - big part of non-numeric computing
      • stable syntax - unlike C

      --
      A problem is an opportunity http://mrpogson.com
    3. Re:Nope, start with Pascal by xjimhb · · Score: 1

      I don't think you are really disagreeing, since Ada is based on Pascal. Ada is a pretty good choice, except that it is a "Kitchen Sink" language (it contains everything EXCEPT ...), which makes it troublesome for beginners. I would still start with Pascal, the transition to Ada as a second, more advanced language would be easy.

    4. Re:Nope, start with Pascal by Anonymous Coward · · Score: 0
      Actually, it's pretty easy to beat, if you ask me (and the author of this article).

      To put it another way, computer science is science, not programming. You don't have to be a computer scientist to be a programmer, but any good computer scientist should be able to pick up almost any language easily.

      Computer science students' first language should be one that lets them worry just about the science. In fact, having a computer should be an afterthought. Consider the program:
      (define factorial
        (lambda (n)
          (if (<= n 1)
              1
              (* n (factorial (- n 1)))))
      If you know how to evaluate s-expressions, and if you know what the keywords "lambda" and "if" mean, then you can predict exactly how this (or far more complex) programs will work without needing a computer at all.

      The same is emphatically not true about procedural "beginner's languages" like Basic and Pascal. For that matter, it isn't even close to true for common industry languages like C++ or Java, either. But, since I know Scheme, I am much better at separating my programs into the immutable parts (which I can reason out on paper) and the mutable parts (which is generally where all the bugs lie).

      With all that said, sometimes you just want to teach programming, not computer science. There are some people who aren't smart enough or interested enough to learn ways of thinking; they just want to learn techniques so that they can get a job. Okay, teach them Java, and have them write everything inside main() until they're ready to learn about methods and classes. Or teach them Ruby first, if you think they should learn about objects without worrying about type errors.

      But either way, don't expect that the Java code they produce will be as nice as if they had learned Scheme.
  174. No way ! by Anonymous Coward · · Score: 0

    Programming is more than this crap ...

  175. Hear hear! by Anonymous Coward · · Score: 0

    I have more than a decade of coding experience; I had a brief VB stint (maybe 1-2 months), and it took almost 6 freaking months to get the corrupted brain patterns it encourages out of the head.

    I'd actually go for smalltalk.

  176. From my experience... by Kranfer · · Score: 1

    I use VB daily at work. However I still believe that in order to learn programming techniques properly, I would suggest still learning: C++, C#, Intel Assembly, and Java. VB is something that comes VERY easily after using those languages.

    --
    -- Josh
    "Whoopie! Man, that may have been a small one for Neil, but that's a long one for me!" - Pete Conrad
  177. Re:Bad idea- compilers by Marxist+Hacker+42 · · Score: 1

    Funny- that isn't that different from my suggestion that interpreted languages come first. Lisp and Prolog are both interpreted languages- as is Scheme. I haven't had a chance to play with Smalltalk.

    However, I'd point out that innovation isn't actually required for 95% of the coding done today- basically the way to earn a living right now is to take a paper business model and turn it into a client-server database. I've never quite figured out how to break into professional programming in LISP or PROLOG- and near as I can tell, only the military uses Smalltalk.

    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.

    True enough- though I might actually throw REAL assembly in there, but a microassembler rather than a macroassembler. Some of the most innovative programming I've ever seen was back in the 1980s trying to speed up graphics routines on an Apple IIe in 64k of memory; that was the first time I was exposed to self-modifying code.

    --
    SJW: a person who perceives an injustice, and while correcting it, commits a greater injustice.
  178. 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>

  179. Uh, wha? by Anonymous Coward · · Score: 0

    As a great coder once said: "Teaching BASIC should be a capital crime. It ruins a programer forever."

    Dijkstra was a "great coder"?

    Great computer scientist, sure, but when was the last time he even touched a computer?

    All beginners should learn something simple with C-like syntax like perl.

    Oh, you were trying to be funny. Ha, ha.

  180. Why not use forth or lisp? by Anonymous Coward · · Score: 0

    The quintessential beginner languages!

  181. name one by grikdog · · Score: 1

    Ok, why do people still mention VB in the same breath as actual work for money? Did Microsoft write Excel in VB? Did Microsoft write ANYTHING in VB except for HORSE and WUMPUS? Did Sun write Java in VB? Is VB written in VB?

    --
    ``Tension, apprehension & dissension have begun!'' - Duffy Wyg&, in Alfred Bester's _The Demolished Man_
  182. Stuck in M$ land by ubergeek65536 · · Score: 1

    VB is not a good first language, or a second. If you learn something like Java or C# at least your code (and skills) will be portable to other non-MS worlds. C# and Java are both easy to learn; it's the libraries that require vast load of grey matter.

  183. Depends on where you want to go. by Opportunist · · Score: 1

    If you want to have quick success and your goal is to write simple, small tools, then yes. RAD tools like VB are exactly what you're looking for. They offer the ability to reach quite far with very little intimate knowledge about the inner workings of your machine.

    It is also a good tool when you plan to work on small to medium projects that might have to be maintained by programmers with little experience. Most people who can write some kind of code can write code in VB. No matter what language they come from. You can code in C, you can code in VB. You can code in Perl, you can code in VB. It's not necessarily true the other way 'round. This makes VB an interesting language for projects and companies with a very high fluctuation in their programming teams.

    The drawbacks are dramatic, though, if that's not enough for you. When you want to write larger programs, especially if those programs should be portable and/or using lower level routines, you will sooner or later hit the brick wall with VB. And then VB gets back at you for taking the shortcut to success. You don't know anything about indirection, you don't know anything about window classes or window handles, you don't know a thing about object oriented programming (and what you know about it is wrong in the eyes of C++).

    In other words: Go back and start over.

    --
    We used to have a Bill of Rights. Now, with the rights gone, all we have left is the bill.
  184. You need to complete the question by mustafap · · Score: 1

    Learn to program *what* exactly?

    If it's writing pretty programs on the PC, then why not VB?

    If it's to learn how to write software for embedded computers, then no, C would be better.

    Personally, I'd say assembly language is the best. But thats probably just my age.

    --
    Open Source Drum Kit, LPLC deve board - mjhdesigns.com
  185. Looking for free fun try Second Life scripting by Anonymous Coward · · Score: 0

    Granted, you can't use it outside of Second Life but Linden scripting language is
    pretty simple (C-like) to learn, and a starter account is free, including integrated modeling and scripting tools.

    And what's more fun to write, a text version of "Guess a number from 1 to 100",
    or a donut that turns into a 30 foot tall flaming monkey when you say "Impeach Bush"?

  186. "Learn to Program" (with Ruby) by CommandoB · · Score: 1

    Chris Pine has written a book, which is also available online, called Learn to Program which uses ruby to teach basic programming concepts. In addition to the book, he offers his thoughts behind introducing students to programming, and why ruby is a good language to choose. I enjoyed his book, and I generally agree with his ideas on teaching.

    I still think that if the student wants to understand how a computer works, there is much insight to be gained from using a low level declarative language like C, and this should probably be the next language she learns. However, as a first language I would go with ruby (and definitely not VB). With ruby, the introduction is easy, with intuitive syntax and no steep learning curve, and yet as the student's skills progress, she is free to experiment with more advanced programming concepts like lazy evaluation and currying.

    --
    Not that I post on slashdot or anything.
  187. Re:Oh Noes. by Sleet01 · · Score: 0

    That, or they should be forced to cut out their own entrails with a rusty spoon. Let's face it, Python can't be beat for interactive, interpreted power _and_ simplicity.

    --
    -- Let him who is without spelling error ignite the first flame --
  188. learning a computer language ....why bother anyway by virtualthinker · · Score: 1

    First of all unless you want to rid yourself of a potential competitor find a language with a relatively simple syntax, with a decent set of builtin functions. Visual Basic was probably never a good starting point either, except that it let a novice do somewhat flashy stuff without knowing how exactly to code a form box. After programming for many years, I bought visual studio 97 when it was still the rage... only to find that visual basic was perhaps one package in it that actually worked close to the advertizing. Much of the code is hidden from the novice, which makes it deceptively simple to navigate - until you bump against its limitations or encounter some other problem. When I was in computer science school at vpisu (vippysu) we started with PL/C (a pl/1 subset), then assist (an assembler subset) then on to the real PL/1 compiler. My opinion is you need to start with something the student can actually get to work, see progress, and not get so bogged down in details of the environment, that nothing is ever accomplished. The final comment I have is why would someone want to learn a language anyway? With all the development work being done elsewhere (Im a developer out of work four years now) there really is no point except perhaps for maintenance, which you can pickup on your own if you are relatively intelligent, with a decent book. Our response to the outsourcing has be to build the next generation, of next generation "CASE" tools. This will eliminate coding, maintenance, outsourcing, recruiters, agents, IS departments, and etc., ad infinitum. These tools will not pretend to operate in any of today's languages. Of all the languages in use today, only a few emerging languages like "C--" and perhaps a few assemblers will even be relevant. I have worked on the software tools used to design and build telephone networks, swithches, as well as computers. Building computer programs is not an order of magnitude more complex than any of those hardware systems. In this new age the idea that a language is needed to communicate with a computer will be fog in the quest to make use of intellegent technology. If you insist try D.

  189. Botton feeding devolution by amightywind · · Score: 1

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

    I am glad I cannot relate to this bottom feeding devolution. I doubt that you are describing anything you have experienced in real life. But if you are it is a sad commentary on the influence marketing forces in programming education. So many brilliant people have worked so hard to make learning programming rewarding and fun, and they are ignored. Alan Kay and Squeak. Abelson and Sussman with Scheme... Instead we get enthusiastic discussions of Bill Gates and Visual Basic.

    --
    an ill wind that blows no good
  190. Java is superior by FoxyFox · · Score: 1

    Java is superior. First of all it is likely to be the language you will use at daily basis in the future (2/3 over 1/3 C# on the market), or at least something close related to it. It is easier to read than C# because you have to define thing more strict. (I think it is easier to learn C# after Java than the opposite). Java Apps is also funny for students, and you can move it around on "all" platforms. Java is more flexible. C# is easier for larger projects (needs less configuration), but not for teaching.

  191. Beginner yes, training no by Anonymous Coward · · Score: 0

    VB is a good beginning language. VB makes it easy to do certain tasks that can be very annoying in other languages.

    It is terminally broken for most real development (at least as of the last version I used a few years ago--this may all be out of date).

    The ability to work as a group was nearly nonexistent. You must be able to build an interface that sits between any two pieces and allows independent development on both sides of the interface (including compiling). It must be easy to check the code in and out of version control. You should be able to scan the source code without an editor. You would NEVER give your ability to modify your code over to a single-source vendor or tool!

    That aside, as I said, if you only have 3 or 4 people in your group and your work is fairly independent go right ahead and enjoy VB.

    However, basic is a horrific language for training.

    It is way too abstract from underlying implementation. For instance, it doesn't teach you to understand the difference between stack and allocated variables, pointers are completely gone, and the event loop--critical in all languages--is completely hidden. Great for lazy development, but sucky for training.

    It's inflexible. For instance, Java was able to implement Swing without modifying the language (an entire graphical display system.) Eclipse was able to re-implement the entire thing (SWT) independently. Creating a dynamic form from code (rather than the form builder tool) is (was?) amazingly annoying.

    It's inconsistent. Do you put parenthesis after a keyword or not? Well, depends, how was it defined? Why would you allow both SUB and FN? They are the same thing but with arbitrarily different syntax!

    It doesn't teach OO concepts. People think that because controls use dot notation, they are "good at OO". Polymorphism and inheritance are the keys to OO, the stuff that was in VB is simply an organizational short-cut. (MS may have added to VB since then)

    To put it another way, I have NEVER met ANY engineer who would hire a programmer that had never used any language but VB in their business projects. Only C# maybe, only Java all the time, but never VB.

  192. Define "Beginner" by shoemakc · · Score: 1

    I find it interesting that lots of suggestions have been thrown out there without anyone actually asking who this "beginner" is. Is is a young student with an interest in computers who you're trying to get interested? Is is an intro to programming student in college? Or is it someone out of school, in a completely different field who's just trying to automate some of his more tedious computer tasks?

    Now i've been all 3. I grew up with BASIC on the commodore and apple....writing simple little programs to play music and scroll text on the screen. I think what makes BASIC good here is that it's about the closest computer langauge to English there is, so it makes it easy for someone interested to jump right in.

    In college (I'm an electrical enginneer, not CS) we took a few intro to programming courses using C++, though I heard that soon after they've now switched over to java. These sound reasonable to me because they introduce you to a large number of programming concepts, in a generally well designed and highly popular language for large projects.

    As an intern, I worked for a collections agency. At the time this agency and many of it's clients were still using database systems from the early 80's....essentially using flat files. Information was emailed back and forth between agencies in flat files and every day we'd have to open a bunch of them....and manually add up a bunch of numbers to generate checksums for the clients, and reports for the managers. These reports were generally created in Excel and took about 2-3 hours each day to complete. I learned a bit of vba, and created a spreadsheet that could select the flat files and generate the report automaticly...cutting the time from 2-3 hours each day...to 5 minutes. They wound up using the spreadsheet for a few more years until they lost that client, though the amount of time saved over the apps lifetime was still several thousand times what it took to write it.

    Today I work for an engineering company, and VBA has been invaluable in automating and extending AutoCAD to make our lives easier and save time. You have to remember, Dozens of the most popular office apps can be automated by vba...and increasingly VBA.NET. Generally these are all small projects, many of them with very limited lives...but they're very usefuly, and there's tons of them out there.

    I'm shocked that everyone has glossed over this point. I guess most people here assume that everyone wants to grow up to be a top notch open source programmer, ignoring the fact that it represents only a small percentage of all the programming going on in the world.

    -Chris

    --
    --an unbreakable toy is useful for breaking other toys--
  193. The Worst language to teach: Perl by FoxyFox · · Score: 1

    At lest I know which language NOT to teach anyone new to programming. Perl is horrible, but genius at the same time. You can almost invent a new language inside Perl.

  194. No by Anonymous Coward · · Score: 0

    No, Period

  195. Whichever you choose, get free tools by Anonymous Coward · · Score: 0

    If you are going to run on Windows at least get free tools direct from Microsoft: http://msdn.microsoft.com/vstudio/express/default. aspx

  196. learning languages by koutkeu · · Score: 1

    VB is definitly a good language if you need to code tools and have little time to do so, however as a learning language i would recommand ADA http://www.adahome.com/ Very good for teaching beginners especialy to learn how to handle variables.

  197. Upmod the Parent! by slashdot_commentator · · Score: 1

    Damn your luck Maxume. You've been hit by the one female slashdot reader with mod points. (Damn you, Taco's wife...)

    While I can chuckle, I can't say I agree with the less complimentary adjectives.

    The democrats, if they wish to remain relevant,

    But the leadership doesn't. The DNC political advisors merely want to keep their high paying salaries, and depend on the good graces of big business to do that. Media consultants merely want to skim off the top of those political commercials that can only be funded by big business. Politicians merely want to stay re-elected, and pander to big business for campaign finances and post-congressional lobby jobs. Winning control of the House and Senate is secondary to these people, as it is to big business.

    This is the reality we live in. We will either have to erode the relevance of the Democratic Party and suffer continual Republican victories until a replacement party can squash both, or you will have to shoot DNC operatives until all of the traitors are eliminated.

    and actually take a stand for something.

    They don't stand for anything. Unless you count their self-interest as a principle. Which is what the Republicans stand for. Hell, they jettisoned fiscal responsibility in gov't, adopt invasions of convenience, destroy the economy so foreigners call the shots, and is more than happy to abandon US servicemen and destroy the US military.

    It should be freaking obvious that Hilary does not have a snowball's chance in hell of winning a presidential election, because she doesn't appeal to the Red State cretins that voted Bush over Kerry. Kerry never inspired the hatred Hilary does. So yes, I agree, the RNC would love Hilary as the Democratic candidate for President.

    --
    There is no America. There is no democracy. There is only IBM and AT&T and DuPont, Dow, General Electric, and Exxon
    1. Re:Upmod the Parent! by maxume · · Score: 1

      I'm pretty cynical, but not so much as you. The party democrats thought that Kerry was the man. That's why they are floundering. They have absolutely no idea their ship is leaking.

      You see my point by the way, the democrats spend a lot of time calling the republicans things like 'evil', without any sense of how they should be different.

      Standing for something is the first step.

      I don't want to vote for somebody who says they believe in the things I believe in, I want to vote for somebody who makes me believe in what they believe in.

      Aside: You leave me curious as to how you *would* describe Hillary.

      --
      Nerd rage is the funniest rage.
    2. Re:Upmod the Parent! by Anonymous Coward · · Score: 0

      Neither party would run a woman without at least a tacit guarantee that the other party would too. Which would mean an unofficial truce would have to be struck for us to see Condi v Hilary. It wouldn't really matter who won that (although it would be likely to be the Republicans), as they're both lapdogs of their corporate masters anyway.

    3. Re:Upmod the Parent! by slashdot_commentator · · Score: 1
      Neither party would run a woman without at least a tacit guarantee that the other party would too.

      You must be a Democrat. And will participate in your first ballot.

      Which would mean an unofficial truce would have to be struck for us to see Condi v Hilary.

      DELUSIONAL Democrat. No, it would be Hillary vs whomever best appeared able to squash her like a bug in the polls. I'm guessing McCain, because some women would look at him as sensitive and reasonable, yet a war vet, therefore "manly". Guys will vote for McCain, just because the alternative is Hillary. (I, a heterosexual male, would vote for Hillary. Any guy that would kiss up to Bush after he accused him of cheating on his wife and had a "disgusting" interracial fling resulting in a bastard child was obviously castrated at the POW camp and is capable of committing any indignity to pursue his lust for power.)

      --
      There is no America. There is no democracy. There is only IBM and AT&T and DuPont, Dow, General Electric, and Exxon
    4. Re:Upmod the Parent! by slashdot_commentator · · Score: 1
      I'm pretty cynical, but not so much as you.

      No, I'm pretty cynical, you are NAIVE.

      The party democrats thought that Kerry was the man. That's why they are floundering. They have absolutely no idea their ship is leaking

      Kerry is known to be a ponderous flipflopper, but even he could not have pulled that election year farce if it weren't for people constantly telling him to be a two-faced asskisser, or GWB actually had some Skull & Bones pull. He tried to compete with Bush on the TV circuit and money circuit (not his strength), he didn't have political operatives like Dick Morris to hit under the belt, and no one to kick him in the ass where there was time to make up ground, and no father that bothered to teach him only a whore tries to make everyone happy or not mad at them. What's sad is that chump actually thinks he has a shot in 2008, when he's more damaged goods than Hillary.

      You see my point by the way, the democrats spend a lot of time calling the republicans things like 'evil', without any sense of how they should be different.

      No, non-professional Democrats call Republicans evil. They know exactly what should be done different. They all vary, and some may not be feasible or plain stupid, but they know exactly that it should be different. You are confused with Professional Democrats, who do not call Republicans "evil", they call them "my collegue".
      The solution is simple, vote for people that defend your important issues. Unfortunately, Republican voters don't care about integrity (Delay, Frist), about veterans (whether its body armor or lost body parts), about illegal immigration, about the potential threat posed by the China, about Al Queda (they'll use it as an excuse to subvert every constitutional right, but not catch the fleabag Osama, which is telling), about the country going into irreversible hock, but they care about how the rich need more tax cuts, and are willing to allow the President violate the Constitution for the illusion of safety. If they really stood for principle, they would not be reelecting politicians who perpetrate this crap. Therefore, I don't think Republican voters really do have any integrity, they just care about picking a "winner" even if it makes them losers.

      Standing for something is the first step.

      Murtha stood up, for the troops. He says, "Enough of this bullshit, prepare to get out of Iraq." I don't see you nominating him for president.

      I don't want to vote for somebody who says they believe in the things I believe in, I want to vote for somebody who makes me believe in what they believe in.

      Which makes you a sheep. A sucker. The right-wing's bitch. I want my gov't to do my bidding, or get the f*ck out my district. Only a pillow-biting bottom or a ho wants "believe in" someone else's bullshit. Such a person has no principles or core values.

      You leave me curious as to how you *would* describe Hillary.

      A f*cking Republican in a red state, but hers is Blue. But no Democan can match Lieberman. Lord, I wish he loses the primary, even if it meant losing the Senate seat.

      --
      There is no America. There is no democracy. There is only IBM and AT&T and DuPont, Dow, General Electric, and Exxon
  198. 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.
    2. Re:Java snobs? by Jesus_666 · · Score: 1

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

      You know, that's not what makes C# such an easy target for snobbery. C++ coders laugh about what C# calls performance and Java coders wave a dictionary around and say: "We have this thing called 'por-ta-bili-ty', you might want to look it up."

      So actually, yeah, the snobs think that it's for morons, but not because the language is easy. (But yeah, not everyone is a snob. Besides, true snobs see C++ and Java as FORTRAN for kids anyway.)

      --
      USE HOT GRITS WITH STATUE OF NATALIE PORTMAN (NAKED AND PETRIFIED)
    3. Re:Java snobs? by orderb13 · · Score: 1

      That's right. Real men program in fortran (I hated that language so much)

  199. javascript to teach very basics by mr_burns · · Score: 1

    seriously. You'd want to move on pretty quick, but a lot of good stuff is there. Syntax is very c-like. Usual suspects for operators, loops, tests, exceptions, try-catch. Don't need any expensive proprietary software. Lots of documentation. Garbage collection. Loosely typed. Object Oriented.

    The kicker is it's very safe. You're likely not going to hose your hard drive or lose a tic-tac-toe match to wopr. You'll have a head start on AJAX and will be able to read c and java well enough to start learning those as well.

    --
    "Let him go, Ralph. He knows what he's doing." --Otto Mann (simpsons)
  200. 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
    1. Re:No. Different isn't better. by shutdown+-p+now · · Score: 1
      I guess the only difference between any two languages is syntax--that's what a language is.
      No. There's also that thing called "semantics".
    2. Re:No. Different isn't better. by Gordigor · · Score: 0

      How was this modded as insightful... That's right its Slashdot.

      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.

      Yes TWO VERSIONS AGO! VB.NET is zero based arrays:

      http://support.microsoft.com/default.aspx?scid=kb; en-us;311333
       
      ...but VB.NET to C# translators are a bit more problematic

      http://www.developerfusion.co.uk/utilities/convert vbtocsharp.aspx
      http://www.soft32.com/download_26228.html
      http://www.shareup.com/VB.Net_to_C_Converter-downl oad-17930.html

      Just three to get you started!

      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

      Well not to mention that a professional programmer wouldn't right functions as 'A' or 'X', Option explicit on would not let you compile that if both X and A are not the same data type.

      Don't bother with VB 6, it's going away.

      Yeah, like FIVE YEARS AGO!

      But you are right VB.net and C# are basically the same. Its all syntax. For myself, I read and write English so I prefer to code in English, not code for the compilers sake.

    3. Re:No. Different isn't better. by tyler_larson · · Score: 1

      ...but VB.NET to C# translators are a bit more problematic

      [links to broken tools snipped]

      Just three to get you started!

      Riight... I never said that conversion tools don't exist--they certainly do. But they don't work. Run the following (perfectly valid) code snippet through your favorite VB.NET to C# translator--perhaps one of the sites you linked to.

      Function foo() As Integer
      Dim a() As Integer = New Integer(3) {1,2,3}
      Return a(2)
      End Function

      What you almost invariably end up with is this broken code (I used one of your recommended translators to produce it):

      int foo()
      {
      int[] a = new int[3];
      return a(2);
      }

      Note the produced return a(2) instead of the correct return a[2]. It did this because without extra context, there was no way to tell whether a(2) in the VB code was a function call or an array index. On the surface, you might think that the translator was poorly written (after all, it's output is wrong). However, at the moment, all of the VB.NET to C# translators produce incorrect output under certain circumstances. There are plenty of ways to get bad results out of a VB to C# translator, this is one of the easier ones. On the other hand, it's easy to create a C# to VB translator that produces correct results.

      The problem isn't that all programmers interested in VB are dumb; the problem is that this is a hard problem in the sense that VB.NET's actual syntax is context-dependant. A translator from VB to another language can't just directly translate symbols and keywords as previously suggested. Instead, the translator has to fully parse the whole program, keeping track contextual nuances, then output an equivalent program in C#. This is the same basic problem (though to a much lesser scale) as in any other natural language translation project, like giving your computer commands in plain English: the language is inherently ambiguous.

      The end result, and here's the important part, is that VB code is more difficult for a program to work with, which disqualifies you from using nifty tools like code transators, which would have been possible had you used a better-designed language like, well, anything else. So, if you or your organization is interested in jumping into .NET development, make sure you understand the full implications of your decision as to which language to use. C# is a very well designed language created specifically to take advantage of .NET's features. VB.NET, on the other hand, was an afterthough comprimise to try to get old VB developers to use .NET. Besides the common and well-documented shortcomings of the language itself, there are also a number of hidden pitfalls like the one I just discussed that you will be subjecting yourself to if you choose to use VB for .NET. In short, it's not worth it.

      --
      "With sufficient thrust, pigs fly just fine. However, this is not necessarily a good idea...."
      RFC 1925
    4. Re:No. Different isn't better. by DarkProphet · · Score: 1

      For the most part you're right, but I'd like to comment on a couple of things:

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

      In the specific case of VB.Net and C#.Net, its a little different. Both languages compile directly to MSIL, which means analogous code in both languages should in theory compile down to the exact same binary.

      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.

      As I understand it, the System.Reflection namespace takes care of this just fine. Reflection allows the code translator parse all elements of the code on-the-fly. Reflection should allow direct transcription from one .Net language to another. I've played with this a bit for VB.Net and C#, but I don't know how well this works for 3rd party language support such as PHP.Net. FWIW, unless you are trying to build a code translator, I don't really feel that the so-called ambiguity in VB.Net's syntax is really an issue, especially if you don't have prior programming experience. In that case, using the single '=' to test for equality probably makes more sense to a person than using '=='. The first thing I do when I try a new language is RTFM for the keywords, control structures, and operators. The fact that these are similar in many languages shouldn't be taken for granted by any programmer worth his salt. I mean, it doesn't make sense to me that some cultures use a full-stop as a numerical thousands delimiter instead of a comma, but I am aware that such things can vary from what I am familiar with.

      In the end, I feel that choosing either VB.Net or C#.Net over the other is really a matter of preference. It is advisable to choose C#.Net as a learning language if you want to become familiar with other C-style languages. Personally I prefer VB.Net, because I don't necessarily perfer C-style syntax (brackets, braces, semicolons, etc etc), which seems messy to me. VB.Net on its own does not encourage bad programming practice any more than C#.Net does.

      --
      What could possibly hurt the security of the American people more than giving our own government the ability to hide its
  201. You are all blind to the problem! by Anonymous Coward · · Score: 0

    Here's the issue. pay attention to this one fact that you are all ignoring...

    NOBODY WANTS TO LEARN PROGRAMMING WRITING A CLI APP!!!

    Nobody wants to do "Hello World!" (or "This is not Hello World" for the Java-Idiot-Savants out there)

    Visual Basic 6 was the single most propular language in it's time...Why? Because in 10 minutes you had a full grasp of what was being created, and how to change it's functionality.

    Ok, so I've taught you C++...great. You know variables, functions, objects, flow control, and all the trimmings.

    Now show me a nice GUI in Windows that says "Hello World" ala VB style.

    This is why RealBasic is starting to take off. MS abandoned VB6 simplicity for this pile of crap called NET.

    You want people to learn Java as their first language? Fine, show me a way to get a GUI up and running quickly after I learn the basics.

  202. 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
  203. 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!

    1. Re:Delphi is alive and well by hendridm · · Score: 1
      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.

      Sweet! I knew my resume was missing something. Off to the book store I go!

  204. 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;
    1. Re:No longer accurate... by SuperMog2002 · · Score: 1

      Nice! Good to know, thanks.

      --
      Sunwalker Dezco for Warchief in 2016
  205. Logo by jbolden · · Score: 1

    I know I'm going to get shot for saying this but I think Logo still is the best choice.

    1) You can start writing programs instantly.
    with just 3 keywords: forward, right and repeat you can do quite a bit and by the end of it understand looping structures, subroutines, computer organization, state.... And that can all be taught and understood in about 2 hours using logo.

    2) Logo has a pretty good subroutine system. From there you can learn about variables and recursion vs. iteration...

    3) Logo is a LISP and like every lisp there was enough lisp left behind to do anything. So from inside of Logo you end up having a good language to learn every other paradigm

    4) Modern Logos have multiple turtles interacting and thus you can learn the event driven paradigm and how to program in a thread safe way

  206. Windows Only by SnarfQuest · · Score: 1

    Aren't there any other Windows Only(tm) languages you could teach them? There ought to be plenty of other languages you can choose to lock them into the Windows enviornment.

    --
    Who would win this election: Andrew Weiner vs Andrew Weiner's weiner.
  207. 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.
    1. Re:Visual BASIC as a beginner language by Anonymous Coward · · Score: 0

      I always learnt that the "A" in BASIC stood for "All-Purpose", meaning it was suitable for any task... so while I'm not disagreeing that its aimed at beginner programmers, I don't think it was quite only for learning, more for beginners to program in before they moved on to more advanced languages...

    2. Re:Visual BASIC as a beginner language by Orion+Blastar · · Score: 1

      I stand corrected. I seem to have missed that, thanks.

      Wikipedia has more on BASIC, Visual BASIC Classic, and Visual BASIC.NET.

      --
      Remember, Slashdot does not have a -1 disagree moderation, and no, troll, flamebait, and overrated are not substitutes.
  208. It's good for learning on, that much is true.... by lightningrod220 · · Score: 1

    When I learned VB a couple years ago, it was cool because I could see some great results after a couple hours of lecture. The other C-based languages were meant to be started out in the console environment, then working your way up from there. But VB let you have a window with buttons, and stuff happened when you clicked, and it was pretty simple. From the way it sounds, Microsoft has kept that ability, while giving VB enough power to do more advanced things...

  209. Optimisations; gcc compiles to asm; lack of ctrl? by PhYrE2k2 · · Score: 1
    assembler is still better because it's a human readable form of EXACTLY what the computer is doing

    Yes, but one has to keep in mind that at one point everything was assembly. These days even [most of the] kernels are mostly written in C. Why? Even some of the best assembly programmers can't match the optimisations performed by a good compiler on complex jobs. Anything complex could really benefit from a good compiler with its optimizations.

    Looking at C, C++, and Java I don't know what the instructions REALLY do.

    Decompile the libraries, or since you already have the C source, just compile to the assembly stage:
          gcc -O2 -S -c inputfile.c
          This will create inputfile.s
          If you want to see both the C code and assembly code mixed together (as comments)
          gcc -c -g -Wa,-a,-ad inputfile.c > inputfile.lst

    Just because your profs don't know what it's doing in the underlying layer, doesn't mean you shouldn't. Install binutils/gcc and download the source to the glibc of your choosing and see what the assembler output is. Try and follow it.

    That kind of lack of control really irks me

    You're complaining about the _lack_ of control with C? C being probably the language that gives you the most control over all of them (less asm of course)? C being the language of choice for operating system kernels? C being the one that lets you screw up as much as you want, just going ahead and overwriting memory and not doing this stuff for you like some languages that will remain nameless? C doesn't offer you enough control? Then you must be hardcore.

    -M
    --

    when you see the word 'Linux', drink!
  210. Why sure. by slashdot_commentator · · Score: 1

    Why wouldn't you want to limit your programming experience to one hardware platform (x86 PC), and one operating system (made by Microsoft)?

    --
    There is no America. There is no democracy. There is only IBM and AT&T and DuPont, Dow, General Electric, and Exxon
  211. It's the logic stupid by alijsyed · · Score: 1

    It's not the syntax but the logic that matters in programming.

    I have met many great programmer who were masters in different languages that could easily switch between programming languages that were not their ususal cup of tea. They did this easily because it was always the logic not the syntax.

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

    1. Re:Interview Question by DaveV1.0 · · Score: 1

      So, if someone were to say "My favorite is VB because it lets me bang out a proto-type quickly" you would not hire them?

      --
      There is no "-1 offended" or "-1 you don't agree with me" mod options for a reason.
    2. Re:Interview Question by Cat+99 · · Score: 1

      I would follow up with the question "So what language do you like to build real systems?". As I am not generally looking for a programmer that can only build prototypes. BTW - you would get top marks for saying "it depends on the task" and then giving some examples of why you would use different languages in different situations.

  213. That Depends ... by JPyObjC+Dude · · Score: 1

    on what you want to play with.

    If you can play on OSX or Linux
      . Play with AppleScript -or- TCL -or- Ruby -or- Python -or- ... :]

    If you must play win32:
      . win32 GUI Hacking
      . . IronPython and .Net or Mono

      . For preadsheet hacking:
      . . Must go Office? - VBA
      . . Can Go OOo:
      . . . Unless you go OOo which allows many languages
      . . . Including *basic (VB clone)
      . . . IMHO, I would suggest Python though.

    If you are really brave, go for GNUStep - don't get confused by the archaic looking interface. It is maintained by some of the best hackers on this globe of ours.

    JsD

  214. oh visual basic, i miss you so... by intthis · · Score: 1

    visual basic is almost too simple for beginners... i mean, all you really need to know is: vb.writeprogram = true, and it'll do all the hard stuff for you...

    --
    now is the winter of our discotheque
  215. Learn C# without Visual Studio by tetranz · · Score: 1

    I moved from VB6 to C# but I learnt from a book by Larry O'Brien. I think it was called "Thinking in C#". Unfortunately, it was never released (dispute with the publisher I think). I had a prerelease PDF version.

    Anyway ... an important point was that it taught the basics of C# without Visual Studio and initially without Windows Forms. All you need is a text editor and the command line compiler. If you're disciplined about it then I guess you can use VS just as a nice text editor.

    I'm not sure if there are any other books teaching the same way but I recommend it as a good way to get started. By all means use all the bells and whistles of VS later after you understand the basics.

    Cheers
    Ross

  216. SmallBASIC by justthisonething · · Score: 1
    ? "hello world"
    Here's an even better beginners language.

    http://smallbasic.sourceforge.net/SmallBASIC
  217. look at the issues by kabaju42 · · Score: 1

    Not enough people are looking at the issues of what a new programmer needs to learn with their first language. If it's someone who just wants to play around then they probly just want a cool webpage. Give them some scripting language. If the person wants to do some serious programming (say make it a career) then they need to know some important things: How to design a program, and how the computer thinks. With those in mind I say go with a functional language like C (or a variant that lets you program funcually) If you're programming with functions then you can make flow digrams, block charts, etc and translate them to the computer. You're actually designing how it works first (and that alone makes it more maintainable and easier to debug) A lot of you complain about case sensitivity. Well face it, that's how the computer works. You need to be exact. It really bugs me that VB will let you type in whatever case, then it'll change it to the proper case for you. Babysitting link that isn't going to train someone to fix their mistakes. Now when it comes to the program, C offers another advantage. You aren't bogged down quickly. The wizard for starting a VB project will give you 20 files full of stuff that you have no idea what it is, and you have to remember where to add your code, and what to leave alone. On the otherhand, for C you type: int main() { return; } and you have a program. You eaisly learn what's going on and you eailsy know where to add your code. You can add to it from there. Now a lot of you complain about the low level aspects of C like pointers, new, delete, etc. Well guess what? You don't have to teach that to a newby. But it's still there when they need it. (Ah I rememeber when I finally understood how a pointer works, and the power available from it.) I admit as an Electrical Engineering student, my experiance is simply C/C++, assembly, and a touch of VB. I don't know the scripting languages, (pearl, python, php and the like) but if they allow you to teach those good techniques then go for it. I'm sure the cool factor becomes apparent much faster, and that's a deffinant must for any teacher.

  218. Java has serious problems by idlake · · Score: 1

    Java could have been a great language for teaching, but it has some serious problems. Among them are: bugs in its type systems (inheritance of array types), a broken implementation of genericity, a bloated and poorly designed GUI library, and lack of some important programming constructs (call-by-reference, multidimensional arrays, pointers).

    C# fixes those problems. If you're going to use a Java-like language as a teaching language, then C# is the better choice (and it's also what the poster was asking about!).

    1. Re:Java has serious problems by Anonymous Coward · · Score: 0

      "bugs in its type systems (inheritance of array types)"
      Care to file them? The more annoying it is, the more votes, the more likely it'll be fixed. Also, there's no such thing as an array class in Java (dont' think there is one in C# either - or in any other language).

      "a broken implementation of genericity"
      The only "broken" thing I've come across is when dealing with array of generics - but it's by design because generics in Java (and in C# and in C++ I believe as well) are done at compile time.

      "a bloated and poorly designed GUI library"
      Maybe C# has something over Java here. Dunno. Haven't used the GUI features of C#. However, would you like to use C# on anything other than recent version of Windows? Too bad. At the very least no GUI for you. Besides, for learning programming concepts with a language, you want to stay away from the GUI. Learn the syntax first. Right a bunch of simple command line programs first. Especially with languages like C# and Java, get familiar with the built-in libraries.

      "and lack of some important programming constructs (call-by-reference, multidimensional arrays, pointers)."
      All Objects are by reference in Java (primitives are by value)
      Multidimensional arrays are treated as first class citizens in Java (have you even used Java?)
      Java: int [][] abc = new int[3][4];
      C++: int ** abc = new int[3]; for (int i = 0; i
      C#: Int [][] abc = new Int[3][4]; // Off the top of my head, so I may be wrong
      Pointers are missing but it's a debatable issue, especially with the tasks that Java is marketed for.

      Also, claiming that C# is some great improvement over Java is not being very objective. C# is MS Java. If the courts hadn't ruled that MS couldn't cripple Java, we'd still have J++. Yes, there are some nice things in C# that stick out (unsafe code), but to say that C# is the better choice is really buying into MS's marketing hype. They each have their own market segments (the only thing I see C# for is tight Windows integration)

      Java is the better learning language. All older alrogithm/data structures books use Java as the example language (older books = cheaper). There's tons of tools, libraries etc built up around Java. Best of all, you can see the source of any JDK class you use (except those that call native code). That's a huge bonus when you want to see experienced programmers write algorithms for hash maps.

      Also, as great as Visual Studio is, Eclipse, Netbeans, IDEA completely blow out of the water any IDE I've seen for other languages.

  219. For beginners? by MoxFulder · · Score: 1

    Python! (I'm a recent convert from Perl myself)

    C's still a good language that every programmer should know, IMHO, but there's too much mucking about with low-level stuff I think. Python's got a fabulous combination of simple syntax, elegant design, and power that is great for beginners.

  220. I can explain I think..... by Zphbeeblbrox · · Score: 1

    Old VB can teach: Branching, Looping, Thinking Logically

    Old VB does not teach: Data Structure design, Object Oriented Design, Encapsulation, or Abstraction.

    So I guess you'd have to say it depends on what you want to teach. If all you want to teach is the top set then sure. However if you want to teach the second set without having to teach a second language then VB is not a good choice.

    VB.Net on the other hand puts them all together so it would certainly qualify.

    As to why we think of VB as a toy language. That is simple. Its a language for non-developers to act like developers. It's whole purpose was to enable non developer people to quickly develop small simple applications. It was never intended for use in developing large or medium scale applications. For that it's toolset is abysmally poor. It's Close Cousin VBScript falls miserably short in that respect too. Coding ASP in VBScript feels like trying to Paint a picture with only 2 colors or draw a landscape with only straight lines. You can do it but man is it limiting to work that way.

    --
    If you see spelling or grammatical errors don't blame me. I tried to preview but IE here at work borked the CSS
  221. Whichever language you choose, don't by Man+in+Spandex · · Score: 1

    start with COBOL, unless you need to learn English.

  222. 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.
  223. Re:Bad idea- compilers by chris_eineke · · Score: 1
    Lisp and Prolog are both interpreted languages- as is Scheme.
    Halfways there, chief. Nowadays (Common) Lisp is compiled to either bytecode or directly to native assembly. It's quite amazing to compile new functions on-the-fly. And it's fast, too. Check it out!
    only the military uses Smalltalk
    Isn't the military using Spark (a subset of Ada)?

    that was the first time I was exposed to self-modifying code.
    Wait till you see code writing code (Lisp) ;)
    --
    "All you have to do is be fragile and grateful. So stay the underdog." Chuck Palahniuk, Choke
  224. you should know better by idlake · · Score: 1, Insightful

    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.

    Well, I'll come back with the argument that any experienced programmer should know better than to choose C/C++ voluntarily. The problem with those languages is not that they are tedious, the problem is that it's too easy to make mistakes in them even for the most experienced programmers.

    And the "we're so excellent, we can handle it" attitude is what really sets the mediocre programmers apart from the best programmers: the best programmers know that they can't handle it, they can at best muddle through in C/C++.

    1. Re:you should know better by MythoBeast · · Score: 1

      There's a lot of truth to what you say, but both sides have to be considered. Programming languages that take all of that out of your hands (garbage collection, memory allocation, type definition, and whatever else) wind up being less efficient and less flexible.

      No, I'm not going to argue the idea that X can be written to compile just as efficiently as Y because none of those tests take into account programmer's habit of overusing processor resources when they can't see them being used.

      --
      Wake up - the future is arriving faster than you think.
    2. Re:you should know better by idlake · · Score: 1

      Programming languages that take all of that out of your hands (garbage collection, memory allocation, type definition, and whatever else) wind up being less efficient and less flexible.

      Memory management in C/C++ is usually less efficient (both in space and time) than in high performance systems with garbage collection. And the main effect of C/C++'s type system and pointers is to prevent the compiler from doing optimizations. In fact, it's a misconception that giving more low-level control to the programmer ends up making software more efficient.

  225. funny you should mention that... by sedyn · · Score: 1

    "Just put 2 where you see X in 2*5X+8 and put it into your calculator, then give me the answer", which is basically what Java and other high level languages do.

    "Just shift 00101 to the left by 10 and then use full adders with the input of 01000", is, by this analogy, what C does.

    --
    Am I open minded towards open source, or closed minded towards closed source?
  226. Re:TwIPS by josath · · Score: 1

    Is TwIPS just something you made up? I'd like more information on it as well, it sounds interesting for various reasons (teaching others, learning more myself, maybe I'll write an interpreter if none exists, etc)

    Thanks

    --
    sig? uhh, umm, ok
  227. make assembly language your first language! by Wikipedia · · Score: 0

    I learned asm as my first language. It's better because you are immediately learning the way a computer works internally. Ask any C programmer if it helps to understand how a computer works. Assembly Language Step By Step: http://www.amazon.com/exec/obidos/tg/detail/-/0471 578142?v=glance

    --
    P2P Anonymous Distributed Web Search: http://www.yacy.net/
  228. junior developer by andyatkinson · · Score: 1

    I'm a junior dev working for a software company. I taught myself a fair amount of VB.Net working on a website, and did a fair amount of C programming over the last couple of years in school. Now I am working at an all-Java company, and am continually surprised by the layers of abstraction, such as proprietary db code that interfaces with JDBC, that interfaces with the db. Neither VB.Net nor C taught me this kind of object-oriented interfaces, abstraction, etc., etc., not to say this is not possible, but I say learn as much OOP as possible. With C I spent most of my time doing memory management that Java does for me. With VB.Net I spent most of my time finding "widgets" and things that someone else wrote that I could drop it...so I never really learned to program from the ground up with it. If you are only doing web stuff, learn VB.Net or PHP, if you are working for the enterprise, learn Java. I've seen more and more job advertisements for PHP and Python knowlege, and the jobs are what it is all about right?

  229. VB Was Great For Me! by Anonymous Coward · · Score: 0

    i learned databases using vb/access. i had a pretty nice app up and running. the guy before me stared at excel 30 hours a week. i clicked a button. ;-)

    naw, that's not why VB was so good.

    it was goo db/c i got a little information and then moved on to bigger, better things.

    i'm solely focused on open source programming tools and dbs and i love it.

    i get a chuckle when all the dreamweaver types argue whether it is good to look at the script code or not. -lol-

    i will live a good life if i never see vb again. that's why it was so great for me!

  230. Matlab Anyone? by MicrowavedH2O · · Score: 1
    While I myself used Matlab (http://www.mathworks.com/products/matlab/) after learning other languages, I found it fairly easy to use. While it is math based, one can still use it to program for a wide variety of problems. One can learn the basics of loops, vectors, matricies, functions, etc. Without worrying about too much complication. Additionally (this is good and bad), you don't have to worry about declaring variables or specifying ints from longs or doubles. While you can do such things, they are done automatically if not specified otherwise. From their site:
    "MATLAB is a high-level language and interactive environment that enables you to perform computationally intensive tasks faster than with traditional programming languages such as C, C++, and Fortran."
  231. Good for beginners? Never was. by Canordis · · Score: 1

    VB wasn't a good beginner language from the start; it was intended as a language for non-programmers to write simple GUI applications. For someone who wants to do that, it now has morphed into a full-fledged programming language (Knowing Microsoft, probably with lots of cruft). That means it isn't good for those people anymore.

    A good language to learn to code in (If you plan on actually being a programmer) is Python, or Lisp if you're taking the long road and learning something less useful for the sake of better theorical knowledge.

    A good language for non-programers to write GUIs in is TCL/TK. They're cross-platform, simple, and take minutes to learn.

    I'm not saying VB is a crappy language or a toy (When I looked at it, years ago, it was, but that's not the matter and I haven't see the 'new' VB) but I am saying that it was never a good language to learn how to code in, (Much like BASIC before it) even if it was a good language for non-coders to write simple scripts in. It hasn't gotten any simpler or easier to learn. Of course, nowadays, simply the fact that it is neither cross-platform nor compiles in more than on operating system on a single architecture just irks me to no end and makes me think it's silly to learn something that only runs on an OS that is losing market share. I also think it's silly for someone just learning to program, or who'll only do casual program, to pay the full price for an obscenely-priced license while you can get Python, TCL, Perl, Lisp, C/C++ and Java for free on any platform you choose.

    --
    I have never made but one prayer to God, a very short one: "O Lord, make my enemies ridiculous." And God granted it.
  232. 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.

  233. Is it a good beginner's language? by jafac · · Score: 1

    I think it's probably good for a first try.
    But it would certainly be worth the author's time to try again.

    --

    These are my friends, See how they glisten. See this one shine, how he smiles in the light.
    1. Re:Is it a good beginner's language? by Slugbait · · Score: 1

      > separates the programmer from the bare metal of the machine,

      Keeping in mind that these days bare metal includes speculative and out of order execution, instruction rewriting, parallelism, vectors,...

  234. Try some of the different languages... by TheIndifferentiate · · Score: 1

    that will be suggested here and when you hit one that you think is fun to use, stick with it and don't let anyone talk you out of it. Not to disparage the crowd around these here parts, but everyone has his/her favorite language, and you couldn't talk him/her out of it. So, when you find one that floats your boat, set sail and don't look back.

    Also, don't think that you'll be able to get by without learning more than one language. Personally, I've made a decent living coding in VB and C over the years. I've used COBOL and Java in school and even at one time thought I wanted to move into Java because I thought it more "professional." I'm having fun with C# now though, so I'll probably stick with it.

  235. Old-fashioned Basic is better by logicpaw · · Score: 1
    Old fashioned Applesoft Basic, GW/MSBasic, Chipmunk Basic and similar are much better than VBxxx as languages to learn programming. They are interpretive, easily accessible even at the elementary school level, and don't cover up the act of programming with lots of eye-candy or compiler options.

    Most importantly plain old-fashioned Basic doesn't hide too much of how a real CPU works from the beginning programmer. Real CPU's access RAM, similar to global variable and arrays; and use jmp/jsr instructions to memory locations, similar to goto's with line numbers. Peek and poke even allow one to shoot oneself in the foot like a stray memory write.) This might damage the minds of computer scientists and purist software engineers, as Dijkstra suggested, but might lead to more kids becoming hardware engineers and tinkerers, which we seem to have more of a shortage of these days.

  236. 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.
  237. Go with C# by hoppo · · Score: 1

    I'm a big fan of .NET, but Microsoft made a big error in making VB a .NET language. The syntax modifications to pound the square peg that was VB into the round hole that is OO (and to align the platform with other languages) was awkward at best. And it was all for naught, as most VB developers have refused to embrace OOP.

    Classic VB was a pretty easy language to pick up. VB.NET is not. C# is much more readable, less verbose, and since it is the language preferred by Microsoft for developing on the .NET platform, you're going to find a lot more support out there.

  238. Implementation details: where security holes live by Beryllium+Sphere(tm) · · Score: 1

    Some security issues are subtle integration problems, some are administrative screwups, but a lot come from the problem of translating what you mean ("gets() reads until newline or EOF") to what actually happens (gets() fills the buffer, keeps going, overwrites the return address on the stack and makes it point to shellcode).

    Security aside, every time I've debugged anything on or off a computer I've had to drop to the next lower level of abstraction.

    Performance can still be an issue. Some applications don't mind a factor of 2 or even a factor of 10, but bad algorithms can paralyze even today's hardware. Consider the obvious implementation of a sort in Prolog: sort(x,y) :- permutation(x,y),isinorder(y). That would generate all possible permutations and test each one to see if the sort succeeded. That would actually be worse than factorial time, which is worse than exponential.

    Performance can be a security issue, too. The security literature has suggested that if a web server runs some algorithm with a good average performance but a catastrophic worst-case timing, an attacker could cause a denial of service by sending perfectly normal-looking data crafted to be the worst case for the algorithm.

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

  241. VB is okay if... by salesgeek · · Score: 1

    My take on the "first language": pick a language that is practical and easy to learn and succeed with. VB fits that bill. So do many languages that have an intrepeted language in their liniage. Probably the reason I would shy away from VB is the complexity of it's libraries and capability of the IDE it runs in. There's just too many training wheels and too many tools in VB that substitute for actual real problem solving. I have started teaching my kids Python, and they are having great success. It really helps to have a text screen where you type a command, press enter and it does what it is told to do.

    --
    -- $G
  242. Java best way to learn OOP by Anonymous Coward · · Score: 0

    I've learned VB, Java, C++, C and various scripting languages. If you want to truly learn Object Oriented Programming start with Java, then move onto C++ to learn about pointers.

  243. BlitzBasic, BlitzMax by Anonymous Coward · · Score: 0

    BlitzMax is nice. It has the usual basic stuff making it easy to plot, print, etc. It can also do some rotation and scaling of gfx realtime which is fun. When you're ready for OOP it's there too.

  244. Re:1999 called, and they would like there VB back. by captjc · · Score: 1

    1999 called, and they would like there VB back.

    Unfortunately, It isn't something you can just give back, only give to others

    Practicing Unsafe HEX is Temporary
    VB is forever

    --
    Slow Down Cowboy! It's been 1 hour, 47 minutes since you last successfully posted a comment
  245. Use the Right tool for the job by ActionAL · · Score: 1

    Always go back to what the wise teacher says: use the right tool for the job. Visual Basic is a good language to use in the business programming world where IT needs to develop internal applications for the business.

    VB was developed to help developers develop applications for the business quickly, when programming internal web or fat client apps for the business, most of the time it is over kill to worry about memory management and assembler optimizations.

    If you are developing a realtime missle guidance system you wouldn't use VB. If you are writing a custom app to help customer service track orders or enter orders, VB is ideal.

    To learn how to program I would not use VB, because it is for a particular purpose, business apps.

    To learn languages, computer science problems, and the root and core of programming, it is best to start out with a language that is like C but not as difficult to get hung up on. Alot of people can get hung up on the compiling, linking and other intracacies of an environment with no garbage collection.

    I dont offer one answer for a language to start out at but I wanted to narrow down the choices to what made sense. I hope whatever you choose makes sense.

  246. The Society of Languages by yerdaddie · · Score: 1

    If we were to imagine each programming language as performing a distinct role in a society of computation, then Visual Basic is quite possibly this society's Crack Whore. To push the metaphor too far: (unlike Prof. Scheme, Mathematician Haskell, or even Delivery Boy Java) Visual Basic has always been willing (perhaps too willing) to do a little something special for its customers. Webpage logic? Sure honey, VB will do whatever you want, as long as you don't mind the disease-like programming practices you might catch.

  247. VB Rots the brain by kilodelta · · Score: 1

    Seriously. I used to be whiz with QuickBASIC - compiled some very useful stuff using it.

    Then I got exposed to VB via VBA, more specifically Access, Outlook, Excel and Word. Never did understand VBA for PowerPoint. Kind like tits on a bull if you ask me.

    Now I'm completely spoiled by VBA. So much so that when I had to craft a quick and dirty rename/move script in QuickBASIC it took me some time to remember the Line Input command. I'd been so used to using GET, etc. Then it struck me, I never had to really do file input/output in all the VBA I'd developed. It was mostly ODBC stuff. As time went on I found I despised Access queries and reports and so did them in VBA. More mind rot.

    Then I came upon ActionScript. Oh joy. But now I hate Flash animations, so much that I installed FlashBlock on my browser.

    I've bumped around with C and C++ over the years too. I find those much more simplistic but powerful. And I won't metion that antiquate business language I learned long ago. Actually I shouldn't say that, knowing COBOL has led me to opportunities I wouldn't have gotten normally.

  248. C, C++ by Sparcler · · Score: 1

    Why bother with either? When I was a young one and confided to my 286, my uncle gave me a copy of M$ C for DOS. I was running M$ DOS 5.0, and I had very little programming experience, but I was able to get it working and I was able to teach myself the basics of C. When I started my CS education my professors did their best to pound C++ in to my head, in fact my algorithms an data structures professor had us do our work in plain old none object orientated C. Now that I'm getting further in to my education I can see the the real value in having a good understanding of the two languages.

    When you get rite down to it most modern languages have C roots and components. To this day I'm so glad that I started with old fashioned C. So if you want a good language that will be helpful to know, I would stick with what works and what will give you good foundation. Plus what happens when C# and VB become obsolete, face it M$ doesn't have the bast track record when it comes to designing future standards. They will no dough come up with a new pet language in a few years.

  249. 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
  250. 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.
  251. JS by raylu · · Score: 1

    But hey, you never (well, almost never, I think) get type mismatches. Damn, those are the most annoying errors. Ever.

    --
    Maurice Wilkes, debugging, 1949
    1. Re:JS by tricore · · Score: 1

      SML says "tycon mismatch!" - but that's what makes it awsome

  252. I wouldn't suggest VB as a first girlfriend by mysta · · Score: 1
    From Programming languages and their relationship styles:
    Visual Basic: You're a fifteen-year-old girl with her very own computer in her room, pinging random strangers on AIM and claiming to be a 23-year-old girl who wants to cyber with them. However, your efforts fail at convincing people, mostly because you aren't very imaginative and most of the things you're promising them are ideas you ripped off from other sources and changed slightly, leaving them less believable.
    --

    "Where is the wisdom we have lost in knowledge, and where is the knowledge we have lost in information?"-T.S.Eliot
  253. 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.

  254. Don't forget by DahGhostfacedFiddlah · · Score: 1

    My personal favourite:


    If false and go_kill_yourself() Then
        print "You've just killed yourself!"
    End If


    VB's the only language I know that's not smart enough to know that 0 & X = 0

    1. Re:Don't forget by Forbman · · Score: 1

      Scheme evaluates everything...

      (if or(f(x) or g(x))) ...evaluates both f(x) and g(x)...

    2. Re:Don't forget by cduffy · · Score: 1
      If you mean
      (if (or (f x) (g x)) ...)
      I am absolutely 100% certain that (g x) will not be evaluated if (f x) evaluates to true.

      Indeed, I just ran
      (if (or #t (display "foo")) (display "bar"))
      and the only output was "bar".
  255. Are you kidding me by coolCoder · · Score: 0

    VB or any language that uses .Net as the IDE is really really bad for beginners. you completely skip the basic of OOP programming , memory management and other basics. Simply clicking on a button and writing 1 line of code that generates a 100 lines behind the scenes doesnt sound like a good language for learning professional programming. C++ should be the first OOP language for starters, after knowing C++ , I believe all languages are a piece of cake. It is although allright for people like my girlfriend who dont know anything about programming and just wanna get through a programming class as its required in the major. She doesnt do it herself anyways :) , I have done all her assignments for her ...

  256. bollocks by Anonymous Coward · · Score: 0

    A good programming language is one which enables you to do what you want with minimum farting about.It's more important to learn how to approach a problem and analyse it than to worry about what's going on 'under the hood'.
    The most serious programming errors come from understanding the problem, and from taking the wrong approach. App Wizards hook up all that boilerplate bollocks that you need before you even start programming. Programming and typing are not the same thing! If you want to type in a whole load of stuff yourself, go ahead, but the smart way of working is to get as much done for you as possible, and save your effort on the important bits. That's why we have software libraries...

    Assembler? Worry about that if you have to knock up a bootstrap, or to see what the compiler does to your code, so you can write more efficiently in a higher level language. Would you write a CGI Script in it? What about a GUI app? Do me a lemon son. ...And that's an opinion formed from a decade of being a C++ and Assembler professional.

  257. VB? Why not delphi? by ThE_DoOmSmItH · · Score: 0

    I see a lot of talk for VB & C# lately, however, i still find that delphi has a much easier method for coding. It's based on pascal, which is a fairly high level language, like VB, but Delphi has what i consider a more simplified version of objectification. It also allows users to do things at a very high level, like vb, but also is relitivly easy to break directly into the windows api to call events. maybe i am wrong, but generally, all i ever hear about are the microsoft compilers, not any of the other ones such as delphi.

    --
    -TubaMan / ThE_DoOmSmItH
  258. How much did MS Pay? by RobK · · Score: 0, Troll

    How much did MS pay for this crap??? This is the next to worset thing I've ever seen posted on Slashdot.

    Did someone from Slashdot remember to send Microsoft a bill for doing their PR work?

    500+ comments? You should all be ashamed for paying too much attention to this garbage. It's a troll.

  259. err by smash · · Score: 1
    ... was VB *ever* a good beginner's language? I've been forced to deal with it - it's shit, and promotes bad habits...

    smash.

    --
    I run: Windows, OS X, Linux, FreeBSD. Just because you have a hammer, doesn't mean everything is a nail.
    1. Re:err by KnightStalker · · Score: 1

      Yes, VB has been a fantastic language for people who wish to remain beginners. Unfortunately, as many people here have pointed out, this learning-exclusion feature may have been removed in the latest version.

      --
      * And remember, it's spelled N-e-t-s-c-a-p-e, but it's pronounced "Mozilla."
  260. It all depends on who you ask... by One+Blue+Ninja · · Score: 1
    You might as well have walked into Congress and asked, "Ok people, should I be a Republican, or a Democrat?"

    People like what they know, often to the exclusion of all others. C/C++/C# programmers will overwhelmingly tell you VB is a "toy" language, or not a "real" language, because they love doing things the hard way - it makes them feel smarter. I even saw a post here where someone was claiming C# was more "readbale" than VB! That guy probably can't speak "people" languages at all :-)

    But on the other hand, it does allow them to do things that VB can't - and sometimes, that's actually useful. It's like the transmission in your car: Sure, you can do cool things with a manual transmission, maybe even trweak fuel economy a bit. But for 90% of the people, 90% of the time, automatic is simply less effort and works just as well.

    On the other hand, VB is still the most popular business language by far, simply because companies can get more work done, faster, with less debugging. For most programs, the extra "features" of a lower language are unneccessary. If you need to make a GUI application, it's just plain faster and easier in VB. That's why for all the bitching and moaning the C camp does, most large companies predominantly use VB. Statistics on this are readily available, don't take my word for it, check it out on your own.

    That aisde, a good point was brought up: VB.NET is very different from VB. It's not as easy, though to anyone reasonably familiar with both, is still significantly easier than C#.

    On the other hand, an important thing to consider is who is being taught this first language? If you have a child just getting into programming, then maybe starting with something scriptable would be easier, like REXX or Boo. Once the basics are learned, moving on to the more "complicated" stuff like OOP, GUI, etc. can be tackled.

    I've been considering this same issue myself, as my son is 9, and like any good parent, I'm going to guilt-trip him into following in my footsteps! Kidding... But I'm sorta hoping he takes on some of my interests (only I hope he ends up being smarter and more successful than I!)

  261. If you consider why VB is still around by Anonymous Coward · · Score: 0

    The only reason VB is still around, is so Bill Gates can collect royalties from Microsoft for that basic interpreter he wrote in high school. If it weren't for that, VB would have died a natural death many years ago.

  262. Javascript 2.0 by Wolfier · · Score: 1

    1. It's easy to achieve simple goals
    2. It's OO
    3. Only needs a text editor and a browser, no need to buy any IDE or restricted to one platform
    4. It's arguably the fastest-growing language used in the Real World (tm)
    5. Get familiarize with the syntax helps moving on to C/C++/C#/Java

  263. CS Snobs by austinpoet · · Score: 1
    If you're a student and want to learn how to program, don't use VB. That's about the only statement that I'll make that is negative towards VB.

    I had to do a whole bunch of coding in VB6 and VBA for companies that I worked for. Companies that didn't have additional programmer resources to work on these needs. VBA and VB6 are nearly identical and they are horrible horrible languages to learn programming in, because of the bad habits you take for granted.

    However, now that I've made the jump to VB.NET 2005, I just don't see those bad habits still being present.

    There is no more of the non-declared variables, which is one of the biggest ones. There's a vastly improved warning/error system. It's just quite a bit better.

    I learned Pascal, I learned Fortran-77, command-line old-school can i get a woop woop, so maybe I had already had some proper programming fundamentals in me when I took up the task for VB coding 9+ years later.

    As a worker, if you're tasked to do something that requires programming, and you're relatively intelligent and computer savvy, but don't know any programming language, VB.NET 2005 is probably going to be the easiest, best first step, to at least get a mock-up/prototype program completed. All without having to take any classes at your local university extension.

  264. YES I THINK WERE ON TO SOMTHING HERE by Anonymous Coward · · Score: 0

    somthing smells fishy

  265. Vote for Hillary cuz of *McCain's* lust for power? by Anonymous Coward · · Score: 0

    Good Lord, now I have heard everything.

    Damn, that's like voting for Nathan Bedford Forrest over Trent Lott because you think Lott's a racist. I'm gobsmacked, to borrow a Brit term.

    (For those that don't know - Nathan Bedford Forrest founded the KKK)

  266. Does it matter? by ChronoFish · · Score: 1

    Most likely you're going to recommend the language you are most comfortable with. Once you start thinking in a language, it quickly becomes the best choice for a multitude of problems. As long as you follow basic programming constructs you are going to be able to make most languages solve most problems. Those that are really good at slapping other's people code together - what I call the *glue masters* may have little computer science background but will be able to accomplish an incredible amount of stuff in Ruby on Rails. Those that love loosely typed functional languages will love PHP. Those that love full-featured programming environments will do well in VB. Those that enjoy bit-twiddling will find C second nature. Those who love microcontrollers are likely learn to love assembly. I would never recommend to a beginner to pick up VB if their focus platform is going to be a PIC. I would never recommend to someone who is planning on doing a lot of web development to pick up a book on assembly for the Z-80. If you ask "What is the best language for beginner programmers?" I would ask "To Begin programming what?" -CF

  267. Mod parent up! by Trevin · · Score: 1

    IMO, Dartmouth BASIC and its derivatives were the only versions of BASIC truly made for beginners. There was no structuring to worry about beyond line numbers, and the language was interpretive rather than compiled so you didn't even need line numbers -- you'd just tell the computer what to do and it would do it! The instant feedback helps train the user, like Pavlov's classical conditioning, in the relationship between command and action (and also what happens if a command is given incorrectly).

    In fact, I like the old school BASIC language so much that I starting writing my own BASIC interpreter for unix. Haven't gotten around to finishing it, though.

  268. how about Javascript+XUL by cyfer2000 · · Score: 1

    it is running with my firefox.

    --
    There is a spark in every single flame bait point.
  269. Re:Where to begin and C++ by Anonymous Coward · · Score: 0

    you said it.
    C++ shouldn't be a starting language because "its ugly and a syntactical mess"

  270. Not the right question by Anonymous Coward · · Score: 0

    The first language should be ANY language. Anyone who is going to be doing software development shoudl be able to read the documentation for ANY language, figure out what the methods of abstractoin are, and use those methods of abstraction to build human readable and maintainable code.

    Usually you can tell if somebody is able to do that within the first 10 lines of code they write in their life. If they can't use the context of their programming environment to develop meaningful abstraction then you might as well tell them to go into computer engineering instead. Its either that or they'll e doomed to life as a junior level code monkey, never quite being able to rise to the level of code architect.

  271. Not all own-life experiences are the best ones by Anonymous Coward · · Score: 0

    Do all /. users confuse the best experience with their own one ? It's a well known syndrome in life: you tend to believe that what you went through is better than whatever all those other fools have lived ; it's verified in cars, houses, nationalities, and of course religions. Talking about VB in a /. forum is a lot like exploring religious diversity in a muslim or a far right evangelical/catholic television network: don't bother, you know who is right and who is wrong.
    Most of /. users are OSS devots, they tend to pre-smell any MS product as BS. Is it because they have trully tried both alternatives, or because they read in a Linux journal that "VB is slow, therefore useless" ? Or is it because OSS devots are jealous, knowing that they'll never, ever have the same productivity than those ms-fools-wannabe-programmers-but-stupid-VB-zombies ?

    My personnal background: I first (trully) started programming in C during my first year in college, after that I joined the java craze, and I'm working on a .Net project, with developpers in C# and VB .net.
    Most developpers who prefer VB .Net without seeing C# are wrong are obviously wrong: both languages are very similar and allow you to do exactly the same things (with a tiny lead by C#). But the .Net platform, with VB in particular, is certainly the best, easiest, and more complete developpement framework ever created, and it integrates all sorts of programming, form the most simple and "obvious" techniques, to the more advanced ones, even the obsolete ones.

    I do however believe that no matter the difficulties of a language, if you want to become a developper, you have to beat it. For me, C was fine. But I could as well have started in a complete and definitive programming environment: I lost many many hours exploring what today are obsolete optimization techniques, from pointers to the painful c string manipulation or the even more painful deterministic memory management, while I can now program whatever I want ("only your imagination is the limit") in the .net languages. And 100x faster than in C.

    And now, as free as in... VB studio 2005.

  272. I disagree by selfdiscipline · · Score: 1

    Now, perhaps it's just me, but I've never found a place for OO in small programs. There it just gets in the way, IMHO. Unless you're going to be using polymorphism, I don't see how OO really adds anything to programming. And the trouble with polymorphism is that to really use it effectively you have to plan in advance how you're going to break your program into modular pieces. I'm not a very experienced programmer; I'm still in school in fact. But in my limited experience, however I plan to break a program up into conceptual parts, I eventually find in the course of my programming that my design did not incorporate the flexibility that I envisioned, and I have to redesign it.
        I feel there's a fundamental difference when I'm programming with C rather than when I'm programming with Java, for instance. If I'm using C, I think only how I'm going to solve the problem. If I'm using Java, I think about how I'm going to design the problem solution, and then how I'm going to actually solve the problem. To be simpler, my distinction is that I spend a lot of time making design decisions rather than writing code. This is undesirable for smaller projects. Perhaps it's just a matter of inexperience.
        I really do feel that OO is an organizational aid more than anything else. There's no reason that you can't write in an OO style with C, for instance.

    --


    -------
    Incite and flee.
    1. Re:I disagree by Decaff · · Score: 1

      Unless you're going to be using polymorphism, I don't see how OO really adds anything to programming.

      What about code re-use through inheritance? I use that extensively.

      And the trouble with polymorphism is that to really use it effectively you have to plan in advance how you're going to break your program into modular pieces.

      You do? Look: I am using polymorphism in the following Smalltalk code:

      c := Collection new.
      c add: 1.
      c add: 1.2.
      c add: 'String value'.

      No modularisation needed there.

      I really do feel that OO is an organizational aid more than anything else.

      No, it is a fundamentally different approach to development, and should be understood by any skilled developer. It is far, far more than just an 'organisational aid'. For example, it means that your application can be cleanly and transparently extended by future developers - even without the code.

      For example, if you write code that processes an 'account', some future developer can use your code to handle account subclasses ('customerAccount' etc), due to inheritance and polymorphism. There is no need for you to modularise or re-organise your code.

      There's no reason that you can't write in an OO style with C, for instance.

      You can attempt to implement inheritance and polymorphism in C (there was a Byte article about in in the early 80s), but the result is a mess.

    2. Re:I disagree by selfdiscipline · · Score: 1

      unless you're going to be using polymorphism, I don't see any reason to use inheritance. If I want to use the functionality of one object in another, I just create an instance of it there.

      Certainly if you use a language with generics, which I take Smalltalk to be from you example, you have inherent polymorphism. But that is a design descision built into the language. To make another example, you don't have to think about the modularity of your design when you make a java GUI. That is because the java GUI API already has its modularity defined. There is a given class heirarchy that you are using. And this certainly can be a joy.

      --


      -------
      Incite and flee.
    3. Re:I disagree by leenks · · Score: 1

      You need to read up on Zawinki's law...

    4. Re:I disagree by Decaff · · Score: 1

      unless you're going to be using polymorphism, I don't see any reason to use inheritance. If I want to use the functionality of one object in another, I just create an instance of it there.

      That is uncessarily slow (you are adding an unecessary function call that can't be optimised), and breaks any possibility of polymorphism. Handling this by inheritance is so much easier.

      Of course, there may situations where you aren't allowed to instantiate the thing you are inheriting from - the class may be abstract or have a hidden constructor.

      Sorry, but I just don't see any advantage in not using inheritance.

      Certainly if you use a language with generics, which I take Smalltalk to be from you example, you have inherent polymorphism. But that is a design descision built into the language.

      Smalltalk does not have generics - it is dynamically typed.

      To make another example, you don't have to think about the modularity of your design when you make a java GUI. That is because the java GUI API already has its modularity defined. There is a given class heirarchy that you are using. And this certainly can be a joy.

      Actually, the Java GUI Api is an example where you have to use inheritance to be effective - you have to extent (for example) JComponent.

      You don't have to think of modularity to use polymorphism - you just use it. I don't understand what you mean by this requirement.

      An example in Java 1.5:

      List myList = new ArrayList();

      MyList can handle instances of my Account class. But it can also handle any future subclasses of Account that I (or any other developer) create. This is enormously powerful.

    5. Re:I disagree by Trinn · · Score: 1

      btw, that inheritance+polymorphism "mess" is what powers gtk, not defending or attacking, just stating. Probably a totally different implementation too.

    6. Re:I disagree by Decaff · · Score: 1

      btw, that inheritance+polymorphism "mess" is what powers gtk, not defending or attacking, just stating. Probably a totally different implementation too.

      I'm sure they had good reasons. However, my point is that there is no point implementing OOP-like behaviour yourself in a non-OOP language unless you have exceptionally good reasons.

  273. VB.NET is LAME by MikeWin10 · · Score: 1

    Ok, first off, I have programmed in VB since VBDOS days, and I work in an environment that uses VB.NET primary because, the management feels it will be easier to find VB.NET developers then C#. C# and VB.NET are essentially the same, just syntax, however I have found that the using statement in C# is quite nice, although they added it to VB.NET 2005, its not quite the same. I have noticed the VB.NET complier takes longer, and I think its because of the fact VB is wordy. If MyVariable = SomeValue Then ... Ened If seems like more to parse then if (MyVariable == SomeValue) {..}. I think C# is cleaner because of the fact its not so wordy. But some will argue that the wordyness is good. I think what it does it make it easier for anyone to learn programming. C# syntax is a little more advanced in my opinion. Where I work, most people that are programmer are not programmers, so VB.NET make's sense, because its closer to english, essentially, IF MY PHONE NUMBER STARTS WITH XXX THEN I MUST BE A USER AND NOT AN ADMISISTRATOR is easy for a non-programmer to understand and code with VB.NET. One of my pet peeves with VB is the Option Strict and Option Explicit. In my opinion, it is ALWAYS good to decare your variables of being a certain type, in other words, NEVER do Dim I, but rather Dim I as integer is better. C# in fact does not let you get away with such mistakes. I just recently converted one of our applications to VB.NET 2005 and VS2005 gave me a crap load of errors saying implicit convertsion from type X to type X is disallowed. This wouldn't happen as much in a C# project, because you were never given option strict, EVERYTHING IS STICT. In my opinion, C# and C style languages encourage better coding, while VB.NET promotes sloppy coding. If you are a VB.NET developer, I don't mean to slam you, but you have to admit, not declaring types and not casting to the right type can lead to stupid bugs.

  274. VB's problems demystified by csshyamsundar · · Score: 1

    [DISCLAIMER]
    I was developing VB Application for the past 7 years and was a fan of VB

    [ABSTRACT]
    I know VB is not good enough for Enterprise level apps., but i know its still good enough for Desktop apps., [ hell with ppl. who say its not ]., because., VB is just enoigh for these cases.

    REASONS:

    [FACTS]

    -- bad networking support [ obvious reason is WINSOCK itself.,]
    SUGGESTED WORKAROUND: use CSocket and CSocketServer

    -- bad UI [ obvius reason is VB IDE Itself ]
    [ I saw someone claim., we can visually notice whether this app was made in VB or not., ITS TRUE., but why make ur app like that., take time to make it appealing ]

    -- hell a lot of dependencies
    SUGGESTED WORKAROUND: Other than the VB VM (MSVBV60.dll)., dont use any other OCX or dll., embee the class itself to the app.,
    If u are intersted - Use some binder and embedd the MSVBVM60.dll., otherwise after windows xp., VB VM is shipped by default.,

    -- multithreading
    [ I reffered VB to be a DEsktop programming language., so if u want multithreading use VB5 or some 3 party libs ]

    -- bad performance
    [ i agree., good point., but has anyone noticed we can embedd ASM/C inside VB., although u cant get a very high perfomance., but mbedding this ASM/C will make the performance upto what C acheives ]

    Look., there are many unresolved issues., but as for a desktop app., these features are very much enough.

    NOTE: Some one suggested Python to be a good programming language: I agree but Python does not good at multithreading [ i mean like multithreading does not acheive much performance ]

    NOTE2: Even after this if u feel VB is not enough: I suggest JAVA with SWT

    --
    "Programming graphics in X is like finding sqrt(pi) using Roman numerals." -- Henry Spencer

  275. Additional Thoughts by MikeWin10 · · Score: 1

    In my experience, I have run accross more VB.NET code that thought, "WTF is this", then "Wow, this is good code". I think that C# developers are more prone to understanding the BCL (Base Class Library) then VB.NET folks. Why you might ask. VB developers were most used to writing there own code to solve a problem, mostly because they didn't have a good API or class library to work with. C# being a new language caused a lot of developers to focus more on the BCL then the language. For example, I know/work with developers that wrote their own "function" or method that return the extension of a filename. I have seen 25 line methods to do that, created by VB developers, where most C# developers would use System.IO.Path.GetExtension method.

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

  277. pascal/C/JAVA by tute666 · · Score: 1

    Pascal might be old but it's specially designed for teaching, guess what, it actually accomplishes what its intended to do: teach. C is completely necessary to understand lower level programming, assembler offers a lot of insight also in low level programming. JAVA for OOP. having seen these three languages you can pretty much master any other.

  278. Horse? by sedyn · · Score: 1

    "VB6 was always a horse designed by a committee."

    That's flattery, I'd call it a camel designed by committee.

    --
    Am I open minded towards open source, or closed minded towards closed source?
  279. 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.

  280. Go for C# by crazee_cruzer · · Score: 1

    There are certain advantages to learning C# over Visual Basic. A beginner attempting to learn a language has to be taught concepts of programming, rather than syntax. No skilled programmer would have much difficulty picking up VB.NET or C#, because it is only a question of undestanding the syntax.

    When you learn C#, you learn a programming paradigm based on the object-oriented top-down approach. In contrast VB.NET wavers between event-driven and object-oriented paradigms, although not as much as VB.

    In fact, I would recommend learning C# without the help of the VS.NET IDE, at least for sometime in the beginning. At a later stage, productivity takes precedence over abilities, and the programmer can make use of whichever language is most convenient in the working environment.

  281. Teaching cache-misses in Lisp by shadow_slicer · · Score: 1

    "[T]he concept or cache-misses can be taught regardless of language."

    Please tell me how.
    And while you're at it, could you teach me the difference between real-mode and protected-mode in Java?
    Thanks

  282. modified version by jbolden · · Score: 1

    Well if that's going to be the list then why not:

    Squeak (Smalltalk dialect)
    Logo (Lisp dialect)
    Prolog

  283. c# by selfdiscipline · · Score: 1

    Did you say C# and constrained in the same sentence? It seems to me that C# is designed to break all that is sacred in the OO paradigm (I'm looking at you, keyword new).

    --


    -------
    Incite and flee.
  284. 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.

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

  286. silliness...Re:No. by 3seas · · Score: 1

    "Writing scripts for a Turing machine is an intellectual challenge
    sometimes quite complex. The goal is not to write real applications.
    It would be too difficult, and the results would be dramatically
    inefficient.

    The real interest is the fact, as stated in the Church-Turing thesis,
    that any computable task (compilation, text processing, calculation...)
    can be written on a Turing machine.

    While emulating a Turing machine in a Sed script, we proove that this
    language is sufficient to perform any computable task !"

  287. I live VB (but not as a first language) by Anonymous Coward · · Score: 0

    My first language was Basic
    I then moved to a proprietary code called gml
    Next I learned PHP
    THEN I learned Visual Basic
    I find Visual Basic no less powerful than other languages, but much easier... Why would I spend twice as long to write it in another language, when VB can do the same thing.
    VB has its place... (speed apps is NOT its place)
    The majority of programs are easier to write in VB and will accomplish the same tasks with no noticible difference... Same yourself some time people :)

  288. 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? :-)

    1. Re:Why does BASIC cop so much flak? by C_Kode · · Score: 1

      I think it has most to do with the fact that the language was developed first, then adapted to the required needs instead of the other way around. It's also why VB is considered bloated from the "Get go". The design was flawed and they tried to fix it. Just like the Windows kernel. MS kept altering a bad design trying to make it better, then finally just dumped it. (Vista)

  289. Don't be a namby pamby! by Ferment · · Score: 1

    WAT V (nee FORTRAN 66) - on punch cards, no less!

    Or maybe Apple Basic. No punch cards but renumbering those line is still a royal pain in the ass.

    After they figure out that they can't write a good game with the crappy basic graphics have them crack the 6502 instruction set manual and drop into the Apple ][ monitor for some machine language fun.

    After that fire up a little Turbo Pascal on an original IBM PC. That's some fun stuff. Good times Good times.

    --
    A passion for apathy.
  290. The real beginner's language ... by ozone_sniffer · · Score: 1

    ... IMHO, should be C++. After you've become acquainted with it, all the rest is candy. What I mean here is that it is a lot easier for someone from the C++ world to migrate into Java, C#, and such then the other way around.

    1. Re:The real beginner's language ... by Anonymous Coward · · Score: 0

      i'd go for python as the best beginners language. http://www.diveintopython.org/ is a good tutorial. there's a reason it's affectionately called "executable pseudo-code". yet you can do more interesting things with it than with most other languages.

  291. Well by woolio · · Score: 1

    I mastered Qbasic between 5th and 7th grade...

    So VB might be fine, until one is old enough to get a driver's license.

  292. VB.NET IS NOT VB6 by Anonymous Coward · · Score: 0

    Christ people. We still don't "get" .NET here, do we?

    Let me say this plain and simple "VB.NET is NOT VB6".

    VB.NET is nothing more then natural language syntax interface for the .NET framework.

    Again, It's .NET with natural language syntax. It can do everything managed .NET code can do, but its been structured to work like SPOKEN LANGUAGE.

    Now why would we wanna do that?

  293. Exactly by NMZNMZNMZ · · Score: 1
    • For reference, I learned PASCAL, followed by Java, then C++, C, and PHP (if you want to call that a programming language).


    If beginners shouldn't be dealing with pointers, then don't teach that part until they've grasped all the other aspects of writing procedural code.
    Pointers don't point to memory... they point to things. If you're using pointers to randomly traverse your machine's guts then you deserve what you're getting. There are some things (such as linked lists) that are far easier to construct using pointers than by doing it by maintaining array indices (for example).


    I agree completely with the parent in this regard. Since I'm studying to go into the Video Gaming field, I use linked lists extensively. While it may not be the best design, my current project (3D Adventure-Platformer for PC) has very many linked lists: a list containing every object within the level, a list containing every display polygon within each object, a list containing every point for every display polygon within each object, a list containing the three points for each hit detection triangle within each object... the list (no pun intended) goes on.

    Should pointers be tought to beginners? Maybe not. But they should definitely be tought at some point, and they are useful in certain cases. There's no reason to limit yourself because pointers can be used unsafely. Simply learn effective and safe programming techniques so that you aren't limited by what others feel you aren't prepared for.
  294. The pros have a name for that by hayden · · Score: 1

    It's called "job security".

    --
    Nerd: Derogatory term typically directed at anybody with a lower Slashdot ID than you.
  295. way way OT by zippthorne · · Score: 1

    Which implies the need for threaded moderation: meta meta moderation of entire threads, or at least application of moderation to the parent coment applied to child comments...

    --
    Can you be Even More Awesome?!
  296. 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!)

  297. Why not learn a C-like language first, seeing as C-like languages are pretty much the defacto style used in most application programming?

    VB's syntax (at least as of VB6) was garbage, and the interpreter itself was garbage. One could not even write an unmanned application, since it's an event-driven language.

    VB used to have the advantage of being super-easy to whip up a simple GUI app in; just point-n-click your way to a GUI. But that advantage was taken away with Visual Studio .NET: now you can point-n-click your way to a not-as-simple GUI app, coded in C# instead of VB.

    At this point, since all .NET code compiles to the same MSIL regardless of the source language it's written in (C#, C++, VB, whatever), I just don't see a good reason to use VB and its craptacular syntax.

    But that's my preference. I like C-like languages (C, C++, C#, Java, Perl); if you don't, well, I don't care either...

    (Frankly, I think everybody should have to start out with a language that requires an understanding of pointers and memory allocation, e.g. C/C++. That said, the real-world uses for those languages are slowly becoming increasingly-limited...)

  298. VB is crap by Crazen · · Score: 1

    Can't believe MS is wasting it's time on that POS. Java or C# is good for begineers. I'd recommend Java over C# mostly because Mono is significantly inferior to the JVM on Linux. Not to mention maturity. And if you're running your servers on Windows for anything but exchange, you've got bigger problems.

  299. Start with VBA by Nefarious+Wheel · · Score: 1
    Start them on VBA if they have MS Office of any stripe.

    Create a macro in an Excel program (doesn't have to do anything) then whack Alt-F11 and there's a limited but useful IDE.

    Considering how some banks I've worked on use Excel (it's scary how much of the world's wealth exists only on such a fragile little thing) and some of the fairly high-powered VBA apps for Excel that exist* it's a good entry level application language with real world applications, and it's easy / cheap to get into. From there folks can see whether the life of a code monkey appeals.

    *Handling business problems like "Please take this VMS / ASCII report from a Canadian outsourcer (I think it's sort of CVS format) and do these ATO tax calc conversions, format it this way and have one each for our managed funds customers. Oh, and we have to have the reports out by Thursday or the regulators will fine us $1M for non-compliance. Do a couple for the New Zealand tax standards too, can you? Two big customers have accounts there. Can you add a tab to put a ledger on for each month too? I think I have the files here...

    The quick wears off, the dirty survives, but when you're playing ID4 for real it's one of the things you can do.

    --
    Do not mock my vision of impractical footwear
    1. Re:Start with VBA by chthon · · Score: 1

      How small was this bank ?

      I worked for a small bank, and they used a mix of leased Bull mainframes, IBM mainframes and WANG VS minicomputers which were later replaced by HP/UX + Oracle.

    2. 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
    3. Re:Start with VBA by Nefarious+Wheel · · Score: 1
      How small was this bank ?

      It was a Big-3 Australian bank, assets in the billions, managed funds group. Excel was everywhere. Workflow problems would make you cry.

      --
      Do not mock my vision of impractical footwear
  300. As Edsger Dijkstra put it... by Anonymous Coward · · Score: 0

    "It is practically impossible to teach good programming style to students that have had prior exposure to Basic; as potential programmers they are mentally mutilated beyond hope of regeneration."

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

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

  302. 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
  303. Re:Bad idea- compilers by Anonymous Coward · · Score: 0
    I would say that the first three languages a person should learn (not in any particular order) are:
    • Smalltalk
    • LISP
    • Prolog

    But this would be nearly impossible! To expect a new CS student to understand Smalltalk would be too much. Currently most CS students learn languages in roughly the order in which they evolved: first procedural and only then OOP and logic programming(Prolog).

    It is a mistake to begin with object-oriented languages, because

    • OOP is a more recent developments that required some effort to bring to fruition and
    • OOP languages sometimes do not apply.

    A student with a strong understanding of procedural programming will be able to understand the evolution of computer languages and the mechanisms which underlie the various non-procedural languages.
  304. Re:Vote for Hillary cuz of *McCain's* lust for pow by slashdot_commentator · · Score: 1

    Its not the lust for power; its the willingness to betray any principle or debase oneself in the pursuit of power.

    McCain has basically shown himself to be Smeagol.

    Clinton, on the other hand, may look like Gollum, but she didn't punk out on the Alito filibuster, bankruptcy bill, and other voting issues of importance to me.

    Do I trust Clinton? Hell no. Would I nominate her for president? Hell no, but only because she'd lose. Would I vote for her to be president when given McCain as the alternative? Yes. Find me a Republican that hasn't sold out to the Fundamentalist Christians, neocons, or the rich, and I'll gladly vote for him over Hillary.

    --
    There is no America. There is no democracy. There is only IBM and AT&T and DuPont, Dow, General Electric, and Exxon
  305. If you want quick code, use python. by CarpetShark · · Score: 1

    VB.NET and C# suck. If you want Rapid Development, use Python. If you want it to be solid, learn and use a language that enforces strict typing and UNDERSTANDING, like C++. All of the C# and Visual Basic 7 (I refuse to call it VB.NET, as if it's a fundamental part of the web or something) stuff is just a proprietary framework that they have no reason to port, running on average languages, running on an engine so slow that they won't let people benchmark it.

    1. Re:If you want quick code, use python. by DarkProphet · · Score: 1

      Citations please.

      If the .Net Framework and the CLI were truly proprietary in the context of your comment, the guys at the Mono project would be in jail right now. Further, both VB.Net and C#.Net enforce strong-typing and are very particular about typecasting, as long as the Strict and Explict options are turned on.

      Finally, FWIW, I personally don't see anything at all about C++ that inherently promotes understanding anything, unless you are talking about how the programmer is required to perform his/her own memory management. If that's the case, I'd argue that C++ has failed its developer base from the perspective that buffer overflows are just as common in C++ (perhaps more so) than in a managed framework such as Java or .Net.

      --
      What could possibly hurt the security of the American people more than giving our own government the ability to hide its
    2. Re:If you want quick code, use python. by CarpetShark · · Score: 1

      I don't have time for citations right now, sorry. It seems that you don't either. Luckily, this is a conversation, not a research paper.

      It doesn't matter that there are other implementations, if the main vendor chooses to race ahead with their own while leaving other platforms out in the cold. Just look at Flash: it's open, and people can make content FOR the Flash platform, but it's basically useless for USERS, unless you can use the official player. That, presumably, is why companies like Macromedia and MS choose this option rather than going the whole way to open their client code. After all, they've chosen to make it open, but not fully open, so it's silly to assume they do that because they really want to be open.

      Buffer overflows are not the issue. They're one example of bad coding practices, and C++ has the necessary features to prevent that, IF they're used. In contrast, managed code platforms hide the issues, thereby encouraging bad code.

  306. Heres why it is considered a "toy" by Savaticus · · Score: 1

    People Dismiss Visual Basic because it contains the word "basic" and to most people that means simple and weak. When most do not understand the universal truth that simplistic systems tend towards complex behavior and complex systems tend towards simplistic behavior. I personally love VB as it is quite usually all the power I ever need, I have never had a data problem I couldnt solve with it.

    1. Re:Heres why it is considered a "toy" by mangobrain · · Score: 1

      You never had a "data problem" you couldn't solve with it? Good for you. Now go and use it to do something other than "solve data problems", e.g. write a scalable network server, a high-performance 3D engine, or a device driver.

    2. Re:Heres why it is considered a "toy" by silverbax · · Score: 1

      Oh, geez, are we supposed to be writing our business apps in Assembly and C++? I'm amazed the way people compare tools for different jobs like this. VB is for fast business apps, not writing new device drivers. As if the vast majority of business apps even needed things like integer packing or multi proc access.

      You want to write a new white box platform? Great, go write game platforms or databases. You want to work in almost any other corporate environment, especially those that are NOT technology companies? Guess what? Better learn some RAD languages, kid.

    3. Re:Heres why it is considered a "toy" by Savaticus · · Score: 1

      Thanks Silverbax, my thoughts on that exactly, as I said, I never encountered a data problem I couldnt solve with it. I work in IT for a business, I solve business problems.

    4. Re:Heres why it is considered a "toy" by mangobrain · · Score: 1

      When it comes to programming, I'm not a "kid", and I don't take kindly to being called one. I have used VB a small amount, and Delphi quite extensively; in fact, I actually grew to like Delphi. I'm not against RAD tools per se - you have completely and utterly missed my point. In actual fact, I mentioned neither C++ nor assembly language in my post.

      My point is this: if you did decide to write your "business apps" in C++ or assembly, there wouldn't be anything technically stopping you (and C++ in particular has such a wealth of libraries on a wealth of platforms that it might in fact be a good idea); on the other hand, there ARE things you can't do with RAD tools - at least not without jumping through many more hoops than is sensible. Hence, RAD tools are not highly regarded as general purpose development tools, and people whose programming work is slightly more varied and in-depth than tedious data management GUIs tend to steer well clear. Auto-generated code can make people very lazy: if someone cannot instantly get the tool to produce a program which works like their original vision, they'll make something "good enough" (which often isn't even that) and stop, instead of taking the time to bend and shape the code to fit. I've witnessed it first-hand many times; Delphi was the teaching language in use at my university, and I did a stint as an undergraduate CS lab assistant.

      If you really want to go around calling yourself a programmer, then you cannot realistically learn to use one RAD tool and stop. Call yourself a "VB programmer", perhaps, but not a "programmer" outright.

      I like to pick the right tool for the job. As I have already pointed out, I mentioned neither C++ nor assembly language; in actual fact, I learnt to program in BBC BASIC, and now program in C/C++, Perl, Python and PHP on a regular basis, and begrudge none of them their place in my skill set. I don't necessarily consider knowing 4 languages to be any great achievement; these are just the four I'm currently active in (I already mentioned Delphi, VB and BBC BASIC, making at least 7 in total), and I enjoy learning more as necessary.

      I don't work in a technology company - I work for a firewall/security software manufacturer, specifically on web content & anti-virus filtering. I do occasionally have to solve "data problems", namely turning user input from a CGI web interface into valid program configuration files, and I don't use a RAD. Given the requirements at hand, I think VB would be about the least appropriate tool for the job, whereas any one of Perl, Python, PHP, C/C++, Java etc. could realistically be used, with varying degrees of difficulty.

  307. The ancient question again... by Hosiah · · Score: 1
    In the first place, on my last gasp of Windows usage, I *used* the Basic dialects of QBasic, QB, and VB, and found them all to be toys! Non-VB programmer my foot. Ditto *any* language hosted on a Microsoft machine C++, C# - can you use it to recompile the kernel? rewrite the DLLs? Fix IE? Then it's a toy. You might as well play football with a blindfold on - even when you win, it was pure luck.

    Second, many in this thread have asked "Why not both?" I'll back that up, and further submit, in this day and age, that anybody who knows fewer than five languages can scarcely call themselves a programmer at all. To hyperfocus on learning only one language on one platform, which leads to agonizing for days on end over *which* *language* to learn, is exactly like living your whole life in the one small town you happened to be born in, never venturing outside the city limits. It's a big world! See the damn thing, already! Learn the Basics and C-variants on Windows, and pick up Python while you're at it. Jump over to OS/2 and pick at their C++ for awhile. Then prepare for an extended stay in Linux, to learn Bash, CLisp, Python, Perl, pure-ANSI-C, Ruby, Tcl/Tk, Scheme, sed, and awk. Be sure to familiarize yourself with libraries like ncurses, GTK, and Qt, because they'll pop up again and again. Visit MacIntosh and try out Java and Lisp on that platform. Pick up a Free BSD or Open Solaris and explore the languages on that platform (same languages as other platforms, just different environment). Write a web page or two using CGI, Javascript, or PHP. Drop in on Plan 9 from Bell Labs and tinker with rc and plan9's own C variant. And oops, I almost forgot, at least plow through ten tutorials on assembler so you know you can handle it if you absolutely gotta.

    Then come back and tell me you know something about programming! Hell, I might even listen, kiddies!

    Visual Basic is great to write viruses in. I know because every Windows platform virus I ever caught and examined in a hex editor had "Microsoft Visual Basic" stamped in the binary somewhere. I've only occasionally heard of the virus that *wasn't* written in Visual Basic.

    Finally, the number one thing to know: There IS NO PERFECT language. So it doesn't matter a thin damn what language you learn as a beginner. Learn five to be a beginner. Learn a hundred to be a competent expert. And prepare to do it all again a decade or so from now when all you know becomes outdated again.

    1. Re:The ancient question again... by cruachan · · Score: 1

      And while you're doing all this you are making a living precisely how?

    2. Re:The ancient question again... by Hosiah · · Score: 1
      And while you're doing all this you are making a living precisely how?

      Pulling six-twelves a week at whatever sweatshop currently rents your body like always. I did it that way, continue to do it that way now, there is nothing wrong with doing it that way. Too hard? Then get out of programming and go do something easier to learn, like web design or management.

      My, it certainly is a tough little world we live in, isn't it? Gotta wonder why some people go on living, being that life is such a difficult undertaking.

    3. Re:The ancient question again... by Hosiah · · Score: 1

      *Afterthought...It's amusing how those stupid "Teach Yourself $LANGUAGE in 24 Hours" books fly off the shelves at B. Dalton, but I come in here and say, "You learn to program by rolling up your sleeves and working your motherf***ing ass off!", and everybody has to go, "Oh NO, Hosiah! It simply cannot BE!!!"

    4. Re:The ancient question again... by cruachan · · Score: 1

      No, you miss the point. I've been coding for 20 years and like you in my time I've coded in many different languages on many different platforms - Macs, Windows, various 'nixs, Linux, IBM 390, with Assembler, C, C++, Pascal, Delphi, Lisp, Prolog, Java, Perl, PHP, VB, VBA, COBOL using DB2, CICS, SQLServer, ADABAS, Natural, Access, COM, OpenGL and so on and so on. And I still code for 10 hours a day at least - it's what I do and I love doing it.

      However, that is over a 20 year period. I take the impression, and I may be wrong, that you are suggesting that your nacescent coder needs to go out and gain mass exposure across a wide breadth of technologies such as you mention in a relatively short timescale. I disagree that's a good idea. Of course limiting yourself to one environment would be foolish in extremis, but I simply doubt it's possible to be really good in more than a few 'programming worlds' (to borrow from Joel Spolsky) at the same time, so a better approach would be to concentrate first on learning a couple of these in depth - for example C# on .NET and LAMP - then when the opportunity arises move on to pick up another and so keep expanding experience. However each is going to take a couple of years to really master - although an experienced coder can be productive in a new environment in much less time of course.

      By the time you've mastered half a dozen then you can count yourself as a real programmer, although I doubt it's possible to keep up to speed in more than three or four at the same time.

      To code at a competent level you have to be holding a lot of information at your fingertips, which means constant practice. For instance I'd count myself as currently good with Delphi, VBA, SQL Server and PHP in a Windows environment just because these are the systems I make my living with and am constantly coding. I could also get back up to speed with Java, C++ and Perl reasonably fast. Everything else beyond that is now really just background knowledge and 'experience'.

    5. Re:The ancient question again... by Hosiah · · Score: 1
      Ja, check, over many years is goot 'ting. No, I wasn't saying they had to do it all in one month - although I accomplished most of my itinerary (as far as different systems and some of the less important languages) inside of three years. I didn't say they had to master every nuance of every language - just be able to bang out some code in a language, plow through at least one book on it, and keep the book around as a refresher and reference. Yes, there are three or four languages (C, Python, $SHELL, HTML/CSS/Javascript, Tcl/Tk) which I think I will always have with me, which I've burrowed to the depths of. But I now know of no language that exists that I could not begin reading up on in the morning and at least get a handle on it by the afternoon.

      To point out to others the knowledge I'm sure you and I share: after your fifth language, the learning comes incredibly easy. You start seeing the things all languages have in common, the data types, operators, iterators, conditionals, and comments, and can equate everything with what you already know. You start calling one language using the system-command syntax of another, so that you can call Bash to call sed from inside your C program... You get a real instinct for which language to use to solve what problem. You even get to where you can find a completely new language, breeze through the book or tutorial web page, notice that it's actually a derivative of another language you already know, and begin coding in it immediately, with only occasional reference to the docs after that. It's a lot of trouble for some people, but it's worth it a hundred-fold.

    6. Re:The ancient question again... by cruachan · · Score: 1

      Read this, one of Joel's better efforts

      http://www.joelonsoftware.com/articles/LordPalmers ton.html

    7. Re:The ancient question again... by Hosiah · · Score: 1
      Heh, waddaya know, I like it. Not bad for a Visual Basic user.

      My recollection of the Window's programming world was one of confinement. Your program's always in this dark little box, and it has to pass data back and forth through this narrow little slit, "Pardon me, Windows, when you get the chance, if you're not too busy, could you check if the user clicked the mouse?" In the *nix world, you practically own the whole machine.

      Of course, the *nix model feels more like a rowdy kindergarten, with you chasing hundreds of scampering processes around, none of which speak the same language: "Where's my awk hiding on this machine? /usr/bin? /usr/share/bin? What name is it called today? Oh, it's mawk! OK, mawk, take this and go find sed, have him pipe my file to the user's directory. Now, which library do I have available? Oh, GTK, so I have to find a translator in /lib... What, the user's locale is en, but his keyboard driver says it's es? Oh, God. Wait a minute, what resolution am I at? Where's XF86config? Oooohh, we have xorg.conf here. You say I'm at nice 15 now? OK, I'll stand in line and wait..."

  308. Never improve on perfection :) by CarpetShark · · Score: 3, Funny

    You introduced a bug ;)

    That should return EXIT_FAILURE or something, not 1.

    1. Re:Never improve on perfection :) by (+_0_ROOSTER_0_+) · · Score: 1

      actually EXIT_FAILURE is a define for 1 in stdlib.h, And depends on your compiler's warning level if it shouts at you for this. but more to the point the K&R book use's return 1 in some examples.

    2. Re:Never improve on perfection :) by CarpetShark · · Score: 1

      Yes, but the whole point of it being a define is to abstract the actual value in case it needs to be different on some (non-POSIX) platforms.

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

  310. Hell, no, to both by blang · · Score: 1

    BASIC is not a good language for beginners. Never was.
    It will tak eyoumore time to unlearn bad habits form basic, than the time you think you're savng by "getting ahead".

    And C#, is a language you should not learn at all.

    C# is simply a java knockoff. C# was only made because MS didn't like Sun controlling java. The diferences between thsoe languages are hardly even cosmetic.

    So, I think your question qualifies as a troll, or you need to get out more.

    If you want a beginner's language, you should pick something interpreted, but it should NOT be basic.
    Let the kids get in there and see results immmediately, instead of having to tinker with compilers and framerworks, and IDE's and what have you. Programming in .BET as a beginner is like learning to swim, with a whistling monkey on your back, and pirhanas chewing on your nads. All distraction and no educational value.

    The first language should be something simple, clean, and interpreted, such as python or ruby. I would even pick perl before any of the above.

    Then java or C, or both, stay away from C++. Then maybe some web framework, such as ruby on rails.

    Then VB, if they absolutly must.

    --
    -- Another senseless waste of fine bytes.
  311. Re:Speed typing is horrible - use strict; by http · · Score: 1

    Whoops my bad. that's what i _meant_ to say. remember to point in my general direction when you laugh at me. (Northwest section of North America).

    --
    If opportunity came disguised as temptation, one knock would be enough.
    3^2 * 67^1 * 977^1
  312. Let the optimizer deal with optimizing by SamNmaX · · Score: 1
    In most cases, it's not worth it worry about optimizing code such as this. For this example, if do_something_to_pixel is inlined, it should be able to optimize it to something equivalent to the first piece of code.

    While I do agree people should have an understanding of how the machine works at a lower level, it is best not to code with the idea that changing orderings in this way is going to do much. For beginners especially, they are likely to just waste time making useless optimizations that might not actually be helping at all, and in some cases may be making things worse.

    I personally think it is best to first learn programming concepts at a higher level. Let them get a feel for programming at a more abstract level, and make real programs. This way, the base of their knowledge are things such as variables, functions, classes, and the like. After they have a good grasp of that, then they should learn about how the computer works at a lower level, and how it maps to their high-level language.

  313. The best starting out language is ... by chris_sawtell · · Score: 1

    Smalltalk, because you are completely isolated from the boring mechanics of programming. Nasty things like files, editors, compilers, linkers.
    http://www.smalltalk.org/main/
    http://en.wikipedia.org/wiki/Smalltalk

    Smalltalk, because there are 2 very good free (gratis),
    http://www.exept.de/exept/english/Smalltalk/frame_ uebersicht.html
    http://smalltalk.cincom.com/index.ssp

    and at least 2 Free ( Libre ) implementations.
    http://www.squeak.org/
    http://www.gnu.org/software/smalltalk/smalltalk.ht ml

    Smalltalk, because is was deliberately designed for small people to have fun,
    yet you can grow-up with it.
    http://www.squeakland.org/

    Smalltalk, because it is well documented.
    http://www.iam.unibe.ch/~ducasse/FreeBooks.html
    http://www.whysmalltalk.com/tutorials/visualworks. htm

    In a couple of words, it Just Works, and your sanity will not be harmed.

    If you can't drop the "program in a file" paradigm, then checkout
    http://www.ruby-lang.org/
    http://www.python.org/

    Don't even dream about anything BASIC because your dreams will turn into really horrendous nightmares before you can even turn around twice.

  314. Yes by Anonymous Coward · · Score: 1, Interesting

    VB and C# are almost identical when you get right down to it but VB still has features I think would make it easier for beginners

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

    Since you mention VB and C# in your post I assume you are not interested in any other languages (not that I could comment on that coz I'm a MS coder from way back :-)

  315. money, the great teacher...? by majiCk · · Score: 1

    Yet I'd speculate that VB has made more people more money (and i dont just mean microsoft - i mean the computer industry) than all other languages/environments combined.

    When did total gross profits become the key criterion in choosing a suitable language for learning how to program? It seems to me that factors such as likeliness to expand one's mind and ease of reasoning about one's programs should take priority. Statically-typed functional languages are a clear win in those areas, with fundamental core concepts like abstraction and compositionality.

  316. What kind of "Beginner" by drolli · · Score: 1

    Depends what your "Beginner" should achieve in the end.

    Is he a CS student? Is he a beginner in a programmer's school? Is he studying Economics? or is he a 7 Year old kid?

    For the 7 year old kid: give him any language which enables him to do graphics, sound or control his toys (Lego?). If likes Programming he'll anyway absorb the whole language so quick that you can give him another one when he is 8 years. Do not be concerned about ruining his programming style. He'll like to change it. I startet programming since i was 11 (now 31) and i am changing my coding style every two years in average (sometimes revising old ones - if needed in the actual task). Explöain you kid that a programmming language is a only tool to o things, not a philosophy.

    Economics student: I do not like to admit it, but VB might be the thing he is expected to have some knowledge in later.

    Programmer: Iff the purpose of the school is to have him maintaining VB Applications. Remember that he is probably not going to be an software architect after that. Otherwise C AND Java are probably the best choices.

    CS Student: NO. It is a waste of time to learn a language where it is cheaper to hire other persons for and the pedagogic value of VB is NULL for him. He should get a touch of functional programming - good to know the concepts if you need automated code creation. He should get into C to know that the practical low-level workhorse found in embedded products (and it will be there for many years) can do for him or the people he is leading (programmers) - iff he understood the meaning of the word "system call", he knows enough C (do not be mistaken. It takes quite some way to understand, that "system call" is quite differend from "library function". I know experienced programmers who do not understand the difference between "Internal Error" and "Failed System Call" - these guys usually write elaborate, difficult to debug pieces of sh... code). And teach him Java to let him see a language which was designed in the object oriented way. Maybe even C# for the latter purpose.

  317. BASIC, yes; "Visual Basic", no... by mangobrain · · Score: 1

    Ahh, BASIC. The very name is an acronym for (IIRC) "Beginner's All-purpose Symbolic Instruction Code". Notice the capitalisation in "Visual Basic"? That's right: it's basic, but it ain't BASIC.

    True BASIC should be interactive. By this I mean you tell the computer what to do, and it does it; beginners should not have to jump through hoops setting up a development environment, they should not have to deal with compilers, and ideally they should not even have to open a text editor. It is also important to note my wording of the phrase "you TELL THE COMPUTER what to do". It's like a discussion: you say "JUMP", it says "Syntax error: height not specified".

    You see, there was a time when, for the interested user, computers made programming easy and accessible. When programming was full-screen, interactive and fun, and computers came with manuals - useful, interesting manuals, neither pointless fluffy Windows XP pamphlets nor weighty tomes such as the archetypal UNIX manual.

    I started programming on an Acorn Archimedes with RISC OS 2, and I wouldn't change the experience for the world. In everyday use, you had a powerful, multitasking WIMP interface with features still being mimicked to this day; however, by pressing F12 and running the "basic" command, you entered another world. In this world, if you tell the computer to PRINT "Hello World", it prints Hello World. If you ask it "HELP .", it gives you a list of all keywords, which sits very happily on one screen. If you ask it to "CIRCLEFILL 60,512,100" you get a filled circle, at the middle of the screen, 100 pixel radius, and still get returned a command prompt - and why not? It's your computer, BASIC is the tool designed to make the computer "do stuff", and if "stuff" means give me pixel-level screen control which co-exists with the input prompt and doesn't take half an hour messing around with graphics APIs, then I'll damn well do just that. If I want to store my programs, I can use the line editing commands; when I've outgrown that, I can use a text editor straight from the WIMP and launch saved programs just by clicking on them. It's a computer; it does stuff, it's easy to make it do so, and it all came for free.

    If you want, you can buy the more expensive manuals, the ones which don't come with the computer. Then you can learn how to make OS API calls, use the more advanced facilities of the graphics hardware, and even use BASIC to bootstrap assembly code. I never owned these manuals, but it didn't stop me trying. The point is: experimentation was fun, easy and encouraged.

    When we got our first Windows 98 PC (completely bypassing both DOS and 95), for the first few years I still went back to the Acorn to program: after all, the Windows machine didn't come with any programming tools; what a gyp! Can you imagine my disappointment? It wasn't until I discovered Linux and FOSS that I finally stopped going back to the Acorn whenever I felt the urge to hack, and even then it took a while.

    I now have an MEng. in Computer Science and Cybernetics; program in Perl, Python, PHP and C/C++ (depending on the task at hand) on a regular (and paid) basis; I understand the tradeoff between fast programs and fast development times. I cannot stand VB; it is a mess. I grew to like Delphi - the teaching language - whilst at uni, but when I can't make it do what I want, I'll go create a command-line utility in C that does it, then hit Object Pascal until I get an equivalent algorithm out of it. To this day, I still use text terminals under Linux on a daily basis, and insist on binding F12 to open a terminal emulator in Gnome. Python's interactive mode is probably the closest thing I've seen in years to good ol' BBC BASIC, but it still doesn't give you fully integrated graphics and sound control - I understand why (portability concerns; device driver issues; the contemporary expectation that programming environments are "just a tool" and should behave like just another window on the desktop), but that doesn't mean I have to like it.

  318. Big Time Wiseguy by theolein · · Score: 1

    Like many here, I have programmed in lots of languages, from pocket computer Basic variants in the 80's and UCSD Pascal (My first "real language") to Java, C, Perl, PHP, javascript, Lingo, VB (vba, vbs etc as well) and I wouldn't know what to really say.

    I could act like I know for sure what the One True Beginner's Language(TM) would be, based on my own experience, as many do here, and forget that other people learn things differently to the way I do. I could go for a language which is easy to learn and there which will "hook" the newbie coder (as if there aren't enough coders around already). I could say VB (.Net) is crap because it makes a newbie used to having an IDE and not understanding what goes on underneath.

    I won't. I think newbies should make their own mistakes and learn their own way. If they really want to code, they'll found out about alternatives to whatever they're doing if they're not happy with their current language. Or perhaps they won't. I don't know.

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

  320. Re:Bad idea- compilers by procrastitron · · Score: 1
    I've never used any of those languages, nor do I forsee the need to.

    Please do take a look at them, even if you never write anything in those languages that you get paid for (you probably won't). Those languages are very different from the ones you already know, especially Prolog. The important thing is not to learn the syntax or idiosyncrasies of the languages, but rather the programming styles that they emphasize. Those styles are nothing like the programming style promoted by VB and Java. Learning these styles stretch your mind, and make you a better programmer in general, even when using VB or Java.

    As a concrete example, the use of continuations might never occur to someone who just knows VB or Java, but they make writing compilers surprisingly simple and the generated code extremely efficient.

  321. You had me at Hello World! by Celsius10 · · Score: 1

    eom

    --
    "Little things hitting each other. THAT'S WHAT I LIKE!" - Time Bandits
  322. 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).

  323. Neither VB nor C# by jandersen · · Score: 1

    Would you recommend it to a beginner over C#?

    I would recommend neither. Learning to program is more about learning to understand the nature of programming than about beginning to use a language - a good programmer should be able to learn a programming language as he goes along.

    The best language for learning how to program properly is C. C allows you to get close to the actual HW and OS, two things that are important to understand well for a proper programmer; also C does not protect you against making the errors that are necessary in order for you to learn; there is no better way to learn than by solving a problem. And finally, C is as close as you can get to assembler without being bound to a single HW architecture.

  324. Perfect by joss · · Score: 1

    Finally some sense.

    At Edinburgh we started with Pascal, and moved onto assembler later
    which was the wrong way round IMHO. The most illuminating moment I can
    remember was learning to design basic logic circuits with nand gates - it
    got rid of the "and then something magic happens" feeling of unease I had
    had beforehand. Fundamentals of circuit design
    followed by assembler and then some structured language [like C]
    would have been the right way to start.

    Starting with VB or even java is very wrong - there's far too much to learn
    that has nothing to do with the heart of the matter and is just a matter of
    language specifics, environement, libraries and tools. It doesn't matter
    how proficient you get in OO languages and fancy IDEs, you'll never
    have the proper depth of understanding until you
    understand the basics of assembler.

    --
    http://rareformnewmedia.com/
  325. What does this B in VB mean? by Zaatxe · · Score: 1

    If I'm not mistaken, the B in VB still means BASIC, which is an acronym for " Beginner's All-purpose Symbolic Instruction Code".

    Can you see it right over there? Beginner's

    Of course, with this logic (or lack of), you might think that Java is a language for grown-ups, because they "like their coffee black".

    --
    So say we all
  326. Scheme, yes -- Python's good too by cduffy · · Score: 1

    Scheme has status as a traditional teaching language in some circles, and there are good materials for it. Python tends to be quite good in my experience as well -- I once held a programming class for interested middle school students using Python, and none of them had difficulties with the language (though algorithmic thinking was more of an issue; next time, I'm waiting 'till after they've passed algebra).

    Python certainly comes with enough of a standard library to be immediately useful; it has far less gotchas than C (my personal favorite for low-level work), C++ (its never-should-have-been-born evil sibling) and kin; it's an OO language but can be used procedurally; and if one is the sort to want to entertain rather than focus on teaching the core stuff, there are toolkits for doing fun/entertaining things trivially (see VPython for an example). Along those same lines, CMU's ALICE is also interesting -- I think that at one time they were using or porting to Python, though I haven't been up on it for quite some time.

    All that said, unlike Scheme, Python is a language that gets quite a bit of real-world commercial use in places that aren't "scheme shops". It's easy to learn, powerful, and not only the general skills but the specific language knowledge will be applicable later -- what's not to like?

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

    1. Re:Both to expensive by rp · · Score: 1

      Yiou don't need to pay to use VB.NET at an introductory level. You don't even need to pay for an IDE: Visual Studio Express and SharpDevelop are free. (I haven't checked if MonoDevelop supports VB.NET.)

  328. 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 rjshields · · Score: 1

      I agree. Java's great for learning to implement algortithms because it has a good standard library, less language clutter than C++ and none of the low level crap of C. And it doesn't segfault when you mess up.

      --
      In this world nothing is certain but death, taxes and flawed car analogies.
    4. 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.

  329. Snobbish Arseholes by galdrin · · Score: 1

    Programming is a skill, a programming language is a tool. If your a programmer you can work with the tool that is appropriate for the job. There are no real 'bad' programming languages, there are only snobbish arseholes who think that because they can use a more complex language then they are somehow better than those that cant/dont.

    Grow up!

  330. Re:Bad idea- compilers by Anonymous Coward · · Score: 0

    "To expect a new CS student to understand Smalltalk would be too much"

    Smalltalk was originally designed as a way of teaching children to program, so new CS students should easily be able to grasp it -- there are after all only two entities in Smalltalk: objects and messages.

    "Currently most CS students learn languages in roughly the order in which they evolved: first procedural and only then OOP and logic programming(Prolog)."

    The order in which languages appeared was governed by limitations in early computers and the tasks that they performed (usually number crunching). As computers became both more powerful and ubiquitous, the tasks they performed became both more complex and varied, and languages changed accordingly.

    "OOP is a more recent developments that required some effort to bring to fruition"

    The first true OOP language was Simula-67, which appeared a year after Fortran-66, and significantly pre-dates both Pascal and C. Note that logic programming is even older: the first LISP implementation was being worked on in 1958.

    "A student with a strong understanding of procedural programming will be able to understand the evolution of computer languages and the mechanisms which underlie the various non-procedural languages"

    1) Computer languages do not "evolve" -- they are designed to do a specific set of jobs subject to the limitations of the hardware that they target.

    2) The theoretical work that underlies both OO and logic programming was already in place during the early to mid 1950s, i.e. before hardware that could realise such concepts was available.

    3) None of the above has any relevance whatsoever to people learning programming today. You don't teach English to a foreigner by insisting that they first learn ancient Gaelic, Latin, Anglo-Saxon, old Norse, and Norman French so that they can comprehend the etymology of various words. Why then should programming students worry about whether FORTRAN-I appeared a couple of years before LISP 1.5, or that Simula-67 pre-dates Pascal? Computing history is interesting from an academic viewpoint, but has no practical implications for people whose iPod has more computing power than the entire world had when FORTRAN-I appeared.

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

  332. Edsger Dijkstra is (was?) an asshole. by Qbertino · · Score: 1

    Having started of in Basic (for Sharp Pocket Computers) in the mid-80s I've lived with that quote for 20 years now. Having wrapped my head around OOP and all that I have to say that this Dijkstra guy is a total dickhead.

    If you've learned Basic (produral programming) you will only be unable to learn OOP if you run into people who aren't capable of teaching it the right way. Which - sadly enough - are most of the OOP advocates.

    That, and only that, is the real problem in moving from Basic to OOP.

    --
    We suffer more in our imagination than in reality. - Seneca
  333. crap by villekesekene · · Score: 0, Flamebait

    VB and C# are both made by Microsoft so I don't see why anyone needs sh*t like that.

  334. My biggest problem with VB by Qbertino · · Score: 1

    By now there is tons of comments detailing the programming habit downsides of VB. Most of them are very true so I won't go into them again.

    VB is some crazy shit. No doupt. Simular to Perl or PHP in it's quirkiness. If you turn your brains on, you can be productive. VB can dumb you down though and last time I used it it didn't teach me the right lingua, so I didn't really know what a type was when I stopped using VB.
    Strict OOP and the big polymorphic picture on the other hand can be a PITA and nothing more than ego stroking, so don't take everything OOP advocates say for granted (comparen EJB with Ruby on Rails to see what I mean).

    Yet I say there is one absolute no-go for beginners and veterans alike when it comes to doing stuff with VB: It's microsoft lockin. If you plan to do only MS and MS GUI stuff until you die - hook, line and sinker included - then VB may be your ticket. I spent two years doing Flash stuff - allthough lockin isn't that strong there. We've got OSS compilers by now and some neat other stuff coming up.

    Think of VB as the MS equivalent to Perl. Only that it locks you to MS systems and will cost you four-digit sums (IDEs, updates, various MS operating systems) each year to stay in the game.

    Bottom line: I strongly discourage you to do VB.
    Learn Python - it's the language that will take your farthest without learning anything else and it teaches good habits without being a prick. It's FOSS, fast enough for most things, used in all industries for real-world productivity and the Python Boss Guido van Rossum isn't to tight-assed to change the language specs it he runs into an earlyer design mistake. Which keeps Pyhton on top of things as opposed to, let's say, Java. And you can spare yourself the C tourturing and still will be accepted with older generation geeks. Which wouldn't happen if you used VB. Check the comments to see what I mean.

    If you need to do GUI stuff you'll have to do QT bindings or learn to deploy hassle-free wxPyhton apps - which is a downside. But it get you used to the "real-world". VB would turn you into something of a sissy in that area.

    --
    We suffer more in our imagination than in reality. - Seneca
  335. Pascal is the best teaching Language by Anonymous Coward · · Score: 1, Informative

    Pascal is the best teaching language for newbies.

  336. Re:Bad idea- compilers by Jesus_666 · · Score: 1

    PHP is for dynamic web pages.

    If you know your way around PHP it's good for much more. PHP makes for a decent shell scripting language if you don't care about the scripts being somewhat quick and dirty. Implementational quickness is one of PHP's key features as 90% of the language are syntactic sugar (with the other 10% mostly being C sytax). It's not exactly the fastest language but for shell scripts it's usually fast enough.

    --
    USE HOT GRITS WITH STATUE OF NATALIE PORTMAN (NAKED AND PETRIFIED)
  337. PowerBasic is seriously impressive in my opinion by Anonymous Coward · · Score: 0

    PB Win costs $199. It compiles to fast, compact .exe and .dll code (often just a few K in size). It supports inline Assembly and COM programming. It has pretty much all of the data structures, file I/O functions, network programming functions and other low-level goodness you'd want for serious programming. There's a Windows forms and GUI editor for it for people who want to do VB-style RAD with it.

    Now to the downside. Doing multimedia with PB (audio, video, DirectX, OpenGL) is not much easier than doing it with C++ or similar languages. It doesn't do any handholding. You need to grasp how the relevant APIs and Windows programming works to get at any of this stuff. Its aimed at serious Windows development and doesn't make multimedia as comfortable as the various gamebasic flavors do (iBasic, BlitzMax and so forth).

  338. Re:Bad idea- compilers by Anonymous Coward · · Score: 0

    Riigghhhtt..let's teach them three language they will most likely never use in the real world. That's a great idea. We'll follow that up with two more dying languages.

    You must be a professor or something - I can think of no one else that would put forth such a set of languages to learn. Sure, I agree the _idea_ behind your suggestions is solid, but the _reality_ (which is where most colleges drop the ball) is that you've done little to actually prep him for the real world. You're basically saying the language defines whether you can program 'correctly' and that's just hogwash. How about we teach these budding coders the proper way to code IN A REAL WORLD language (Ok ok, I _suppose_ C is still alive and well - but yech - it's time to move on) so they COME OUT OF COLLEGE with some skills they can USE. I swear, the number of times I've had to read over resumes where they've spent a silly amount of time coding in useless languages boggles me. Your BIGGEST plus coming out of college (or from wherever) is having WHATEVER experience you can get in the languages you'll be using. Anyone that tells you different is blowing sunshine where it don't belong. This is reality in the real world - we still play dodgeball and tag out here and you WILL be competing against other people (unlikes, apparently, what happens in grade school these days - but I digress)

    Whatever you learn from should at least have SOME use in there real world. Personally, I despise Visual Basic (I really can't say that about VB.NET as I haven't bother to look at it). The fastest RAD language out there is STILL Delphi, but .NET closes the gap every release (the only missing piece I can see right now is the database RAD - it _still_ sucks compared to Delphi) I suspect LINQ may finally close it (per usual, 3 revs for m$ to get it right)

    Take my advice or ignore it, I don't care. Profits me if you ignore me as I've yet to see any competition from the last 5 years worth of people I've hired.

  339. Re:TwIPS by maxwell+demon · · Score: 1

    Given that in your list I see an output instruction (Print) but no input instruction, I guess that's the 12th instruction.
    BTW, what's the difference between Go and Jump?

    --
    The Tao of math: The numbers you can count are not the real numbers.
  340. Why not learn a useful language? by Anonymous Coward · · Score: 0

    You can find free c c++ & java tools and tutorials all over the internet.

    Best places to start

    http://en.wikipedia.org/wiki/Programming_language
    http://gcc.gnu.org/

    1. Re:Why not learn a useful language? by Anonymous Coward · · Score: 0

      There is a very simple answer to your question. Free programming languages (like DevCPP) typically make it unnecessarily difficult to get into things like game, graphics and multimedia programming. Example code and reference material tends to be scattered all over the place and haphazard. Its also more difficult to find 'Game programming in C++' sort of learning books for free languages. Most game, multimedia, graphics programming guides I've seen in bookstores directly target commercial prog languages like VB, MFC, C++ .NET, C# and so on.

      The biggest problem with free/OSS stuff in general is the lack of good beginner's documentation.

  341. begginer should learn outsourcable skills by Coeurderoy · · Score: 1

    VB is double plus good for beginners, it links them to a single vendor that despise them, and if ever they develop anything really good it will take it away from them.
    And since VB skills are exactly the kind of moron level skills that pointy headed bosses love to outsource it removes beginners from the qualified job pool fast.

    This is obvioulsy very good (at least for people like me that are not recent beginner).

    So please be a nice miscrosoft slave dog and learn VB + C# + IIE + all the rest of the nice billable microsoft tools.

    of course if you would like to have a reasonable nice easy to learn langage for beginners that would like to be able to do some simple tasks and not be linked to a single platform you could get a plate of gambas (no I will not give the URL I feel nasty today).

        Cheers

  342. 8 Bitters by nurb432 · · Score: 1

    When i talk 'learning assembly', i mean something like a Z80 or 8051, where you can really get your head around what is going on at a gate level, and follow the bits around..

    Building your own CPU from scratch would also be a good expirence ( done that more then once, and i agree its fun ) but wasnt as practical as taking a small understandable 8bit cpu. I suppose using a 80dollar FPGA ( with the free SDK ) would make it practical in this day and age tho..

    --
    ---- Booth was a patriot ----
  343. Re:Bad idea- compilers by aonaran · · Score: 1

    Perl is great for a quick, unreadable script

    Take another look at PERL, start with a book not someone's code, PERL isn't about one-liners, that's just what some folks think is fun.
    (I don't get it actually)

    Perl has some very nice features in it for generating nicely formatted output with very little programming work. (Hence it's name Practical Extraction and Report Language)

  344. Completing the analogy by MarkGriz · · Score: 1

    "My personal opinion is that is was like developing an easy to use automobile which didn't need driving lessons."

    Sure, you could use it to get around pretty easily, but there were a hell of a lot of crashes.

    --
    Beauty is in the eye of the beerholder.
  345. JavaScript by Anonymous Coward · · Score: 0

    JavaScript is what they taught to MIS majors, whereas us CS majors got to learn:

    >javac HelloWorld.java
    >java HelloWorld
    Hello World
    >

  346. a highly-paid COBOL mainframe app programmer by pdxguy · · Score: 1

    Yes, I'm one of those high-paid COBOL mainframe applications programmers. I work at a large multi-national financial services firm in the Midwest. The combination of mainframe skills needed, financial industry experience, IT experience, and programming experience for the work I do provides me with a comfortable income. They are constantly searching for the "right" people to staff projects here. Many apply; few make the cut. They even tried outsourcing - realized it was a failure - brought everything back in-house. From what I understand, they don't even teach COBOL in college anymore.

    Yes there's Java, WebSphere, client/server stuff, etc. but that's all on the "front-end" or "client-facing" applications. The "back-end" or engine of what the company needs to run 24/7 is big mainframe iron. We've got the largest models IBM provides and want even more powerful ones. Isn't the sexiest thing but it gets the job done - every day.

    1. Re:a highly-paid COBOL mainframe app programmer by heinousjay · · Score: 1

      The "back-end" or engine of what the company needs to run 24/7 is big mainframe iron.

      That's only true for largely historical reasons. Anybody structuring new work this way is commiting maintenance suicide, because your type is a dying species.

      --
      Slashdot - where whining about luck is the new way to make the world you want.
  347. I'd recommend neither by danpsmith · · Score: 1

    I think for someone learning basic program construction at first, it's distracting to have to take into account GUI elements, and VB gives you the _least_ amount of background knowledge on how everything is working. Which is important stuff, IMO when you are being a programmer.

    Now you might say that this would scare away a lot of beginners who want to see instant results of a windows application. I'd say: good. If you are looking to get into programming simply to provide a great looking program with no background knowledge, you probably shouldn't be getting involved at all.

    I think it's more important to learn the basic constructs of a computer language: loops, conditionals, functions, recursion, etc. etc. than to impress people in your first five minutes with results. VB allows a lot of these things to be hidden from beginners, making them less knowledgable about computer science in general because they can get by without really knowing what they are doing. And that's why it's a toy language.

    --
    Judges and senates have been bought for gold; Esteem and love were never to be sold.
  348. Re:TwIPS by MythoBeast · · Score: 1

    Well, no. There's no input instruction because all of the input needs to be in memory before you start the program. It's not designed to have a user interface. That's outside the scope of the tool. It does, however, need to produce definable results, and having the students send their results to the print function is pretty optimal for that.

    "Go" is the start of the program, not a Goto. It isn't labeled Start because each of the names is supposed to have a separate initial, so you can use those initals as commands in the program itself.

    --
    Wake up - the future is arriving faster than you think.
  349. And the really "EVIL" ones do what? by Dareth · · Score: 1

    We become System Administrators!

    Okay, you got me... I am at best Neutral... oh but how I really really try to be "EVIL"!

    --

    I only look human.
    My mother is a halfling and my dad is an ogre, so that makes me an Ogreling
  350. 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.
  351. 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.

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

    1. Re:Best Order of Languages by gameboyhippo · · Score: 1

      I've already told my wife that no kid of mine's going to touch BASIC. :) I think the best "first language" would be C# or Java. They're both object oriented languages.

      There are two thoughts in the programming world on how to teach people to program. One thought is that we teach them things like what a for loop looks like and how to do an if statement. The other thought is that we teach them objects first and then teach them the rest of that stuff.

      I tend to think that learning objects first is the best way to go. The reason I say this is that after learning to write a program from top to bottom, objects become intimidating. Classes are confusing. So on and so forth. By teaching students early on how to program in that object mindset, it becomes easier to write a program.

      When I learned to program, I taught myself BASIC first. Then I tried learning C++. When I got to the chapter on classes, I was lost. I didn't know what they were for and why I would need them. So I struggled with classes for years. Eventually I decided to take a step back and reteach myself how to code, starting with objects. This made a world of difference.

    2. Re:Best Order of Languages by Anonymous Coward · · Score: 0

      You realise of course that he is asking about VB.net which *is* an OO language (as much as c# is of course)

  353. Re:Bad idea- compilers by Just+Some+Guy · · Score: 1
    All the languages I was told were going to be useful "in real life" have turned out to be mostly worthless

    Man up, nancy. The real world uses real tools for real work.

    Oh, I get it! You were going for "+5: Ironic".

    --
    Dewey, what part of this looks like authorities should be involved?
  354. Please not COBOL! by tomcode · · Score: 1

    If you start kids with COBOL, you will have a generation running away from computers as fast as they can.

    More important than the language (which for the sake of teaching, should be simple) is the types of problems to solve. Finding prime numbers and other math-intensive problems will help guide kids to the principles of good programming. Or problems that force them to optimize code (which gets harder as computers get faster). Or programs that quickly grow as features are added, which either become unmanageable (without good practices) or elegant, and shows them the difference. The great thing about Pascal is that it forces code organization.

    As far as VB goes, let's just all be glad Bill Gates didn't drop out of Harvard to write a COBOL interpreter.

    --
    f u cn rd ths u cn gt a gd jb n cmptr prgmng
  355. Re:Bad idea- compilers by Anonymous Coward · · Score: 0
    and the blah.name = "blah" lines.

    Why on earth are those lines needed?

  356. Re:Bad idea- compilers by Marxist+Hacker+42 · · Score: 1

    Halfways there, chief. Nowadays (Common) Lisp is compiled to either bytecode or directly to native assembly. It's quite amazing to compile new functions on-the-fly. And it's fast, too. Check it out!

    What is the technical difference between a line-by-line compile-on-the-fly and interpretation? Is it just a bigger buffer of how big a chunk you compile/assemble at a given time, or is it the persistance of the compiled code after initial interpretation as well?

    Wait till you see code writing code (Lisp) ;)

    I actually have done some of this even in Visual Basic- after all, since version 5 it hasn't been that hard to write your own add-in wizards.

    --
    SJW: a person who perceives an injustice, and while correcting it, commits a greater injustice.
  357. Re:Snobs and Very Opinionated People by MarcIrvin · · Score: 1

    I also wish that more people would measure the raw talent and content of a language rather than the size of the brains of its supporters and users. I favor OOREXX, but have developed in C++, COBOL, PLi, ALC, APL, and VBS. Langauges have specialties. These days the stuff I make never goes above the script power. Choosing a training language, needs to be based on what will be built with it. These day of fast computers, why spend precious time learning hard, when easy gets the job done. If it does not then you can learn hard.

  358. It could be, but it's seldom taught that way. by Gabagaba · · Score: 1

    In my opinion, a good beginner's language is one which teaches both common programming constructs and basic underlying computing architecture (e.g. the hows and the whys). Visual Basic has all of the common programming constructs of other 'beginner' languages ( the canonical being C ), and hence is as good a beginner language as any. However, I've usually seen Visual Basic taught in a manner which pushes beginning developers into quickly writing GUI apps which use complicated classes based on deep inheritance hierarchies which a beginner has no chance of understanding.
    As a case in point, my father recently took a VB.net course from an online 'university'. The prerequisites for the course where essentially nill (Programming Concepts or some such crap) and it was clear that this was to be taught as a first programming course. From the beginning, the focus was entirely on the GUI capabilities of VB.net and it quickly led into VBs database capabilities and other such applications. These were all fine and dandy but the entire class was completely lost as to the most basic of programming concepts. The class completely failed to explain basics such as memory layout, memory management, basic class structure, etc, etc. As a result, the only way most of these students could 'learn' was by cutting and pasting working examples into there apps and using trial and error to get them working. By the end of the course, I'd say they knew no more programming basics than at the beginning. Based on this experience, I'd strongly advocate learning a language like C before jumping into Java, VB, C# or what have you. Once you learn something like C effectively, you'll find that many of the same problems pop up with more advanced languages.

  359. re: Learning VB by richpulp · · Score: 1

    I am self taught in Visual Basic 6. I used Mike Halvorsen's Visual Basic Step By Step book. Answering the question: up to version 6.0, I would answer yes, VB was a good beginner's language. It was event driven, used an easy to understand natural language and the forms and routines were relatively easy to write and debug. Then MS introduced .Net -- maybe they thought that for too long VB had been looked down upon by C++/etc programmers -- maybe they wanted to make VB more like C++/etc. I was in the beta test for .Net and I didn't like it. I have tried .net 2003 and 2005, and I still don't like it. OK, my reasons are simple -- change the way VB works, and then compare it to languages such as VC++ or VC#, it's more or less the same, except VC++ likes to have thousands of little .h files and so on. I guess the correct answer is not what language is simplest to learn, but language do you _need_ to learn? btw I think the best test of a programming language is how quickly you can grasp its fundamentals and begin flowcharting an application. Anyone who dives straight into coding needs their head tested. PADDIM =D

  360. It's a "toy" because it's the opposite of portable by Anonymous Coward · · Score: 1, Insightful
    To be honest, I never understood why some non-VB developers thought of VB as a 'toy' language, but that is for another article.
    It's not non-VB developers that think this, it's experienced, competent computer professionals that do.

    Because VB is not OS-portable. Commercial OSes come and go, but good code lasts, and profitable processes should survive with minimal porting cost when old hardware wears out and currently available hardware will not run the old OS. Minimizing recurring costs is an excellent way to be more profitable than your competition.

    There is plenty of room for "toy" languages, they solve a particular problem set. OS-specific problems, for example, are well suited to OS-specific languages, and rapid development is a must for that problem space. OS-specific languages are also viable candidates for teaching programming, as long as the teacher has mastered both teaching and programming in that language.
  361. Re:Bad idea- compilers by chris_eineke · · Score: 1
    What is the technical difference between a line-by-line compile-on-the-fly and interpretation?

    That you don't have to decide over and over again what you're are actually interpreting?

    The interpreter has to read every token and decide:
    - what is that?
    - what does it do?
    - applicable?
    - eval and apply

    The compiler on the other hand:
    - reads the token
    - decides what it does
    - outputs the result so that environment doesn't have to do all the above steps over and over again

    I actually have done some of this even in Visual Basic
    No, you haven't done Lisp macros in VB ;). Macros are a code-generation facility. You can call this macro anywhere, anytime, even at "run-time". But macros have the full power of the language - you can write whole programs as macros which generate code that then can be compiled on-the-fly.

    Paul Graham wrote a book in 1993 entitled "On Lisp". You can get it for free now from his website. He can show in much better detail than I could the power of Lisp.

    </preach>
    --
    "All you have to do is be fragile and grateful. So stay the underdog." Chuck Palahniuk, Choke
  362. Re:Bad idea- compilers by Marxist+Hacker+42 · · Score: 1

    No, you haven't done Lisp macros in VB ;). Macros are a code-generation facility. You can call this macro anywhere, anytime, even at "run-time".

    A properly formatted COM class can do the same in Visual Studio 6. Realizing this lets you access the real power behind Windows Archetecture. Unfortuneately, it can also open your code up to the worst weakness of the Windows Archetecture- dll hell. I'm sure that Lisp Macros are much better- in that as long as the list is similar (not even neccessarily the same) the macro will still operate and not crash. Such is the power of weak typing.

    Paul Graham wrote a book in 1993 entitled "On Lisp". You can get it for free now from his website. He can show in much better detail than I could the power of Lisp.

    I could have sworn this was the textbook in Advanced Artificial Intelligence, a senior level class that I took in 1994- but it's been a few years and I've been infected by corporate coding since then.

    --
    SJW: a person who perceives an injustice, and while correcting it, commits a greater injustice.
  363. Re:There isn't just one good language for everythi by gameboyhippo · · Score: 1

    Perhaps that should read, "You want to teach students that programming is frustrating? Use Lisp" I'm just kidding. Lisp has always been my least favorite language. It's a beauty for me to read, but a pain to program.

  364. Sublime madness by Lev+Lafayette · · Score: 1

    At first I thought you were stark raving mad to suggest that C should be a beginners language; however following your argument that assembler would be the best way to teach optimisation, I have to elaborate.

    You are stark raving mad - but you're also sublime in your madness. The insight of your statement is magnificant.

    Beginners? Learn assembler! Indeed, the best would of it use learn how to use the virtual PDP-8

    http://www.cit.gu.edu.au/teaching/1507CIT/Pdp8/pdp 8.htm

    Oh, wait.. It's written in Java!

    1. Re:Sublime madness by Doctor+Memory · · Score: 1

      Actually, this is exactly the way I think it should be done. So much of the stuff you learn isn't explained well, and must be "taken on faith" (why is the range of values in a short from -2^16..2^16-1? And why 16 bits?). Then, when you learn assembler, it becomes obvious why certain data structures and algorithms work well. If you take a reasonable assembly language (I haven't used PDP-8, but PDP-11 is nice and regular), then after a one semester course students should be able to pick up just about any high-level language (and will probably be relieved to do so!).

      I look at it as the way the industry evolved, so it's the way programmers should evolve too. It may not be the best way, but it'll give students the best perspective on why things are the way they are. Maybe from there they can figure out how to make them better.

      --
      Just junk food for thought...
    2. Re:Sublime madness by Anonymous Coward · · Score: 0

      Oh, wait.. It's written in Java!

      Well is your statement means what I think it does (that the virtual assembler is written in java therefore you might as well write everythign in Java), bear in mind that Java is written in C...

      As for learning programming. It is always best to start with the fundamentals. Yo may not agree that memory management, bytes, etc has anything to do in your work now you have a magic language that abstracts it all away from you, but the day you start writing serious apps that require a lot of scalability, you will be glad you know the effects of locks on your system, how cache coherency can really speed up multi processor applications, and similarly, how repeated string copies can totally screw performance of a largescale multi-user application.

      You were taught how to read by first practicing individual letters, then spot the dog chasing a ball, and eventually you got to Shakespeare. Teaching programming should happen the same way.

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

  366. Re:Bad idea- compilers by Kiaser+Zohsay · · Score: 1

    If you're going to teach concepts, do so. Don't use a language as a crutch. Teach in pseudo code.

    What happens when students try to implement pseudo coded algorithms in a language that is LESS capable than the pseudo code presented by the instructor? If the algorithm involves data structures with pointers, such as a linked list or a binary tree, VB users are going to have a rough time with that assignment. I know there are some hack-ish workarounds to do pointer operations in VB, but we are talking about choosing a beginners language here.

    Yes, the real key to learning computer science is to grasp the concepts. So beginners need to be wary of languages that attempt to hide certain concepts because they are "too complex" for most people. Beginners had damned well better get their heads around those exact concepts if they ever hope to be anything more than beginners.

    --
    I am not your blowing wind, I am the lightning.
  367. VB is great for beginners, Python is not by Anonymous Coward · · Score: 0

    Python is way over-hyped. It is slow and not designed for beginners at all: See http://wiki.python.org/moin/BeginnerErrorsWithPyth onProgramming
    If anything, Ruby is better for beginners than python.

    VB.NET fixes a lot of the issues with VB6 (though not all). It really is the only full featured programming language out there that IS designed with beginners in mind. Case-insensitive, no =/== mistakes, no whitespace debugging issues, and dozens of other design decisions like those are all made with beginners in mind.

  368. Why would you ask a question like this on slashdot by skrowl · · Score: 1

    I think slashdot (which has firm roots in 'alternative' computing such as Linux / BSD / PHP / etc.) isn't really the right place to ask a question like this if you expect to get an unbiased answer. Their icon for Microsoft is Bill Gates as a borg, for christs sake. Go ask on www.asp.net forums if PHP or Ruby is a good language for beginners to start learning and see what results you get there ;)

    With ANY language, you can learn good or poor programming habits. VB will LET you not use 'option strict' and implicitly convert types, but it certainly LETS you do it the correct way as well. If you take the time to learn good habits, you can write very robust code in VB.NET as quickly and efficiently as any other language out there. With mono, you can even run your code on a Mac or a PC running an 'alternative' OS!

    --

    Prevent linux based DDOS's!
    http://linux.denialofservice.org/
  369. Perl. by Anonymous Coward · · Score: 0

    my $Perl = $best_beginners_language;

  370. Pointers by jaywee · · Score: 1

    Actually, I've noticed that too - that many people just can't grasp the meaning of a pointer. Do you have any idea why is that?

    1. Re:Pointers by poopdeville · · Score: 1
      It took me a while to grok them, but only because I was thinking about computation in terms of the classical models. I asked, "What do pointers give me that plain old recursive functions don't?" and couldn't find an answer.

      Then again, you don't want to try to Godel-number a complex data structure and do computations based on that. Icky.

      --
      After all, I am strangely colored.
  371. You deserve an answer (if you haven't got one yet) by spycker · · Score: 1

    VB was the language to start with (if not pascal) in the 90's.

    Today the popularity of C like languages (either OO or procedural) dominate the over all job market, are cross platform, have more books written about them, and have more open resources available to them in aggreagate than VB in all its versions (6, .Net, script, or for Applications).

    If you can't learn programming in C you should not be a programming major you should be a business major who is a super user.

    Think about it... Linux, Windows, Perl, CPAN, javascript, MONO, C, C++, PHP, C#, sourceforge. I'm mean really, is there a question as to what you should be spending your time on? Go with C#!

  372. Re:You deserve an answer (if you haven't got one y by spycker · · Score: 1

    Forgot!

    For all practical purposes C# = Java.

  373. Re:Bad idea- compilers by DeadManCoding · · Score: 1

    So I won't lie, and start off easy. I am currently in a community college, getting all the basics of IT down, and am currently taking my first semester of Java programming. Last semester, I was taught Programming Logic. Nothing but psuedo-code. Fortunately, I have the same instructor for Programming Logic as Java programming. The Logic course was all concepts, mainly from a procedural point of view. Now that I'm in Java, understanding OOP is very easy. So I do have to agree with the parent poster here. If you want to start learning how to program, whether it's "programming" or "writing programs", start with the concepts, not an actual language. That way, by the time you do start learning a language, all of the concepts come in with it, and all the right coding habits can be formed up front.

    --
    "The only constant in the universe is change." - Unknown author