Slashdot Mirror


Justified: Visual Basic Over Python For an Intro To Programming

theodp writes ICT/Computing teacher Ben Gristwood justifies his choice of Visual Basic as a programming language (as a gateway to other languages), sharing an email he sent to a parent who suggested VB was not as 'useful' as Python. "I understand the popularity at the moment of the Python," Gristwood wrote, "however this language is also based on the C language. When it comes to more complex constructs Python cannot do them and I would be forced to rely on C (which is incredibly complex for a junior developer) VB acts as the transition between the two and introduces the concepts without the difficult conventions required. Students in Python are not required to do things such as declare variables, which is something that is required for GCSE and A-Level exams." Since AP Computer Science debuted in 1984, it has transitioned from Pascal to C++ to Java. For the new AP Computer Science Principles course, which will debut in 2016, the College Board is leaving the choice of programming language(s) up to the teachers. So, if it was your call, what would be your choice for the Best Programming Language for High School?

648 comments

  1. instant disqualification by X0563511 · · Score: 4, Funny

    Visual Basic is not suitable for anything, except perhaps as a form of torture.

    --
    For large sets, this will be our guide even unto death, for the LORD will work for each type of data it is applied to...
    1. Re:instant disqualification by Anonymous Coward · · Score: 0

      I just finished a project where I had to translate a complex print macro from VBScript (circa 1996).

      Now I call it "PTSDScript"

    2. Re:instant disqualification by Anonymous Coward · · Score: 4, Funny

      VB.NET isn't that bad. It's just C# for people with an irrational aversion to curly braces.

    3. Re:instant disqualification by Anonymous Coward · · Score: 4, Insightful

      Yes. And the problem is that VB is MS only. It is a vendor lock in. What about stuents that have a Mac or Linux at home? He chains them to MS.

      Also python being less complex/powerful than VB? That depends a lot. Python is easier to use (that also why you say you use VB and not C++), but much more powerfull. Here Sieve of Eratosthenes on 1 line:
      print sorted(set(range(2,n+1)).difference(set((p * f) for p in range(2,int(n**0.5) + 2) for f in range(2,(n/p)+1))))

      Now do this in VB.

      PS: I really hope he did not get any kind of bonus from MS for this. (I know some profs that implemented some .NET stuff for MS for much too much money to afterwards tech C#)

    4. Re:instant disqualification by Anonymous Coward · · Score: 0

      Very appropriate for teaching then.

    5. Re:instant disqualification by morgauxo · · Score: 4, Informative

      VBScript != Visual Basic

      it's kind of like Javascript vs Java

    6. Re:instant disqualification by Bengie · · Score: 2

      VB.Net still uses enough English to make some things hard to remember. Concepts are easy to remember, specific words are not. Some concepts have multiple words.

    7. Re:instant disqualification by MightyMartian · · Score: 0

      Or PHP vs C

      --
      The world's burning. Moped Jesus spotted on I50. Details at 11.
    8. Re:instant disqualification by morgauxo · · Score: 1, Informative

      "...VB is MS only."
      No it's not.

      http://www.mono-project.com/do...

    9. Re:instant disqualification by vux984 · · Score: 4, Insightful

      print sorted(set(range(2,n+1)).difference(set((p * f) for p in range(2,int(n**0.5) + 2) for f in range(2,(n/p)+1))))

      Now do this in VB.

      If that's your idea of code to be proud of, you are an idiot who shouldn't have any input in teaching kids to program.

      Yes. And the problem is that VB is MS only. It is a vendor lock in.

      The programming you'd pick up in a high school computer course is hardly language proficiency. There are no jobs for people with "high school computer science" on their resume. Its a very basic introduction to structure, program flow, conditionals, variable, type, parameters, fucntions.

      And its not going to make one iota of difference what language you learned those fundamentals on in high school when you get to university.

      I'm not a fan of VB myself either... but its perfectly suitable for the task its being used for here.

    10. Re:instant disqualification by kthreadd · · Score: 2

      Yes. And the problem is that VB is MS only. It is a vendor lock in. What about stuents that have a Mac or Linux at home? He chains them to MS.

      On Debian 7:

      $ uname
      Linux
      $ vbnc
      Visual Basic.Net Compiler version 0.0.0.5943
      Copyright (C) 2004-2010 Rolf Bjarne Kvinge. All rights reserved.

      Error : VBNC2011: No files to compile! Cannot do anything!
      Compilation took 00:00:00.2141430

      https://packages.debian.org/je...

      Also, the new Microsoft .NET compiler (Roslyn) is open source.

    11. Re:instant disqualification by Anonymous Coward · · Score: 1

      The example was to show that python is very powerful. Not about what to teach to students.
      And while I agree that the first language does not matter in theory, it matters in practice. Students will be more motivated if they can use what they learn. With Python they can do that much better, because it is still alive and well.

    12. Re:instant disqualification by Lumpy · · Score: 2

      Very true. Old VB6 was useful. The current VB is a convuluted horrid mess that is only there because Microsoft wanted everyone to hate it so much they migrated to C#

      --
      Do not look at laser with remaining good eye.
    13. Re:instant disqualification by Sarten-X · · Score: 3, Insightful

      For quite some time, I've argued in favor of teaching a programming class with QBasic. No, not the early BASICs that required line numbers, but the later QBasic that shipped with certain versions of DOS and Windows.

      Later BASIC variants have one defining characteristic that makes them perfect for educational use: Zero overhead. For the simplest example programs, there is absolutely no boilerplate required to allocate memory, configure the process, or tell the compiler/interpreter how to work. An example that demonstrates three things has three lines.

      For the very first stages of programming education, that's all you need. It's enough to show that instructions are executed sequentially, that you have to be explicit, and to walk through the compile/execution process. It hits all of the major concepts, with no extra parts to confuse the new students. From my time teaching CS, those basic concepts comprise the bulk of the initial difficulties most struggling students face. Once they understand those building blocks fully, the students can begin learning algorithms, design patterns, and all those more substantial parts of a full CS education... and that work should be done in a language that can trace its heritage to C.

      --
      You do not have a moral or legal right to do absolutely anything you want.
    14. Re:instant disqualification by Anonymous Coward · · Score: 0

      > And the problem is that VB is MS only.

      So start using RealBasic ? This idea of "vendor lock in" is nonsense, when you aren't going to make many useful programs with VB anyway.

    15. Re:instant disqualification by nneonneo · · Score: 1

      Your vbnc was last updated in 2010, and targets Visual Basic .NET 8, which was released with Visual Studio 2005. The VBNC compiler has not had any significant updates since 2011.

      Visual Basic .NET is now on version 12. vbnc is horribly behind, and it does not appear to be actively supported. If your instructor were to use any newer language features, such as lambdas, iterators or asynchronous programming, you would not be able to use VBNC to compile that code and would probably have to resort to using Windows somehow.

      On the flipside, Python now comes standard with most Linux distributions, and is standard with Mac OS X. It's very simple to install on Windows and even comes with a bare-bones IDE for editing code. In every respect, it is easier to get started using Python than to start using VB .NET, especially on non-Windows platforms.

    16. Re:instant disqualification by gweihir · · Score: 1

      Yes. And the problem is that VB is MS only. It is a vendor lock in. What about students that have a Mac or Linux at home? He chains them to MS.

      There is a good possibility that he gets some kick-back for that, as his arguments are completely bogus.

      --
      Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
    17. Re:instant disqualification by kthreadd · · Score: 1

      Yep, that's why the Roslyn compiler is so interesting.

    18. Re:instant disqualification by TemporalBeing · · Score: 1

      "...VB is MS only." No it's not.

      http://www.mono-project.com/do...

      Sure you want to get sued by Microsoft over the use of some of the keywords and their related patent filings.

      Even the agreement that MS signed with Novell didn't cover VB, only C# and what they published to EMCA and ISO. Everything else was still open for lawsuit. Of course, even that agreement has now expired, and Miguel's new company doesn't have a new agreement either.

      So good luck there.

      --
      Truth is like the sun. You can shut it out for a time, but it ain't goin' away. - Elvis Presley (source: imdb.com)
    19. Re:instant disqualification by Celarent+Darii · · Score: 5, Informative

      Actually that example is not even valid Python code, you'll get an 'n not defined'. Furthermore you need to indent it properly. You probably want something like this:

      def primes_upto(limit):
              is_prime = [False] * 2 + [True] * (limit - 1)
              for n in range(int(limit**0.5 + 1.5)):
                      if is_prime[n]:
                              for i in range(n*n, limit+1, n):
                                      is_prime[i] = False
              return [i for i, prime in enumerate(is_prime) if prime]

      And VB6 you can actually do this on one line :)

      Sub Eratost() : Dim sieve() As Boolean : Dim n As Integer, i As Integer, j As Integer: n = InputBox("limit:", n) : ReDim sieve(n) : For i = 1 To n : sieve(i) = True : Next i : For i = 2 To n : If sieve(i) Then : For j = i * 2 To n Step i : sieve(j) = False : Next j : End If : Next i : For i = 2 To n : If sieve(i) Then Debug.Print i : Next i : End Sub 'Eratost

      If you want one-liner programs, we should really force people to use perl which is famous for that. Python is not friendly to 'one-liner' types of programs because it forces indentation.

      But really, the parser is supposed to work with you, not against you, so why not write it on several lines to help readability? I fail to see how writing code on one line really proves its power.

      For bragging rights, you could go full-genius mode [instead of full-retard] with APL (change 100 to whatever you want the vector of primes to be) :

      (~vv.×v)/v1100

      EDIT: Damn it, you can't even put APL code in Slashdot. Here is a link to explain the code

    20. Re:instant disqualification by AqD · · Score: 1

      ^^^ that.

      Natural human languages are stupid, inconsistent and illogical, and their syntax is simply not suitable to express anything complex.

      People who love any form of Basic shouldn't be programmers at all. They might be good typewriter operators though.

    21. Re:instant disqualification by Anonymous Coward · · Score: 0

      No, teach them Python, then add PyQT so they can create real GUI apps in like 7 lines of code. They can create useful stuff that way!!!

    22. Re:instant disqualification by Goaway · · Score: 2

      Yes, MS is well known for suing students running VB.NET on Mono.

      At least in the crazy universe inside your head.

    23. Re: instant disqualification by Anonymous Coward · · Score: 0

      The question was what is a good high school teaching language. Not which language is more powerful or dense.

    24. Re:instant disqualification by FellowConspirator · · Score: 1

      That's precisely what makes AppleScript a pain in the ass. It took them long enough, but adding JavaScript for automation in OS X was probably the best thing Apple ever did for their "Open Scripting Architecture".

    25. Re:instant disqualification by redfox2012 · · Score: 1

      or even VBScript <> Visual Basic

    26. Re:instant disqualification by labnet · · Score: 1

      Visual Basic is not suitable for anything, except perhaps as a form of torture.

      I've never understood the hate for VB. I program mostly in C and C#, but back in mid 90's I needed to write a large program that drove a real time thermometric titration system. VB6 was a fantastic GUI RAD that was able to everything I needed, including the creation of custom windows that were dynamically generated from SQL tables, to hooking into of DLL libraries that did BSpline array manipulation. I would have gone nuts writing that in C back in the day.
      The verbose syntax of VB makes it easier for a broader range of abilities to be introduced to programming without all the symbology of C like languages getting in the way.

      --
      46137
    27. Re:instant disqualification by Anonymous Coward · · Score: 1

      Yes my example assumes n=1000 was defined before, but it really is one statement. If you want it as one line function definition use:

      def getPrime(n): return sorted(set(range(2,n+1)).difference(set((p * f) for p in range(2,int(n**0.5) + 2) for f in range(2,(n/p)+1))))
      print getPrime(1000)

      Indentation does not matter because it is one line.
      And my version is much more "python way" than your python version I would say. Also much more optimized and for me easier to read.
      Also you honestly think your VB variant is more readable or simpler than that???

    28. Re:instant disqualification by MaksimS · · Score: 1

      As for my 25+ years of coding, I can say only one thing - it won't help you if hammer is red or blue, if you're lousy craftsman.

    29. Re:instant disqualification by Anonymous Coward · · Score: 2, Informative

      Yes, VBS is not VB. Nor is VB.Net VB. I'm guessing that VB.Net is what people are talking about here. A .Net language that runs JIT-compiled on top of a massive VM or "framework". VB (as VB6) by contrast produces compiled executables, can be used instead of C++ for most things and is strongly COM-adapted. VB6 is still one of the most widely supported tools for Windows. The EXEs run without extra support files needed on virtually all existing Windows PCs.

          On the other hand, VB is no longer officially supported and .Net is heading for status as glorified script, insofar as Microsoft is trying to herd all Windows developers into the world of Metro trinket apps. There are much bigger problems than picking a language right now for anyone thinking about a future in Windows programming.

      And why does no one ever mention the *context* when talking about the alleged best tools? What kinds of things are students going to write?

      I'm continually surprised to see Slashdot regulars misunderstand the VBS/VB/VB.Net landscape as a result of accepting Microsoft's marketing misinformation.

    30. Re:instant disqualification by styrotech · · Score: 1

      If that's your idea of code to be proud of, you are an idiot who shouldn't have any input in teaching kids to program.

      That wasn't "code to be proud of" - it was an example refuting the statement Python doesn't have complex constructs compared to VB.

      He also claimed that school students would be forced to rely on C if they used Python.

      I can't help wondering if he's confusing Python with something else.

    31. Re:instant disqualification by Anonymous Coward · · Score: 0

      You are wrong. That is perfectly valid Python code, as long as n has already been defined:

      >>> n = 100
      >>> print sorted(set(range(2,n+1)).difference(set((p * f) for p in range(2,int(n**0.5) + 2) for f in range(2,(n/p)+1))))
      [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97]

    32. Re:instant disqualification by Darinbob · · Score: 1

      Well, it's marginally useful if you're stuck in Microsoft's corner of computing or if you wish to succumb to their way of thinking.

    33. Re: instant disqualification by Lobais · · Score: 1

      Nitpick: Your algorithm is not sieve of Eratosthenes. The later only looks over the primes in its outer loop. Yours loop over every number. Sieve of Eratosthenes also uses only addition and array lookups. Yours uses multiplication, hashing and sorting.

    34. Re:instant disqualification by Anonymous Coward · · Score: 0

      VB is the easiest and fastest to use and teach. It can be used to do anything and since the easiest way is also the fastest, why would you want them to learn a harder, slower non-compiled language to do the same thing in VB easier and faster?

    35. Re:instant disqualification by Crashmarik · · Score: 1

      I was pretty sure that APL had killed compactness as a measure of the power of a programming language once and for all. I guess people are still making this argument.

      (~ R R.× R )/ R (left arrow) 1 (down arrow) R

      There's the the equivalent code in APL even more dense. (well more or less slashdot doesn't let the characters go through the preview)

    36. Re:instant disqualification by Darinbob · · Score: 1

      Right and just how big is the programming market in the Mono world? .NET was created solely as an attempt to kill Java and portability, and Mono is only tolerated because its usage is so small and because it occasionally serves as a distraction.

    37. Re:instant disqualification by Anonymous Coward · · Score: 0

      Here Sieve of Eratosthenes on 1 line:

      This is exactly the kind of shit you don't want to be teaching in beginners class and probably not even use in a production environment unless it is tested all to hell and then compiled into a function and no one ever sees the source code.

      You people think smart coding means putting as much shit into one line as possible. That's BullShit.

      Smart coding is easy to read, easy to debug, and easy to modify. That shit aint for 98% of CS graduates or CIS graduates. The function of the code should be apparent from the variable names and comments. That's why COBOL endures.

      I know, you'll call it dumb and stupid. But being "smart" counts for shit if a critical system is down because some asshole tried to be "smart" with the code.

      KISS = Saving $$$, Uptime, and flexibility.

    38. Re:instant disqualification by methano · · Score: 1

      What about Swift? 375 comments and not one mention. So there it is

    39. Re:instant disqualification by vux984 · · Score: 1, Insightful

      The example was to show that python is very powerful.

      That's not powerful. That's... I don't know what that is... "density". But you can do shitty dense code in VisualBasic too. That's not "power".

      C is a powerful language.

      The 'power' of C is the ability to manage your own memory or not, read and write directly to IO ports, recast memory from one type to another in fascinating and unsafe ways. Declare an array of data, populate it, and then call it as a function and if you did it right get a return value back... other truly HORRIBLE things.

      That is hard to properly demonstrate in many other languages.

      Does this stuff belong in a high school course?

      Yes; in precisely the same way some sort of explosives demonstration is appropriate in chemistry... not to teach students how to program at that level but to demonstrate it, to give them the understanding of what this sort of stuff is as part of an overview of computer science. To make it concrete how code, and data and numbers and text, and everything are all truly interchangable, and how you can treat one as the other and back again. To give them an idea how exploits and viruses work. That's a valuable epiphany for computing students.

      But for an intro to acutally programming? No. Stay away from C; a simpler safer less powerful language is desirable.

      And while I agree that the first language does not matter in theory, it matters in practice. Students will be more motivated if they can use what they learn.

      However, I do agree with you the the x-platform of python is desirable. (although .net languages are x-plat even if the library support off windows is limited). It will work more enough for a high school course if they are writing console programs.

      But I admit I personally don't like python. I don't like semantic whitespace. I don't think that is a particularly easy concept for some students to even grasp; and its a characteristic that phython shares with no other language except brainfuck. (Hardly the best company to be in.) I also think it makes editing, maintenance, and refactoring more difficult.

      I'd pick VisualBasic over Python as a beginners language.

      Plus VisualStudio is really good; its a good IDE, good debugger; its stable, its free; its widely used in the 'real world'; and you can focus 100% on "learning to program" without getting bogged down in configuring your environment or managing your toolchain or phyhon package management, library versions (python 2 vs 3), etc, etc, etc.

      Everything you'd ever need to get going is included with VisualStudio. The Python Standard library set is much more limited; and when you step outside of it there's a lot more complexity -- libraries are maintained by different people, conventions aren't as strictly adhered to, package names are cryptic or clever nonsense... django, cherrypy, twisted, etc. Documention is frequently behind or missing.

      Its just a lot more to wrap your head around.

      MSDN documentation and naming conventions maybe boring and dry, but the documentation is complete, up to date, and with examples for virtually everything, and the conventions are adhered to. Things are named predictably, etc.

      With Python they can do that much better, because it is still alive and well.

      I learned to program in BASIC first (TRS-80), then gwBasic (80286) then (Turbo) Pascal, then (Borland) C++, then Modula-2 (on Unix in 1st year university)... then countless more. But of my first 4, only ONE of those has ever any real world application.

      Besides, VB.NET is basically C# with training wheels; so you switch BEGIN and END for curly braces, realize procedures are just functions that return "nothing", and a little bit of other syntax and you are up and running in something that is pretty relevant.

      And its ok for languages to be a teaching language. I know I certainly don't "wish" high school had been in something more "relevant". If anything, being taught in a language you'll never use again helps you learn to separate "the language" from "programming". That's a good thing.

    40. Re:instant disqualification by UnknownSoldier · · Score: 1, Insightful

      > I've never understood the hate for VB.

      Because shit designed languages, like PHP, Basic, and Javascript teach and encourage all sorts of bad, sloppy, programming habits, and inhibit the programming from using _good_ design / architecture. i.e. Visual Basic didn't get inheritance _until_ VB.NET long after everyone suffered with VB6.

      For professionals we want compile-time type checking to catch stupid mistakes of

      - mis-spelt variables
      - using a variable with a mis-matched type.

      Sure, for one-off's and throw away code VB6 was fine, but when you change the case of a variable, and the IDE changes ALL copies of it, or worse, lets you use a variable without declaring it earlier, you are shooting yourself in the foot with dumb mistakes that will waste your time tracking down subtle bugs.

      > The verbose syntax of VB makes it easier for a broader range of abilities to be introduced to programming without all the symbology of C like languages getting in the way.

      Nothing says a noob language like verbosity.

      Why?

      Verbosity is "noise" cluttering up the "signal" all in the name of a mythical "readability." Consider the enum in VB6:

      Public Enum Flavor
          flVanilla = 2
          flChocolate = 4
          flCoffee = 8
          flStrawberry = 16
      End Enum

      C's enum gets rid off all the crap we don't need:

      struct Flavor
      {
          FLAVOR_VANILLA = (1 << 1),
          FLAVOR_CHOCOLATE = (1 << 2),
          FLAVOR_COFFEE = (1 << 3),
          FLAVOR_STRAWBERRY = (1 << 4)
      };

      Note: The '=' equal sign is multi-column aligned, but /.'s formatting is retarded and strips contiguous whitespace.

      In Mathematics we don't go:

      result_integer = integer_2 integer_add integer_2

      We get rid of the superfluous crap and use symbols.

      result = 2 + 2;

      Verbosity is one of the reasons Pascal was a complete failure. It wasn't pragmatic and/or practical for SERIOUS coding.

    41. Re:instant disqualification by Waffle+Iron · · Score: 1

      Furthermore you need to indent it properly.

      It was a single expression after the print. Python allows him indent it any way he wants to. He could have arranged the expression into a variety of pretty cascaded tree shapes similar to lisp code (especially if he slapped one more set of parens around the whole thing), and Python would have parsed it just fine. Leaving it on one line works just as well, as would random indentation.

      Python's block indentation rules applies only to statements.

    42. Re:instant disqualification by Ksevio · · Score: 1

      The original code is correct except that you have to define "n" as the limit. Basically it'd be in a function like:
      def primes_upto(n):

      It uses the functional programming style available in python which allows single liners that can do a lot (though ideally you will split them up a bit for readability).

    43. Re:instant disqualification by jythie · · Score: 1

      The C thing really seemed pretty out of place. Dropping down to C (which you can only really do in cPython) in Python is kinda like dropping down to assembly in C. Yeah, you can do it, but if you are at the point where you 'have' to in order to solve a problem, you are well beyond basic teaching and into something more advanced.

      Maybe the person is thinking of the C style string formatting? The kind that Python has been trying to migrate people off of? I guess that could be considered 'complex constructs', but given that it is not even the preferred way of handling them I would not describe it as something they have to do.

    44. Re:instant disqualification by vux984 · · Score: 1

      Python doesn't have complex constructs compared to VB.

      I don't think "complex constructs" is what anyone is suggesting is necessary or desirable though.

      He also claimed that school students would be forced to rely on C if they used Python.

      Read the full article.

      When it comes to more complex constructs Python cannot do them and I would be forced to rely on C (which is incredibly complex for a junior developer) VB acts as the transition between the two and introduces the concepts without the difficult conventions required. Students in Python are not required to do things such as declare variables, which is something that is required for GCSE and A-Level exams.

      His choice of phrasing was a bit inaccurate. But he's basically saying he needs to teach things like declaring variables, specifying data types, etc. Which you don't do in python.

      Of course he wouldn't have to "rely on C" (any number of other languages could stand in); but it does make python less suitable than say VB if this is part of the curriculum that he is teaching.

      I can't help wondering if he's confusing Python with something else.

      Frankly, his response came across reasonably well thought out.

    45. Re:instant disqualification by vux984 · · Score: 1


      Maybe the person is thinking of the C style string formatting?

      The specific example he gave in his letter was that declaring variables and specifying types is part of the required curriculum. And that Python doesn't have that.

      I agree, his explanation of having to "drop down to C" is sort of out of place, and has proven to be a red herring in the responses on slashdot. But he makes a reasonable case for why VisualBasic is a good candidate language for the curriculum he is teaching.

    46. Re:instant disqualification by Anonymous Coward · · Score: 0

      Now, teach a first year student who has never done CS and probably has not even taken Calc 1 what the Sieve of Eratosthenes is and how to utilize it, build it, and why it is useful.

    47. Re:instant disqualification by hyfe · · Score: 1
      What a non-sensical reply.

      Actually that example is not even valid Python code, you'll get an 'n not defined'.

      It's certainly valid code. It's an algorithm for finding all prime numbers up to n. If you don't supply n it will not work. There's no way around that in any language whatsoever in any way.

      Furthermore you need to indent it properly

      If you need to indent it properly it's really, really not a oneliner.

      And VB6 you can actually do this on one line :)

      Sub Eratost() : Dim sieve() As Boolean : Dim n As Integer, i As Integer, j As Integer: n = InputBox("limit:", n) : ReDim sieve(n) : For i = 1 To n : sieve(i) = True : Next i : For i = 2 To n : If sieve(i) Then : For j = i * 2 To n Step i : sieve(j) = False : Next j : End If : Next i : For i = 2 To n : If sieve(i) Then Debug.Print i : Next i : End Sub 'Eratost

      By this logic, s/\n/; would make any VB6-script into a one-liner. You're really supposed to use one statement, or atleast find something that fits on one line. That code is just a complete algorithm without lineshifts. A one-liner it is not.

      --
      "" How about taking the safety labels off everything, and let the stupidity-problem solve itself? """
    48. Re: instant disqualification by Anonymous Coward · · Score: 0

      Doing something similiar...what did u translate it to?

    49. Re: instant disqualification by mfalcon007 · · Score: 1

      Doing a similar project. What did you translate it to?

    50. Re:instant disqualification by doconnor · · Score: 1

      begin
            I have an irrational aversion to curly braces, so I prefer Delphi.
      end;

    51. Re:instant disqualification by Anonymous Coward · · Score: 0

      At the python shell type
      >>> n = 30
      then the line of code. "n" is the "limit" variable in your code.
      Who voted this informative?

    52. Re:instant disqualification by CresCoJeff · · Score: 1

      Agreed. Also, what does he mean by "when it comes to more complex constructs Python cannot do them and I would be forced to rely on C"? Python is a general purpose language, so it should certainly be able to tackle any complex constructs that VB, and C for that matter, can. Perhaps he meant constructs requiring low-level memory fiddling? I would call that an implementation detail rather than a modifier of a given construct's complexity. What I can get behind is the raised-hairy-eyebrow wrt implicit typing in Python for a student; for someone just starting out in programming I expect an implicit type system would be incredibly confusing and might lead to an 'it works because of magic' mentality. I cut my teeth on VB in junior high and high school and I found the transition to Java, C++, and eventually C (mostly so that I could understand what all the saccharine syntax of the above was doing) fairly easy to make. I'd recommend teachers in college plan for Java or C++ and high school teachers stick with something simple like a BASIC dialect. That said, they should use an open BASIC, like FreeBASIC instead of VB. On the other hand, Dijkstra said "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." So... maybe stick with Java as a fair middle ground?

    53. Re:instant disqualification by DG · · Score: 1

      Commodore BASIC, Turbo Pascal, M6800 Assembly (wonderful!), 8088 Assembly (horrible!), C, SQL, M68k Assembly, AREXX, perl, sh, Javascript, Java, php. I've dabbled in others (I can crank out a VB macro if need be), but those are my core fluencies.

      The assembly was very useful in learning how the CPU actually works, and proved very useful for understanding industrial/microcontroller stuff later on, but with CPUs these days being vastly more complex than an 8088 or an M6800, I don't know if it could be dumbed down enough. Perhaps on a virtual machine or something?

      Turbo Pascal was an absolutely brilliant language to learn on, and it is a shame Pascal seems to have fallen out of favour. It was powerful enough to write workable programs on, but simple enough to keep a new student from wandering off the cliff edge.

      If I was teaching, I'd use perl:

      - perl supports multiple syntaxes so you can teach the simple stuff in a straightforward manner
      - The fact that it identifies variables and in which context they are being used is a brilliant way to help students separate out what bits are variables/arguments and what bits are code
      - The C and sh bits are gateways into C and sh - "C lite"
      - You can do some really powerful and *useful* programs in perl, which teaches that programming isn't just the creation of monolithic apps, but a *process* that can be used to solve a single specific problem.
      - perl has native regular expressions, and teaching pattern matching opens up a whole new world of problem solving techniques

      I can see homework like "Take the provided text file, and write a program that takes it as input and prints out the sentence that has the most vowels in it" or "Write a program that prints a list of the songs in your music library, ordered by date of album release". These programs are easy to write in perl, fun, challenging, and *useful*.

      --
      Want to learn about race cars? Read my Book
    54. Re:instant disqualification by david_thornley · · Score: 1

      I'm not familiar with QBASIC, but I am familiar with earlier Microsoft BASICs. They were run in something of a primitive IDE, which provided crude editing facilities, the ability to save and/or execute the program, and limited debugging capabilities. That, and nothing else, gave them zero overhead. You could have an IDE at least that good for other languages, and run them with zero overhead.

      --
      "When you have eliminated the unacceptable, whatever is left, however improbable, must be the truthiness" - Holmes
    55. Re:instant disqualification by Anonymous Coward · · Score: 0


      Imports System
      Module Comment
              Sub Main
                      ' Your comment is bunk
                      Dim CommentTruth = false
                      Dim ohReally = If(Not CommentTruth, "What are you talking about?", "You're correct, sir") ' Inline if, lazy typing
                      Console.WriteLine(ohReally)
                      Dim ArgueNoFreeIDE = Function() true ' Delagates, Lambdas
                      Console.WriteLine(If(ArgueNoFreeIDE(), "Try SharpDevelop, it's a Free (as in GPL) cross-platform VB.NET & C# IDE.", "There's great support for .NET and VB on so many platforms."))
                      Dim response as string() = {
                          "I happen to know, because I've written and maintained line-of-business C# and VB.NET code for a major IT vendor for years.",
                          "My first reaction to VB was admittedly one of disdain.",
                          "However, it does everything that C# does.",
                          "It CAN be succinct.",
                          "Guess what? You don't need to contort your fingers to type so many damn brackets and semi-colons.",
                          "Also, autocomplete in Visual Studio is arguably better in VB than C#.",
                          "Finally, as a teaching language, the syntax mostly just gets out of the way.",
                          "I bet you can read this even if you've never seen VB before."} ' No longer need _ to continue lines in VB 10 / .NET 4
                      For Each r in response : Console.WriteLine(r) : Next ' colons act like semi-colons in VB. But they're optional. Look, mom, no parenthesis needed for if, for each, while, etc.
              End Sub
      End Module

      ' Want to build this yourself? Save it to comment.vb. Then run C:\windows\Microsoft.NET\v4.xxx\vbc.exe comment.vb
      ' (replace the .xxx with whatever is in your system) Requires .NET 4.0 or higher. With some small loss of syntactic sugar, this also compiles on .NET 2.0 which is widely deployed.

    56. Re:instant disqualification by Anonymous Coward · · Score: 0

      Hmmmm I wonder if you realize that n is the input variable to his one liner. If you define n to be 20, then you get output like this from the one liner:


      >>> n=20
      >>> print sorted(set(range(2,n+1)).difference(set((p * f) for p in range(2,int(n**0.5) + 2) for f in range(2,(n/p)+1))))
      [2, 3, 5, 7, 11, 13, 17, 19]

    57. Re:instant disqualification by Anonymous Coward · · Score: 0

      It has some nice things too like IIF and With statemnets. While I do code in C style languages primarily I can appreciate the clarity that having "end if" rather than a brace on a long block of code. Also prevents you from accidentally trying to close a block that includes another block of a different type doesn't get rid of all accidental scope issues but helps a bit.

    58. Re:instant disqualification by dbIII · · Score: 1

      A more practical reason is by being a single vendor thing that VB you learn is not going to be the VB in use in a few years time. I've learned VB when it had BASIC syntax, VB when it was effectively Pascal and now it's more like java than anything else. Add in DLL hell and that old stuff can't run on new systems while something like python (and thankfully recent MS ".net" stuff like the current VB) is future proof.
      So while it's more viable now than it used to be it's still pretty low on the list of a very large number of choices. I'm not sure python is a fantastic choice for beginners either since whitespace has meaning.

    59. Re:instant disqualification by dbIII · · Score: 1

      And now in 2015 we've still got computers running Win2k so that we've got something compatible with that 1990s VB environment to run such scientific VB scripts. It became abandonware. The VB you see now is in no way compatible with that old stuff, the VB between now and then was not only incompatible but it wrote over the libraries you needed to run the older stuff.
      VB in itself was not the problem - MS not supporting it was the problem. DLL hell turning it into a write once and then later port to a completely different language situation, where even current VB is unlikely to be able to use any of the existing code.

    60. Re:instant disqualification by Anonymous Coward · · Score: 0

      > print sorted(set(range(2,n+1)).difference(set((p * f) for p in range(2,int(n**0.5) + 2) for f in range(2,(n/p)+1))))
      yes, it work in python, you just need to put the value for n previously. For example (in one line also):
      n=40; print sorted(set(range(2,n+1)).difference(set((p * f) for p in range(2,int(n**0.5) + 2) for f in range(2,(n/p)+1))))
      and you get:
      [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37]

    61. Re:instant disqualification by Anonymous Coward · · Score: 0

      Actually that example is not even valid Python code, you'll get an 'n not defined'. Furthermore you need to indent it properly.

      ...

      Python is not friendly to 'one-liner' types of programs because it forces indentation.

      Aside from the fact that the previous AC's snippet assumes that the upper bound of "n" was defined elsewhere (which can be fixed with an expansion to "def sieve(n): [insert rest of code here]"), that is indeed perfectly valid Python code. Python has no problem with one-liners (this particular example being just a long and complex generator statement), and in fact you can use semicolons to put your excessively verbose version of that same code all on one line.

      But really, the parser is supposed to work with you, not against you, so why not write it on several lines to help readability? I fail to see how writing code on one line really proves its power.

      It proves that TFA's claim that Python can't handle complex constructs is completely bogus, for one thing.

    62. Re:instant disqualification by PCM2 · · Score: 1

      Yes. And the problem is that VB is MS only. It is a vendor lock in.

      It soon won't be, though. But I reckon waiting for this stuff to show up would be kind of a setback for a four-year college degree.

      --
      Breakfast served all day!
    63. Re:instant disqualification by shutdown+-p+now · · Score: 3, Insightful

      It also randomly renames things that have well-established terms already. E.g. "abstract" methods - all languages that have them, have agreed on the meaning of it for the past 30 years or so. But VB calls them "MustOverride". And "abstract" on classes is "MustInherit". And those labels don't even make much sense, because, taken literally, they make claims that are plainly not true (you don't have to inherit from an abstract class - you just can't instantiate its instances; and even if you do inherit, you don't have to override any abstract methods - it's just that your class is also abstract if you don't).

    64. Re:instant disqualification by shutdown+-p+now · · Score: 1

      This is exactly why Python is so popular as a teaching language these days - it also lets you skip most of the boilerplate for the initial exercises, and focus on the core concepts like conceptual execution, the notion of variables and values, conditionals and loops etc. It's a true OO ("everything is an object") language, but you won't ever see a class or a method call in hello world type code.

      Oh, and it has a built-in turtle graphics package. I don't think a better tool to explain things such as loops and recursion has ever been devised.

    65. Re:instant disqualification by shutdown+-p+now · · Score: 1

      I'd pick VisualBasic over Python as a beginners language.Plus VisualStudio is really good; its a good IDE, good debugger; its stable, its free; its widely used in the 'real world'

      And you can use it for Python, with everything that you wrote still being true.

      and you can focus 100% on "learning to program" without getting bogged down in configuring your environment or managing your toolchain or phyhon package management, library versions (python 2 vs 3), etc, etc, etc.

      For this kind of stuff you really don't need to. I would be extremely surprised if all the tasks that he covers in his class wouldn't be covered even by the base Python install downloaded from http://python.org/ (which PTVS will even tell you to do if it finds that you don't have Python). And if that is not true, then a prepackaged Python distro like Anaconda - again, a single-click install - will surely be enough.

      Besides, VB.NET is basically C# with training wheels; so you switch BEGIN and END for curly braces, realize procedures are just functions that return "nothing", and a little bit of other syntax and you are up and running in something that is pretty relevant.

      I would argue that the cruft that VB.NET puts on top of C# is mostly useless as training wheels - it's no big difference between IF..END IF and curly braces - and in some cases is actively harmful because it uses its own terminology that is not shared with any other programming language, in lieu of terms that are commonly used throughout the field (like MustOverride/MustInherit instead of abstract).

      Basically, if you are teaching people VB, you might as well teach them C# right away. It'll take 1% more effort, but they'll have a more useful skill from the get go, and knowledge of syntax will help them when it'll come to C++, Java, JavaScript etc.

    66. Re:instant disqualification by jmac_the_man · · Score: 1
      I'd bet this guy is teaching the kids VB Classic (formerly VB6), simply because there's a lot of high school CS textbooks that target it.

      The benefit to teaching the kids VB is that they get to see something on the screen that they built from scratch... right away. The benefit isn't to teach them something that they can take right into a job.

      Also, I think the VB6 IDE defaults to compiling to an intermediate language that runs in a runtime. It's possible to compile it down to bare metal, but I don't think that's the default.

    67. Re:instant disqualification by Anonymous Coward · · Score: 0

      Fortunately IntelliSense bridges this gap in all languages supported. Basic was created for beginners to learn programming. Generations of programmers have started with this language and it still gets the job done.

    68. Re:instant disqualification by Anonymous Coward · · Score: 0

      This isn't about churning out industry-ready programmers, it's about students learning the concepts of programming. The concepts students learn with VB are easily applied to other languages. Visual Basic is supported by the best IDE on the planet, Visual Studio, which is also available for free. Integrated compiler, debugger, and IntelliSense allow students to spend less time monkeying with syntax and configuring build environments.

      My first programming experience was with LOGO. It was an incredible immediate-mode environment to learn concepts like functions and looping. I wish this were still available to students. I shared my LOGO experience with a high school teacher and he was jealous because his high school didn't have anything like that. I think had to explain to him that we had that in 3rd grade. He looked confused.

    69. Re:instant disqualification by Celarent+Darii · · Score: 1

      I perhaps forgot the /sarcasm tag, but the point I was making:

      But really, the parser is supposed to work with you, not against you, so why not write it on several lines to help readability? I fail to see how writing code on one line really proves its power.

    70. Re:instant disqualification by Anonymous Coward · · Score: 0

      There are better BASICs now. There's one for DOS32, I forget the name of, but it lets you program in mixed basic and inline assembler, including defining new keywords, so basically, you can do anything in it.

      I highly recommend teaching programming in DOS. It keeps distractions away, as you can't be browsing the web or playing games while you're programming, and it gives you full access to the hardware, so you get to break stuff to see how it works. Unfortunately Nvidia, AMD and others have stolen our heritage away, as unlike VGA or Amiga AGA, how their products work is a secret, and you can't simultaneously learn lowlevel programming and cool graphics.

    71. Re:instant disqualification by jythie · · Score: 1

      Ah, so the requirements of the course do not match the language. I guess that kinda makes sense, but reminds me of those ultra-specific job descriptions that are obviously written with a specific person in mind. For instance, if I wrote the curriculum to include monkey patching, I suspect Visual Basic would suddenly find itself inappropriate.

    72. Re:instant disqualification by surd1618 · · Score: 1

      print sorted(set(range(2,n+1)).difference(set((p * f) for p in range(2,int(n**0.5) + 2) for f in range(2,(n/p)+1)))) Now do this in VB.

      Parent didn't say, "This is beautiful. Do this." Parent said (paraphrasing) Python is powerful. This is a good example of that. It's dense and it's awful, but (nested) list comprehensions are nothing if not powerful.

      And its not going to make one iota of difference what language you learned those fundamentals on in high school when you get to university.

      If it's not going make a difference, then why use a language that only works on one platform, rather than an open one, like Python or Ruby?

    73. Re:instant disqualification by Blaskowicz · · Score: 1

      Easy : use that older language version, have your students install Mono on Windows if that even makes a difference (or a linux VM, whichever they choose), don't use lambdas, iterators or asynchronous programming in an introductory programming course, I mean in C you would still do that crappy for loop with i = i +1 the same as a random BASIC from 1982.

    74. Re:instant disqualification by Anonymous Coward · · Score: 0

      Take your religious views elsewhere. You should have gotten over that when you grew out of your teenage years. There's way of thinking and of learning that the professor is/should be trying to impart that extends beyond the language involved. This isn't about coding, it's about computer science.

    75. Re:instant disqualification by BubbaJonBoy · · Score: 1

      My argument against VB - extending Edsger's original observation.
      "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."
      -- Edsger Dijkstra

    76. Re:instant disqualification by Anonymous Coward · · Score: 0

      I used QBasic / QuickBasic many years ago and found it useful, I had used various different versions of basic before that became available.

      I went on to learn assembly language and C but I started with basic.

      There's a language called Xojo which is very suitable for education, it's a kind of modern VB without all the .NET bloat.

    77. Re:instant disqualification by Anonymous Coward · · Score: 0

      "Yes. And the problem is that VB is MS only. It is a vendor lock in."

      The programming you'd pick up in a high school computer course is hardly language proficiency. There are no jobs for people with "high school computer science" on their resume. Its a very basic introduction to structure, program flow, conditionals, variable, type, parameters, functions.

      And your the idiot for quoting someone's point and completely missing it!

    78. Re:instant disqualification by UnknownSoldier · · Score: 1

      Ack, 'struct' should obviously be 'enum':

      enum Flavor
      {
          FLAVOR_VANILLA /*...*/ = (1 << 1),
          FLAVOR_CHOCOLATE /*.*/ = (1 << 2),
          FLAVOR_COFFEE /*....*/ = (1 << 3),
          FLAVOR_STRAWBERRY /**/ = (1 << 4)
      };

      Ignore the /* ... */ comments since /. formatting is broken.

    79. Re:instant disqualification by vux984 · · Score: 1

      If it's not going make a difference, then why use a language that only works on one platform, rather than an open one, like Python or Ruby?

      He explained why python wasn't suitable. Declaring variables and types is part of the curriculum.

      I don't know Ruby myself; so I can't comment on that one.

      Does he have to use VB? No. I'm sure he doesn't HAVE to. Pascal would probably be fine too for example. (Many Highschools have used it.) And I'm sure there are other suitable languages. But VisualBasic is a perfectly reasonable choice too. Plus its free and it only has to run on the school's computers so what difference does it really make? Complaining they chose VB is like complaining that the school has Windows computers, or taught them spreadsheets using excel instead of openoffice.

    80. Re: instant disqualification by Anonymous Coward · · Score: 0

      Recently asked to update a simple vb6 app. We don't have vb6 available and could not convert to something newer without purchasing a third party utility. Was simpler to rewrite instead.

      Vb6 is orphan stepchild that everyone ignores.

    81. Re:instant disqualification by Dr_Barnowl · · Score: 1

      Nope, the default is machine code, p-code is an option.

      Older VBs compiled to bytecode (p-code) by default, but the compiler for VB6 produces proper executables. p-code is a selectable compile time option (along with some optimizations and the ability to disable some checks).

      What it does do it LINK to a runtime. Most of the datatypes are in there, the arrays are bounds checked, etc. The performance of VB datatypes are responsible for most of it's reputation as slow - in particular it's string handling (it lacks an inbuilt StringBuilder type).

      If you're aware of it's limitations, you can do some good stuff with it. It's ideal for small (or even large) GUI apps, with a few libraries to replace some it's more egregious emissions you'd even call it professional.

      What it's not is modern, object-oriented, possible to get documentation on the web (easily - the best source of documentation is the last MSDN Library disk set that contained it's docs).

    82. Re:instant disqualification by Dr_Barnowl · · Score: 1

      I won't use VB.NET because it would destroy my VB6 knowledge to use something almost, but not entirely, completely different.

    83. Re:instant disqualification by morgauxo · · Score: 1

      That probably isn't the point. Did the original article say what track the classes were on, Computer Science or Information Systems? I'm thinking Computer Science but maybe that's just because it is what I studied.

      Anyway, at least when I was in school (~15 years ago I must admit) the question of marketshare was a non-issue for Computer Science students. The classes were meant to teach THEORY. The languages and platforms used were chosen to best present the theory (or just happened to be what a professor knew/liked). The professor could use BFK if that's what he thought best represented the concept he was teaching!

      All that practical stuff.. then popular languages.. that was assumed to not be worth teaching. It would all be obsolete by graduation time anyway! You were expected to learn that stuff on your own, maybe even on the job. The theory you learn though was supposed to make you better at it once you did.

      If you wanted to learn the actual tools employers were looking for.. then you went for Information Systems. Then you didn't learn theory so much. Also you took a lot of business classes. Instead of computer science your goal was it management.

    84. Re:instant disqualification by vux984 · · Score: 1

      VB.NET is nothing like BASIC of old, and Dijkstra's observations about BASIC simply do not apply to VB.NET.

    85. Re:instant disqualification by inline_four · · Score: 1

      Beautifully said! It's unfortunate that density (terseness) is frequently brought out under the auspices of "power".

      --
      Alexey
    86. Re:instant disqualification by Anonymous Coward · · Score: 0

      Actually VBScript is very close to VB6. Not a Java vs Javascript comparison at all, unless you are comparing VBScript to VB.NET.

    87. Re:instant disqualification by niftymitch · · Score: 1

      Your vbnc was last updated in 2010, .......

      Visual Basic .NET is now on version 12. vbnc is horribly behind, and ......

      On the flipside, Python now comes standard with most Linux distributions, and is standard with Mac OS X. It's very simple to install on Windows and even comes with a bare-bones IDE for editing code. In every respect, it is easier to get started using Python than to start using VB .NET, especially on non-Windows platforms.

      OK the out of date horribly behind should not be an issue in a basic class.
      A language that moves so fast that basic classes are obsolete is absolutely BROKEN!

      It is darn hard to build class material and train teachers. Class content often needs review
      to the point that modest revisions are just as hard as a full rewrite (something is broken here).

      A year or two of class work can be full of fundamental content that is built not quicksand.

      --
      Truth is stranger than fiction, but it is because Fiction is obliged to stick to possibilities; Truth isn't. Mark Twain.
    88. Re:instant disqualification by niftymitch · · Score: 1

      ....
          flCoffee = 8

      Verbosity is one of the reasons Pascal was a complete failure. It wasn't pragmatic and/or practical for SERIOUS coding.

      Pascal had the advantage of replacing a gaggle of teaching assistants with a compiler.
      As a teaching tool it is worthy of consideration.
      In reality finding Pascal compilers is moderately difficult which might exclude it.
      But as a first language capable of real programs it is real.

      I do have a bias. One of the best assembly programmers I know
      is also an astounding Pascal programmer. His assembly had all
      the organizational requirements that the Pascal language enforces but
      in assembly it is a free for all but he keeps it together.

      Proof to me was his six+ months of work on a BIOS with no emulator
      that booted the first time on new hardware when the hardware was done.
      Back when the MC68000 was hot cutting edge stuff tools were sparse and skilled
      disciplined programmers were a requirement. Skill and discipline still has value.

      --
      Truth is stranger than fiction, but it is because Fiction is obliged to stick to possibilities; Truth isn't. Mark Twain.
    89. Re:instant disqualification by Anonymous Coward · · Score: 0

      'n' is your 'limit'. On the python console type
      >>> n = 100
      then the line.

    90. Re:instant disqualification by Anonymous Coward · · Score: 0

      hello?

    91. Re:instant disqualification by slashdotwannabe · · Score: 1

      Sure, because lambdas and asynchronous programming is something that should be taught in an intro course. Right before they get into assembly.

      --
      This comment is my opinion and does not represent an official position of Donald Trump or others I do not work for
    92. Re:instant disqualification by jmac_the_man · · Score: 1

      I thought p-code was the default. I stand corrected.

    93. Re:instant disqualification by Anonymous Coward · · Score: 0

      the code is valid python. you just need to declare the value of 'n'
      indentation is irrelevant on single line python statements.
      derp.

    94. Re:instant disqualification by Caesar+Tjalbo · · Score: 1

      Where Python is for people with a rational aversion to curly braces.

      --
      "I'm not much interested in interoperability. I want substitutability. I want to be able to throw your software out."
    95. Re:instant disqualification by terjeber · · Score: 1

      BZZZT! WRONG!

    96. Re:instant disqualification by Anonymous Coward · · Score: 0

      If brevity is to be one of the criteria for choosing a language then APL generates primes in 17 characters

    97. Re:instant disqualification by Anonymous Coward · · Score: 0

      "its", not "it's", 4 out of 6 times.

      "omissions", not "emissions".

      Though the second one is debatable.

  2. This guy hasn't done his research. by nneonneo · · Score: 5, Insightful

    I understand the popularity at the moment of the Python, however this language is also based on the C language. When it comes to more complex constructs Python cannot do them and I would be forced to rely on C.

    It's pretty obvious that this guy hasn't done his research. This is a very ignorant statement about both Python and C in general.

    I'd love to see *any* "complex construct" that C can do, that Python cannot do in a general computer science/algorithm sense.

    1. Re:This guy hasn't done his research. by jellomizer · · Score: 2

      Not to mention there isn't a modern VB
      But VB.net which in generally is C# with a language wrapper. So VB.net is more c based then Python.

      --
      If something is so important that you feel the need to post it on the internet... It probably isn't that important.
    2. Re:This guy hasn't done his research. by Anonymous Coward · · Score: 0

      Agreed. Instant disqualification for that teacher.

    3. Re:This guy hasn't done his research. by Marginal+Coward · · Score: 1

      I'd love to see *any* "complex construct" that C can do, that Python cannot do in a general computer science/algorithm sense.

      Especially since in Python "complex is better than complicated." Although Python programmers sometimes do resort to C, it's always for speed of execution, never to somehow minimize complexity. In fact, since Python provides a simple and elegant system of object-oriented and generic programming, it's also better than C++ for jobs where speed of execution isn't the dominant factor.

    4. Re:This guy hasn't done his research. by Anonymous Coward · · Score: 0

      Exactly, what can C do that python can't? Except well, make your life difficult navigating pointers and looking for memory leaks.

      Also, the last time I checked you didn't have to declare variables in VB, certainly not the type.

      Python is an infinitely more robust cross-platform VB, everything VB could have hoped for but lacked. I'm really surprised MS hasn't come out with a P# that looks strikingly similar to Python (of course conincidentally only being able to hook up to MS databases).

    5. Re:This guy hasn't done his research. by rot26 · · Score: 1

      always
      never


      Seriously? Is Python THAT GOOD?

      --



      To ensure perfect aim, shoot first and call whatever you hit the target
    6. Re:This guy hasn't done his research. by slashdice · · Score: 3, Insightful

      The VB compiler is written in VB. C compilers are written in C. Why isn't Python written in Python? But maybe you know more than the people who know it the best, the core developers!

      --
      Copyright (c) 1990 - 2014 Dice. All rights reserved. Use of this comment is subject to certain Terms and Conditions.
    7. Re:This guy hasn't done his research. by Millennium · · Score: 1

      I'd love to see *any* "complex construct" that C can do, that Python cannot do in a general computer science/algorithm sense.

      More to the point, I'd love to see any "complex construct" that VB can do, that Python cannot.

    8. Re:This guy hasn't done his research. by Anonymous Coward · · Score: 0

      >I'd love to see *any* "complex construct" that C can do, that Python cannot do in a general computer science/algorithm sense.

      All things being equal, all the turing complete languages are isomorphic (i.e. +/- equal) in a general computer science/algorithm sense. What you are saying is true for each pair the turing complete languages. Your comment seems as well pretty ignorant.

      The devil is in the details. The expressivity of python and C are not the same. When we are talking about low-level (e.g. How to ensure efficient cache memory access properties with python?), C is by far the winner. Conversely, when low-level consideration (and consequently, usually performance) does not matter, python is a clear winner.

    9. Re:This guy hasn't done his research. by Anonymous Coward · · Score: 0

      It is pretty much the case that any language can do just about anything ... with varying degrees of difficulty. I've seen network servers written in Fortran, database maintenance routines in Cobol, and complex string manipulators written using set-based operations in Sql. A web server written in Javascript? Sure! I wouldn't recommend any of these, however they are possible.

      The idea, it seems, is to build a knowledge base of what programming really is ... start them out slow and build concepts without being too attached to any one language. In my day it started with Basic ... line numbers and all ... evolving into procedural concepts in Basic ... then to Pascal where everything was procedural. Today I'm not sure there is any analog to the old Basic, so skipping directly to a procedural language is probably mandatory. Perl might not be bad for that. Sure it can do objects, but it doesn't force you to ... and is high level enough to have a pretty shallow learning curve. Later in the course it could evolve into Objects ... and provide a nice segway to C#/Java where objects are your life. Advanced courses in C offered 3rd year+ would be nice icing on the cake.

    10. Re:This guy hasn't done his research. by qpqp · · Score: 1

      Exactly, what can C do that python can't efficiently?

      FTFY. It's a scripting language. Can be a decent one (e.g. if you don't mind the whitespace), but still a scripting language.

    11. Re:This guy hasn't done his research. by Anonymous Coward · · Score: 0

      I'd love to see how Visual Basic is based on C.

      How do I know if I set or not, in C??

    12. Re:This guy hasn't done his research. by PPH · · Score: 4, Insightful

      Exactly, what can C do that python can't?

      Handle blocks of code independant of formatting constraints like indenting.

      --
      Have gnu, will travel.
    13. Re:This guy hasn't done his research. by kthreadd · · Score: 2

      VB.NET is certainly not C# with a different syntax. They both compile to IL and run on the CLR, and they have similar features but they are different.

    14. Re:This guy hasn't done his research. by Anonymous Coward · · Score: 0

      > Also, the last time I checked you didn't have to declare variables in VB

      Then its been many, many years since you checked.

    15. Re:This guy hasn't done his research. by Marginal+Coward · · Score: 1

      Sorry - will you be so kind as to accept a modest apology? On very, very, very rare occasions I am just slightly inclined to be a little bit somewhat prone to a minor tendency to lean a bit in the direction of the smallest smidgeon of hyperbole.

      But seriously, folks, my statement was qualified as applying to "Python programmers", by which I mean those who have received and accepted the aforelinked "Zen of Python". If you're not among the faithful, I don't expect you to understand our religion, and I shall not proselytize you.

    16. Re:This guy hasn't done his research. by BarbaraHudson · · Score: 3, Funny

      Well, you know the saying - "Those who can, do. Those who can't, teach. And those who can't teach become administrators."

      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.

      -- Edsger Dijkstra

      --
      "Transparent" is a shit show that trades on every stereotype going. A man in drag is NOT a transsexual.
    17. Re:This guy hasn't done his research. by demonlapin · · Score: 2

      I'm a doctor, not a coder, but I did take C++-based CS101/102 in the late nineties, and I've played a little bit with the teach-yourself-Python courses. I'm fairly certain that I, having written next to zero code over the past 18 years, could write a piece of software in Python that cleanly accomplished everything the CS102 capstone project did, and in less than a week. Possibly in a day. Someone who knew their stuff could probably write it in thirty minutes.

      Granted, that's partially missing the point - our project was meant to teach concepts like using doubly linked lists, how to export them into a file and read them back in, choice of algorithm, hashing functions, etc., not just banging out code. But in terms of something that would be useful to the average person who might want to write a snippet of code here and there to simplify their life, as opposed to someone who plans to make it their life's work, Python is amazing. Python lets students build useful programs right away because it can do the heavy lifting until they're ready to learn how the sausage is made. Maybe you'll spark curiosity in someone who would never have given it a shot. Maybe all you get is a person who has some appreciation for what writing software actually entails. Either way, aren't we all better off? The serious students are going to learn serious languages soon enough.

    18. Re:This guy hasn't done his research. by Anonymous Coward · · Score: 0

      .NET is the framework. That's totally different and not to be mixed up with the languages that can utilse it.

    19. Re:This guy hasn't done his research. by Anonymous Coward · · Score: 0

      Seriously? Is Python THAT GOOD?

      It has its uses. I have moved a few programs between python to C and the other way around.

      Python has tons of language constructs that 'just does things'.

      When learning C is good for what does system do to your code. As it is pretty close to what the compiler will do.

      Python on the other hand does abstract many things.

      Something like
      x = {'var1': 123, 'var2': 456}
      y = x['var1']

      Is a boat load of code in C code unless you use some sort of external library.

      Python is good for starting as you get the idea of loops and ifs and functions. When starting that is a big hurdle. Something like pointers, deceleration, objects is a tough concept until you have a concept of what memory is and how it works.

    20. Re:This guy hasn't done his research. by slashdice · · Score: 1

      burn!

      --
      Copyright (c) 1990 - 2014 Dice. All rights reserved. Use of this comment is subject to certain Terms and Conditions.
    21. Re:This guy hasn't done his research. by Anonymous Coward · · Score: 1

      You left off, "Dammit, Jim".

    22. Re:This guy hasn't done his research. by serviscope_minor · · Score: 1

      Yeah, but Dijkstra was a proponent of structured programming and made that comment before BASIC gained control structures other than goto. The first version of BASIC I ever encountered had named functions and procedures. Of course it also had goto, gosub and computed versions of both...

      --
      SJW n. One who posts facts.
    23. Re:This guy hasn't done his research. by nneonneo · · Score: 2

      Efficiency needs to count programmer time, too. From watching first-year programmers in University struggle with C, to watching seasoned programmers struggle with C, I can assure you that Python wins on programmer efficiency. I've used C longer than I've used Python (~16 years for C, ~13 years for Python), so I am definitely comfortable with both, but I now use Python for virtually all general-purpose programming.

      Even when CPU cycles count, I will usually prototype in Python to get all the algorithmic details right before porting to C. Often I won't even port the whole program; a number of my recent projects have had C routines called from Python front-end code (so that the front-end can handle stuff like HTTP requests, text parsing, response formatting and the like).

      Finally, libraries like NumPy and Sage are taking Python beyond mere scripting and into the realm of serious scientific programming. It is now possible to write and use complex computer vision algorithms, mathematical algorithms, and heavy-duty number crunching (like MATLAB) in Python, meaning that a good amount of scientific computing is starting to be done with Python instead of more traditional languages like Perl, MATLAB or Java.

    24. Re:This guy hasn't done his research. by HiThere · · Score: 1

      The thing is, if you're using Python you don't implement lists, you use the built-in functions. So it seriously depends on what you want to teach.

      If you want to teach data structures, C is a better language, because you aren't teaching them to ignore the characteristics of the language. If you just want to teach basic sequencing, etc., something like Scratch is better. It's sort of a graphical subset of Smalltalk adapted for simple animations, or perhaps a cross between Smalltalk and Logo, but the programming is visual rather than typing. It's designed to be useful for grade school children. It's great for teaching sequencing, composition, logic, etc. It's lousy for teaching data structures.

      Personally, I can't see any justification for selecting VB *or* VB.net. I.e., I can't imagine what you are trying to teach that would make VB the preferred language. And while Python is a better choice, I can't see that as an introductory language either. Were I doing it I'd probably have them use Scratch first and then switch over to C, or a C++ subset that was equivalent. This would, however, be a jarring transition. Scratch is a contained environment designed to be attractive to young children. It would be an easier transition if one started with Squeak's etoys, but it would make for a rough start, and the last time I tried it (years ago) there were several bugs that would make getting started difficult.

      --

      I think we've pushed this "anyone can grow up to be president" thing too far.
    25. Re:This guy hasn't done his research. by TemporalBeing · · Score: 1

      The VB compiler is written in VB. C compilers are written in C. Why isn't Python written in Python? But maybe you know more than the people who know it the best, the core developers!

      The VB Compiler is most likely written in C, C++, or C#, and not VB. In part, because there are many things that one must actually drop to a lower level language like C/C++ to do in order to even implement some of the functionality of VB. So it's a mix - some portions are definitely written in VB, but the majority and certainly the core are not. This, of course, applies to VB and not BASIC in general since those lower levels would have been written in other languages (namely Assembly) and would have changed over time; where as VB came after the advent of C; even then its lower levels may still have been written in Assembly for some time due to performance needs.

      Likewise, Python is written in a mixed-mode, with C covering some of the core functionalities to "bootstrap" the language and provide high performance in certain areas; with most everything else written in Python itself.

      --
      Truth is like the sun. You can shut it out for a time, but it ain't goin' away. - Elvis Presley (source: imdb.com)
    26. Re:This guy hasn't done his research. by qpqp · · Score: 1

      All valid points.
      And I should have, of course, clarified, which efficiency I meant. For glueing stuff together, it is quite all right, as are most other current scripting languages.

    27. Re:This guy hasn't done his research. by HiThere · · Score: 1

      What is a "scripting language"?

      FWIW, Python compiles text file to run on a virtual machine, so it's a compiler. I'll agree that it's not particularly efficient, but most things I work with end up being I/O bound, so Python is "fast enough".

      What I don't like is that it's difficult to dump a piece of data to the disk without converting it into text first. Everything ends up depending on pointers (hidden from the user, so you don't need to worry as long as everything stays in RAM). This would make structs useless even if Python supported them. And this is the kind of inherent inefficiency that bothers me...but it's so much faster to develop in, that I'm using it now, and after I finish I'll consider what parts to convert to something else.

      P.S.: For many things Python is quite efficient, because so much can be done with built-in libraries (that were hand-coded and optimized in C). I'm not claiming that it's totally efficient, but there are lots of tradeoffs.

      --

      I think we've pushed this "anyone can grow up to be president" thing too far.
    28. Re:This guy hasn't done his research. by Anonymous Coward · · Score: 0

      True enough, Python only needs one formatting character rather than the 3 required by C. More is always better.

    29. Re:This guy hasn't done his research. by HiThere · · Score: 1

      The word you are looking for is "compile", not "handle". Python handles blocks of text better than C does (by many measures). It does, however, depend on code being "properly indented" to compile it properly.

      --

      I think we've pushed this "anyone can grow up to be president" thing too far.
    30. Re:This guy hasn't done his research. by Anonymous Coward · · Score: 0

      Python can do that, too.

    31. Re:This guy hasn't done his research. by goose-incarnated · · Score: 1

      I'd love to see *any* "complex construct" that C can do, that Python cannot do in a general computer science/algorithm sense.

      More to the point, I'd love to see any "complex construct" that VB can do, that Python cannot.

      Handle assignments without scope changing if you switch the lhs and rhs of the assignment? Last I checked, python could not do that.

      --
      I'm a minority race. Save your vitriol for white people.
    32. Re:This guy hasn't done his research. by AqD · · Score: 1

      Exactly, what can C do that python can't?

      Handle blocks of code independant of formatting constraints like indenting.

      Most of time it ends up with fucked up formatting or no formatting at all. That doesn't sound like a benefit.

    33. Re:This guy hasn't done his research. by qpqp · · Score: 1

      What is a "scripting language"?

      For me it's the glue that controls the events that invoke the state transitions of the (more or less) optimized parts of a system.
      And for many things you can get away without optimized parts. So as long as you don't mind the whitespace... ;) For kids though, I'm unsure, if Python's the right choice.

    34. Re:This guy hasn't done his research. by Millennium · · Score: 1

      I'm not sure I understand what you mean. Are you talking about switching the values of two variables? Python can do that in one line: "a,b = b,a" (no quotes).

      Or is this some kind of syntactical thing where you're asking to write "b = a" and having it mean "a = b"? I don't think Python can do that, but I don't know how you do it in VB either.

    35. Re:This guy hasn't done his research. by Anonymous Coward · · Score: 0

      well played

    36. Re:This guy hasn't done his research. by jellomizer · · Score: 1

      By different you mean you can finish a line without a semicolon. Ad a few reserved words are swapped around.
      However they need the same class structures and the .NET framework is the same.

      --
      If something is so important that you feel the need to post it on the internet... It probably isn't that important.
    37. Re:This guy hasn't done his research. by d34thm0nk3y · · Score: 1

      Exactly, what can C do that python can't?

      Also, expose a buffer overflow vulnerability due to a missing curly brace.

    38. Re:This guy hasn't done his research. by quietwalker · · Score: 1

      In my experience, 'serious' mathematical crunching, people tend to use fortran. The array-based nature of it also makes parallelizing fairly straightforward. There are random popular libraries or frameworks that do some of what folks have had in fortran for decades, but they usually all fall flat when it comes to the heavy lifting, like SciPy, or has licensing or costs issues, like MATLAB.

      On the other hand, I agree with you on prototyping in a scripting language. I used that technique myself many times, and it's great for proof of concept and initial architecture design. Also with scripting languages for general purpose code. Heck, I don't think I've updated my 'bundle of libraries I've written that I carry around to every job' in almost a decade. All that's built in to a scripting language already, or installable with a single command line directive.

    39. Re:This guy hasn't done his research. by wiredlogic · · Score: 1

      The BASIC he was talking about was the line numbered, unstructured distant ancestor of VB. VB.NET is mostly just a different flavor of C#. The quote doesn't apply any more.

      --
      I am becoming gerund, destroyer of verbs.
    40. Re:This guy hasn't done his research. by goose-incarnated · · Score: 1

      I'm not sure I understand what you mean. Are you talking about switching the values of two variables? Python can do that in one line: "a,b = b,a" (no quotes).

      Or is this some kind of syntactical thing where you're asking to write "b = a" and having it mean "a = b"? I don't think Python can do that, but I don't know how you do it in VB either.

      No, I'm talking about the pythonic way of losing and/or changing scope of the variables x and y when the statement:
      x = y
      is changed into:
      y = x

      No other language that I know of changes the scope when the LHS and RHS variables are changed - it breaks the law of least astonishment. The 'x' and 'y' that you access when you do 'x = y' is not the same 'x' and 'y' that get's accessed when you do 'y = x'. The end result is that you silently lose data 'cos no errors are thrown.

      (What's really ironic is that I'm actually writing some python code now to do string processing - ideal time to bitch about a language is when you're using it :-))

      --
      I'm a minority race. Save your vitriol for white people.
    41. Re:This guy hasn't done his research. by Lobachevsky · · Score: 1

      Being able to demonstrate to a class the difference between big and little endian is easy to do with unions in C:
      union {
            char str_value[4];
            int32_t int_value;
      };

      With python, you have to make a call to struct.pack() or struct.unpack() and trust the python gods that those blackbox functions are doing the correct things. This is an issue with any managed memory language where the endianness is hidden from the programmer.

    42. Re:This guy hasn't done his research. by Anonymous Coward · · Score: 0

      That's a nice appeal to authority.

    43. Re:This guy hasn't done his research. by PPH · · Score: 1

      Python can do that, too.

      Well, yes.

      --
      Have gnu, will travel.
    44. Re:This guy hasn't done his research. by Anonymous Coward · · Score: 0

      So obfuscation?

    45. Re:This guy hasn't done his research. by Anonymous Coward · · Score: 0

      Didn't Dijsktra also suggest that the teaching of BASIC should be a capital offence?

    46. Re:This guy hasn't done his research. by Anonymous Coward · · Score: 0

      True enough, Python only needs one formatting character rather than the 3 required by C.

      Of course that one formatting character can be either a space or a tab.

      And you can't tell the difference between them in most editors.

    47. Re:This guy hasn't done his research. by Anonymous Coward · · Score: 0

      See PyPy.

      It is a Python interpreter written in a subset of Python compiled by a SubsetPython-Type-Inference-compiler which was written in Python that is run on the standard Python interpreter written in C.

      Someone made a mathematical proof that an interpreter that is compiled can run a program as fast as the a program that was compiled by the compiler that compiled the interpreter. I hope you could follow that.

      PyPy is an implementation of that proof.

    48. Re:This guy hasn't done his research. by Dragonslicer · · Score: 1

      The VB compiler is written in VB. C compilers are written in C. Why isn't Python written in Python?

      I'm almost certain that you could write a Python interpreter in Python if you really wanted to, but it probably wouldn't have as good execution performance as an interpreter written in C.

      And before you claim, "See, that's what C can do that Python can't do!", a difference of a few seconds in execution time is completely meaningless to students that are just beginning to learn how to program.

    49. Re:This guy hasn't done his research. by itzly · · Score: 1

      Well, yeah, but he also said goto was harmful.

    50. Re:This guy hasn't done his research. by Dragonslicer · · Score: 1

      If you think Python's scope rules are bad, try out JavaScript.

    51. Re:This guy hasn't done his research. by utoddl · · Score: 1

      C can teach you about navigating pointers and about memory leaks. The point here isn't to create great applications, it's to teach programming. If you start with python, you have no idea what python is doing, either for you or within your programs. Much better to implement hashes, linked lists, etc. before jumping into languages where all that stuff remains magical -- and apparently cost-free -- to the coders without that experience. It has nothing to do with which language is better to write applications with; it's to develop an understanding of what programs are.

    52. Re:This guy hasn't done his research. by Millennium · · Score: 1

      I'm really confused as to how this works: at least if I understand what you're saying correctly, that certainly would break the principle of least astonishment. Is there a more thorough explanation of the topic that I could look through?

    53. Re:This guy hasn't done his research. by goose-incarnated · · Score: 1

      I'm really confused as to how this works: at least if I understand what you're saying correctly, that certainly would break the principle of least astonishment. Is there a more thorough explanation of the topic that I could look through?

      Yes. As an amateur language (lisp-ish) designer myself I was curious. The explanation is as follows (as far as I can tell from the mess that is the reference implementation for 2.3):

      Python implements variables as dictionaries. Each scope gets a new dictionary created. When encountering a reference to a variable that must be read the engine traverses the stack upwards until it finds the variable name in a dictionary. If it reaches toplevel without finding a name an exception is thrown.

      When encountering a reference to a variable that must be written the engine only searches up to the nearest stack pointer, at which point if the variable is not found it is then created and assigned. Hence the reason swapping around the LHS and the RHS in an assignment changes the scope of those variables, which (usually) loses data if the variable exists in a higher scope. This is the reason for using a global keyword when you want to write a variable but not when you want to read it - the global keyword was a hack around the dictionary implementation. The dictionary may be gone but the hack remains.

      My informal discussions with the python community results in "this is pythonic - and besides, if you forget the global keyword you deserve to lose data silently" (you can search stack overflow for this exchange). Python really is the only language that has these (and other) warts. Unfortunately, because I've maintained a ton of python in the past I've run into almost all the gotcha's - it has more than C :-(, which is a pity as it might have been a really great language if only a little language design went into it rather than (like PHP) it having evolved from "runtime config management for C".

      --
      I'm a minority race. Save your vitriol for white people.
    54. Re:This guy hasn't done his research. by Anonymous Coward · · Score: 0

      Even when CPU cycles count, I will usually prototype in Python to get all the algorithmic details right before porting to C.

      If you're using a programming language to "get all the algorithmic details right", you're doing software development wrong.

    55. Re:This guy hasn't done his research. by Darinbob · · Score: 1

      It is, but I use it. Knives are harmful, but they are also tools that can be very useful if used properly. "Goto considered harmful" is too often misinterpreted as a religious prohibition.

      The thing is we have learned from the over usage of gotos, and almost no one creates a mess of spaghetti code from scratch anymore because almost every single language makes it easier to use structured programming. For BASIC, most of us have learned through tragic experience that it's not good for beginners or veterans. Even BASIC evolved, it is not the language from the late 70s anymore. Still it's not great, but it serves as a suitable tool to keep non-programmer managers distracted while real work gets done.

    56. Re:This guy hasn't done his research. by Anonymous Coward · · Score: 0

      Because, VB and C and compiled languages, whereas, Python is a scripting language. Not the same thing.

    57. Re:This guy hasn't done his research. by Anonymous Coward · · Score: 0

      http://msdn.microsoft.com/en-us/library/4ft0z102.aspx

      You're welcome.

    58. Re:This guy hasn't done his research. by Anonymous Coward · · Score: 0

      The VB compiler is written in VB. C compilers are written in C. Why isn't Python written in Python? But maybe you know more than the people who know it the best, the core developers!

      There is a version of Python written in python. It's called PyPy. http://pypy.org/

    59. Re:This guy hasn't done his research. by Darinbob · · Score: 4, Informative

      You can teach some useful data structures in Python. Hash tables, balanced trees, priority queues, and so on. Python actually implements a lot of its data structures in Python. Many high level languages do that, including Smalltalk which really had no higher level primitive construct than an array.

      I'm a big fan of low level languages and that's what I use every day. I also used to be a teaching assistant at a university. And doing some advanced tree handling in C would be cumbersome for students a lot of times not because of the concepts but the details that get in the way.

    60. Re:This guy hasn't done his research. by Waffle+Iron · · Score: 1

      Exactly, what can C do that python can't?

      Handle blocks of code independant of formatting constraints like indenting.

      All the while enabling decades of bike shed arguments about brace formatting and countless bugs due to optional braces (because they are under-constrained).

    61. Re:This guy hasn't done his research. by Darinbob · · Score: 1

      Mostly because Python is primarily written as an interpreter, at least the most common versions of it. And interpreters typically want good runtime performance. A python compiler for python would be relatively straight forward.

    62. Re:This guy hasn't done his research. by Darinbob · · Score: 1

      I'd say that if indentation for blocks is the biggest complaint that can be raised about Python then it must be a near perfect language. So many newcomers to Python can't get past that one thing for some reason and dig deep enough to find out whether there are other actual problems with the language. I remember when people complained about C because it didn't have BEGIN and END and used all sorts of odd characters as operators, but get people used to it and it becomes the standard against which other languages are compared.

      And for what it's worth, since so many people don't even know this, Python is not the first or only language to use indentation as part of syntax.

    63. Re:This guy hasn't done his research. by TsuruchiBrian · · Score: 1

      Well they are all turing-complete languages, so ultimately they can all do the same stuff.

    64. Re:This guy hasn't done his research. by Darinbob · · Score: 1

      There are other ways to demonstrate endianness, and that method doesn't seem the easiest. Just demonstrate that there are multiple ways to split a value into constituent bytes then show how the different methods don't cooperate with each other. Of course if the class still has to be taught big versus little endian then they're probably still at a stage where 'union' is over their heads as well. I think it's a good idea to teach some assembler early, or at least computer architecture concepts, and do this before more advanced programming.

      I wouldn't worry about pack/unpack and whether they were implemented correctly any more than I would worry about the C compiler implementing unions correctly.

    65. Re:This guy hasn't done his research. by BarbaraHudson · · Score: 1

      The BASIC he was talking about was the line numbered, unstructured distant ancestor of VB. VB.NET is mostly just a different flavor of C#. The quote doesn't apply any more.

      Unfortunately, he was referring to Visual Basic, not VB.NET, in both the article and in replying to others in the comments section:

      There are a number of reasons why I have chosen Visual Basic as a programming language for GCSE and A-level and I hope the following justifies my choice.

      Visual Basic is used as an introduction to programming and is frequently used as a teaching language in a number of schools and universities across the country.

      Now maybe he just doesn't know the difference between Visual Basic and VB.NET, but that would be yet another reason to not have confidence in him making informed choices.

      --
      "Transparent" is a shit show that trades on every stereotype going. A man in drag is NOT a transsexual.
    66. Re:This guy hasn't done his research. by BarbaraHudson · · Score: 1
      It's also good for a laugh once in a while.

      "I'll create a GUI interface using Visual Basic. See if I can track an IP address."
      Though if that was funny or just painful to see is open for debate :-)

      --
      "Transparent" is a shit show that trades on every stereotype going. A man in drag is NOT a transsexual.
    67. Re:This guy hasn't done his research. by cshay · · Score: 1

      Because they both compile to IL, VB was forced to add up all the C#/C++ constructs (eg exception handling, etc) and it lost it's "ease of use/newbie" value when it became VB.NET. Don't you remember all of the screaming that non programmers did when they switched? They couldn't follow along.

    68. Re:This guy hasn't done his research. by david_thornley · · Score: 1

      What can C do that Python can't? Low-level programming. Compiling to something fast. Running on more systems (particularly in freestanding rather than host mode). Not all of these things are important for everything, and in particular they aren't important when teaching programming to beginners.

      --
      "When you have eliminated the unacceptable, whatever is left, however improbable, must be the truthiness" - Holmes
    69. Re:This guy hasn't done his research. by Anonymous Coward · · Score: 0

      Strings?

    70. Re:This guy hasn't done his research. by Anonymous Coward · · Score: 0

      It's hilarious how many programmers "hate" python because OMFG indentation!!1! Then turn around and praise the total awsomeness that is HAML, SASS, and YAML.

    71. Re:This guy hasn't done his research. by Anonymous Coward · · Score: 0

      PyPy

    72. Re:This guy hasn't done his research. by Anonymous Coward · · Score: 0

      Yeah, Bill Gates is a big fat loser.

      Making computers approachable and just getting the job done is more important than these meaningless flame wars that fire off on shit like this.

      I guess everyone should be programming at the bare metal as well, opcodes for everyone, why bother with any abstractions, they're just layers of mutilated bullshit.

    73. Re:This guy hasn't done his research. by Anonymous Coward · · Score: 0

      Python has lists, so it can do anything. He likely misswrote, or is not aware of the possibilities of making system calls. (Why, btw misswrote is not a proper word? We are living the /.-age, after all.)

    74. Re:This guy hasn't done his research. by Anonymous Coward · · Score: 0

      Not true:
      http://www.pythonb.org/

    75. Re:This guy hasn't done his research. by shutdown+-p+now · · Score: 1

      It's actually really simple (though I agree that it is surprising): if an identifier is assigned inside a code block (which is e.g. a body of function or a class; but not a body of a loop or a conditional statement), that variable is treated as a local variable throughout that entire block, unless there is a "global" declaration for it in that block. So:

      x = 1; y = 2
       
      def f():
        x = y
       
      def g():
        y = x
       
      def h():
        global x
        x = y
       
      def m():
        print(x)
        x = y

      Inside f, x is a local (because it is assigned to), and y is a global. Inside g, y is a local and x is a global. Inside h, both x and y are globals.

      This gets more interesting in m, where you'll get an error trying to read an unassigned variable when printing x, because x is treated as a local throughout the body, not after assignment (and the scope is still lexical, not dynamic - it doesn't even matter if assignment executes or not).

    76. Re:This guy hasn't done his research. by shutdown+-p+now · · Score: 1

      Why isn't Python written in Python?

      You mean, like this?

    77. Re:This guy hasn't done his research. by shutdown+-p+now · · Score: 1

      VB6 compiler is written in C++.

      What's even funnier is that C# and VB.NET compilers are also written in C++, even today (yes, there's Roslyn, but Roslyn-based compilers haven't shipped stable releases yet; the ones in VS 2013 are still the C++ ones).

    78. Re:This guy hasn't done his research. by shutdown+-p+now · · Score: 1

      I'm almost certain that you could write a Python interpreter in Python if you really wanted to, but it probably wouldn't have as good execution performance as an interpreter written in C.

      An interpreter would be slower. A JIT-compiler, OTOH...

    79. Re:This guy hasn't done his research. by Anonymous Coward · · Score: 0

      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.

      -- Edsger Dijkstra

      If Dijkstra wasn't dead, he'd laugh in your face. Dijkstra was going for humor (as is obvious from the original letter) and even if he hadn't, he was talking about BASIC as it was in the 70s, before the rise of structured programming, with pretty much nothing in the way of program flow constructs beyond IF...THEN... and GOTO. Modern BASICs, including VB.NET and even VB6 would've been perfectly acceptable to him, in terms of structured programming, though he undoubtedly would've had something biting to say about the syntax.

      Sadly, the denizens of Slashdot actually think your use of Dijkstra's words is clever, demonstrating their equal ignorance and lack of wit.

    80. Re:This guy hasn't done his research. by Anonymous Coward · · Score: 0

      It's not a formatting constraint if it's part of the syntax. That's like replying to "What can Python do that C can't" with "Handle blocks of code independent of braces."

    81. Re:This guy hasn't done his research. by Anonymous Coward · · Score: 0

      That isn't what VB is.

      Both C# and VB.NET are their own independent languages with their own histories. Microsoft has implemented them to have access to the .NET Framework, which is a common set of class libraries. Other languages have been implemented to access the .NET Framework as well, such as Iron Python ( http://ironpython.net/).

    82. Re:This guy hasn't done his research. by linuxrocks123 · · Score: 1

      The are multiple implementations of Python. One is, in fact, written in Python: http://pypy.org/

      The original Python interpreter is written in C for speed, not because an implementation in Python would be impossible.

      --
      vi ~/.emacs # I'm probably going to Hell for this.
    83. Re:This guy hasn't done his research. by Anonymous Coward · · Score: 0

      Newbies don't know what C is doing under the hood easier. C just makes it easier to delude yourself into thinking you know what's going on. In any case, we don't expect people learning to cook to start by raising and butchering their own cow.

    84. Re:This guy hasn't done his research. by Anonymous Coward · · Score: 0

      When you do this, be sure to inform your students that the program is not actually obliged to give you the byte corresponding to whichever position within the int32_t (or any particular value at all, really).

    85. Re:This guy hasn't done his research. by PPH · · Score: 1

      I'd say that if indentation for blocks is the biggest complaint that can be raised about Python then it must be a near perfect language.

      Never said it was the biggest complaint. Just one of the most obvious.

      "Other than that Mrs. Lincoln, did you enjoy the play?"

      --
      Have gnu, will travel.
    86. Re:This guy hasn't done his research. by Blaskowicz · · Score: 1

      Old BASIC with only if, goto and line numbers looks like Assembly I believe. Gosub is your call/ret. Of course it is a bit crap for something other than seeing your results in a debugguer or in blinking LEDs.

    87. Re:This guy hasn't done his research. by Anonymous Coward · · Score: 0

      Those who can, do.

      Those who can't, teach

      Those who can't teach, become politicians and lawyers.

      Those who can't teach, but can lie without remorse, become Democrats

    88. Re:This guy hasn't done his research. by Anonymous Coward · · Score: 0

      Ya but what is the Java JVM written in? Not Java.

    89. Re:This guy hasn't done his research. by Dr_Barnowl · · Score: 1

      > difficult to dump a piece of data to the disk without converting it into text first

      Sounds like you need to add some pickle

    90. Re:This guy hasn't done his research. by HiThere · · Score: 1

      Python doesn't implement its data structures in Python, though there is usually a Python implementation with the same interface...but which is a LOT slower. But Python doesn't have pointers. (References are close, but not really the same.) So Python isn't a good choice for implementing data structures as a teaching environment. I haven't looked into how Smalltalk implements them, but I suspect its basically the same approach. The advantage of references is that they allow garbage collection to be efficient, but the concept is sufficiently different from pointers that it prevents actual understanding at a low level.

      OTOH, I'm not sure how a pointer language should handle memory allocation and release in an introductory course. (I started with assembler and FORTRAN IV, so I don't have the correct perspective.)

      --

      I think we've pushed this "anyone can grow up to be president" thing too far.
    91. Re:This guy hasn't done his research. by HiThere · · Score: 1

      Well, no. Pickle doesn't solve this, as it requires the entire file to be one image. Shelve is closer, but still doesn't fit my needs. I need to stick data structs into a database, and what I settled on as the best option available is a combination of rexpr and ast.literal_eval. But that *does* mean converting everything into text to save it. (Pickle allows untrusted data arbitrary execution, whereas ast.literal_eval just reconstitutes forms that are built-in and are safe, or at least that's what the docs say.)

      --

      I think we've pushed this "anyone can grow up to be president" thing too far.
    92. Re:This guy hasn't done his research. by Anonymous Coward · · Score: 0

      It's easy to implement a list in Python.

      class List:
          def __init__(self, head, tail):
              self.head = head
              self.tail = tail

      Python wouldn't be my first choice because of its stupid class/method definition conventions (self as an explicit argument), but clearly as a way to teach data structures it is totally adequate. Much better than C, where you will have to deal with allocating and freeing memory all the time to deal with most of the interesting data structures.

      ML makes for more readable code, but making newbies debug type inference errors is a bad idea.

    93. Re:This guy hasn't done his research. by Anonymous Coward · · Score: 0

      Ironically, what he says here about Python is not true of Python but it was true of VB6.

    94. Re:This guy hasn't done his research. by Darinbob · · Score: 1

      There are indeed libraries for a lot of the optional Python data structures, they're not always built in. For example priority queues (heapq.py in the library), which are a pretty standard data structure taught in courses.

      The pointers are implicit in python in that assignments are by reference. References are essentially the same as pointers anyway for what matters here. You absolutely can implement trees in a straight forward manner in Python, it's done by Python itself in a few cases in the library, and google pops up lots of examples. And it's easy to understand code too, probably suitable for intro class or even an advanced class that's dealing with rebalancing.

    95. Re:This guy hasn't done his research. by Rakarra · · Score: 1

      I'm a doctor, not a coder,

      How often do you get to use that line, Bones? :-)

    96. Re:This guy hasn't done his research. by Rakarra · · Score: 1

      Also, expose a buffer overflow vulnerability due to a missing curly brace.

      Do you have an example? I've never seen a C file compile which has a mismatched number of bracers. Something that basic can be flagged as a syntax error.

    97. Re:This guy hasn't done his research. by HiThere · · Score: 1

      References are essentially the same as pointers anyway for what matters here.

      I think this is why we are disagreeing. I don't consider them the same. (Reference in Python doesn't mean the same as reference in C++. Those are, indeed, essentially pointers.)

      Using Python references does, indeed, enable a high level understanding, but it doesn't facilitate a low level understanding. And I consider hash tables (dicts) much more important than priority queues...which, of course, is why Python has them built-in.

      --

      I think we've pushed this "anyone can grow up to be president" thing too far.
    98. Re:This guy hasn't done his research. by demonlapin · · Score: 1

      Let's just say it's one of the more entertaining fringe benefits of having "M.D." after your name.

    99. Re:This guy hasn't done his research. by Anonymous Coward · · Score: 0

      Python is a language, and working interpreters have been implemented in several languages, including Python (PyPy).

  3. Perl, of course! n/t by Anonymous Coward · · Score: 0

    n/t

    1. Re: Perl, of course! n/t by Anonymous Coward · · Score: 0

      Nice dubs!

  4. Is Visual Basic still supported? by QuietLagoon · · Score: 1
    Does Microsoft even give Visual Basic full-throated support anymore?

    .
    And which version of Visual Basic is being used in the class? The old versions that worked, or the re-architected versions that suck?

    1. Re:Is Visual Basic still supported? by Anonymous Coward · · Score: 0

      Does Microsoft even give Visual Basic full-throated support anymore?

      Is this in any way related to skull-fucking?

  5. Scheme/Racket by Anonymous Coward · · Score: 0

    Give them at least a reason to smoke pot and drop acid behind the school.

  6. Translation by Anonymous Coward · · Score: 0

    Programming is haaaaaaaaaaaaaaaard

  7. prolog or haskell by Anonymous Coward · · Score: 0

    subject says it all, really

    1. Re: prolog or haskell by Anonymous Coward · · Score: 0

      Forth.

  8. BASIC because the B stands for... by Anonymous Coward · · Score: 0

    Beginners.
     
      I would suggest vanilla BASIC, at GCSE level (~15 years old) many of the target students may never have programmed before (or done very little). Nothing is more off putting that a challenging language syntax for beginners. I would suggest BASIC, FORTRAN or PASCAL for beginners. Let them understand the basic concepts of programming such a variables, arrays, logic, and loops and not get bogged down by syntax defined using non Latin characters as much as possible. It puts up a wall to the learning and could put them off programming for life

    1. Re:BASIC because the B stands for... by Anonymous Coward · · Score: 0

      Pascal for the win.

      You COULD use a subset of C without a problem though.

    2. Re:BASIC because the B stands for... by sribe · · Score: 1

      Beginners. I would suggest vanilla BASIC, at GCSE level (~15 years old)

      Excellent advice, for a programming course intended to taught in the 1960s and maybe 1970s.

      Hopelessly outdated advice for the 1980s and on.

    3. Re:BASIC because the B stands for... by PrimaryConsult · · Score: 2

      Actually no, excellent advice but for too old a user. At age 10 I started hacking away on a hand me down commodore vic 20 while everyone else was enjoying Windows. The stuff I discovered with a few reference manuals, sample programs on tapes, and the goal of building programs with menu driven interfaces...

    4. Re:BASIC because the B stands for... by Anonymous Coward · · Score: 0

      Exactly they should be using one of the current trendy crap languages.

      Basic is a good learning language, then to C. Skip the useless bullshit that is C++ or OO programming and maybe we can get back to having competent programmers out there.

      Real programmers can do assembly, if you cant then you are a wanna-be poesur.

    5. Re:BASIC because the B stands for... by Sperbels · · Score: 1

      In the early 80's pretty much every common computer you could get came with BASIC. It may not have been real useful in real life (well, actually it was since my first job was VB4), but I was 10 years old and teaching myself how to program. BASIC was awesome back then. It made me interested in computers.

    6. Re:BASIC because the B stands for... by Anonymous Coward · · Score: 0

      I can't learn anything that doesn't hold my interest. I tried Basic, I couldn't learn it, it put me off from programming for a few months. I finally gave programming another shot, this time with C. I was very interested, it looked like "math" and was easy to understand. A week later, I was messing around with ASM. I was about 10 years old.

      Many years later, I got to use Pascal in high school. It was better than basic, but left me missing C. Eventually I went to college where I got to skip intro programming classes and jump strait into C/C++ classes, data structures and algorithms and even some multi-threading. Got an A in the class. Took a VB.Net class, nearly failed it.

      My brother has the same issue, if something isn't challenging enough, he is uninterested and cannot concentrate. He was failing math class, his teacher told my mom he needed to go to summer school and take remedial classes. Instead, my mom yelled at the teacher and got him stuck in a math class 3 grades above him and AP to boot. He got an A.

      I spent my entire middle and high school experience being told I should not go to college because I was not smart enough. Turns out that I am quite smart, I just can't concentrate on stuff I don't find interesting. Even ADD meds don't help, they make it worse. While they helped me concentration, they only helped me concentrate on things I could already concentrate on, but reduced my already limited ability to concentrate on things that I already had trouble with. I also found ADD meds reduced my creative ability, which is detrimental to my ability to problem solve new or complex problems. Turns out I am good at abstracting out problems and simplifying them, which makes multi-threading and scaling issues relative easy for me.

      While I had an iron will and was determined to program, I'm sure there are others like me who are not so lucky. We don't need more programmers, we need better ones, but I can see benefit to most students being familiar with the basic ideas of breaking down steps on how to do things in order to program, because this is a useful ability for much of life. We need better ways of identifying potential programmers.

    7. Re:BASIC because the B stands for... by Anonymous Coward · · Score: 0

      Beginners.

        I would suggest vanilla BASIC, at GCSE level (~15 years old) many of the target students may never have programmed before (or done very little). Nothing is more off putting that a challenging language syntax for beginners. I would suggest BASIC, FORTRAN or PASCAL for beginners. Let them understand the basic concepts of programming such a variables, arrays, logic, and loops and not get bogged down by syntax defined using non Latin characters as much as possible. It puts up a wall to the learning and could put them off programming for life

      If language syntax complexity is really an issue use LISP. LISP has by far the simplest syntax.

      Python is a very good starter languages because it has multiple paradigms (imperative, functional and OO). This is in my opinion is more important than syntax. Not to mention Python syntax is acceptable.

  9. Doesn't matter by Anonymous Coward · · Score: 0

    It doesn't really matter that much, so I guess whatever teacher knows the best will be ok.

  10. Proprietary by mrflash818 · · Score: 5, Insightful

    No, thanks.

    Choosing a proprietary solution is not a good answer.

    --
    Uh, Linux geek since 1999.
    1. Re:Proprietary by Anonymous Coward · · Score: 0

      Why not?

    2. Re:Proprietary by dave420 · · Score: 2

      They are teaching how to program (using VB as the language in which to teach), not how to program VB. A difficult distinction to make, I'm sure. It's not comparable to teaching how to use MS Office, for example.

    3. Re:Proprietary by rockmuelle · · Score: 3, Interesting

      Look, I'm a huge Python and open source advocate and use it for almost everything I do, but the "proprietary" argument doesn't hold any water. VB, and Microsoft's languages in general, have seen more long term support than any open source language. They have consistently had a level of commitment to backwards compatibility and long term support that no open source language implementation can match. Sure, with an open source language you can fix problems yourself*, but if there's good support from the vendor, as is the case with MS, you never need to.

      You're going to need to give a much better reason than "proprietary" to discount the VB argument. There are lots of good ones, but this isn't one.

      -Chris.

      *though I'd argue that there are only a few of us out there with the chops to actually do that

    4. Re:Proprietary by puzzled_decoy · · Score: 1

      Visual Basic was introduced in 1991. Extended support ended in 2008.

      Python was implemented in 1989. It is still supported.

    5. Re:Proprietary by StormReaver · · Score: 1

      ...but the "proprietary" argument doesn't hold any water....

      "Proprietary" means:

      1) Support can be pulled at any time for any reason, and there isn't a thing you can do about it. See Visual Basic (it's so bizarre that you argue against your point, but don't even realize it).

      2) You are locked-in to the vendor's whims, and there isn't a thing you can do about it.

      3) You are restricted to the vendor's supported platforms, and there isn't a thing you can do about it.

      4) You have no idea what is going on under the hood, and there isn't a thing you can do about it (under threat of fine and/or imprisonment).

      There are more, but I don't have time.

    6. Re:Proprietary by Jeremi · · Score: 3, Insightful

      You're going to need to give a much better reason than "proprietary" to discount the VB argument. There are lots of good ones, but this isn't one.

      Proprietary isn't just a matter of whether the language is well-supported or not, but where it is supported.

      For example, say you've spent several hundred hours of your life learning Visual Basic, and then several thousand more hours writing the Great American Program, in Visual Basic.

      Now your boss wants you to get your program running on a Mac. Or a Unix box. Or a Linux box. Or anywhere that isn't Windows.... and here's where you find out that it simply can't be done, because Microsoft doesn't support anything other than their own OS's.

      So, all of the time you spent learning and programming with Visual Basic gains you nothing at this point; now you have to go back to square one, learn a different (hopefully less proprietary) language, and rewrite your program from scratch in that language.

      That's the real problem with "proprietary". You're locked in to doing only whatever your single-source vendor wants to allow you to do.

      --


      I don't care if it's 90,000 hectares. That lake was not my doing.
    7. Re:Proprietary by Anonymous Coward · · Score: 0

      "VB, and Microsoft's languages in general, have seen more long term support than any open source language."

      You are using a perverse and self-fulfilling definition of "support." Microsoft has ZERO support for these languages on MacOS or Linux, or on any computing architecture that doesn't also run Windows.

      A proprietary language is an especially ridiculous choice given the abundance of non-proprietary alternatives. The instructor had to go out of his way to screw this up.

    8. Re:Proprietary by sydneyfong · · Score: 1

      The argument goes both ways -- I've spent hundred hours of my life learning POSIX, and if my boss wants me to run a POSIX program in Windows, I'm pretty much doomed. (I know a bit of Win32 API if that helps...)

      "Open" does not mean "supported on all major platforms". It only means "can be supported by other vendors if they choose to". And if you choose a language or technology that is out of fashion, it doesn't really matter whether it is open or not.

      And yes, I know Microsoft Windows is POSIX compliant.

      --
      Don't quote me on this.
    9. Re:Proprietary by Anonymous Coward · · Score: 0

      It would be like sending your kids to English class in which they only read books by a specific publisher with a specific profit and political agenda, and in doing so making it more difficult to ever read books by other publishers.

    10. Re:Proprietary by Anonymous Coward · · Score: 0

      > VB, and Microsoft's languages in general, have seen more long term support than any open source language.

      Visual Basic was first introduced in 1991. It was a combination of Tripod and "EB" Embedded BASIC. There were [imcompatible] versions for DOS. Later versions of VB were completely different and required rewrites.

      """Mainstream Support for Microsoft Visual Basic 6.0 ended on March 31, 2005"""

      Python predates VB so where did "more long term support" come from ?

      There are many open source languages that were available well before 1990 that are still supported.

      > They have consistently had a level of commitment to backwards compatibility and long term support that no open source language implementation can match. Sure, with an open source language you can fix problems yourself*, but if there's good support from the vendor, as is the case with MS, you never need to.

      Complete rubbish. VB has never had good "backwards compatibility".

      """Visual Basic .NET is Microsoft's designated successor to Visual Basic 6.0, and is part of Microsoft's .NET platform. Visual Basic.Net compiles and runs using the .NET Framework. It is not backwards compatible with Visual Basic 6.0. An automated conversion tool exists, but fully automated conversion for most projects is impossible.[29]"""

    11. Re:Proprietary by AlvySinger · · Score: 1

      It can be. I have years of developing with a proprietary solution. And a very nice house, thank you. And an ability to sleep at night. Whilst some people want to argument amongst themselves or - more cordially be united in condemn of whatever nasty corporation it is this week - some of us are using tools to solve problems. Get over it.

    12. Re:Proprietary by Anonymous Coward · · Score: 1

      Look, you're a proprietary software shill, we get it.

      We get why you think using software that is proprietary, corporate owned and controlled should be taught to children. To get them dependent on your corporation of choice. We get why you want to change "proprietary" from being a dirty word. We get it because you use it, or develop it, or work for Microsoft, or learned Microsoft things the Microsoft way or have a MCSE degree from McBurger university. We get that you're connected at the hip to it or some related thing and want others to be attached to it too. Besides, it will be here forever, Microsoft was strong X years ago so they'll be strong tomorrow!

      Whatever, there are so many more reasons to not use proprietary languages than there are to use them. It is the burden of "teachers" wanting to push another platform limited, closed standard, corporate tied proprietary crap to go above and beyond justifying it.

    13. Re:Proprietary by Darinbob · · Score: 1

      Gotta get those kids indoctrinated into a corporation early or they may grow up to be free thinkers!

    14. Re:Proprietary by Anonymous Coward · · Score: 0

      Good thing the real world never uses proprietary solutions, whew! These poor kids are safe from that forever.

      Jesus christ slashdot is full of smug stupid fucking dbags. No wonder I forgot my login a decade ago.

      2005 reddit is better than shitdot.org in its entire history. And that was just with the founders posting shit and using their own extra usernames.

    15. Re:Proprietary by terjeber · · Score: 1

      Now your boss

      First, I'd recommend (futile, I know) you RTFA. Or at least what was posted here. The "Now your boss" isn't particularly relevant to a high-school student.

      wants you to get your program running on a Mac. Or a Unix box. Or a Linux box. Or anywhere that isn't Windows....

      You haven't been paying attention. .Net (VB is .Net) is officially open source and available for the platforms you mention. The C# compiler is even open source. No possibility of Embrace Extend Extinguish (if you don't understand why I can't help). Also, the language used in High School to teach kids the fundamentals of programming has no relevance to anything done for work. Ever.

  11. Teach them Java or C# by NotDrWho · · Score: 4, Insightful

    May as well teach them something powerful and useful from the beginning. If the test is based on Java, then why not start them on Java?

    --
    SJW's don't eliminate discrimination. They just expropriate it for themselves.
    1. Re:Teach them Java or C# by gunner_von_diamond · · Score: 1

      Agreed. Are kids not smart enough now to start off with Java/C#/C/C++ for that matter? IMO, learning the more diffficult languages first will make learning less complex languages much easier, rather then the other way around.

    2. Re:Teach them Java or C# by Anonymous Coward · · Score: 0

      I started studying CS with no history of programming before that and we started with Java, but in hindsight I think that it would have been better to start with C++. We went from Java to C++ (and Haskell/Prolog in other courses) and I found it difficult because C++ required doing things that Java didn't but which I had already taken for granted.

      Starting with C++ and then teaching in what ways Java/C# are easier to handle would have made more sense, I think. Serious project work was done in C++ completely.

    3. Re:Teach them Java or C# by Anonymous Coward · · Score: 1

      Java or C# are good choices because more languages have a C like syntax. VB.net and Python are the exceptions, not the rule. Both are poor choices for syntax reasons alone.

      If you teach Java, they can easily learn C# and code android, windows and enterprise java apps with framework training. With VB, you're stuck on windows and it's not in high demand. Python is in demand in some circles, but it's not going to allow them to branch out to mobile or outside of linux desktop/server apps much.

    4. Re:Teach them Java or C# by Anonymous Coward · · Score: 0

      Agreed. Are kids not smart enough now to start off with Java/C#/C/C++ for that matter?
      IMO, learning the more diffficult languages first will make learning less complex languages much easier, rather then the other way around.

      Agreed. VB.NET is just enough of a mish-mash of approaches to cause confusion. Just because a language uses more English (e.g., For loops) doesn't makeit better for learning how to program. In fact, if you take a look at logic courses, they only get interesting after you've moved away from language an into symbolic logic.

      Incidentally, I think that a symbolic logic course should be a requirement before programming.

    5. Re:Teach them Java or C# by Anonymous Coward · · Score: 2, Insightful

      May as well teach them something powerful and useful from the beginning. If the test is based on Java, then why not start them on Java?

      I think the entire attitude to go towards high level languages is the wrong approach.
      Introduction to programming is more about learning how a computer works and to demystify it.
      In that regard I think a complete beginner would have an easier time starting with assembly language.

      Yes, it will be harder to make a complex application, but from a learning standpoint it removes a lot of obscurity and pitfalls of high level languages.
      In assembly language every instruction does a very limited and often well defined thing. You get the small building blocks that you can create something larger from.
      The time to when it becomes apparent that you need good structure and commented code also appears a lot sooner.
      It also doesn't hide indirect access behind some pointer construct so students that start out with assembly won't have the problem understanding pointers and references that is common for those that started out with C.

      Prepare a framebuffer for them and have them draw unfilled and filled boxes in it or give them a putc function and make them write a primitive printf.
      Once they have done that they will not only appreciate high level languages but also avoid many of the problems that people who start out with high level languages have.

    6. Re:Teach them Java or C# by HiThere · · Score: 1

      Well, when I started the first thing we were taught was assembler...of course, assemblers were simpler then. I found it useful for quite awhile, but these days I never look at assembly code (though others do).

      To me it seems that C is the proper language to start with for high school or later. Younger students might benefit more by learning something like Scratch. But C is a "portable assembler". (Well, almost.) It is simple enough to do simple things in, and it enables the teaching of data structures, logic, debugging, etc. BUT DON'T STOP THERE. You also should teach Java, at least a bit of Scheme or Lisp, and probably Python and Ruby. And, of course, some C++. These latter languages don't need the depth of coverage that you should give to the first language (i.e., C), but enough that you can see what their strengths are. Say a week on each, in each case translating some program that you've done earlier in C.

      I've probably outlined more than a one year class, however.

      --

      I think we've pushed this "anyone can grow up to be president" thing too far.
    7. Re:Teach them Java or C# by Anonymous Coward · · Score: 0

      I could see using C#, but Java has a lot more setup and configuration to get everything working, which just muddies the whole learning process. I actually agree about using VB, it takes only a matter of minutes (heck seconds) to get Visual Studio started and have a basic "hello world" working....and it'll work the same every time.

    8. Re:Teach them Java or C# by AqD · · Score: 1

      Serious project work was done in C++ completely.

      was

      I can understand they should learn C for OS internals, but what's C++ for? Its object model is over-complicated and underused in most of serious projects, yet still inferior to Eiffel's.

    9. Re:Teach them Java or C# by utoddl · · Score: 1

      I strongly agree with this approach. Do some (admittedly toy) simple stuff in assembler first.

      Then move on to C as their 2nd language.

      Their 3rd language... can be whatever they want to implement in C. :)

    10. Re:Teach them Java or C# by Anonymous Coward · · Score: 0

      Write hello world in java. Stop reading this and do it now. This comment will wait.
      Now imagine people who are not stupid, but have never programmed in their lives, and explain to them why You need to write "class" and "static". That's basically why You shouldn't start with java.
      If You try to explain OO, You waste time telling them about things they don't need.
      If You don't, and You ask that they write that "just because", they do not understand what they do. Which is kind of the point of learning.
      And I'm sure You would have made them install netbeans, or eclipse or some automagical tool. Yes, these tools are useful, even integral to proper programming. But enterptrise-ready IDE's are often confusing to the newcomer. We want their minds unburdened by complexities as much as possible.

      As for C#, I honestly don't know. I had heard some good things, but it is not my business to know that language.

    11. Re:Teach them Java or C# by narcc · · Score: 1

      IMO, learning the more diffficult languages first will make learning less complex languages much easier

      Which is why we teach kids calculus in kindergarten -- to make learning arithmetic easier later on...

    12. Re:Teach them Java or C# by HornWumpus · · Score: 1

      When I first started coding, our card stacks would contain bazaar unintelligible bits of JCL.

      The teacher told us to ignore them.

      --
      John McAfee 'It was like that time I hired that Bangkok prostitute; to do my taxes, while I fucked my accountant'
    13. Re:Teach them Java or C# by david_thornley · · Score: 1

      C++ is not just an object-oriented language, and some of the desirability for large projects is based on the template system and how the standard library uses it.

      --
      "When you have eliminated the unacceptable, whatever is left, however improbable, must be the truthiness" - Holmes
    14. Re:Teach them Java or C# by Anonymous Coward · · Score: 0

      It's spelled bizarre, nimrod.

  12. If that's what you want by MikeRT · · Score: 3, Insightful

    Then switch from Java or Python to Groovy. It's got a REPL tool like Python and Ruby, compiles to Java bytecode with tight Java interop and usually looks more like Ruby or Python than most people's Java code. That and it's a substantially more marketable language than any dialect of BASIC.

    1. Re:If that's what you want by Archwyrm · · Score: 2

      Too bad Groovy's REPL is very nearly utterly useless since it can only compile and run a single statement/block at a time:

      groovy:000> def num = 1
      ===> 1
      groovy:000> println(num)
      Unknown property: num

      There are a lot of other things wrong with Groovy but I get how attractive it can be after you have already painted yourself into a corner with loads of horrendous Java code. I get paid to write Groovy (among other things) but I'd rather be writing Python.

      --
      Fascism should more properly be called corporatism because it is the merger of state and corporate power. -- Mussolini
    2. Re:If that's what you want by rvw · · Score: 1

      Then switch from Java or Python to Groovy. It's got a REPL tool like Python and Ruby, compiles to Java bytecode with tight Java interop and usually looks more like Ruby or Python than most people's Java code. That and it's a substantially more marketable language than any dialect of BASIC.

      Better learn them the basics in a programming language that will be around for the next 10-20 years. Python will, but Groovy? Never heard of it, or heard of it and forgot about it. I wouldn't recommend it. It will learn some people skills that are useful for simple tasks, on any platform. Some of them will move on to other languages, and for those people it doesn't matter if it's groovy or python. But for those who learn only one language - this one - it will matter.

    3. Re:If that's what you want by Anonymous Coward · · Score: 0

      A language that will be around in 10-20 years? Best to look at what survived the last 10 or 20 or 50 years. Fortran or Lisp sound good.

    4. Re:If that's what you want by Anonymous Coward · · Score: 0

      I don't believe you've checked the job market recently. Nothing is more marketable than VB.NET

  13. Which VB? by Anonymous Coward · · Score: 1

    The big question here is which VB he's talking about. As long as it's any of the VB.NET dialects then he has a point, it is a fully OOP language (single inheritance like Java) and capable of being both fully type-safe as well as able to infer variable by use. You can write in any editor and compile on the command line, including on Linux and Mac. The debugger experience is also quite good which could be good for troubleshooting. It all depends on what he's intending to teach. Sure, he could've just as easily chosen Java, Object Pascal, or C++, but I don't think that this language is any better or worse. These courses are for teaching concepts, the syntax is is mostly irrelevant.

  14. VBA/VB.Net and Python are very similar languages by Anonymous Coward · · Score: 0

    I've worked with both. Python has many features of a scripting language, but if you merge VBA and VB.Net, you get something very similar to Python. Of course you have some mapping syntax in Python and a few other things, but they even share a noticeable portion of syntax. Sure, Python has "self" references and VB.Net has "me", and VB technically uses End instead of indents to define code blocks, but there are programs that need only slight modifications to port from platform to platform.

  15. SRATCH by Anonymous Coward · · Score: 0

    Love that language... lots of cute little icons to drag and drop to build your logic. But beyond that...

    I would prefer students start with a language that requires them to 'do the right thing' (declare variables along with typecasting them, have to convert values from type to another, prototype function/procedure calls, etc.). Rather than one that would just sweep such things behind a curtain.

    The earlier you ingrain good habits the better your life as a programmer will be in the long run. Especially if you have to come back and 'rework' the code 2, 3, 5, 15 years hence.

    FredInIT

  16. node.js by Anonymous Coward · · Score: 0

    Yeah

    1. Re:node.js by Sperbels · · Score: 1

      I hope you're not suggesting that node.js is a language. This is the second time in the last two weeks I've seen someone say this.

  17. my vote: by buddyglass · · Score: 2

    Java. It has the broadest popularity in industry, isn't tied to any one company (e.g. Microsoft), can be developed using a wide variety of host operating systems (Windows, Mac, Linux), lends itself well to teaching O.O. design and has a wealth of free tools. It's also what the majority of universities use in their intro level courses. (Though that's changing.)

    1. Re:my vote: by Richard_at_work · · Score: 1

      C# and VB.net also match those criteria if you dont exclude Mono.

      Java is what the Open University uses for a lot of its courses, and I can tell you its a painful language once you've used something that has evolved past it.

    2. Re:my vote: by buddyglass · · Score: 1

      I've used Ruby and Java and, honestly, I prefer Java. But I recognize I'm an outlier in that respect. C#/VB + Mono gets you additional platform support, but not quite as robust as the situation with Java. Also, despite Mono, isn't the "spec" for VB tied to Microsoft in a way that exceeds Java's link to Oracle? C# and VB (especially VB) are also not as popular in industry. So Java has that advantage over those two. Nor are they what's commonly used in intro courses at universities which, IMO, should be a factor in deciding what to teach pre-university students.

    3. Re:my vote: by buddyglass · · Score: 1

      Java is pretty much only fit for the enterprise

      Google would seem to disagree.

      where it was developed in order to pad out kLOC numbers and the corresponding contracts.

      False.

      Enjoy your hello world in 5 lines of code, 50 lines of syntatic sugar, and 500 lines of XML.

      Exagerration. Hello World in Java is about six non-empty lines, i.e. on par with C.

    4. Re:my vote: by Richard_at_work · · Score: 1

      Nope, the spec is as linked to MS as Java is to Oracle, and you would have no problems finding a .Net job even tho its in lower demand (lower demand is all relative).

      Plenty of universities also use .Net mixed in with Java and other languages - the OU degree I recently finished started off with JavaScript for intro to programmng, migrated to Java for a more advanced course, introduced another set of concepts for UI stuff with VB.Net, and handled algorithms and computability using python.

      Nice mix, eh?

    5. Re:my vote: by Nemyst · · Score: 1

      My problems at this point with Java are A) it evolves very, very slowly and B) Oracle. I was far more confident in the language before Oracle took it over.

    6. Re:my vote: by gweihir · · Score: 1, Insightful

      Java is about the worst starting language possible. All the students will see is the horrible syntactic clutter it comes with. It will them take months to start to be able to differentiate between code that actually does something and syntax that is just there to satisfy the autistic compiler.

      --
      Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
    7. Re:my vote: by buddyglass · · Score: 1

      Huh. I thought the whole "community" aspect w/ Java allowed for more non-Oracle input into the development of the language, whereas VB and C# were tightly controlled by MS. If you're cynical you could view Java as being tightly controlled by the triumvirate of IBM, Google and Oracle. I agree you can find a job doing .Net, but I'd still argue if you had to choose between the two (C# and Java) then Java is probably the better choice of the two (if only because it potentially opens up Android positions and there are many more Android positions than Windows Mobile).

      If I were designing an undergraduate C.S. curriculum I'd want students exposed to Java, C, Python and SQL (arguably not really a "programming" language). C# would be a bonus. Probably also some functional language (Scheme, Lisp) just so they leave with a sense of what those languages are like. If I were designing a high school curriculum and had to choose a single language to teach, given the present realities of university curricula and industry adoption, I'd go with Java.

    8. Re:my vote: by Richard_at_work · · Score: 1

      The Roslyn .net compiler is open source, and Visual Studio 2015 comes with Android emulators and the ability to target IOS. I think I'm in a better position using .net than Java ;)

    9. Re:my vote: by TemporalBeing · · Score: 1

      Java. It has the broadest popularity in industry, isn't tied to any one company (e.g. Microsoft), can be developed using a wide variety of host operating systems (Windows, Mac, Linux), lends itself well to teaching O.O. design and has a wealth of free tools. It's also what the majority of universities use in their intro level courses. (Though that's changing.)

      Java is a bad language to teach programming with. It's a good language to show off some theory with, but that's really about it.

      It's also one of the reasons why Android doesn't have as good of performance as it could have.

      A decade ago, I would have used JavaScript or VBScript to start teaching - in part because of Windows Scripting Host; but now, I'd use Python as an intro to get students going; then transition them to C and C++, Pascal/Delphi, and others.

      --
      Truth is like the sun. You can shut it out for a time, but it ain't goin' away. - Elvis Presley (source: imdb.com)
    10. Re:my vote: by gbjbaanb · · Score: 1

      When I was a student doing computer science, they taught me:

      Pascal, C, assembler, Concurrent Euclid, Simula and Prolog.

      This was in the days before Java and .NET (almost in the days before C++!).

      The reason they did this was to teach programming, using the best tool (well, a teaching best tool) for each type job - the hardware course, for example, didn't use Pascal, the concurrency class didn't use assembler.

      All the people saying you should use language X or Y are totally missing the point. VB is just as good a starting language for anyone (though I think Pascal is better, but VB has much better tooling nowadays), starting with Java because its used in industry is both short-sighted and useless. Same applies to any language.

    11. Re:my vote: by darkwing_bmf · · Score: 1

      Exagerration. Hello World in Java is about six non-empty lines, i.e. on par with C.

      By that metric, I present the clear winner: BASIC

      10 PRINT "HELLO WORLD!"

    12. Re:my vote: by buddyglass · · Score: 1

      I agree. LoC needed to implement Hello World is a dumb metric. Even by that dumb metric, though, he exaggerates, since the number needed in Java is 6 and not 50.

    13. Re:my vote: by david_thornley · · Score: 1

      Java has more boilerplate than Python or Scheme, and typically requires a compile-run step. It's harder to write and test a short snippet to see what it'll do.

      --
      "When you have eliminated the unacceptable, whatever is left, however improbable, must be the truthiness" - Holmes
    14. Re:my vote: by david_thornley · · Score: 1

      Many other languages have Hello World programs that look a lot like BASIC's. Some are marginally simpler, not requiring the line number.

      --
      "When you have eliminated the unacceptable, whatever is left, however improbable, must be the truthiness" - Holmes
    15. Re:my vote: by darkwing_bmf · · Score: 1

      Actually, I don't think it's a completely dumb metric. It shouldn't be the only metric or even the most important one. However, for a beginner, there is a lot of value in quickly getting to the "I can tell the machine what to do and it does it" part with as few "toll gates" as possible.

    16. Re:my vote: by darkwing_bmf · · Score: 1

      True. And I bet most of them would be better for beginners than either Java or C.

    17. Re:my vote: by Anonymous Coward · · Score: 0

      Java is about the worst starting language possible. All the students will see is the horrible syntactic clutter it comes with. It will them take months to start to be able to differentiate between code that actually does something and syntax that is just there to satisfy the autistic compiler.

      Ugh, yeah, I hate that about Java. Even tried Scala but it wasn't working out for me either.

      From a Perl user's perspective, Groovy looked promising but I kept running into problems even using it for anything. Groovy1 or Groovy2? Oh you want to use it with Android? Go get the dev version and compile it. Except it still only half works because it's too new. Plus the runtime adds a ton of crap, memory use is high even for simple things, etc. Halfway through I decided Groovy didn't look interesting enough to deal with all that shit.

      Then I learned about JRuby and Mirah. Used Ruby and JRuby to get accustomed to the syntax, even mucked about with using it on Android via Ruboto, all of which was dead simple to set up and get started using. Good for quick prototyping, and in a lot of ways, Ruby itself feels like someone took Perl and made the OO less shit. I never had a reason to learn it before, but now I kind of wish I had sooner.

      Anyway, since this is a reply about Java, the rest of this is going to be about Mirah . . .

      Mirah takes Ruby-like code, turns it into Java, and compiles it down to class files. No runtime, no extra overhead, still statically-typed. Uses Java APIs inside Ruby-esque syntax. The resulting programs are fast and small. Has a crazy macro system that's used to provide syntactic sugar, such as Ruby style constructs like 10.times { |x| puts x } or attr_accessor(:field_name) without needing a runtime. The macro system's usable in mirah programs, too, and so you can create quality-of-life improving methods that can be used on existing classes, like adding new methods to String without having to create a new class, so you can create all sorts of boilerplate-saving shortcuts.

      For an idea of how the code looks in use, there's this example of what a really basic Swing demo looks like in Mirah, along with a bunch of other examples in their github repo.

      So far I really like it, but all isn't perfect. Getting set up is easy, but the documentation is fairly lacking so I've had to do a lot of experimentation after poking around their google groups page, github wiki, and source code. Especially if something goes wrong. Took me forever to figure out that I needed to add mirahc.jar to $CLASSPATH to appease an oddity of the macro compiler when using multiple source file with macros, for example. Sometimes the mirah compiler's syntax errors are really freaking useless, too, and you have to go hunting for where the error really is.

      Still, it's been more straightforward to actually use once set up, and there's a Ruboto-style android generator tool called Pindah that helps simplify the Mirah+Android scenario, so I've been enjoying experimenting with it both on desktop and mobile. Being able to ditch most of the boilerplate shit and focus on getting something useful done is really nice. I'd rather deal with its oddities than Java syntax any day.

    18. Re:my vote: by gweihir · · Score: 1

      I completely agree that using the JVM and compile some sane language to it is something else as using Java. There is also, for example, Jyton, which gives you Python when you must run on a JVM for some reason. (Sorry, cannot comment on Ruby, it is one of the few popular portable languages I have no experience with.)

      --
      Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
    19. Re:my vote: by Anonymous Coward · · Score: 0

      I completely agree that using the JVM and compile some sane language to it is something else as using Java. There is also, for example, Jyton, which gives you Python when you must run on a JVM for some reason. (Sorry, cannot comment on Ruby, it is one of the few popular portable languages I have no experience with.)

      I looked into Jython as a Java replacement, too. Seemed interesting, somewhere between Jruby and Mirah, and I already know enough Python that it would have made it easy to get started. Everything I read seemed to agree that Android development with it was impossible, though, and that was my primary reason for looking into Java alternatives.

      Mirah's weird, because it's not quite Ruby. It picks up the syntax, but there's no runtime (a deliberate design choice), so it relies entirely on Java API calls in the end. You lose some of the Ruby shortcuts, but it means you don't really need a lot of familiarity with Ruby beyond the basic syntax. The syntax alone is worth it, though, because it cuts out a lot of unnecessary typing and I'm finding it easier to read through code compared to Java or Scala.

      If you want all the odd things that make Ruby what it is, you have to go with JRuby, which is the ruby interpreter implemented in Java. Works on Android too, but with extra start-up and memory overhead. I had absolutely no knowledge of Ruby before this, so I started here until I got comfortable with it, then switched over.

      The whole thing makes me wish I'd picked Ruby up sooner. I always sort of dismissed it because the only compelling thing anyone ever mentioned about it was Rails, which I didn't care about. I've been using Perl forever and in most cases where I'd have been willing to use Ruby, it was easier to just throw out another Perl script instead, so I just never gave it a shot.

      As it turns out, I like the weird Smalltalk-esque object/message passing model and 100% OO design it uses. Everything is based on classes, objects, and methods, with no primitive types, so it ends up being super flexible. Even operators are just methods (so 2+2 is equivalent to 2.+(2)), which means you can define +, =, +=, etc. methods for any object, and you can also do something like "10.methods.sort" to get a list of everything you can do a number. It's like the unholy offspring of Python and Perl gained OO superpowers, and I like it.

      As a side-effect of the Mirah/android learning goal, I actually started using Ruby instead of Perl for random scripts, which is something I never expected to do.

      If you like Perl or Python at all, it might be worth checking Ruby out. Different enough to be interesting, but similar enough to be comfortable(ish). They even keep the first edition of the Programming Ruby book online here for newbies. Outdated but good enough for an introduction.

      They're not perfect (what language is?), and I have some gripes with things like Ruby's variable scope and some oddities in Mirah's implementation, but I've been finding them both nice to use overall despite some quibbles.

      I hope I'm not just sounding like some idiot fanboy here, because I'm not. In fact, I avoided Ruby for years because it didn't seem compelling to use and nobody ever made it sound interesting enough to spend any time with. I'm just trying to do what I wished other people had done and give a view of Ruby that isn't "LOL RAILS! RAILS RAILS RAILS! MOAR RAILS!" Maybe somebody will find it useful, who knows?

    20. Re:my vote: by terjeber · · Score: 1

      As someone else said, C#, for example, also fits those criteria, is open source etc. Once you have done a bit of work in C#, going back to Java is kinda painful. Design by Committee, which is what Java is now, is certainly a less efficient way of killing something than a bullet to the head, but it is also more painful.

  18. Python over Visual BASIC by mysidia · · Score: 0

    I understand the desire for students to learn about datatypes and working in a strictly typed language; however, it is not the essence of computer science.... it is a language convention. It is not fundamental to programming that you declare these things; it is a special requirement of certain languages that you provide a compile-time declaration.

    To meet arbitrary outside requirements to learn about how to work in a static typing system; I would suggest having students learn the basics of another language such as Go, Objective C, C, or C++. While 95% of their assignments will be done in Python.

    Or even Common LISP or Scheme might be a good second language, since it will require variable declaration as well, and it will give a chance to show examples of the functional approach.

    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.

    ~~Edsger Dijkstra

    1. Re:Python over Visual BASIC by bugs2squash · · Score: 1

      clojure is the way to go. That way they will improve their typing skills as they search for every printable ascii character on the keyboard that has some obscure and subtle effect on their `code'. They can improve their reading skills by grappling with poor explanations of vital concepts from the terrible books that cover the subject, and the teacher can have fun grading assignments since it is simple to read, like perl.

      --
      Nullius in verba
  19. Python. by Anonymous Coward · · Score: 0

    Python has a number of good points:

    - Quick to learn
    - Popular (so reasonably easy to google things etc.)
    - Forces new people to develop basically good habits re: code structure and use of whitespace for readability

    I have seen new people program in Python and in C/C++ and in the latter the frequency of students who don't develop good habits to make code readable and formatted neatly is a lot higher. You can commit atrocities in both, of course, but in Python it's less easy to do so by default.

    Also IMX the portability of python code across systems would make getting people who might e.g. only have Macs or whatever at home to work on code for homework easier.

    Are students in high school *really* going to make use of the sort of advanced features that might be slightly easier to do in more low-level languages than in Python? Or are they going to get bogged down in learning about memory management and pointers and bit-level stuff when you *could* be allowing them to do something interesting or fun in Python that might actually be fun and interesting and actually not make them hate programming?

    1. Re:Python. by Anonymous Coward · · Score: 0

      > Forces new people to develop basically good habits re: code structure and use of whitespace for readability

      And bad habits for code review and reviewability.
      You can't make a significant patch without whitespace changes, and you can't review a diff with whitespace changes ignored as you will miss functional changes.
      Reviewability of changes (as opposed to only final code, which is much more costly to do regularly though) is seriously hampered by significant whitespace.

    2. Re:Python. by qpqp · · Score: 1

      Forces new people to develop basically good habits re: code structure and use of whitespace for readability

      Just give them a good editor from the get-go and it doesn't really matter. Learning about manually managing your memory is arguably important as well and (the basics) easy to teach.
      Processing is a good alternative, btw. Easy and you can do *lots* of fun stuff with very little code and explanation. You also start with a boilerplate.

  20. VB6 was better by danbob999 · · Score: 1

    VB6 was simple and allowed very easy GUI creation, which is cool for young students. VB.NET is much more complex and not as useful (Excel macros). Python as a language is much better. However beginners will be limited to command line programs, which is not as cool.

    1. Re:VB6 was better by johnsie · · Score: 1

      I used to think that. Yes VB6 was very simple to use, but VB.net is alot more powerful. It's also much easier to depoly your applications. I remember in VB6 having to write a whole bunch of code to automatically update my application. VB2010 is fine.

    2. Re:VB6 was better by bugs2squash · · Score: 1

      Not at all, python's GUI is minecraft.

      --
      Nullius in verba
    3. Re:VB6 was better by qpqp · · Score: 1

      It's also much easier to depoly your applications.

      Welcome to 2015. The age of smartphones and phablets.

    4. Re:VB6 was better by Marginal+Coward · · Score: 1

      But what about IronPython? Oh, and there's also the fact that many Python distributions come with TkInter, and it has bindings for the most popular cross-platform GUI toolkits.

    5. Re:VB6 was better by danbob999 · · Score: 1

      VB.NET is more powerful, but not any easier to learn than say Java or C#.

    6. Re:VB6 was better by danbob999 · · Score: 1

      It's still not as easy / integrated as VB6. VB6 was a single package which integrated the IDE, the GUI designer. You could double click a button in your GUI to create a function associated with the "on click" event.

    7. Re:VB6 was better by Anonymous Coward · · Score: 0

      and you can do the same today in vb.net

  21. Javascript by jtara · · Score: 2

    You can declare variables. Or, not, and then likely get in trouble for it. I like that. (For teaching. ;) )

    It can be used for something useful.

    It is trending. It is starting to be used on servers and desktops, and so it is useful in almost ALL computing environments.

    It is a gentle intro to functional programming languages. It is NOT object-orientated, though you can pretend that it is.

    It's f*cked-up, but not nearly as f*cked-up as Visual Basic. I like that. (For teaching ;) )

    I like mildly f*cked-up languages for teaching. It gives the student a taste of the real world, without forcing them to go along with the completely ridiculous choices adults sometimes make.

    1. Re:Javascript by SQLGuru · · Score: 1

      I think Javascript is a good choice in terms of barrier to entry and examples available online. The only thing I dislike is that it is a dynamic language -- and I think that people learning to program need a very structured language as they are learning (protect them from their ignorance).

    2. Re:Javascript by A+nonymous+Coward · · Score: 4, Insightful

      That's probably true once they get past the initial hurdles. But for newbies who don't even understand the most basic concepts, trying to explain the difference between 123, 12.3, and "123", or why 12 / 5 is different from 12.0 / 5.0 is confusing.

      Javascriupt's primary benefit is letting the newbs discover for themselves whether they like programming. I used to tell people, way back in the day, to take any community college beginning programming course; if they couldn't wait to get to the class and stayed late at the lab using the class computers, they liked programming and would make excellent programmers. If they had to force themselves to keep going to class and ducked out of labs as soon as possible, they hated it and would make terrible programmers.

      Programming is like hot rodding up to the 1970s or so. You don't need a degree, you don't need classes, you can pick most of the basics up from books, friends, and experimentation. What counts is whether you like it.

    3. Re:Javascript by Nemyst · · Score: 1

      I dislike Javascript as an intro course because it's not strict enough. It's better, I find, to start with a stricter language and remove constraints once you're familiar with them. Otherwise, you'll get used to the language doing magic typecasting and to building objects haphazardly, and when you get to a language which requires class definitions and has strong(er) typing, you'll be confused and have to relearn everything. When you do it the other way around, you'll have a tendency to be more structured and to rely less on the language figuring out what you wanted to do.

      I still think the best languages for starting out are Java, C# or Python, probably in that order (if Microsoft's open source thing pans out, I'd place C# above Java).

    4. Re:Javascript by phantomfive · · Score: 1

      Yeah, I've had a lot of success teaching people to program using Javascript as well. More than any other language.

      --
      "First they came for the slanderers and i said nothing."
    5. Re:Javascript by Yunzil · · Score: 1

      Anyone who wants to learn mroe can find out if the like the concept, the puzzles, and the headscratchers with just as much time and thought as they want.

      I don't want puzzles and headscratchers in my programming language, thanks.

    6. Re:Javascript by SQLGuru · · Score: 1

      I'd argue C# and then Java because the non-programming pieces are "pointy-clicky, draggy-droppy". Running your web based code in IIS doesn't take a lot of knowledge about how to get IIS up and running --- whereas trying to do the same with something like tomcat is a pain for someone who is already struggling to learn programming. [Plus, Visual Studio is a very developer-friendly IDE.]

      Basically, remove all of the pain points so that they can focus on learning to code....... (for those of you who argue the using Microsoft products is enough of a pain point, it's easier for a noob than learning Linux because of the aforementioned pointy-clicky, draggy-droppy approach.....)

    7. Re:Javascript by A+nonymous+Coward · · Score: 2

      Programming and life in general always come with puzzles and headscratchers.

      The trick to being a good programmer is liking programming puzzles. That's the most important thing for a beginner to understand.

    8. Re:Javascript by Yunzil · · Score: 1

      Sure, whatever, but the language itself shouldn't be a puzzle.

    9. Re:Javascript by quietwalker · · Score: 1

      Javascript might be the next BASIC. "If you teach your students Javascript first, it will ruin them."

      That being said, with a set of very rigid, predefined set of exercises and test environments, it could be one of the best for learning. Within a web browser, you have an incredibly simplified, easy to manipulate UI, putting it far ahead of any other language with graphical controls, and the immediate feedback from evaluating scripts means experimentation and discovery are built into the combined platform.

      The problem, as I see it, is the functional aspects of the language. It's too big of a jump to have a new to-be-programmer learning functional programming before they've got a handle on writing programs that already mimic the procedural way they think.

      So just avoid those aspects, and the other 98% of it that was badly done, and you've got a great choice.

    10. Re:Javascript by quietwalker · · Score: 2

      The two top languages you should not learn by example are Javascript and PHP. In both cases, the low barrier to entry means that there's a wealth of code, but the average quality is extremely low.

      Not only that, Javascript is a poorly understood language, even by those who spend a lot of time with it. You'll likely end up learning coding by ritual instead of understanding why it works - and more importantly, why when you do it, it doesn't. It's like trying to learn ruby by starting with an RoR app coded by people who think the framework is the only architectural decision that needs to be made. ... which is most of them, apparently.

    11. Re:Javascript by A+nonymous+Coward · · Score: 2

      That's true. I bet only BASIC has more shoddy code out there (including Visual Basic). But I was thinking more of the newbie who has no clue and only wants to find out what programming is, not become an expert. You might almost say shoddy examples are better, because if someone still likes it, they can survive and prosper.

    12. Re:Javascript by A+nonymous+Coward · · Score: 1

      Interesting idea. You're basically arguing that the IDE and pointy-clicky interface are more important for newbies.

      It would be interesting to find a pool of newbies and do some comparisons.

    13. Re:Javascript by narcc · · Score: 2

      It is NOT object-orientated, though you can pretend that it is.

      You are very confused.

  22. Based on C? by ameoba · · Score: 0

    this language is also based on the C language

    No, it's based on BASIC. That's why they call it VisualBasic. It's a completely different family of programming languages.

    He loses credibility there & then just keeps piling on bullshit afterwards.

    --
    my sig's at the bottom of the page.
    1. Re:Based on C? by cpaalman · · Score: 1

      When he says "I understand the popularity at the moment of the Python, however this language is also based on the C language.", what he's saying is that Python is based on C.

    2. Re:Based on C? by Anonymous Coward · · Score: 0

      You're losing credibility because of your lack of reading comprehension.

  23. Javascript by A+nonymous+Coward · · Score: 5, Insightful

    I tell friends to play with javascript.

    * Any web page has source code to learn from.

    * Small edits to said source pages show instantaneous results and are painless.

    * No need for a comand line, which scares some people.

    * The GUI changes, like changes ol to ul, or adding table cell padding, or changing styles, or easy and fun.

    * Adding loops and conditionals are not very complicated, since most web pages with javascript provide sme examples.

    Overall, for someone curious about programming, it's about the best self-taught intro I can think of. Anyone who wants to learn mroe can find out if the like the concept, the puzzles, and the headscratchers with just as much time and thought as they want.

  24. VB? Been there, done that by fisted · · Score: 0

    took years to unlearn that garbage, and it wasn't even my first language.

    1. Re:VB? Been there, done that by BenJaminus · · Score: 0

      Mod parent up.

      As a Java programmer, I tried to do a little project in VB - found it bizarre.
      I recently had to learn some basic Python to help a teacher. TBH it seem more like it was based on Bash than C! I really missed brackets.

      Picking up Java is hard for some CS undergrads so can't go straight into that. Javascript is a good choice as students can do fun things with it, tho they'd have to keep it simple and not get too distracted by DOM or CSS.

      Better I think is PHP since it's hard to write a PHP project you can't trace through easily.

    2. Re:VB? Been there, done that by qpqp · · Score: 1

      I suggested processing in another post. Best of both worlds.

    3. Re:VB? Been there, done that by Anonymous Coward · · Score: 0

      Can you learn about threading or reflection with PHP?

  25. C# by RockClimbingFool · · Score: 4, Informative

    I don't really think you can beat C#. There is a freely available IDE. It creates applications for Windows (large install base). It is an object oriented language. The syntax is straightforward (you don't have to deal with complex point nomenclature, unless you want to for speed). Its a modern language that is as simple or complex as you want.

    1. Re:C# by Anonymous Coward · · Score: 0

      and ironically, C# and VB.NET share the same feature set! It is not hard at all to move between the two languages.

    2. Re:C# by Anonymous Coward · · Score: 0

      VB.Net = C# without squiggly brackets and semi-colons.

    3. Re:C# by Gondola · · Score: 1

      I personally like C# as a language and I use it for development, but I think Java is a more generalized language suitable for learning, even though I personally dislike parts of it. It's much more ubiquitous and easy to install and I think those aspects are essential for a learning platform.

      Yes, with the addition of Mono, C# can run on other platforms, and Microsoft appears to be pushing to open source it completely. Once C# has an easily-installable runtime and SDK for all major platforms (Windows, Mac, Linux) I think it would make a great learning language. I've installed Mono SDKs on two different Linux platforms, and both were complex installations with lots of prerequisites.

    4. Re:C# by Nemyst · · Score: 1

      You can also now use C# to build for Android with Xamarin, which is a platform I find very attractive for learning. You have clearer boundaries, better structure and a much cleaner API than what fully-fledged OS's provide.

    5. Re:C# by Anonymous Coward · · Score: 0

      I don't really think you can beat C#. There is a freely available IDE.

      Emacs, you mean?

    6. Re:C# by Richard_at_work · · Score: 1

      You don't even have to use Xamarin anymore.

    7. Re:C# by Bengie · · Score: 1

      I highly enjoy C#, it allows me to write flexible yet concise code that is easy to read. Many languages give you one or the other.

    8. Re:C# by ZeroSerenity · · Score: 1

      It also shares enough syntaxal (is that a word?) blood with other major languages like C++ and Java to make it a viable place to jump from.

      --
      For those who seek perfection there can be no rest on this side of the grave.
    9. Re:C# by Hadlock · · Score: 2

      How about Powershell? It has an ISE you can pickup and learn in less than 20 minutes. It takes about 2 hours just to get to the point where you're writing actual code. Powershell gives you full access to the .net library and runtime but the requirements to produce executable code are on par with Python. In fact Powershell looks a lot like "Python#" and IDLE.

      --
      moox. for a new generation.
    10. Re:C# by Tablizer · · Score: 1

      Ignoring vendor issues and focusing on the language itself, I have to agree. C# is a decent balance between features and readability.

      And unlike Python, it introduces students to the "C style" syntax programming, which they are likely to encounter in the work world in the form C, C++, Php, Java, JavaScript, Perl, etc. Python wouldn't give you that. (And Python's "tab issue" will stump a lot of newbies.)

      And because it came after Java, it improved on Java for the most part, and thus is superior to Java as a language.

      Python is better suited for an advanced course. It's a little "too clever" for a newbie.

      Side note: I just wish the C-style languages would invent a better case/switch syntax convention. C's sucks; "break" is dumb. But since it's a training course and students will probably need to know C's goofy case/switch construct in other languages (above), students might as well be shown it. But, do show them better case blocks in other languages and explain C's is an (unfortunate) leftover from a machine-centric era. They are like neckties: an uncomfortable habit from antiquity.

    11. Re:C# by Dragonslicer · · Score: 1

      It also shares enough syntaxal (is that a word?)

      The adjective you're looking for is "syntactic".

    12. Re:C# by Anonymous Coward · · Score: 0

      ... and its runtime environment and libraries is one huge mess; and it works sometimes on mono or not.
      Thank you, no.

    13. Re:C# by Anonymous Coward · · Score: 0

      I don't really think you can beat C#. There is a freely available IDE. It creates applications for Windows (large install base). It is an object oriented language. The syntax is straightforward (you don't have to deal with complex point nomenclature, unless you want to for speed). Its a modern language that is as simple or complex as you want.

      That argument applies to VB.NET as well. Also, VB.NET is arguably much easier to understand visually, given the use of "plain English" for many statements.

      You could say VB.NET is kind of a beginner's all-purpose symbolic instruction code. That's its heritage, which IMO is worth teaching as well - in the same way we teach how electronics or industrialisation first started. We owe a lot to those first steps, and this is article is talking about making programming *accessible* and *interesting* for kids - it's not an I.T. workforce training course.

    14. Re:C# by Anonymous Coward · · Score: 0

      emerge -v mono

      Gosh, that was tough.

  26. So not Python, but VB? by pscottdv · · Score: 3, Interesting

    I use Python every day and I love it, but he may have a point about variable declaration. Statically typed languages are important to learn about.

    I do find it hard to imagine what other constructs he is teaching his beginners that cannot be done in Python. Anonymous functions, maybe? Does VB do that yet? It didn't when I last used it. Tail-end recursion? I don't think VB does that either.

    But with so many languages to choose from, VB seems like it would be way down on the list.

    I also disagree about C being "incredibly complex for a beginner". I found C to be very easy to grasp and very good at exposing what the computer is actually doing under the hood. I would agree that programming C well is complex (and also time-consuming), but that is because it is simple, not because it is complex.

    --

    this signature has been removed due to a DMCA takedown notice

    1. Re:So not Python, but VB? by maccodemonkey · · Score: 1

      I also disagree about C being "incredibly complex for a beginner". I found C to be very easy to grasp and very good at exposing what the computer is actually doing under the hood. I would agree that programming C well is complex (and also time-consuming), but that is because it is simple, not because it is complex.

      As someone who went down this path and is now a professional software developer many years later... C sucks as an intro language.

      Yes, it's very important for the work I do now. It's clean, simple, and easy to understand. It's also totally useless to a beginner.

      I used BASIC (and HyperCard) way back when I was a kid because I could actually do things in it. Want to code a 3D game? I could do that. How about something that could play movies? Yep, easy. A basic text editor? I could do that too. With C? Lot's of hello world and "add these numbers together." C's minimalistic nature may be a strength for actual practice, but as a kid who wants to actually create things quickly, it sucks. I'd argue early education is about getting kids interested in coding, with less of an emphasis on actual practice they might use in a job 10 years down the road first. Just get them in the door first.

      If C was my only intro to programming I would have lost my mind. Try to get more kids interested in development with only a command line interface and see how that goes. (Yes, there are libraries like SDL, but that takes you fair outside the realm of novice student development.)

    2. Re:So not Python, but VB? by pscottdv · · Score: 1

      I started with BASIC on a TRS-80 myself. I am convinced it gave me a certain level of brain damage that took years to remove. On the TRS-80, everything interesting (graphics, sound) had to be done by poking into memory anyways, so it's not like BASIC gave me any powerful constructs to do those things. Mostly it got in the way. Honestly, C would have been better.

      But that's besides the point. I agree with you that C is a bad language for a beginner these days, but for the reasons you cited, not the ones in the summary. Specifically, because it is boring, not because it is "complex".

      That doesn't make Visual Basic the right choice.

      --

      this signature has been removed due to a DMCA takedown notice

    3. Re:So not Python, but VB? by Anonymous Coward · · Score: 0

      Python does anonymous functions just fine. Here is an AC's anonymous function:

      lambda x: x*x

    4. Re:So not Python, but VB? by dwpro · · Score: 1

      If you're talking about VB.net It does look like both tail recursion (compile time) and anonymous functions made it into the 4.0 framework (neither of which will probably make an 'intro' course, I would imagine). I think the best reason for choosing vb.net is how much more linguistic it is. Using things like "Function....End Function" or "If NumberA > NumberB Then .... End If"" Would be quite helpful to a beginner just learning to parse code. Combining this with an extremely helpful GUI like visual studios would make teaching much easier. In my view, the tooling is nearly as important as the language. However, I'd probably have to recommend Javascript just as highly, since the tooling there has gotten so much better. But I hate javascript too much to do that. I personally think VB.net doesn't deserve 1/100th of the reputation it fields in this forum, especially for an introduction into programming. It won't segue as easily into learning C or assembly, but I think for an intro course it beats a lot of the alternatives.

      --
      Millions long for immortality who do not know what to do with themselves on a rainy Sunday afternoon. -- Susan Ertz
    5. Re:So not Python, but VB? by pscottdv · · Score: 1

      multi-line anonymous functions for the pedantic. A lambda function is usually referred to as "a lambda" in my circles.

      --

      this signature has been removed due to a DMCA takedown notice

    6. Re:So not Python, but VB? by Just+Some+Guy · · Score: 1

      I also disagree about C being "incredibly complex for a beginner".

      One of the things I disliked about a data structures class using C was that you had to learn a fair amount of boilerplate and memory management to get up and running. Those are important things, but it's a frustratingly steep learning curve when you're more interested in a structure or an algorithm than you in the language. For example, here's a complete, working linked list in Python:

      .class Node(object):
      . value = None
      . next = None
      .
      .head = Node(); head.value = 123
      .second = Node(); second.value = 456; head.next = second
      .tail = Node(); tail.value = 789; second.next = tail
      .
      .node = head
      .while node:
      . print node.value
      . node = node.next

      I don't mind C, but it's way too easy to get distracted by coordinating all the moving parts, so that you lose focus on the problem you're trying to solve.

      --
      Dewey, what part of this looks like authorities should be involved?
  27. Java dynamically typed languages by sanosuke001 · · Score: 1

    Stop using dynamically typed languages altogether. Java is much more C-like than python or VB and can be used to teach most of what C can do in a relatively painless fashion. Kids aren't stupid; stop trying to dumb things down for them. Java handles memory allocation and other object-creation issues that might hamper someone learning a programming language while still containing classes, abstraction, inheritance, and a typed object/primitive hierarchy that will do a lot more to teach students about programming than confusing them with "hey this can be a number or a string or a pig object." Java also has many IDE's (Eclipse and NetBeans mainly) that help with the memorization issue in most API's and are very useful when learning. Compiling is much easier than in C as well but still retains the items necessary for understanding how compiling should work.

    --
    -SaNo
  28. Barriers to entry by Anonymous Coward · · Score: 0

    I think for the first programming language... elegance, beauty, power... all these things are minor concerns and are more about religious wars between programmers.

    Above all else it should be useful, require as little setup as possible or better yet just work on the machines the majority of students already own.

    Scripting languages that come installed on Macs or Windows PC's by default are a good choice for this no matter how terrible they are as actual languages because you can do something instantly with few special tools.

  29. Waste of time article by funkymonkjay · · Score: 0

    Even if your argument holds water, the market has already decided and basic anything is not in the running. Stop wasting people's cycles.

  30. Who cares by HBI · · Score: 1, Troll

    Every language named is Turing-complete and has the capability of implementing any algorithm you might wish. The whole argument is meaningless since the nascent developer will have to learn multiple languages across a career developing software. The language police are very boring by this point. I remember Pournelle arguing about what language was best in the 70s and I know the argument was happening before that.

    Dumb argument.

    --
    HBI's Law: Frequency of calling others Nazis is directly correlated with the likelihood of the accuser being Communist.
    1. Re:Who cares by Anonymous Coward · · Score: 1

      At some point, developers have to be forced to understand manual memory management. You can't manage memory properly with a garbage-collected language without understanding how to manage those resources on your own first. At least in my opinion. Sure, it can be annoying... but for a lot of simple programs, even in C you don't have to worry about malloc and free. Plus, C is *everywhere*, and a lot of modern languages are based on it anyway.

    2. Re:Who cares by Goaway · · Score: 1

      Actual, real-world programs do more than "implement algorithms". Turing-completeness is completely irrelevant in pretty much every single practical programming situation.

    3. Re:Who cares by david_thornley · · Score: 1

      There are languages that are better or worse for different purposes. We're discussing languages to teach to noobs. Obviously, a good software developer will have to learn several different languages, but that can come later.

      --
      "When you have eliminated the unacceptable, whatever is left, however improbable, must be the truthiness" - Holmes
  31. My choice would be... by Anonymous Coward · · Score: 0

    Haskell!

    1. Re:My choice would be... by Anonymous Coward · · Score: 0

      That would scare the poor kid away from programming for a lifetime. Recursion to do simple looping? That's crazy!

  32. What? by Mysticalfruit · · Score: 1

    Please describe a construct that you can do in C that you can't do in python?

    --
    Yes Francis, the world has gone crazy.
    1. Re:What? by PhilHibbs · · Score: 1

      Switch with fall-through?

    2. Re:What? by gnupun · · Score: 1

      Isn't that a design defect?

    3. Re:What? by Mysticalfruit · · Score: 1

      That's a no op for me since I've always avoided using switch/case statements anyway. I always saw switch statements as an omission of poor design...

      --
      Yes Francis, the world has gone crazy.
    4. Re:What? by Anonymous Coward · · Score: 0

      It's not about syntactic constructs, otherwise any language can be criticised for lacking something.

    5. Re:What? by Anonymous Coward · · Score: 0

      Syntatic sugar. Completely doable in Python.

    6. Re:What? by euroq · · Score: 1

      Yes. Yes it is.

      --
      Just because the U.S. is a republic does not mean it is not a democracy. Democracy/republic are not mutually exclusive.
  33. Pascal by Old+Aylesburian · · Score: 1

    It teaches good habits (but with the demise of Turbo Pascal I am unable to suggest a worthy compiler).

    I was taught Fortran originally and now spend my time working in C on embedded processors, which shows the futility of trying to teach a 'useful' language. Several other languages and assemblers have also passed through my brain in the intervening forty years or so, including Basic, but I still think that Pascal is the only suitable pedagogical language.

    1. Re:Pascal by Anonymous Coward · · Score: 0

      I learned on Pascal and really liked how it differentiated between procedures and functions; and still had GOTO so you could learn why not to use it; and differentiate between byVal and byRef.

      Absolutely awesome learning language. I'm afraid I don't have a compiler, either though. I did my pascal on a Mac, but cannot remember (for the life of me) the program.

    2. Re:Pascal by Halo1 · · Score: 1

      It teaches good habits (but with the demise of Turbo Pascal I am unable to suggest a worthy compiler).

      May I suggest the Free Pascal Compiler with Lazarus as IDE. There's even a Lazarus add-on to automatically configure it for pupils/beginners.

      Disclaimer: I am and have been one of the FPC developers for the past 17.5 years (also starting originally with Turbo Pascal, and then moving on to FPC once it became clear Borland wouldn't come out with a 32 bit DOS version).

      --
      Donate free food here
    3. Re:Pascal by jabuzz · · Score: 1

      You could try freepascal, excellant Turbo Pascal 7 compatibility and even a large amount of Delphi compatibility. It's free and versions exist for Windows, OSX and Linux.

      http://www.freepascal.org/

    4. Re:Pascal by Anonymous Coward · · Score: 0

      THINKPascal

    5. Re:Pascal by Anonymous Coward · · Score: 0

      What speaks against the FreePascal compiler? Also, Delphi still exists as successor to TurboPascal, so I am not sure what you mean by "demise".

    6. Re:Pascal by Sperbels · · Score: 1

      I still haven't figured out why GOTO is so demonized and I've been coding for 30 years. If you find you need to use, then yes, you probably need to go back and rework your code. But let's face it: In the real world sometimes you just need to get this code out the door and working. "GOTO is bad" is just a ridiculous mantra repeated over and over with many people not even understanding why....frankly, so is "VB is bad".

    7. Re:Pascal by Anonymous Coward · · Score: 0

      Delphi is now run by some corporate idiots that only cater to their old ways, they sell the IDE for like 5k and are not even interested in getting new customers, as they basically told me to fuck off when I asked if they were interested in offering some kind of free edition.

      But yep, Free Pascal is a very good modern compiler, both for beginners and for complex software, especially since they added lots of powerful features to the language like generics and operator overloading.

    8. Re:Pascal by quietwalker · · Score: 1

      GOTO is not immediately bad. It's simply a warning that the code might not be well organized, as language constructs already provide that functionality in more encapsulated forms.

      You've been coding for 30 years, so you've seen the OO folks pop up and yell and screech that without an explicit (sometimes they use the phrase 'pure', but rarely) OO language, coding can't be done at all! Like, how could you organize with only dumb structs and functions? Java really ruined a lot of people in that aspect, making design patterns a required part of their certification without explaining that they're just communication shorthand, as opposed to say, required, explicit class names. I occasionally have to fight someone with "pattern prejudice," like this, and it's always an uphill battle combating ignorance.

      GOTO is just like that, only with folks using the slightly higher level languages screeching at those coming from assembly, or those who didn't have to worry about reserving/jmping to high memory.

      But what do they know? If a program can't rewrite it's own code, what good is it?

    9. Re:Pascal by david_thornley · · Score: 1

      GOTO is a code smell. It's so general that it usually doesn't give good clues as to how it's being used in this specific case, and therefore makes the code harder to understand.

      --
      "When you have eliminated the unacceptable, whatever is left, however improbable, must be the truthiness" - Holmes
    10. Re:Pascal by dbraden · · Score: 1

      Something you could checkout is Lazarus (http://www.lazarus.freepascal.org/). It's a Delphi compatible IDE using the Free Pascal compiler. As a bonus, there are versions for Windows, OSX, and Linux.

    11. Re:Pascal by euroq · · Score: 1

      You know, this perked my interest and I went researching why GOTO is bad. As it turns out, it was a long process. Dijkstra himself made "a case against the goto statement" which was later presented as "goto considered harmful." Donald E. Knuth also made a statement which disagrees with GOTO always being evil.

      Dijkstra:

      Finally a short story for the record. In 1968, the Communications of the ACM published a text of mine under the title "The goto statement considered harmful", which in later years would be most frequently referenced, regrettably, however, often by authors who had seen no more of it than its title, which became a cornerstone of my fame by becoming a template: we would see all sorts of articles under the title "X considered harmful" for almost any X, including one titled "Dijkstra considered harmful". But what had happened? I had submitted a paper under the title "A case against the goto statement", which, in order to speed up its publication, the editor had changed into a "letter to the Editor", and in the process he had given it a new title of his own invention! The editor was Niklaus Wirth.

      Knuth:

      I believe that by presenting such a view I am not in fact disagreeing sharply with Dijkstra's ideas, since he recently wrote the following: "Please don't fall into the trap of believing that I am terribly dogmatical about [the go to statement]. I have the uncomfortable feeling that others are making a religion out of it, as if the conceptual problems of programming could be solved by a single trick, by a simple form of coding discipline!"

      --
      Just because the U.S. is a republic does not mean it is not a democracy. Democracy/republic are not mutually exclusive.
  34. Translation... by Anonymous Coward · · Score: 0

    He knows very little about programming languages because the reasons he gave in this explanation are invalid or untrue. This reeks of MS propaganda that has succeeded in brainwashing poorly informed teachers.

    There's nothing special about declaring variables. VB is not a smooth introduction to C++. You don't require C in order to work with Python. If the idea is to transition to more "advanced" languages, Python already has advanced capabilities beyond VB. It is not that Python is the "simpler" language where VB is more "advanced" and C++/C# are more "advanced" yet. Python is in the middle, not VB. VB is the more primitive language.

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

    Apparently this applies to teachers too.

    1. Re:Translation... by qpqp · · Score: 1

      Great quote, and insightful conclusion. Amen.

    2. Re:Translation... by gweihir · · Score: 1

      I fully agree. I think the main problem here is on the side of the teacher.

      --
      Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
  35. I think VB is pretty good, but not very 'Basic' by Timmy+D+Programmer · · Score: 1

    I like VB.net but I'm not so sure it's basic enough for beginners. But the transition from VB to C# is extremely easy I agree there.

    --


    (If at first you don't succeed, do it different next time!)
  36. Two Camps by djbckr · · Score: 3, Interesting
    I see two camps:
    • The people that want to know what goes on in the computer - systems level stuff
    • The people that want to get something done - application developers

    The first people would do good to learn straight-up C, and graduate to C++. The latter group should learn Python/Java/C#/Javascript/HTML/CSS/SQL. Though I don't use Python regularly, I think it's a good starter language.

    1. Re:Two Camps by Anonymous Coward · · Score: 0

      The second group could also be called "The people that don't want to know what goes on in the computer, even though they probably should."

  37. follow the money by Anonymous Coward · · Score: 0

    It's very suitable to start children on the path to vendor-locked-in darkness. That very vendor has been cosying up to the British government exactly to help "improve" the teaching of "computer skills".

    1. Re:follow the money by Anonymous Coward · · Score: 0

      Yes, because people only learn one language in their lives.
      I too learned programming with VB6 and I now I've been working in the simulation industry for years as a C++ programmer (and I also know any other mainstream language you want to throw at me).
      So yes, stop being an idiot, the first language one learns does not matter at all.
      I know guys who started with C, Pascal, Java and even Lisp and went on to being good programmers in other languages. I also know plenty of guys who never went nowhere, but I'm pretty that it would still happen whatever the language they started with.

    2. Re:follow the money by rwa2 · · Score: 1

      Mod AC parent up.

      If VB is what the teacher is most comfortable with, and he and the students can do the most impressive "first projects" with it, then by all means use VB6.

      I started learning by myself with Turbo Pascal. And ostensibly my first exposure to "programming" was with MS Office macros. Neither were great languages, but I got them to do interesting things, which were motivational. They were also useful, in that in my first temp jobs I could help office people set up mail merges and do stuff to their inventory and things like that. And then, finally I was also motivated to learn other, "better" languages when I hit their limitations. Sounds perfect for a HS course.

    3. Re:follow the money by jythie · · Score: 1

      Yeah, but also look at how many people started in Pascal, a language intended ONLY to teach, and then stayed there.

  38. How about No Language by Egg+Sniper · · Score: 3, Interesting

    I knew a Professor (of biomedical engineering) who suggested it would be best to teach introductory programming outside of any language. Teach the concepts in their most general, basic form before allowing an individual language to force understanding into an arbitrary syntax.

    I first learned in C++, then later relearned and made extensive use of Visual Basic, then switched to Matlab, and now I'm just starting to learn Python. I personally had a very difficult time with C++ and found Visual Basic to be much easier to grasp. That is likely the result of many things, only one of which is the specific languages I experienced.

    In my opinion what's more important than the first language you learn is that you learn a few languages early on, all at once - the more varied the better. Seems to work for learning statistical analyses.

    1. Re:How about No Language by qpqp · · Score: 1

      Why do you want to scare the kids? They want to sit in front of the computer trying out things. Not listen to a (potentially boring) lecture by some (potentially opinionated) (high-)school teacher.
      There's so many great languages to dive right into and have fun on the first day, like logo, scratch, even processing, and further, C and Java fit the bill. But theory? Let them learn it by doing it.

    2. Re:How about No Language by quietwalker · · Score: 2

      My first CS in college was like this. The teacher was very high and mighty into the theory. Pure academic.

      "Computer Science," he said, "does not require computers." "When I wrote my first program, it was with pen and paper, and that's all you'll ever need."

      So we ended up learning the same way, an introductory computer course where the first half was lambda calculus & church encoding, and the second half was functional programming with APL using an onscreen keyboard emulator since half the keys don't exist on a normal keyboard.

      It was a crappy way to learn, and I'm sure it did it's job to weed out half of the 300 or so students that had to take it their freshman year. In fact the only thing I really learned is that just because someone has a huge body of knowledge, it in no way qualifies them to be a teacher, much less a competent teacher.

    3. Re:How about No Language by Dragonslicer · · Score: 1

      I knew a Professor (of biomedical engineering) who suggested it would be best to teach introductory programming outside of any language. Teach the concepts in their most general, basic form before allowing an individual language to force understanding into an arbitrary syntax.

      That works well for the first couple weeks, and possibly for introducing new concepts after that, but eventually you want to know whether or not the stuff that the students are writing works correctly. It's a lot easier to do that with a computer.

    4. Re:How about No Language by david_thornley · · Score: 1

      Also, it makes it very difficult for most people to keep motivated. There is a need for weeder classes, but they should be a little way beyond the introductory class.

      --
      "When you have eliminated the unacceptable, whatever is left, however improbable, must be the truthiness" - Holmes
  39. The future is ... by jjlucas76 · · Score: 1

    Python of course! a multi-platform object-oriented scripting-functional programming language. However If for any reason the option must be something with a Microsoft flavor as in introduction, you might as well use PowerShell.

  40. 2 cents worth by Anonymous Coward · · Score: 0

    In my day, High School taught Basic (year 1) and Pascal (year 2). Today, Visual Basic far surpasses the capability of either of these by dumping the young developers directly into an object oriented environment. IMO, a firm grounding in a procedural language like pascal will make life easier as you mature into Object Oriented concepts ... This could be done by starting with a language like perl or Pascal ... then evolve into VB/C# to pickup OO. An advanced course in C would really fill in the gaps nicely ... a firm grasp on the basics can give you some great insights on what the higher level OO/scripted languages are really doing behind the scenes.

    1. Re:2 cents worth by Anonymous Coward · · Score: 0

      How old are you, 50 or more?
      Pascal had objects since... hmm 20 years ago?

  41. We used C in high school by Anonymous Coward · · Score: 0

    Why is C too complex all of a sudden? Because it's too low level? Is it too much to understand how a computer actually works these days?

    Judging by the younger developers I've been seeing, apparently it is.

    1. Re:We used C in high school by Anonymous Coward · · Score: 0

      Seconded. If you can manage Pascal, you certainly can manage at least a relevant subset of C, one has only to realize that there is no need to go into the hairy stuff. Besides C can serve as a good starting point for exploring a lot of other languages besides, as you rightly point out, it actually makes you think about how a computer works -- which is a good thing in itself.

      Other benefits with C:

      1. It's reliable, you never get in the position VB puts you where you can have a working program which you copy over to another identical machine, and suddenly it stops working. Or you where you shut down the computer and come back later, only to suddenly have it suddenly not working.
      2. C programs are easy to deploy, as opposed to for instance java.
      3. Compiler error messages tend to be pretty concise, readable and comprehensible, unlike what many other languages manages to produce. Yes java, c++, I'm looking at you.
    2. Re:We used C in high school by gweihir · · Score: 1

      What I see in practice is that we have 90% that have no clue and 10% that are really good. While not all of the really good people can program C, they all do understand the concepts and could pick it up in a short time. One main characteristic of the 90% is that they do not understand basic concepts of computers, like pointers, memory locations, registers, etc. These people are using computers as black boxes. That is fine for users, but not for people that create software.

      --
      Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
    3. Re:We used C in high school by Anonymous Coward · · Score: 0

      Why is C too complex all of a sudden? Because it's too low level? Is it too much to understand how a computer actually works these days?

      Judging by the younger developers I've been seeing, apparently it is.

      Students in high schools now have the intellectual development of a primary/elementary/grammar school-age children of the 1970s. If they are not spoon-fed everything they whine like babies. I experience this daily as a teaching assistant at a major university.

    4. Re:We used C in high school by euroq · · Score: 1

      Holy shit AC.

      It's reliable, you never get in the position VB puts you where you can have a working program which you copy over to another identical machine, and suddenly it stops working. Or you where you shut down the computer and come back later, only to suddenly have it suddenly not working.

      That never happens with C? Are you kidding me?

      C programs are easy to deploy, as opposed to for instance java.

      WHAAAAT?

      Compiler error messages tend to be pretty concise, readable and comprehensible

      OK I've officially been trolled.

      --
      Just because the U.S. is a republic does not mean it is not a democracy. Democracy/republic are not mutually exclusive.
  42. No License fee, no skills. by netsavior · · Score: 3, Funny

    Finally, a nationally branded computer science educational program, we need to build our brands for captive audiences, or we might lose grip.

    Art - Photoshop 101
    Literature - Kindle Classics
    Math - MSExcel
    Writing - MSWord
    History - Amazon Prime Presents: Ken Burns - American Minutiae

    That way our kids won't know how to do anything without a license fee.

  43. Also fails history. by Comboman · · Score: 1, Informative

    Since BASIC was introduced in 1964 and C was not released until 1972, it is highly doubtful that BASIC is in any way "based on C". BASIC is patterned after Fortran and to a lesser extent Algol. Those language also influenced C, though in different proportions (more Algol, less Fortran), but any claim of BASIC being C-based is quite laughable.

    --
    Support Right To Repair Legislation.
    1. Re:Also fails history. by shutdown+-p+now · · Score: 1

      "C-based" is modern speak for "Algol-derived" for people who don't know what Algol is.

  44. the message is in the language by Anonymous Coward · · Score: 0

    That depends on what you want. If you want "enterprise programmers", both of those are spiffy. If you want to impart understanding, then not so much. Basing the test on java is a bit of a giveaway here, though. And hey, "teaching the test" is de-facto industry best practice these days.

  45. Lower Level != "Complex" by svanheulen · · Score: 5, Insightful

    I never understood why people think that C, or even assembly, are "too complex" for beginers. Obviously they're complex if you're trying to do something complex like graphics but why would a beginner need to do stuff like that? They should be learning the fundementals, which are often obsucred by higher level languages. Wouldn't it make more sense to start lower (and simpler) and work your way up so that you have a solid understanding of what's happening behind the scenes in higher level languages?

    1. Re:Lower Level != "Complex" by Anonymous Coward · · Score: 0

      I believe the theory is you want a language that is more similar to English, such as Pascal or Basic. C and it's variants are more yoda like in their syntax which gets in they way of teaching very basic stuff like variables, loops, scope, etc.

      AVariable : String; // A variable is a string (similar to how you would say it in English)
      string: AVariable // string is AVariable (yoda)

    2. Re:Lower Level != "Complex" by gweihir · · Score: 2

      The experience I have made as an academic teacher in that area is the EE types have no problem at all with C, while CS types often struggle. The thing is that many CS types do not really understand what a bit/byte is, what a pointer does, what machine-code looks like and how it is executed (I am not talking about reading or writing it, just the main ideas), etc. This is a failing of the teachers though, not of the language. Understanding these concepts is critical for any professional software developer. Otherwise you end up with people that have no idea what a memory-footprint depends on, what run-times depend on or how security vulnerabilities actually work. That is a bit like educating EEs that cannot change a light-bulb...

      --
      Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
    3. Re:Lower Level != "Complex" by qpqp · · Score: 1

      What do we need? A Number (i.e. Int), a character, ...
      What is this? This is the number five.
      Int aNumber = 1;
      What's Yoda here?

    4. Re:Lower Level != "Complex" by Nemyst · · Score: 2

      You want them to learn the abstract concepts of programming. With C, you quickly get bogged down in memory management, notions like pointers, the complete lack of object-oriented programming, awkward functions and weird workarounds like variadic functions. You can learn that stuff after you've understood what a loop is and how variables work.

    5. Re:Lower Level != "Complex" by svanheulen · · Score: 1

      Exactly, so I would think starting with simple things in assembly (or C to a lesser extent) would teach them these fundimental comcepts better then starting in a language like Visual Basic. Knowing how computers work at the lower levels allows you to be a much better software engineer even when using higher level languages.

    6. Re:Lower Level != "Complex" by svanheulen · · Score: 2

      Memory management and pointers are some of the core fundemental concepts in programming. Those are things you SHOULD be learning near the beginning. And just because there are confusing things in C doesn't mean you'll run into those when learning the basics.

    7. Re:Lower Level != "Complex" by Anonymous Coward · · Score: 0

      Integer is aNumber that equals 1 would be better stated as:

      aNumber is an integer that equals 1.

      That's why Pascal was used for quite a while:

      aNumber : integer := 1.

      There are many other examples where the syntax of C gets in the way. A for loop comes to mind

      for (int x = 0; x 50; x++)

      is more complicated than

      for x := 0 to 50 do

      Don't get me wrong, I prefer C syntax and have probably lost 5 months of my life typing begin and end rather than { } (damn there goes another second) but when learning completely abstract logic for your average student, cutting out unnecessary complications is key.

      Teaching is about teaching one concept at a time. If you throw a bunch of concepts, the student will take longer to learn.

    8. Re:Lower Level != "Complex" by Anonymous Coward · · Score: 0

      Exactly, so I would think starting with simple things in assembly (or C to a lesser extent) would teach them these fundimental comcepts better then starting in a language like Visual Basic. Knowing how computers work at the lower levels allows you to be a much better software engineer even when using higher level languages.

      While I agree assembly language should be taught to students, introducing them to a high-level language, namely BASIC, and then having them implement routines written in assembly language callable from BASIC would be the best of both worlds. When I began programming as a hobby in 1983 I learned BASIC and within a few months was learning assembly language. Over the years I have used a variety of programming languages as a hobbyist and as a professional. I do not feel my exposure to BASIC harmed my ability and aptitude in any way.

    9. Re:Lower Level != "Complex" by Anonymous Coward · · Score: 0

      Answering questions you asked yourself is always really easy.

      But why would a CS student (not necessarily a software engineering student) who's learning an algorithm know that the type they want is constrained by the implementation of the hardware they are using? An Int is not the same on all hardware as you probably know. What are it's limitations? What are some alternatives?
      What does any of that have to do with learning algorithms? Nothing.

      EE's necessarily understand hardware implementations and see the connection to the low level programming language used. CS is a theoretical math discipline that doesn't even require the use of a computer.

    10. Re:Lower Level != "Complex" by Anonymous Coward · · Score: 0

      I would say for a beginning CS high school student, all of that should be abstracted. I do believe that strong typing improves understanding because weak typing is fairly vague in what's going wrong. It's been so long since I've been a CS student, I couldn't tell you how I learned.

    11. Re:Lower Level != "Complex" by goose-incarnated · · Score: 1

      You want them to learn the abstract concepts of programming. With C, you quickly get bogged down in memory management, notions like pointers, the complete lack of object-oriented programming, awkward functions and weird workarounds like variadic functions. You can learn that stuff after you've understood what a loop is and how variables work.

      You don't have to get bogged down, use a library! Anyway, why would someone learning python learn how to construct a linked-list (the basic structure of most CS fundamental concepts)? What C misses is a library, but there are plenty for your taste [shameless plug] - here's one that I work on when I have the time and/or the inclination.

      You most definitely don't want to teach a language where all the things that happen are "magic" under a hood that no one can open. C is perfect for teaching engineering students. Not so much for CS students - for them use SICP. For neither student do you want to perform vocational training. You want to educate thinkers, not train drones.

      --
      I'm a minority race. Save your vitriol for white people.
    12. Re:Lower Level != "Complex" by Anonymous Coward · · Score: 0

      Because every future computer science drop-out starts out wanting to program games, and so they're drawn to languages which promise quick & easy graphical manipulation.

      I think C is a perfect beginning language. So is BASIC and to a large extent Pascal. It's critical for students to understands variables and their relationship to memory. So you want to avoid dynamic allocation and GC. They also need to understand how to build data structures. That means no built-in associative arrays. If you try to tell students not to use these things in other languages, it's like telling a kid not to eat the cookie on the table. All he's going to think about is the cookie and pout about not being able to eat it, not what you're trying to teach him.

      My first language was BASIC on the TI-85. The next year I got a computer, discovered BBSs, then Linux, and picked up Perl and a short time later this new thing called Javascript. It wasn't until much later that I realized that I was able to pick up Perl and Javascript so quickly because of BASIC. But it really wasn't until I learned C that computers made any sense to me.

      Note that I never had any formal education, except for a few programming classes I took in college as electives. I actually ended up helping the teacher grade the other students in those classes because it was so easy. But this was _before_ I learned C. IME, C was the most instructive language for me, and I'm dumbfounded that I was able to excel at programming (relative to others at a tier-school with a respected comp.sci department) as self-taught knowing only BASIC and some dynamic languages. But the most difficult concepts for most of the students to learn in those classes I ended up helping the teacher were the most basic--variables as named containers and the use of conditional statements in controlling program flow.

      Academics deride GOTOs in BASIC, C, and Pascal, but without one realizing it, they actually teach students the fundamentals of flow of execution, without the instructor having to lift a finger. It's like free-play for kids--little kids learn to play by playing without any rules. It's only later that you add structure, _after_ they've explored and experimented and can appreciate the benefit of additional structure and rules in organizing complexity.

    13. Re:Lower Level != "Complex" by Anonymous Coward · · Score: 0

      Exactly. A simple language that barely manages your memory and is small and sane (C) makes way more sense than magic-do-it-all-and-hide-everything languages. They should be learning C regardless of what the newest hippest languages are. And I say this as a python programmer.

    14. Re:Lower Level != "Complex" by Anonymous Coward · · Score: 0

      By your logic, it would be better to start with assembly. That's the only "fundamental".

    15. Re:Lower Level != "Complex" by Anonymous Coward · · Score: 0

      There's a fantastic book on this subject that any teen could do called "How Computers do Math" (http://www.clivemaxfield.com/diycalculator/). Would certainly be better than VB in my opinion. Talk about mentally stunting the growth of your students.

    16. Re:Lower Level != "Complex" by david_thornley · · Score: 1

      Simple. Start the EE types on Scheme, and the CS types on C. Or, if you want to be nice, reverse that.

      --
      "When you have eliminated the unacceptable, whatever is left, however improbable, must be the truthiness" - Holmes
    17. Re:Lower Level != "Complex" by david_thornley · · Score: 1

      You don't need O-O in your introductory language, and you can use C extensively for years without ever writing a variadic function. You can also cover pointers and memory management after you've covered loops and variables. Probably the biggest problem is that string handling in C really sucks.

      --
      "When you have eliminated the unacceptable, whatever is left, however improbable, must be the truthiness" - Holmes
    18. Re:Lower Level != "Complex" by Anonymous Coward · · Score: 0

      With C, you quickly get bogged down in memory management, notions like pointers, the complete lack of object-oriented programming, awkward functions and weird workarounds like variadic functions.

      You can choose not to use any of that.
      For introduction to programming you can just use global or stack allocated variables and avoid memory management.
      Pointers should be avoided altogether, all high level languages abstracts them in bad ways, they just call them different things.
      Object orientation is a paradigm, not a language feature. You can code object oriented in assembly if you understand it, and you can fail horribly at it in Java if you don't. That C don't enforce it isn't a problem in education.
      I don't know what you mean with awkward functions, I don't see anything particularly awkward with functions in C.
      variadic functions isn't really a weird workaround, it's a way to pass parameters. I would recommend doing it in assembly before using C, but that is because I think it is good to know what the computer does behind the scenes when you learn programming, abstractions tend to obscure things.

    19. Re:Lower Level != "Complex" by Anonymous Coward · · Score: 0

      Well, the problem with C, is not the language, but the standard library. Everything fails. print something? nope, that can fail. allocate a buffer? nope that might fail.

      So you end up having to write 2 or 3 lines of error handling for every line of "do something" code. Of course in the real world you *sometimes* need that sort of handling, but when you're teaching or learning, it just gets in the way and makes things annoying. Also when you just want to write a quickie.

      To get around this, I have an ever growing library of "do it or bail" function+macros that wrap the usual failure-possible functions that I use in my own code.

      In contrast, if something fails in VB or QBASIC, it throws an exception and enters the debugger, which is also what my wrapper functions do.

      Since 90% of the time in small (and sometimes medium) programs, when an error occurs, you're just going to call err(1,"fuck you") and have it bail out, the code becomes a lot more readable if the functions do that for you instead of having to wrap every call in a "maybe it fails" block.

      Also I think in a teaching environment, having a standard wrapper that creates a graphics window, redirects stdio to that window, and provides rudimentary drawing routines without the student having to write any code makes it much more approachable and more like QBASIC (which I still consider the gold standard in educational languages).

      The one thing C actually gets wrong as an educational language, is structured programming. BASIC is more like Assembler, you can teach the concept of how structured calling conventions work in BASIC. In C it's already implemented, so the student is left wondering where the hell functions come from and what they are.

      Of course 99% of the time, it's best to write structured programs. It's best to teach the concept of structured programming by starting with a language which *doesn't* have it (or not introducing SUB in QBASIC), and going through the steps to show how they are implemented (using global variables as a proxy for registers).

      -puddingpimp

    20. Re:Lower Level != "Complex" by Anonymous Coward · · Score: 0

      Actually that is why computer science programs should start with a computer architecture course and perhaps one on logic. And only then allow them to program.

      But this is for computer science, not the "computer science trains programmers" crap many universities pull.

    21. Re:Lower Level != "Complex" by gweihir · · Score: 1

      I agree with both your comments.

      --
      Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
    22. Re:Lower Level != "Complex" by Anonymous Coward · · Score: 0

      But why would a CS student (not necessarily a software engineering student) who's learning an algorithm know that the type they want is constrained by the implementation of the hardware they are using? An Int is not the same on all hardware as you probably know. What are it's limitations? What are some alternatives?
      What does any of that have to do with learning algorithms? Nothing.

      It has everything to do with learning algorithms, because everything in a computer program is ultimately represented as a number. A good beginning data structures/algorithms class will introduce a few of the data structures used to represent numbers BEFORE introducing the standard algorithms.

      If students don't know everything on a computer is a number, and the basics of how those numbers are represented, they can not understand the limitations placed on algorithms. Further, they can not intelligently document their code, since they won't understand the limits on parameters to subroutines.

      Students do not need to know how numbers are represented in every possible situation, or on every possible platform, but at least some exposure is critical to making intelligent use of algorithms, or developing libraries that provide algorithms, or understanding the documentation of 3rd party libraries.

      Upper level classes will build on this basic knowledge. Graphics, numerical methods classes, image / signal processing, and many of the other areas of computer programming involving advanced algorithms are critically dependent on students being thoroughly familiar with a few basic numerical representations.

      Programmers that do not understand computer numbers will never be anything more than clueless hackers.

    23. Re:Lower Level != "Complex" by rdnetto · · Score: 1

      Because even if you're doing simple things, you need to:
      - manually manage memory (compared to GC'd languages)
      - manually store the length of buffers/arrays
      - preallocate arrays for strings, etc. before copying data to them

      C is low-level, which makes sense if you want to learn about what the computer is actually doing. But computer architecture is not something that belongs in an introductory computer science course - control structures and basic data structures are far more important, and C just gets in the way of those.

      --
      Most human behaviour can be explained in terms of identity.
    24. Re:Lower Level != "Complex" by rdnetto · · Score: 1

      Oh, and I also forgot to mention that functions fail silently if you don't check their error codes, compared to languages which use exceptions. Silent failures can be immensely confusing to newbies.

      --
      Most human behaviour can be explained in terms of identity.
    25. Re:Lower Level != "Complex" by movdqa · · Score: 1

      My son and daughter self-taught themselves C when they were around 11 or 12. I just gave them the K&R book and they played around with it. Son's university taught the first two courses in C (intro, data structures) and then did Java, Scheme, C++ in other classes. I thought that it was a really good way to go as you do feel closer to the metal. One thing that I like about C is that you can flip on the assembler switch to see the generated code and provide a little explanation as to what's going on at a lower level. They really don't understand until they get an architecture class but you can give them an idea as to what's going on below. Assembler can be a headache for students because you have to write so much code to get something done. A good macro facility can help a lot but it's hard to avoid a lot of typing.

    26. Re:Lower Level != "Complex" by Anonymous Coward · · Score: 0

      I never understood why people think that C, or even assembly, are "too complex" for beginers. Obviously they're complex if you're trying to do something complex like graphics but why would a beginner need to do stuff like that? They should be learning the fundementals, which are often obsucred by higher level languages. Wouldn't it make more sense to start lower (and simpler) and work your way up so that you have a solid understanding of what's happening behind the scenes in higher level languages?

      This assembly versus higher level languages discussion is coming back on slashdot about every other article :)

      I disagree with your two basic assumptions: Why do you pick assembly language as the atomic block? Why do you actually assume assembly is the difficult one?

      Let me rephrase what you say with even lower languages.
      "I never understood why people think that understanding VHDL & Cadence schematics are "too complex". Obviously they're complex if you're trying to do something complex like creating an AND port but why would a beginner need to do stuff like that? They should be learning the fundementals, which are often obsucred by programming languages. "

      Then, why higher languages? Because of business sense. A lot of businesses currently spend money on apps/platforms etc... AND programming learning time simply is expensive. Even students have to think at the opportunity cost. Am I now learning something which justifies not learning something else? You either work your way from the bottom (assembly) to the top (java enterprise edition, C#) or the other way around. Given the market need, it makes sense to start from the top. And if you need, you can always go deeper.

      Lastly, the notion that assembly is hard & object oriented languages are easy is flawed in my opinion. A major software engineering challenge is in architectures where teams can work together on >100k lines of code.

      Pretty satisfied I started learning programming by higher languages... (java, python) The deeper insight came later.

    27. Re:Lower Level != "Complex" by Anonymous Coward · · Score: 0

      I'd go a bit further: even C obscures the necessary understanding of what is going on to a considerable degree. Of course not all assembly languages and instruction sets are equal in their ease of comprehension. My personal favourite, waaaay back now, was the 6800/6809, particularly in comparison to the kludge-ridden 8086. Anyway, I had no particular difficulties teaching CS and Engineering students 6800/6809 and perceived no difference in them in this respect. In my view, when the instruction set is orthogonal and kludges and special cases are minimised, assembler is not particularly difficult to understand, learn or teach.

    28. Re:Lower Level != "Complex" by choke · · Score: 1

      I feel just the opposite.

      Just like I feel that it's crucial to teach a new driver how to drive a stick, I feel it's crucial to start a programmer on the most basic and fundamental logic and understand what goes into an instruction.

      I have seen and endured grotesque inefficiencies that were a result of an abstraction layered on abstraction, in a virtualized sandbox (java usually), running on virtualized/abstracted hardware.

      Lower level design and programming is not more 'complex' - it's more precise. While it could be argued that there is a time and a place for training wheels. we also understand with training wheels that they have to come off someday so that the rider can actually 'ride', It seems like all we do in the tech world is make training wheels for training wheels anymore

      --
      "No good deed goes unpunished"
    29. Re:Lower Level != "Complex" by Anonymous Coward · · Score: 0

      I never understood why people think that C, or even assembly, are "too complex" for beginers. Obviously they're complex if you're trying to do something complex like graphics but why would a beginner need to do stuff like that? They should be learning the fundementals, which are often obsucred by higher level languages. Wouldn't it make more sense to start lower (and simpler) and work your way up so that you have a solid understanding of what's happening behind the scenes in higher level languages?

      What is simple to you isn't necessarily simple to them.
      Also, it is quite far away from their own experience.

      So I think a top-down approach actually makes a lot more sense.

      If you want to entice novices to programming, it seems a good idea to incrementally build upon what they already know. What have novices seen about programming? They have seen its results: smartphone apps, desktop or laptop applications, not files with source code that can sort arrays of numbers or print the reverse of strings. So it makes sense to let them start by allowing them to compose and tweak the kinds of applications they are already familiar with. The first thing they build will have a GUI and make it easy for them to create and modify that GUI, and the actual programming will enter as soon as they want to do something that cannot be done just by doing that. That way, the need for learning how to program will come from them, from an actual problem they are trying to solve, rather than being imposed upon them by the instructor.

      For instance, you could give them a calculator app and ask them to add exponentiation or support for decimal points.

      This programming experience is exactly what Visual Basic was designed to provide, just like Delphi and Smalltalk (which was specifically created for teaching programming to children): work with the GUI through direct manipulation and add code only to express things direct manipulation doesn't support.

      Clearly this is not all it takes to build good applications, but I think it's an excellent way to get people started.

      Choosing Visual Basic is not a choice of language. All Visual Basic applications can be replicated in Java, or in Python, or in C.
      This is not about what the language can do. It is about the IDE you support, the experience you provide to the beginning application developer.
      I know of no IDE for C, Python or even Java that lets you work in this way.

      There is no intrinsic value in making the first programming experience for a general audience of novices a text-only experience that is about doing uninteresting stuff like simple calculations, sorting, or other low-level stuff. We're not talking about teaching programming to an audience of newly recruited embedded systems engineers. or some other specialized area where GUIs are not included and manual code typing is still the norm.

    30. Re:Lower Level != "Complex" by euroq · · Score: 1

      Honestly, both work fine in English. In fact, the C style is more succinct.
      "integer x is 1"
      "x, an integer, is 1"

      The first works fine in English. "Player Three is next". You're right about the for loop, though.

      --
      Just because the U.S. is a republic does not mean it is not a democracy. Democracy/republic are not mutually exclusive.
    31. Re:Lower Level != "Complex" by euroq · · Score: 1

      Memory management and pointers are some of the core fundamental concepts of some languages such as C. They are not fundamental to "programming".

      --
      Just because the U.S. is a republic does not mean it is not a democracy. Democracy/republic are not mutually exclusive.
  46. First Language was C++ by Anonymous Coward · · Score: 1

    but I didn't fully understand what was going on until I took an assembly course. Maybe they should start there? everyone gets an CME-11E9-EVBU!

    This is a terrible idea

  47. just use c/c++ by Anonymous Coward · · Score: 0

    It's not that hard and you can introduce only as much complexity as is needed. Just because a language has a vast array of features doesn't mean you need to use them.

    c/c++ is a a great language to learn on because it hides virtually nothing, you need to be aware of what you are doing since there's no backend running secret tasks like garbage collection.

    teach them c/c++ so it's c with classes.
    Steer clear of the STL stuff.
    Teach them to write small tight methods that do one thing only.
    Teach them the single responsibility principle.
    Teach them to write clean code.
    Teach them to name their classes well. To name their method well. To name their variables well.
    Teach them that comments are a failure of the programmer. That if you need to comment the code then the code itself is broken.
    Teach them to write code that tests their code. To never assume that their code is right but to prove it.
    Teach them that when their code doesnt produce the correct output it's 99.999% likely their code is wrong, not the tool chain.
    Teach them to what source control is and how to use it. And when to use it (always).
    Teach them that simple is better than complex.
    Teach them to try several ideas before deciding on the best one, rather than just implementing the first thing they think of.
    Teach them it's OK to refactor existing code to make it better.
    Teach them well.

    1. Re:just use c/c++ by ClayDowling · · Score: 2

      Amen! C++ is only complex if you choose to make it so. C++ as introduced is Strustrup is a very simple, easy to use language. Print data by pushing to an output stream. Read data by pushing from an input stream to a variable.

      Each new concept can be introduced easily. There are lots of abstractions to show concepts like pass by value and pass by reference, and it still has the low level syntax so you can delve into what is happening under the abstractions.

      If I were teaching somebody new to program, C++ would absolutely be my first choice.

  48. Wirthian syntax ... by gstoddart · · Score: 4, Insightful

    I don't really care what language, but I'm of the opinion you should be laying your groundwork with something with a Wirth-ian syntax.

    Why? Because it's the most accessible syntax for people, relies on less of the syntactic sugar of other languages, has very explicit start end end blocks, "reads" very much like English, and in some ways can be useful to describe how things work at the assembly level.

    Things in the scheme family have some things which may be far harder to grasp for a beginner since they're essentially mathematical in nature.

    And things like Python ... well, the whole whitespace being syntactically significant is quite possibly going to give you some bad habits.

    There's a reason why Pascal and Java made good teaching languages for so long. If you can "speak" one Wirth-ian language, you can pretty much read all of them.

    --
    Lost at C:>. Found at C.
    1. Re:Wirthian syntax ... by TeknoHog · · Score: 1

      While Python is my favourite language overall, I think the Fortran/Julia style strikes the best balance in readability. Blocks have clear start and end, but there is no messy punctuation. For example, line breaks are meaningful, so there is no need to have something like a semicolon after every statement. That's as far as the whitespace thing goes, so there are none of the indentation issues of Python.

      --
      Escher was the first MC and Giger invented the HR department.
    2. Re:Wirthian syntax ... by tbttfox · · Score: 1

      This is an honest question coming from a daily Python programmer. In my experience, I don't feel the required whitespace has left me with bad habits when working in other languages. But then again, my experience in other languages is limited.

      What bad habits could come from whitespace being significant?

    3. Re:Wirthian syntax ... by caseih · · Score: 1

      No, whitespace significance is probably not going to develop any bad habits. I can tell you've not done much with python. The whitespace syntax is excellent at helping one always use structure in his programs. Watching beginners use braces in java without any indenting at all illustrated to me that it's quite the opposite to what you suggest.

      I program is several languages and python has never been a liability. The only thing it has done is make me hate how ugly braces make code. That and maybe forgetting semicolons in C.

    4. Re:Wirthian syntax ... by gstoddart · · Score: 1

      My biggest beef with whitespace having syntactic significance is every developer wants to see different levels of indent, and every editor seems to have its own special way of writing out whitespace. They're not always compatible, and making them all work together can be a pain in the ass (for instance, emacs and vi are notorious for doing it differently, and emacs does it in a way which breaks vi).

      I may want tabs at 8 spaces, you might want them at four ... someone else might want actual spaces. You can't see them, so you don't really know what's there. It fails miserably in teams where people use different editors.

      That, and whitespace having syntactic significance flies in the face of context-free grammars and everything I learned in compilers. If you disagree with the "Dragon Book" by Aho, Sethi, and Ullman ... you're wrong. :-P

      There's a large amount of whitespace characters, which don't all display the same in every tool -- and, in my opinion, it makes you lazy about closing actual blocks.

      To me, relying on the indent level and whitespace is lazy, and something you'd have learned to do 'properly' in a Wirthian language -- where if you don't do begin/end blocks you can end up with crap code which doesn't work the way you expect.

      --
      Lost at C:>. Found at C.
    5. Re:Wirthian syntax ... by Anonymous Coward · · Score: 0

      > so there are none of the indentation issues of Python.

      The only "indentation issue" of Python is caused by editors that leave tab characters in the source file. Configure the editor to _never_ use a tab and to use spaces and there is _no_ issue.

      The 'whitespace thing' guarantees that the source code structure looks to you exactly as the comiler sees it.

    6. Re:Wirthian syntax ... by Anonymous Coward · · Score: 0

      Conversely, only use tabs, like god and just about every programmer prior to 2000 intended. Ever look at the code to Linux, the BSDs, or any GNU project? All tabs.

      Or maybe you didn't notice, because you've configured your editor to molest any source code you open, replacing tabs with spaces.

      OTOH, the standardized style (per PEP) for Python is spaces. Which is just [barely] enough reason to use spaces for indenting Python code. Fortunately, I program in Python.

    7. Re:Wirthian syntax ... by Dadoo · · Score: 1

      There's a reason why Pascal and Java made good teaching languages for so long.

      I'm going to have to disagree with you, there, as far as Pascal is concerned. Pascal has always been a terrible teaching language: it's too complicated for beginners and not nearly powerful enough for experts.

      --
      Sit, Ubuntu, sit. Good dog.
    8. Re:Wirthian syntax ... by Anonymous Coward · · Score: 0

      If you used tabs instead of spaces for indenting, then it would always just work. You could set your tab stops to 8, and somebody else could set them to 2, and it would all just work, without every modifying the code.

      But sadly, younger programmers and newer editors seem to default to spaces these days. And because spaces suck at indenting (because people have different preferences for indentation level), those editors also have a nasty habit of automatically re-indenting code, and converting hard tabs to spaces and adjusting the number of existing spaces. It's one of the most annoying things in the universe. And most of the programmers are oblivious to this, even when they're complaining about the supposed non-portability of indentation width, because the source code molestation isn't visually obvious. *sigh*

      Repeat after me: indentation is not alignment.

      (Of course, cue the people who will complain that if you change a tab stop to 8 when the previous programmer was using 2 then some source code lines might go past whatever magic number of columns--76, 78, etc--they prefer. I'm sorry, but that's a lame excuse. And I code exclusively in a terminal. Even if you find that annoying, would you really find it _more_ annoying then being forced to use somebody else's tab stop? When you tell somebody to just get used to using 2- or 4- column indentation, ask yourself if maybe you could just get used to the occasional line wrapping around in your editor, or having to widen your window.)

    9. Re:Wirthian syntax ... by TeknoHog · · Score: 1

      I agree, it's not really an issue, at least for me. But it seems people sometimes get into trouble with it as they edit other people's Python in some random editors. For example, it's nice that people are using my code even on Windows, but apparently some portability issues remain :-j

      --
      Escher was the first MC and Giger invented the HR department.
    10. Re:Wirthian syntax ... by angel'o'sphere · · Score: 1

      I would not call Java Wirth-ian nor easy to learn/teach.

      However I'm with you regarding Pascal and Modula II.

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    11. Re:Wirthian syntax ... by tbttfox · · Score: 1

      My biggest beef with whitespace having syntactic significance is every developer wants to see different levels of indent, and every editor seems to have its own special way of writing out whitespace. They're not always compatible, and making them all work together can be a pain in the ass (for instance, emacs and vi are notorious for doing it differently, and emacs does it in a way which breaks vi).

      I may want tabs at 8 spaces, you might want them at four ... someone else might want actual spaces. You can't see them, so you don't really know what's there. It fails miserably in teams where people use different editors.

      Fair point about the different types of whitespace. It does require a strict up-front policy. Though having dealt with the differences between VI, Emacs, and Kate (I tried to get him to change editors), I just wrote a quick script that converts, mapped it to a key, and never really thought of it again. To be fair, there wouldn't be a need for that script for other languages.

      That, and whitespace having syntactic significance flies in the face of context-free grammars and everything I learned in compilers. If you disagree with the "Dragon Book" by Aho, Sethi, and Ullman ... you're wrong. :-P

      I have never dealt with compilers, so ... Ok :-)

      There's a large amount of whitespace characters, which don't all display the same in every tool -- and, in my opinion, it makes you lazy about closing actual blocks.

      To me, relying on the indent level and whitespace is lazy, and something you'd have learned to do 'properly' in a Wirthian language -- where if you don't do begin/end blocks you can end up with crap code which doesn't work the way you expect.

      However, I will disagree with laziness when closing blocks. Having to explicitly close a block when choosing to dedent accomplishes the same task seems redundant to me, especially in well formed code (my view from the other side of the fence!). Anybody can write crap code in any language. Perhaps python makes it easier to write the crap up front, but I can't think of a recent indentation error... But, maybe I just drink the kool-aid too much.

    12. Re:Wirthian syntax ... by phantomfive · · Score: 1

      And things like Python ... well, the whole whitespace being syntactically significant is quite possibly going to give you some bad habits.

      What bad habits?

      --
      "First they came for the slanderers and i said nothing."
    13. Re:Wirthian syntax ... by david_thornley · · Score: 1

      I see no reason to consider it the most accessible syntax, and it appears to me to have more syntactic sugar than C, which is much more useful to describe how things work in machine code.

      Scheme, properly taught, is a good beginner's language for people who are going to learn several languages. It's not as good in general because it doesn't transfer well to more common languages. There's nothing wrong with getting good whitespace habits, which Python forces.

      If you think Java is a Wirth-ian language, it seems to me you're stretching the concept beyond all usefulness.

      Back when Pascal was used as an introductory language, there really weren't that many that were suitable, and Pascal had the advantage of ALGOL-style control structures. However, the fact that it was specifically developed to have a single-pass recursive-descent compiler on a CDC 6600 affected it adversely, making it difficult to write programs other than top-down and making "set of char" non-standard.

      --
      "When you have eliminated the unacceptable, whatever is left, however improbable, must be the truthiness" - Holmes
    14. Re:Wirthian syntax ... by Anonymous Coward · · Score: 0

      the whole whitespace being syntactically significant is quite possibly going to give you some bad habits.

      Yeah, I can see how being clear and meticulous about how your code is laid out can be a definite disadvantage in your later years.

      I mean, how can you be "leet hax0rz dood" if you avoid terse, impenetrable one liners? -- Everyone knows that your skill at programming is inversely proportional to the number of lines it takes you to do something.

    15. Re:Wirthian syntax ... by Just+Some+Guy · · Score: 1

      Python has a PEP (think RFC) for that. It says:

      Use 4 spaces per indentation level. [...] Spaces are the preferred indentation method. Tabs should be used solely to remain consistent with code that is already indented with tabs.

      That's the the near-universal style almost everyone used anyway, so it was more of a hypothetical than practical issue anyway.

      --
      Dewey, what part of this looks like authorities should be involved?
    16. Re:Wirthian syntax ... by Anonymous Coward · · Score: 0

      And things like Python ... well, the whole whitespace being syntactically significant is quite possibly going to give you some bad habits.

      Bad habits like ... indenting your code?

  49. Java by Red4man · · Score: 1, Troll

    Pros:
    + C Style Syntax
    + JDK is Free
    + OS Agnostic
    + Free IDE's available
    + Lots of internet / forum support
    + Opens a door to mobile development with Android

    Cons:
    + "Slow"

    Now, compared to Visual Basic, which is slow, requires Windows, not to mention Visual Studio, which even for Student versions is expensive compared to a free download of Oracle's JDK or OpenJDK and Eclipse / NetBeans / Android Studio.

    C# would be a better choice than Visual Basic, but for students -- having a dev environment that's obtainable for a very low cost (free) and even runs on free Operating Systems is very compelling -- especially for the underprivileged kids.

    --
    Sock Puppets: damn_registrars=pudge_confirmer=jimmy_slimmy=raiigunner=cml4524=a_klavan=red4men=ronpaulisanidiot
    1. Re:Java by Richard_at_work · · Score: 2

      Now, compared to Visual Basic, which is slow, requires Windows, not to mention Visual Studio, which even for Student versions is expensive compared to a free download of Oracle's JDK or OpenJDK and Eclipse / NetBeans / Android Studio.

      Shows how much of Slashdots user base is out of date...

      You don't need Windows, .Net runs fine on Mono on Mac, BSD or Linux, and you can either use Visual Studio Express or Visual Studio Community Edition, both of which are free for this purpose, or use SharpDevelop or one of the many free editors (atom, brackets etc) with OmniSharp, and beginners don't need blistering speeds to learn the basics.

      You can get started with .Net dev without spending any more money than you already have on a computer. You can even go to the extremes of professional .net development without ever having to drop money on any part of the system.

    2. Re:Java by Anonymous Coward · · Score: 0

      You forgot

      Cons:

      + As soon as you try and do anything even vaguely complicated with it, all it does is keep choking itself and falling over with "java.lang.NullPointerException on line (last line + 1 of the code) of foo.java".

      Fucking awful language, you don't even HAVE pointers so why are you whingeing about them? Either have pointers or don't.

      Now PHP, PHP has never whinged at me EVER about a NullPointerException. Therefore PHP > Java. And I used them both at university. Java because I had to, PHP because I /wanted/ to.

    3. Re:Java by qpqp · · Score: 1

      I don't really think you can beat Java. There is a freely available IDE. It creates applications for (large install base). It is an object oriented language. The syntax is straightforward (you don't have to deal with complex point nomenclature, unless you want to for speed). Its a modern language that is as simple or complex as you want.

      SCNR.

    4. Re:Java by qpqp · · Score: 1

      It ate my < >s
      Hey Dice, how about you merge some of the UTF support back in from Soylentnews?

    5. Re:Java by jaklode · · Score: 1

      PHP is a huge piece of crap.

    6. Re:Java by jaklode · · Score: 1

      + "Slow"

      Java is not slow. It powers many important and insanely fast web services and has one of the best just in time compilers in the world. Java code can be faster than C code due to better optimisations done by a JIT compiler. I hate it, but it's not slow.

    7. Re:Java by narcc · · Score: 1

      Even compared to Java?

    8. Re:Java by Anonymous Coward · · Score: 0

      The way I see it...

      Pros:
      + Compile once run everywhere
      + Lots of people use it (is that really a pro?)
      + Good IDE support

      Cons:
      + Stop the world garbage collector (goodbye soft-realtime)
      + Wastes tons of memory
      + Doesn't scale horizontally (without heroic effort)
      + C style syntax
      + Slow
      + Uses heavy OS threads
      + Has null (huge mistake)
      + Crappy libraries

  50. Households without a PC by tepples · · Score: 3, Interesting

    What about stuents that have a Mac or Linux at home?

    For that matter, what about students that have only smartphones, tablets running a smartphone operating system, and game consoles? Such households exist. A $200 laptop that includes a copy of Windows is no more expensive than some textbooks that college students are required to buy.

    1. Re:Households without a PC by qpqp · · Score: 3, Insightful

      You can code on a smartphone. If you want to.
      In this regard C, PHP, Java and Python are much more accessible than VB, which you can maybe write on a smartphone, but not compile.

    2. Re:Households without a PC by tepples · · Score: 2

      You can code on a smartphone. If you want to.

      One can do so on an Android tablet with AIDE, as I mentioned in a reply to the linked post. Un-jailbroken iOS not so much, as its strict W^X policy and App Store Review Guidelines make on-device compilers impossible. Or were you referring to using up megabytes of your data plan to SSH into a remote server where the user compiles and runs the C and Java and interprets the PHP and Python?

    3. Re:Households without a PC by morgauxo · · Score: 3, Interesting

      What about them? They do the same thing kids have ever done who take a computer class but don't have one at home. They use the school computers.

      Actually.. there are ways to program on a smartphone. So long as it isn't iOS you can even get compilers for just about any language. But... that doesn't mean you get to use it for class.

      No teacher is going to want to support that. They would have to either limit everything to the least common denominator (Yay, everybody gets to write a hello-world console app!) or teach a dozen variants per class. (this is how you create a window in Windows, here is the code for Linux umm.. is that X or Wayland... here is how to create a form on Android... here is how to do it on OSX..)

      No, the school will standardize on a type of PC, maybe Windows, maybe Mac and the teacher will pick the rest of the development environment. If you are too much of a trendy butthead to own a real computer and expect to do everything on your smartphone then you use the school lab. If they are nice maybe they set up a vnc or remote desktop server that you can log in to with whatever device makes you happy.

    4. Re:Households without a PC by ShanghaiBill · · Score: 1

      They use the school computers.

      Another option is they can go to Goodwill and get a nice fully functional used laptop for $25 or less, with WinXP pre-installed. If you are willing to use five year old hardware, it can be very cheap.

    5. Re:Households without a PC by qpqp · · Score: 2

      You have outdated information:
      e.g. https://itunes.apple.com/us/ap...
      and
      http://omz-software.com/pythonista/

    6. Re:Households without a PC by __aaclcg7560 · · Score: 2

      They use the school computers.

      Back in the Apple ][ days, my junior high school didn't have an open lab period. If you didn't have one at home, you did your Logo assignments on paper and typed them in during the few minutes before class started.

    7. Re: Households without a PC by Anonymous Coward · · Score: 1

      Back in my day, I too did things in a different way that is completely irrelevant to the discussion at hand.

    8. Re:Households without a PC by tepples · · Score: 2

      First you said

      C, PHP, Java and Python

      Then you said

      Processing for iOS ( Javascript ) and Pythonista

      This adds JavaScript and removes C, PHP, and Java. How does one go about learning C, PHP, and Java on iOS, or completing the course requirements if a compulsory course happens to require one of those languages or another language not usable on iOS (such as Visual Basic, the language of the featured article)?

    9. Re: Households without a PC by __aaclcg7560 · · Score: 1

      I did flowcharts in my very first computer class at college in the early 1990's. May even still have the plastic stencil thingie packed away somewhere.

    10. Re:Households without a PC by qpqp · · Score: 1
      Java is covered by android and C is covered by jailbroken iDevices. PHP you can do on both, I guess (at least you can on ios (and here's some more, so you stop trying to troll me about that.

      Now you said: "Un-jailbroken iOS not so much, as its strict W^X policy and App Store Review Guidelines make on-device compilers impossible." And, while technically correct for the jailed devices (not counting the stuff, where you need to be online), you ignored the availability of interpreted languages (most of them turing-complete) on iDevices, which, suddenly, are the only ones available.
      So, why don't you ask that teacher from TFA to VB your $200 pee-cees a Winblows app that takes them on a trip to somewhere damp and dark together with the toolchain, as they're evidently unnecessary to teach kids programming these days?

      Admittedly, I have no idea what to tell you about the kids, who don't own a smartphone, but have a console, apparently they're his target audience. Maybe he should create an account on MS Zone (or however it's called these days) and try to upsell them VB there. I wish him luck! He'll need it. ;)

    11. Re:Households without a PC by Anonymous Coward · · Score: 0

      Apparently you have not heard of the new-fangled technology service called virtual servers hosted by a third-party for a pittance each month or Amazon Web Services which offers a year of free micro-tier virtual machine instance? There are even hosted development services which offer an in-browser code editor and the ability to run the code too as well as use version control such as GitHub, BitBucket, etc. All these services are accessible via smartphone (not ideal), tablet (acceptable to excellent), netbooks (good to excellent), and full-powered notebook/desktop computers (excellent).

    12. Re:Households without a PC by tepples · · Score: 1

      I mentioned those in this post. A VPS is usable so long as you have an always-on Internet connection wherever you plan to use the service. For example, good luck getting started on homework while riding the bus home from school.

    13. Re:Households without a PC by CronoCloud · · Score: 1

      For that matter, what about students that have only smartphones, tablets running a smartphone operating system, and game consoles? Such households exist.

      Eventually a call will be made as to whether edge cases are supported or even considered. It's probably a numbers game, once the numbers of edge cases drop to a certain amount, they get ignored. You really are too focused on edge cases.

    14. Re:Households without a PC by CronoCloud · · Score: 1

      A VPS is usable so long as you have an always-on Internet connection wherever you plan to use the service. For example, good luck getting started on homework while riding the bus home from school.

      Really tepples? You're really reaching for an irrelevant edge case this time. Because I doubt even the ones with Windows machines at home are going to get started on their programming homework on the bus.

    15. Re:Households without a PC by Chandon+Seldon · · Score: 1

      I'm teaching a university level intro to programming course right now, and we have absolutely no problem supporting users with any reasonable operating system on their computer. We're using the HTDP curriculum with DrRacket. We start having the students write interactive GUI programs week two.

      There are dozens of other platforms that handle cross-platform development equally easily. You can go whole-hog IDE with Java and Eclipse. You can teach Python with Idle. You can teach programming with C or C++ and the GNU toolchain (Cygwin is pretty easy to install). You could even teach C# with MonoDevelop. There's really no need to use single-platform stuff to teach basic programming.

      --
      -- The act of censorship is always worse than whatever is being censored. Always.
    16. Re:Households without a PC by Anonymous Coward · · Score: 0

      How well does Tutorials Point's online software vm environment work on IOS?

      http://www.tutorialspoint.com/compile_c_online.php

    17. Re:Households without a PC by Anonymous Coward · · Score: 0

      I suppose there is some merit to standardizing on a language that's pretty much dead in the wild. (Yeah, yeah, I know some people use it daily, but that doesn't mean it's popular.) That way, when these kids go out into the world, they will automatically have to learn a second language in order to proceed. That way, they get the generalising benefits that brings, and will probably write better code for it.

      Plus, if they're shit, nobody's going to be care if there are a few more shit VB programs. Shit Python, on the other hand, just muddies the waters for all the non-shit Python (assuming they get confident enough to publish it while they're still incompetent).

    18. Re:Households without a PC by Anonymous Coward · · Score: 0

      Hmm?

      Buy a $50 android phone/tablet? Or a Raspberry Pi? Or a 6 year old computer nobody wants anymore?

      Seriously, computers are so ridiculously cheap now, and you don't need the latest desktop supercomputer to learn programming.

      I learnt programming on my Dad's new 486 in QBASIC, TurboC and TASM when I was 5 or 6. Then later I learnt Linux and FreeBSD on my old 486 (same computer).

      Aside from getting 100x more convoluted and silly, programming hasn't changed since then, the same concepts apply. If you have a TV there are more than a dozen miniPCs you can buy for under $50 to plug into it and run Linux. If you can afford a $500 iPad, you can afford a miniPC, keyboard and mouse.

    19. Re:Households without a PC by morgauxo · · Score: 1

      Yes but you are at a university level. University level computer classes are generally taught by people with some background in computers.

      Pre-university schools will NEVER have that benefit. It just isn't the same set of job requirements. Pre-University schools are places filled with children. Children who are there because they have to be, don't apreciate the importance of why they are there and honestly don't have the emotional maturity to do so.

      To do the job well teachers require a tendancy towards caring and nurturing, patience and a love for children that one does not need in the University. The personality types that will do well align more with those of a nanny than those of a computer scientist.

      Some schools may get lucky and find a teacher with both. That will always be rare. Here is a magic box, you can memorize exactly what it does as you follow along the pre-written course syllabus with NO DEVIATION and the kids will see EXACTLY what you see. That's what is needed for teachers.

      Or.. maybe I was just jaded by my own experiences...

    20. Re:Households without a PC by morgauxo · · Score: 1

      Oh, yah, this thread was about kids who only had a smartphone. How many platforms are identical between desktops and smartphones? Sure, Android uses Java. It isn't exactly the same environment as on a desktop though. I don't think the same code is very likely to run on both beyond maybe console hello world.

      Should they be teaching programming using HTML5? If so I don't think we can find enough common ground to even have a reasonable conversation about this!

  51. how about cobol? by steak · · Score: 2

    I keep seeing stories about how cobol is sticking around, let the kids do it.

    1. Re:how about cobol? by Anonymous Coward · · Score: 0

      Do it like Knuth. Use MIX!

  52. low requirements by Comboman · · Score: 2

    Javascript also has low requirements which is good for cash-strapped schools and students. All you need is a text editor and a browser which are pre-installed on every computer and every OS (except maybe Chromebook?)

    --
    Support Right To Repair Legislation.
    1. Re:low requirements by Ken_g6 · · Score: 1

      You don't even need a text editor if you use a site such as CodePen.

      --
      (T>t && O(n)--) == sqrt(666)
    2. Re:low requirements by XxtraLarGe · · Score: 1

      You don't even need a text editor if you use a site such as CodePen.

      Who has access to a computer that doesn't have a text editor?!? Even if the default ones that come with Windows or Mac OS X are pretty much throw-aways, there are plenty of free text editors for either one, including NotePad++ for Windows or TextWrangler for the Mac, and Sublime which is available on both.

      --
      Taking guns away from the 99% gives the 1% 100% of the power.
  53. Can I Object to Both? by medv4380 · · Score: 4, Insightful

    VB has always been a horrible place to start. Any programming language that doesn't have a ridged syntax structure like C is a bad place to start. It teaches sloppy habits, and makes it so you have to get rid of those habits if you want to move up into a more ridged language. C is an excellent place to start. Python is ok as a language, but makes the same sin as VB by trying to make things more "human" readable thus I believe it would have a similar effect. However, since my experience with this is limited to when VB as the idiots intro to programming I've never seen what happens when someone learns Python first. Again, C is an excellent place to start.

    1. Re:Can I Object to Both? by Anonymous Coward · · Score: 0

      I am going to second this. Most folks want to sugar-coat intro to programming. Myself, give them simple C, walk them through how to write their program, and then how to compile it and then run it. And use a bare bones compiler that doesn't even give you the benefit of syntax checking so the execute barfs when it runs into bad code. It teaches you how to debug, and learn not to make the mistake in the first place.

      I may be a bit biased, though. I learned C first, then C++. Along the way, I have picked up Java, Javascript (of course), Perl, Python, C# and SQL. Of those, I actually find SQL to be the most antiquated in structure. C# is what Java should have been (in Windows at least). I still write a lot of Perl scripts if I want to automate a process and don't want to have to worry about it. CPAN is da shiznit for not having to build your own library. And Perl has the added benefit of not running like a dog for a scripted language (looking at you, Python!). For those folks out there who poo-poo Perl for letting anyone program...the pragmas "use strict; use warnings;" make short work of folks who like to cut corners. I refuse to edit anyone else's Perl that fails to include the two...

    2. Re:Can I Object to Both? by Anonymous Coward · · Score: 0

      C is probably the only place to start. Most modern languages were heavily influenced by C, if for nothing else, because C was so popular and they wanted to steal C programmers. No one would argue that we should teach category theory before arithmetic, but somehow very high level languages are being taught before the basics.

    3. Re:Can I Object to Both? by Anonymous Coward · · Score: 0

      What is "ridged" syntax? And can you enumerate what "bad habits" programming with VB.Net teaches?

    4. Re:Can I Object to Both? by Anonymous Coward · · Score: 0

      I meant what "sloppy habits" VB.Net teaches. (My post was sloppy though! :P)

    5. Re:Can I Object to Both? by Anonymous Coward · · Score: 0

      What is "ridged" syntax?

      He probably meant "rigid" syntax.

    6. Re:Can I Object to Both? by medv4380 · · Score: 1

      Clearly my English Language Compiler is based off of VB and auto corrected my syntax to rigid in my head. Hence the problem with "human" readable programming languages. We can be very vague, and still garner meaning from it. As if C weren't readable by humans. I swear I pass the Turing test, but someone thinks that just because I recognize logical blocks with braces, and understand case sensitivity that somehow I must be a machine to understand C. An example of a VB related problem is that they have a nasty habit of not ending lines with a semicolon. This is fine in VB, but languages like C, and java require them. It doesn't sound like too much of an issue, but it's easier to have the habit of ending your lines correctly in the beginning then to learn it after you've already learned to build competent programs. This make it so that a VB programmer will have a difficult time moving to OS level coding. The local college has this problem because they don't teach C to start, and the first time any of their CS majors see C is when they start down the OS path. They get confused because they've never seen pointers, or been forced to do even basic debugging of minor errors. Kinda explains whey they only had ONE CS graduate one year.

  54. obligatory by cellocgw · · Score: 1

    Well, *I* think that 64k different languages should be enough for anyone. //rim shot

    So, anyway, anyone who claims that any particular language is the right one to start with (and will lead to fame, fortune, and everything that goes with it) is a fool. I can see some justification for avoiding heavily obfuscated languages like APL or perl in favor of any language that actually uses, you know, words, to identify the functions and operations you want to do. If a high-school kid can't understand that "for," "do," "while," etc. are performing mostly the same operation, then he's screwed regardless of the actual language in question.

    --
    https://app.box.com/WitthoftResume Code: https://github.com/cellocgw
  55. Python over Visual BASIC by Anonymous Coward · · Score: 0

    Oh God not LISP

  56. TED talk about proprietary SW in schools by tepples · · Score: 5, Informative

    To understand why proprietary software in schools is a poor answer, please see this 15-minute TED talk.

    1. Re:TED talk about proprietary SW in schools by Anonymous Coward · · Score: 0

      Unfortunately RMS gives plenty of reasons that aren't related to efficiency of beginner learning. Plus he's a bit kooky to anyone other than his disciples. I'd let students learn about him and his philosophies on their own.

    2. Re:TED talk about proprietary SW in schools by tepples · · Score: 1

      Anonymous Coward wrote:

      Unfortunately RMS gives plenty of reasons [for free software's superiority] that aren't related to efficiency of beginner learning.

      In what way do you claim that proprietary software is demonstrably better in ways "related to efficiency of beginner learning"?

    3. Re:TED talk about proprietary SW in schools by Anonymous Coward · · Score: 0

      Way to imply an assertion, that never existed.

    4. Re:TED talk about proprietary SW in schools by tepples · · Score: 1

      RMS gave reasons why free software is better. Either you or another Anonymous Coward implied in post #48856693 that these "reasons [...] aren't related to efficiency of beginner learning" and that these reasons alone do not make free software better than proprietary software for this purpose. This sort of implies that there exist reasons "related to efficiency of beginner learning" that outweigh the reasons that free software is better in general that RMS described.

      In any case, standardizing on proprietary software when learners are most impressionable (that is, when learners are beginners) instills a mindset that A. the way things work in a particular proprietary software package is the way things work in general, and B. the proprietary software business model is the acceptable way to do things in general.

    5. Re:TED talk about proprietary SW in schools by Fwipp · · Score: 4, Insightful

      Off-topic, but does anyone else hate this trend in the last couple of years?

      Person A: *Makes a statement*
      Person B: "Why that tho?"
      Person A: "Please go watch this 10+ minute video, it explains everything."

      I dunno, maybe I wanted a short summary in your own words, and not to spend ten minutes of my time listening to something that may or may not address my question at all.

    6. Re:TED talk about proprietary SW in schools by tepples · · Score: 1

      I dunno, maybe I wanted a short summary in your own words

      Then you would have received it eight hhours later. If you still prefer to read rather than watch, please allow me to quote another related essay:

      "The education of children represents a major revenue stream for Microsoft, and a strategic opportunity to embed their products into the lives of future adults. [...] Where else do we see one corporation able to put their marketing and corporate branded materials in front of children as requirements in this way?" --Windows 7 Sins: Education

    7. Re:TED talk about proprietary SW in schools by Anonymous Coward · · Score: 0

      >In any case, standardizing on proprietary software when learners are most impressionable (that is, when learners are beginners) instills a mindset that A. the way things work in a particular proprietary software package is the way things work in general, and B. the proprietary software business model is the acceptable way to do things in general.

      A. They are.
      B. It is.

    8. Re:TED talk about proprietary SW in schools by CronoCloud · · Score: 1

      He didn't make that claim. All he's saying is that RMS is focused on everything BUT beginners when he should be also pointing out how Python's really good for beginners.

      RMS focuses too much on the needs of the typical bearded grognard still computing like they were at MIT on VT100's using TECO in the 60's/70's and not enough on the masses

    9. Re:TED talk about proprietary SW in schools by Fwipp · · Score: 1

      Thanks, that's what I was looking for. Took less than a minute of my time to read, and it's easy for me to remember in-progress conversations from a few hours ago. :)

    10. Re:TED talk about proprietary SW in schools by Darinbob · · Score: 1

      Because kids love videos and have forgotten how to type coherently?

    11. Re:TED talk about proprietary SW in schools by Anonymous Coward · · Score: 0

      Forgotten? Or never learnt in the first place?

    12. Re:TED talk about proprietary SW in schools by Anonymous Coward · · Score: 0

      Unfortunately RMS gives plenty of reasons [for free software's superiority] that aren't related to efficiency of beginner learning.

      In what way do you claim that proprietary software is demonstrably better in ways "related to efficiency of beginner learning"?

      I can't tell if you are a troll or not.
      He doesn't claim that proprietary software is better at it, he claims that software licensing isn't related to the subject.
      It's like asking how much storage space is required for video editing and getting the answer "unicorn".
      Just because RMS only can talk about software licensing doesn't mean that every subject is related to it, it only means that RMS is irrelevant when talking about anything else.

    13. Re:TED talk about proprietary SW in schools by LordWabbit2 · · Score: 1

      Could not agree more. Everything is a bloody youtube video, wanted to do some modding in Skyrim, there's a youtube video for that, and precious little else. Then the first 5 minutes is waffle waffle waffle about his dietary requirements and recent bowel movements, as if I cared. There used to be the &wadsworth=1 option to skip the first 10% but apparently it's not working anymore. (Youtube is banned at work, and I avoid it like the plague at home).

      --
      There are three kinds of falsehood: the first is a 'fib,' the second is a downright lie, and the third is statistics.
    14. Re:TED talk about proprietary SW in schools by tepples · · Score: 1

      Software licensing is related to the subject because it affects how much a school district has to pay for a particular solution and how much society has to pay for the effects of familiarity with a certain proprietary package.

    15. Re:TED talk about proprietary SW in schools by Anonymous Coward · · Score: 0

      Society .. give me a break. It's finding the best language to teach beginners with. Your zealotry blinds you.

    16. Re:TED talk about proprietary SW in schools by tepples · · Score: 1

      At the same time that we teach beginners to program, we are teaching them ethics. Why should a language serve one goal but anti-serve the other?

    17. Re:TED talk about proprietary SW in schools by Anonymous Coward · · Score: 0

      Also OT, but yes, I've noticed this - not in the context of GP's post, but more on the line of tutorials / howtos and so forth. I will admit that it bugs the heck out of me - because, even when the intro / exit sequences are kept to a minimum it's a whole lot less information-dense than, for instance, a transcript of the piece (feel free to add a couple of images to the document if this clarifies anything, otherwise good old searchable text is fine).

      So I'll either be at work and will have to dig out headphones to play the damn thing, or if I'm at home I'll need to mute the audio player in order to listen to this, all the while silently screaming in my brain "FFS GET TO THE DAMN POINT". Or, more likely, ^T and find another piece that offers the information I'm looking for in a format that doesn't irritate me.

      [Note, not getting at GP and not knocking TED - there's some interesting pieces on there. Just having a bit of a rant about this video-as-textbook-resource ideal that's come to the fore recently].

    18. Re:TED talk about proprietary SW in schools by Anonymous Coward · · Score: 0

      Are you seriously saying using proprietary software to teach beginning CS if it's the best tool still isn't the best tool because it's unethical? You can't possible be an adult that works for a living.

    19. Re:TED talk about proprietary SW in schools by tepples · · Score: 1

      Because I was at work, and my break would have ended before I could find a transcript from which I could copy and paste relevant bits. And I have since come to believe that a transcript is legally prohibited from existing because "This recording is licensed under the Creative Commons Attribution-No Derivative Works 3.0 license."

    20. Re:TED talk about proprietary SW in schools by Anonymous Coward · · Score: 0

      To understand why proprietary software in schools is a poor answer, please see this 15-minute TED talk.

      If you aren't willing to spend the few minutes of your life posting the actual points of your argument, it's definitely not important enough for me to waste 15 minutes of my life watching a random video from the internet.

    21. Re:TED talk about proprietary SW in schools by terjeber · · Score: 1

      Perl

    22. Re:TED talk about proprietary SW in schools by Anonymous Coward · · Score: 0

      Short parapharase of the most pertinent part of the video:

      When students bring cookies to school, they have to bring enough for everyone in the class and they have to share.
      The same should be true for programming classes. A student should have to share the source of their program with everyone in the class so that everyone can learn.
      Schools should set a good example by following their own rules. The software they use should allow the freedom to inspect and change the source code.

      Also, education should foster ideals of freedom. They should train students to participate in free communities. Schools should teach students what actions and behavior are required to maintain everybody's freedom.

    23. Re:TED talk about proprietary SW in schools by tepples · · Score: 1

      A. Why ought they to continue to be?
      B. Why is it?

  57. Here's a thought... by grimmjeeper · · Score: 1

    Why not teach more than one language? These are AP classes for smart kids. They can handle it.

    Start with Java. Run them through the basic iterative programming constructs (conditionals, loops, etc). Then go on to basic OOP principles. Once you're through that you can go back and start with C++ and introduce them to statically typed variables and pointers. There's no reason a smart kid in the last couple years of high school can't grasp all of this in a single AP class.

    I know it's a radical idea to teach advanced topics to kids in an Advanced Placement class but hey, I like rocking the boat.

    1. Re:Here's a thought... by Carcass666 · · Score: 1

      I like this. It reinforces the importance of the underlying algorithms, logic and data; de-emphasizing language-specific syntax, formatting, idioms, etc.. It also makes it easier to explain and demonstrate things like the difference between static and dynamic typing.

    2. Re:Here's a thought... by jaklode · · Score: 1

      If you start with Java, you surely need to have static typing too, and cannot defer this to a later C++ part.

    3. Re:Here's a thought... by grimmjeeper · · Score: 1

      Maybe I was thinking of Javascript. I've been working in the embedded systems world my whole career so I don't use Java enough to remember much about it.

      But the principle still stands with Javascript. Learn the basic constructs of iterative programming without having to worry about types first. Then introduce the more complex principles as you get towards a language like C++ When switching to Java, you can do types before OOP (which may be a good idea anyway) and then get to C++ to learn about pointers and so forth.

      When they're done with the class they have exposure to multiple related industry standard languages and all of the basic comp sci principles that apply from top to bottom and they're ready to start in doing real work in advanced classes when they hit college.

    4. Re:Here's a thought... by Anonymous Coward · · Score: 0

      In the real world language specific behavior is of paramount importance.

      Here in the real world I see code that was written by developers, who obviously didn't know the language but seem to know some algorithms. They managed to write some good stuff, but most of it is just a nightmare to maintain because they didn't know the language and just did things badly.

  58. What the? by drake2k · · Score: 1

    Pure C is the simplest language ever, and the most instructive one.

    1. Re:What the? by grimmjeeper · · Score: 1

      C as a first language has two significant drawbacks.

      First is that it has an abnormally steep learning curve. It's virtually impossible to learn about arrays without learning about pointers and that's a complicated subject to tackle early.

      Second is that it is only an iterative language. It has no significant support for OOP like more modern languages. Given the distribution of careers in the field, introducing students to OOP concepts early with a popular language that supports those features is a good idea. Students with knowledge of OOP can translate some of their understanding backwards to an iterative language. But students with no OOP knowledge are handicapped going forward.

      Still, it's a good idea to teach standalone C once you get to an operating systems or embedded systems programming environment just so students can understand what it takes to build the foundation that supports a C++ program.

    2. Re:What the? by narcc · · Score: 1

      Depends on what you mean by 'simple'. I'd offer both Forth and BASIC as examples of languages 'simpler' than C, though for dramatically different reasons.

  59. Teach algorithms by Anonymous Coward · · Score: 0

    Teach them algorithms/concepts using pseudo code and they will be able to use any language.

    Do you want to learn Cisco and only be able to work on Cisco products, or do you want to learn networking theory and work on everyone's products?

    1. Re:Teach algorithms by Anonymous Coward · · Score: 0

      They have to learn a language before they can apply anything but a non-trivial algorithm.

      Developers with no/little knowledge of a language, but know algorithms produce festering piles of bug ridden garbage in all but the most trivial cases. Then someone who actually knows the language has to go in and fix or rewrite that junk.

  60. Java by Anonymous Coward · · Score: 0

    Whilst I agree with all your plus points above. VB/C# does have free IDEs (both Visual Studio Express editions and MonoDevelop, which is available for Windows/OSX/Linux), so therefore cost isn't an option.

    Of course it depends on what you want your students to build. If you want them to build desktop apps, then Java isn't great, and C#/VB isn't cross platform, being more fiddly on non-Windows platforms. Though in a school environment cross-platform may be a moot point. Most UK schools seems to have a Windows mono-culture.

    Ideally you'd have students building first console apps, so they are literally concentrating on the logic, not the presentation, and after that move to web-based. Both these scenarios give you a massive range of languages and frameworks to choose from.

  61. Stop it. There is nothing wrong with VB.NET. by PJ6 · · Score: 3, Insightful

    For all intents and purposes it is equivalent to C#, which is an excellent language.

    I might actually prefer VB to C# because it doesn't have all those damn curly braces and semicolons - VB is much faster to type and the automatic indentation is better. The only dealbreakers for me were the awkward anonymous method syntax and industry stigma.

    You want to talk about programmers being ruined, look at what the experienced do with Java.

    1. Re:Stop it. There is nothing wrong with VB.NET. by Anonymous Coward · · Score: 0

      Pray tell, what do the "Experienced do" with Java that has "ruined them?"
      I'm sure you have some anecdotes, but I'd like to see some facts on the matter. I would like to understand how experienced Java programmers are somehow ruined by definition. I would especially like to understand this in context of how *VB* somehow is immune to this programmer ruining effect.

      I know Dijkstra was rather fond of mocking people who used BASIC or COBOL, but I still honestly believe that a good programmer can work in any language. It is true that one is at risk of becoming too used to thinking in a certain language, but no one language magically ruins good programmers.

      By the way, can I see your hosted repository? Perhaps you have a GitHub? I wish to bask in the greatness of your Visual Basic code, so that I can realize the folly of working in all those lesser languages.

    2. Re:Stop it. There is nothing wrong with VB.NET. by PJ6 · · Score: 1

      I think it's poor form to respond to AC's, but you were reasonably polite if a little snide.

      If you took the time to read the post, you would see that I didn't say I use VB.

      Java itself isn't much different from C# so it's not the syntax that's the problem. Its developer community has the worst case cargo-cult engineering and misuse of GoF design patterns I have ever seen.

      Overengineering is unnecessary complexity, and that is IMO is the worst sin you can commit in design. Cleaning up that special class of wreckage is much worse than rewriting simple newbie ineptitude. And at least the newbies can be corrected. The others can take months to come around, and it's always kicking and screaming.

    3. Re:Stop it. There is nothing wrong with VB.NET. by Anonymous Coward · · Score: 0

      C#, which is an excellent language.

      You want to talk about programmers being ruined, look at what the experienced do with Java.

      You win! You're retard of the day!

    4. Re:Stop it. There is nothing wrong with VB.NET. by Anonymous Coward · · Score: 0

      From my experience there seems to be a sort of religious preference for C# over VB.NET, a bit like how some engineers prefer to use all uppercase letters. I've asked some and can't really get an answer.

      I don't mean to be insulting, but it is clear that you are used to working on toy programs, like many Slashdot posters (particularly those who mostly work in languages like Perl, Python, VB, etc).

      Go read up on the language concept of "strong type checking", and "compile time" or "static" type checking. A good book on the subject "programming languages" (as opposed to a book on any particular language) will be helpful here (as opposed to random blogs on the Internet).

      Next, read up on testing software. Learn what is meant by a "combinatoric explosion" of states. Understand how typical "large" programs can not be comprehensively tested, and how sophisticated static or compile time checking can help find a wide variety of problems in these programs that might easily be missed by even the most carefully crafted test suite that one can write in a reasonable amount of time (the real world is always schedule driven).

      Don't forget to read up on randomized testing, and coverage measurement tools.

      You might also read up on formal logic checkers (routinely used on and absolutely essential with the huge "programs" in Verilog / VHDL that generate chips), and on lint tools.

      Try to understand what the differences are between these tools, and why these tools exist. Think about how language design, particularly the type system, affects these various tools. Then think about what mistakes you might make in VB that might not be caught without a more sophisticated checking tool, perhaps one that requires extending the language in some fashion (often done with constructs in comments) for the tool to be able to do its job.

      While you are doing this, think about the difficulty of coordinating a multi-year project that will result in millions of lines of code written by hundreds of developers, in different countries, speaking different native languages and with different educational backgrounds, when you don't have strong and clear type definitions that are enforced by the compiler (but which also provide sufficient flexibility).

      Also think about the maintenance challenges posed to developers working with large systems when the systems are not written to use sophisticated type systems.

      Hopefully you will come to understand that one of the goals of having a sophisticated type system in a language is to facilitate communication, giving developers more time to hunt down logic errors since they don't have to spend as much time figuring out the basic atoms of communication.

      VB -- at present -- does not support a sophisticated type system. C# does. VB is a tool for amateurs that professionals are sometimes forced to use, C# is designed from the ground up for professionals.

  62. node.js by slashdice · · Score: 1

    it's javascript, so any idiot can use it. And "idiot who works for cheap" should be your number 1 criteria for someone writing back-end server code. (Yes, believe it or not, there are people too stupid to "learn" php.) That's what makes it webscale(tm).

    --
    Copyright (c) 1990 - 2014 Dice. All rights reserved. Use of this comment is subject to certain Terms and Conditions.
  63. Whatever the TEACHER understands best by petes_PoV · · Score: 5, Insightful

    If the teacher doesn't know Python, they will have a difficult time teaching it and the quality of the lessons will be poor.

    In practice, it probably doesn't matter what the language is. The key is that it will only be a student's first language - not the only one they will ever user. So it's far better to teach them well, in a language the teacher is competent in, rather than to have the teacher just a page or two ahead of the children in the class. Apart from anything else, that will give the kids a more positive impression of CS, rather than having a teacher who continually has to look stuff up or answer questions with "I don't know".

    It's also important for assessments that the teacher is experienced in the language that coursework is written in. Otherwise the marking will be hit and miss and the teacher won't be able to properly distinguish well written work from stuff that works by chance rather than by design.

    --
    politicians are like babies' nappies: they should both be changed regularly and for the same reasons
    1. Re:Whatever the TEACHER understands best by schlachter · · Score: 1

      When i read the teacher's response, I immediately thought, well, he's comfortable teaching VB and so he is justifying it after the fact. If he was comfortable with Python, he'd be arguing the oppposite.

      --
      My God can beat up your God. Just kidding...don't take offense. I know there's no God.
  64. Sticking with what he knows by caseih · · Score: 1

    You can't really fault him for sticking with what he knows and knows how to teach. Any of us would probably do the same. Yes I'm confused as any of you what he means about python being based on C. But I can't really fault him. He probably (obviously ) has no experience with python. Come to think of it most of you bashing visual basic probably haven't ever used it either.

    1. Re:Sticking with what he knows by Anonymous Coward · · Score: 1

      If all he knows is visual basic, he probably shouldn't be teaching programming.

    2. Re:Sticking with what he knows by caseih · · Score: 1

      Why is that? Have you ever used visual basic? For that matter have you seen any basic language in the last 20 or even 30 years? You do realize it's every bit as structured and powerful as Pascal and even c? There are lots of reasons to not to use visual basic but it's clear that you are not qualified to pass judgment here.

    3. Re:Sticking with what he knows by david_thornley · · Score: 1

      If all he knows is VB, he's not a good software developer, and I certainly wouldn't want him teaching advanced topics. He may well be good at teaching the basics.

      --
      "When you have eliminated the unacceptable, whatever is left, however improbable, must be the truthiness" - Holmes
  65. Java is used for the wrong reason by Anonymous Coward · · Score: 0

    Java is common in first-year uni courses because it's used as a weed-out course. It's on the AP exam because it's a common first-year course. It's winning these debates by being complicated and not fun, and thus being good at weeding people out early who won't finish the program.

  66. No language is best by Drethon · · Score: 1

    In my opinion what is important is how to think logically and organize a computer program. Some support this organization better than others but I haven't found a language yet that can't be written properly with care and thought. While I prefer something object oriented like C# or Python or even *mutter*Java*mutter*, the concepts of proper programming are most important.

  67. Programmers vs non-programmers by jandersen · · Score: 1

    I think what matters, when you learn to program, is that you enjoy programming; the language doesn't really matter. Some people seem to just get the idea, while others never quite get the hang of it - I suspect it has a lot to do with personality. In my experience, a good developer is somebody with an 'engineer's personality': who approaches everything in terms of how to construct things, who enjoys working out which procedure is best, what resources are needed etc. A good programmer is probably not bad at DIY, for that reason, this is something I have seen many times.

    I have been around a lot of programming languages and enjoyed most of them - except Perl and Visual Basic (sorry); Perls seems to me to be like a pink hammer with LEDs blinking (ie. too much attempted coolness) and VB is just a bit sad. BASIC wasn't bad, such as it was, but it was never really meant for much more than an introduction to FORTRAN. For learners, I'd say, start them off on C, so they can learn what really goes on inside a program, including all the obscure errors you can run into; then on to python, which is an amazingly pleasant language, where they can learn some pretty advanced concepts without worrying too much about strange errors. If they've got what it takes, they'll enjoy both languages; I don't really believe in always catering for the weakest. Being able to program is not like literacy or numeracy; it's more like poetry: unless you really think in terms of poetry all the time, you will never become anything more than a so-so poet.

  68. I started with C at age 12... by captnjohnny1618 · · Score: 0

    I cut my programming teeth on C as a middle schooler. It wasn't so bad. I had a hard time with pointers at first but that was more because I was learning from a "Teach Yourself C in 24 hours" book on loan from my cousin without any sort of teacher whatsoever.

    C has been my go-to language ever since. I know more than many of my friends who are actual CS and IT people (my background is in physics and math, but I now mostly program for medical image reconstruction) about computer architecture, assembly, how a CPU works, and the nitty gritty nuts and bolts of a system, because of that choice. Coding for GPUs also came very naturally to me. I've never had any issues whatsoever picking up any other language when I have needed to use one or when C wasn't appropriate.

    I feel pretty strongly that C is an excellent choice for a first programming language and much more flexible, useful and powerful than something like VB. I think that this day in age, Python would also be an excellent choice for a first programming language. It's not going anywhere for a few generations, that's for sure. Or... MATLAB anyone? ;-)

  69. Kids are programming by gatkinso · · Score: 2

    that is a win right there regardless

    --
    I am very small, utmostly microscopic.
  70. Seriously, Fortran by hooiberg · · Score: 1

    Fortran is a very simple language to get to grips with the basics: For loops, if statements, subroutines. These concepts are the same in almost every language. That way, the language does nog stad in the way of learning the concepts. Nothing like classes & objects, pointer magic, etc. Things that belong to a course aimed at somebody who has mastered the basics.

  71. Re:Pascal and VB both detrimental by Anonymous Coward · · Score: 0

    Never learned VB but what "ways" in Pascal? For the kind of simple programs that a beginner would write you could mostly map them 1:1 to C, except that back when I started C had no as good manuals around. And the trivial options to include assembler code in your programs with TurboPascal was a great plus. That vs. gcc inline asm is maybe a good example of Pascal vs C (even if it's really gcc rather than C), you can do really advanced optimization stuff with C but hell is it complicated in comparison...

  72. Next up... by mccrew · · Score: 2

    What is the one true religion?

    --
    Hey, Windows users, there is no such thing as "forward" slash, there is only slash and backslash.
    1. Re:Next up... by Anonymous Coward · · Score: 0

      What is the one true religion?

      vi/vim v. Emacs

  73. Easy... by itsdapead · · Score: 1

    So, if it was your call, what would be your choice for the Best Programming Language for High School?

    The problem I'd have with VB at that level is that it is PC/Windows-only, and only available for free/cheap subject to Microsoft's licensing whims.

    JavaScript?
    Pros: runs on anything with a web browser - if you host the kids work on a server they can run their work on their unrooted phones, tablets, games consoles, chromebooks...; you can get jobs writing it; it goes hand-in-hand with web design skills and its relatively easy to make nice UIs in HTML; easy for kids to share their work.
    Cons: it's Javascript!

    I think I'd seriously look at Javascript because of that list of 'pros' - and if that is unconscionable, something like Dart or Haxe that 'compiled' to JavaScript but fixed its, er... more easily misunderstood features, set up with a web-based editor/UI that made writing and running a simple function straightforward and hid all the boilerplate.

    Of course, an important part of the course, later on, would be to learn about other programming languages, compilers, libraries etc.

    That said, the main thing is not to let the perfect be the enemy of the good, and not to force teenagers into something obscure or incomprehensible on the belief that if they didn't learn {insert trendy programming paradigm de jour}, or used something that didn't have a A**** freeness rating from the FSF, that they'd be scarred for life. The world will not end if they learn VB, Python or Java.

    --
    In a survey of 100 programmers, 111111 thought that duck-typing was a good idea.
  74. Rely on C? by barbariccow · · Score: 1

    When it comes to more complex constructs Python cannot do them and I would be forced to rely on C (which is incredibly complex for a junior developer) VB acts as the transition between the two and introduces the concepts without the difficult conventions required.

    What complex constructs can't python do? I spent years of advanced python programming and NEVER had to write a module in C. I certainly have used other, open source modules written in C, but these are generally for very advanced or performance-intensive tasks...

  75. IDE and compiler on mobile??? by Anonymous Coward · · Score: 0

    What IDE shall I use? Does it have an IDE and compiler on Android? So if I teach Java students could do their homework on their phone or tablet. What about VB?

    Also mono is even slower than .NET (which already can easily be 40-100 times slower than Java on powerful servers). Look for mono in the following benchmarks: http://www.techempower.com/ben...

  76. anybody want to explain turing completeness to him by Trailer+Trash · · Score: 1

    When it comes to more complex constructs Python cannot do them and I would be forced to rely on C

    No. People use C to gain a speed advantage, not because python is incapable of doing something. This statement alone betrays a fundamental misunderstanding of computer languages that makes me wonder if he's qualified to choose what language his students use. The other issue here is that schools should use only freely available languages.

    http://en.wikipedia.org/wiki/T...

  77. What old versions of Visual Basic actually worked? by DanielOom · · Score: 1

    GWBasic 1.0? I dig the notion of BASIC being a gateway drug.

  78. Education should NOT have vendor lock-in by barbariccow · · Score: 1

    I remember in a school I attended there was a "Web Master's" club. I thought it would be a great place to go to practice web technologies, and give back some of the experience I had. Unfortunately, when I attended the first meeting of that year, I was horrified to find that they were using Cold Fusion for the web page! This meant I had to buy a very expensive license, just to learn something obtuse that I probably wouldn't use anywhere else, and that none of my real-world experience really translated. I continued to attend the club, because I learned there was basically no web programming going on and it was more to "hang-out", but I can't help but feel like if they had used real open languages like HTML and JS, it could have been a useful experience for a lot of people.

    1. Re:Education should NOT have vendor lock-in by Anonymous Coward · · Score: 0

      > I can't help but feel like if they had used real open languages like HTML and JS, it could have been a useful experience for a lot of people.

      What do you think the coldfusion was outputting? -1

  79. Wanted: knowledgeable high school teachers by Ateocinico · · Score: 1

    This guy's reasoning is an example of this:
    http://news.slashdot.org/story...
    And his remarks on complexity, C and python, show his lack of depth in the matters he teaches.

  80. Who cares? by Mr+Z · · Score: 5, Insightful

    I learned programming in Microsoft BASIC, assembly language and a touch of Pascal, prior to reaching college. I don't use any of those languages now. (Ok, I still program in assembly language, but for different processors.)

    As long as it's actual programming, with variables, data structures, and code to manipulate those things, then great! I don't really care if it's VB, Python, TCL, Lua, Perl, C++14, Delphi, Haskell, LISP, Erlang...

    The real point is to open up the computer as a programmable device, and to get kids seeing the computer as something they can extend themselves with their own creativity. For that to happen, you want to choose a language that students can pick up quickly enough to see interesting results early on. You don't want their first meaningful program to come in the last weeks of a year-long class.

  81. VB6 was better ??? by DanielOom · · Score: 1

    Something worse than Visual Basic? I can't think of any.
    SNOBOL? MUMPS? PL/1? Ada? Intercal? APL? Progress 4GL? PHP?

  82. Friends don't let friends by Atrox666 · · Score: 0, Troll

    Visual Basic..not even once.

  83. He is wrong... by gweihir · · Score: 2

    The argument that he would have to include C-based modules for "more complex functionality" is a straw-man. This is simply not true. Python natively offers everything a beginner needs, including advanced OO functionality. My guess is that this guy actually has some personal problem with Python and hence wants to avoid it. Possibly he wants to show off some platform-specific stuff (which has no place in a platform-agnostic programming course) and Python does not support that or he has problems understanding dynamic typing and how to use it right.

    As to the variable argument: Sure, but you can declare variables in Python, even if you declare scope and not type. This is however something that a competent teacher can explain and when doing interfaces to methods or functions, you can and sometimes will need to enforce types at run-time.

    Really, in most regards, Python is a modern, portable language, while VB is not at all. And for advanced students, sure, extensions in C require you to learn C, but Python has a really clean interface for including C classes and as an additional benefit, you learn how to do OO in plain C which helps some students tremendously to understand what an OO language does behind the scenes. The only language I know that is easier to extend cleanly is Lua.

    --
    Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
    1. Re:He is wrong... by torpor · · Score: 2

      I agree: Lua is absolutely one of the best things to be teaching high school students. You can either sit entirely in the Lua language itself, or you can learn to extend the capabilities of the VM and interface with outside libraries and frameworks.

      --
      ; -- the corruption of government starts with its secrets. a truly free people keep no secrets. --
  84. C isn't beyond beginners by Anonymous Coward · · Score: 0

    I know, I started with C. K&R is one of the shortest and most clearly-written tutorial books out there, to boot. Sure, it's easy to make mistakes when you delve into pointers, but for simple logic, C is well within the grasp of students.

  85. use everything, it is not about the language at th by Anonymous Coward · · Score: 0

    I would say an intro class, should do a basic survey of as many lanuages as possible, highlighting the pros and cons of each language, to perform similar tasks. The students from there can make their own choice about what they like, what they need for a job, and so on.

    In fact, they should be finding out exactly what this debate is about, such as why declaring variables and other goodies are so important. They should be breaking things a lot.

  86. Why do we care what some random idiot said? by Anonymous Coward · · Score: 0

    I guess I don't see why this is Slashdot-worthy. Some low-IQ teacher making ill-informed explanations to a parent?

    Personally, I actually like the original Visual Basic (version 6.0 and before). It had a GREAT UI system and internally the VM was really clean and solid, however, the idea that this would be a better language to start in than Python is not rationale.

    Also, the statement that C is "incredibly complex" highlights what a doofus this guy is.

  87. Re:Java dynamically typed languages by gweihir · · Score: 1

    No. Dynamic typing is not dumbing down things at all. It actually makes things a bit more demanding (not a lot) and it makes sure you write more code, understand your code better and write less syntactic clutter. Java is an extreme offender in the area of syntactic clutter and completely unsuitable for beginners.

    --
    Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
  88. I agree with the general premis by Anonymous Coward · · Score: 0

    I have to say I agree with the overall idea here.

    Some background: I mentor high school kids for a county youth work program. I usually teach 2-5 kids to code a year.
    I learned C -> C++ -> java in hs/collage then branched out to python, c# etc in the pro world.

    I really love VB.NET as an intro to programming tool. It has 3 things that I've come to know are really important to new coders. I'll use examples of code from some of these interns.
    1) Close to English readable syntax:

    If Data.currentUserCanEdit Then
            tbFirstName.enabled = false ...
    End If

    For Each row As dsDemographics.Client_SpecialConditionsRow In CurrentClient.GetClient_SpecialConditionsRows
              row.Delete()
    Next

    As a seasoned developer I don't really care for the long if statements a lot of other languages have for each statements, but I find with VB.net I don't even need to explain what a lot of code does. It means I can focus more on concepts like what an "object" is, how to write a function, what the object model does, and what events are.

    2) Weak typing. I don't have to explain casting objects to new developers. Once again, there are reasons to have strong typing in a professional environment, but there is a whole conversation about type conversion I don't need to have with lines like:

    Dim total as Double = tbAmount.text * 1.15

    even crazy stuff works like:
    dim integer x = "10" * 2

    While that IS bad code it is very important with new developers that they are able to make and actually see constant progress. It is easier for students as well as instructors to look over their code and say "hey this will bite you later" than it is for them to get stuck. Getting stuck and seeing no way forward is the kryptonite of the learning process.

    3) VB.net scales to complex process. This is where I usually write a don't use vb6 paragraph but I don't think it's necessary since it's no longer 2003. You can turn on strong typing, and the language supports dynamic typing, some functional paradigms, the same object polymorphism, and event model of all the big-boy languages (ok no multiple inheritance but can't have everything).

    Since it's actually used in production a lot of places it is a lot better than the pascal that I learned waaaay back when. Kids can actually hold their own after a few weeks in a conversation with more seasoned devs and have products that can go on resumes in a matter of weeks.

    Even with all this you still need to provide beginners with a good framework and achievable goals. The language is really not as important as having a good system for them to learn in and if you have that in another language then don't change it.

    1. Re:I agree with the general premis by MightyMartian · · Score: 1

      About the only part of your construct that makes it explanatory is reasonably descriptive variable names. That's a lesson that can pretty much be applied to any modern programming language.

      --
      The world's burning. Moped Jesus spotted on I50. Details at 11.
  89. Re:VBA/VB.Net and Python are very similar language by Anonymous Coward · · Score: 0

    > if you merge VBA and VB.Net, you get something very similar to Python

    Your comment is now poisoned by the fact that you are a complete moron.

    > if you merge VBA and VB.Net, you get something very similar to

    It has self so it's similar to Python right?

  90. What about caml? by Anonymous Coward · · Score: 0

    From a teacher's point of view it is the dream language:
    * It is a strongly typed language with a pretty specific syntax.
    * It is easy to use to illustrate recursive algorithms.
    * Nobody uses it so chances are that all your students will have the same level at start (that is null, or nil in caml).
    * No student in his right mind would like to use it at home so they will all advance at the same speed.
    * Student will instantly regret the pattern matching features when they will need to write a parser in java or c++. That will give them the "right tool for the task" state of mind.

  91. his most persuasive argument by phantomfive · · Score: 1
    And I call this his most persuasive argument because it's the only one he backs up with supporting evidence (things you can do in VB but not python? What are those? He didn't say):

    The Microsoft App store also actively encourages students to work in the VB.NET environment and it allows students to produce their own apps in this language, so the language is not dead, simply not as mainstream. If Sam were looking to take his skills further I actively encourage students to look into app development for the windows store as it has no yearly fee for students unlike some of the other stores and charges students a lesser fee for uploading and promoting their apps, there are also loads of videos on dreamspark.com for students to learn from. If Sam is also keen on programming he can also look at Young Rewired State which is a week’s programming in the summer holidays that allows him to develop his skills further (again, I will actively promote this in class and on the school twitter feed when it becomes available)

    Almost makes you wonder if he's getting kickbacks from Microsoft Project Spark. In my opinion (as if anyone cared) VB should be rejected because it's proprietary: there are other languages that are just as good, but without that encumbrance.

    --
    "First they came for the slanderers and i said nothing."
  92. No complex constructs in python? by bmearns · · Score: 1

    I'm curious what "complex constructs" the teacher thinks are missing from python that can be done in Visual Basic, or C for that matter. I haven't done VB in a long time, but I have significant experience in C and Python. The only construct I can think of that exist in C and not in Python is pointers, and I'd be surprised if they are covering pointers in VB in an intro class.

    Any ideas what is being referred to?

    --
    Slashdot is not a game, Slashdot is not a game. Crap, I just lost points.
  93. Those who can't... by CadentOrange · · Score: 1

    Mr Gristwood justifies the age old saying "Those who can, do; Those who can't, teach".

    It's annoying that he doesn't substantiate nuggets of "wisdom" like:

    • Python based on C
    • Complex constructs impossible in Python that have to be done in C.
    • Implied in the previous point, such impossible constructs are possible in VB.
  94. Hate the MS shills here on each .NET/C# discussion by Anonymous Coward · · Score: 0

    Parent post is completely legitimate and has useful information, yet it is constantly voted down, same for other posts in this thread. You see this on each .NET/C# or even MS discussion here on slashdot. Such a shame...

  95. This guy shouldn't be teaching by janoc · · Score: 0

    This fellow has obviously no clue about Python and likely not much about programming in general when he can spout such nonsense about Python being "C-based" and "unable to do more complex things".

    I read this more as - "I know Visual Basic so I will do everything in VB to save time". If he has said that, he could have avoided presenting himself as an ignoramus spouting techy mumbo-jumbo to get that parent off his back that doesn't really know much about the subject he is supposed to be teaching. I had colleagues who were teaching object oriented programming at a university using Max/MSP and dragging/connecting boxes - "These are objects in Max, so it is an object oriented programming!". But that is what you get when you have a music composer assigned to teach computer science (not kidding ...).

    I am really sorry for those kids, because Visual Basic is a pretty terrible language to start from - it is very limited in what it can do and then anything more complex is directly linked to the Microsoft Windows idiosyncrasies, with little abstraction. They would have been much better off with something like Python & Pygame combination (I did teach a first semester programming class like that). Or even better some language actually specifically made for this purpose - like Logo. Or even start with Scratch, Alice or Lego Mindstorms kits for complete novices that have really no clue yet and then move on to Logo or Python once the basic concepts are settled.

    People that are advocating C here have obviously never tried to actually teach it to complete novices (we are talking high school kids here!) - there you need to get the kids to first understand the abstractions like code, execution flow, the correspondence between real world objects and their modelling in a computer (variables, types, use of arithmetic etc.) Having to battle compiler errors, strict typing and stuff like pointers required even for printing a simple "Hello world!" message is really distracting and not helpful in that context. They will have plenty of time to learn about that later.

    Disclaimer: I did teach undergraduate programming courses, both in Python and C/C++, including using those Lego Mindstorms kits.

  96. An alternative for Linux users by lolop · · Score: 1

    For a Visual Basic like language on Linux, you can look at Gambas a bit like Visual Basic (but it is NOT a clone!).

    http://gambas.sourceforge.net/...

    For other arguments if he achieve to make his students understand concepts like variables, types, expressions, assignment, functions whatever be the language used to teach, its reusable knownledge for other languages.

    --
    -- Laurent Pointal
  97. VB = Meh. VBA = Hey, now! by unfortunateson · · Score: 1

    The one place VB still has some life is in the MS Office (and related apps) macro language, Visual Basic for Applications.
    It's mainly VB6 with some quirks... but you can get a lot of stuff done.
    I have clients that would prefer that I send them a Word template add-in instead of a 'compiled' add-in, since anything with a DLL requires an installer, whereas the template can be just dropped into the Startup folder to be usable.

    Sadly, rather than updating it to the more object-oriented VB.Net, Microsoft has left it foundering in the barely-OO VB6 era with some object stuff bolted on that never quite does what you need, and yes, there are certainly things that need a full .Net interface to be written that you can't do... but I've made a fair chunk of my career on VBA, and use it for automating Office stuff on a regular basis.

    --
    Design for Use, not Construction!
  98. backwards by Ragica · · Score: 1

    Kids should start with raw machine language and fairly quickly move up to assembly, and then maybe plain old C, and only then get to higher level languages later. These lower levels don't have to be mastered to high degrees, but just introduced to lay the foundation to build on logically. I think these intro courses look at things backwards.

    Higher level languages should be saved for experts as a tool for getting stuff done faster, with greater amounts of complexity, by people who understand how things work and are less likely to shot themselves (and their users) in the face.

    That being said, good programmers can start with any language... doesn't really matter all that much.

  99. In my day... by Schaffner · · Score: 1

    Back when I was in high school the district was thinking about buying a DEC Edusystem, which used a PDP-8/L. DEC brought one in and set it up in the library and gave one week classes in BASIC. The district decided they couldn't afford it so instead they a Compucorp programmable calculator for each school. Maybe that might be something to look into.

  100. This is allegedly a CS prof? by whitroth · · Score: 1

    "I would be forced to rely on C (which is incredibly complex for a junior developer)"

    Really? That's how he thinks? Can we move him to teaching HR, where he'd fit right in with the other utter incompetents?

    The first two course I took in programming, lo, these many decades ago, was a pseudo-assembly language with 13 instructions (including add and subtract), and then next was BAL (IBM mainframe assembler).

    C, "complex"? I taught myself from K&R. I *really* don't want to contemplate working with this idiot's code, or his students' code.

                    mark

    1. Re:This is allegedly a CS prof? by Anonymous Coward · · Score: 0

      "I would be forced to rely on C (which is incredibly complex for a junior developer)"

      Really? That's how he thinks? Can we move him to teaching HR, where he'd fit right in with the other utter incompetents?

      I know! I wish educators would do their job of PREPARING me for difficult concepts rather than shielding me from them.

      I'm curious and intelligent, I am fully capable of studying further if I don't quite get something. Nothing bothers me more than reading a text which says things like "this is a more advanced concept which will be covered later."

      STOP PROTECTING ME! I don't need to be spoon-fed. Give it to me straight, doctor, I can take it!!

  101. Re:Pascal and VB both detrimental by Bengie · · Score: 2

    Learning to program has little to do with learning a programming language. Programming is a thought process.

  102. VB isn't so bad by Control-Z · · Score: 1

    I've run a small business with VB for 20 years. Commercial software and database, website CGIs, order system, all written and maintained in-house. I know VB inside and out and it does everything I need for this (relatively simple) operation.

    Maybe VB teaches "bad habits" but properly written and commented code is more important than the language.

  103. Re:Pascal and VB both detrimental by Anonymous Coward · · Score: 0

    Err... Pascal and C are almost the same language, what are you smoking? Besides the sintax, the only differences you will find are basically in very obscure features of C.
    In fact, you can transform Pascal to C code and the opposite with almost just a text editor search&replace function!

  104. prolog or haskell by Anonymous Coward · · Score: 0

    +1 for Haskell

  105. prolog or haskell by Anonymous Coward · · Score: 0

    Although, while not being a Haskell expert by any means, I can say that there are a couple things I've encountered in the language that are very frustrating, and ought to be solved.

  106. JavaScript and HTML by trajano · · Score: 1

    If I had to prepare a curriculum I would probably be using JavaScript with JQuery and HTML for the intro course. The advantage of the language is the capability of quickly visualizing the application running with just a quick press of the reload button.

    The use of JQuery allows us to bypass using CSS to make some visual changes to the HTML.

    It will take a bit more preparation to create the template code that the students have to fill out initially though.

    --
    Archie - CIO-for-hire :-)
    1. Re:JavaScript and HTML by Anonymous Coward · · Score: 0

      > The use of JQuery allows us to bypass using CSS to make some visual changes to the HTML.

      Huh? Why not just use CSS for its intended purpose... i.e. making visual changes to HTML?

  107. Past VB and VB.NET programmer by rabun_bike · · Score: 1

    I hate to admit I spent many years programming in VB and VB.NET. The first language I ever learned was BASIC (80's) and then Turbo Pascal followed by C and then C++. Later on I moved to VB.NET (I still hate C/C++ development on Windows unless using some cross platform tool), Javascript, Java, C#, and back to C/C++ and lately Python. What I have found really nice about Python as a beginner language for CS is how closely Python maps to set theory, how well it is supported across platforms, and that the syntax is precisely closer to C which is a benefit and not a detriment. I personally think Python is a great choice for intro to CS with my only issues being that Python is mostly used as a scripting language and many of the concepts of compiled languages also are important to learn and know. As for Intro to IT or just "generally intro to programming" maybe it isn't the best language. I am not certain but I still think it is far better than the quirky syntax of VB and VB.NET.

  108. A random aside by quietwalker · · Score: 1

    Until I used the page tools to add a p { color: black; } to the page, I realized I was unconsciously squinting a bit to read the #888 font on a #FFF background.

    Who makes whole paragraphs look greyed out? Seriously. May as well make it all caps.

  109. HS CS Languages by Anonymous Coward · · Score: 0

    When I was in high school, we used Visual Basic for the Intro to Programming class and then used C++ in classes leading up to AP Programming. The exam, at the time, was given in C++

  110. Visual C# fits most bills by mistapotta · · Score: 1

    I've used Visual C#/GTK# (using SharpDevelop's IDE or MonoDevelop) for the past eight years as an introductory CS language at my high school. I feel the forms allow students to create a quick GUI program while still having the well-defined variables and object-oriented principles that will make them successful in AP Java or C++ whathaveyew. Our HS sequence for programming goes Visual C# to Java to C++ (for data structures)

  111. Python Assignment by RoccamOccam · · Score: 1

    First of all, I love Python. I get to program in Python all day.

    However, I often wonder if Python's assignment methodology confuses students that move on to other languages.

    In Python, an assignment is actually a naming operation, and not an assignment. On the surface, this seems to be the same thing, but it really is different. The other languages, with which I'm familar, do not operate like this.

  112. Why is C so hard? by CheesyMoo · · Score: 0

    I taught myself BASIC in 3rd grade, seemed like a good place to start. I did C when I was in 5th grade, why can't a high schooler handle C?

  113. Assembly by fyngyrz · · Score: 1

    IMHO, starting with assembly is by far the best choice, but it takes about a year to cover it well enough to provide a solid foundation. Most autodidacts tend to skip it, and most college courses only brush by it quickly.

    From asm to c, and from c to Python, add in markup concepts (HTML/CSS), database concepts and SQL, and from there, you can go pretty much anywhere you want to go, language-wise.

    That's a lot of ground to be covered in just a few words, though. :)

    --
    I've fallen off your lawn, and I can't get up.
  114. JavaScript by DriveDog · · Score: 1

    VB, what a horrible idea. And I thought Pascal was bad. It's a conspiracy to increase H-1B, since there won't be any capable programmers who grew up in the US.

  115. Even simpler: check out Roborally board game by Paul+Fernhout · · Score: 1

    http://www.amazon.com/Wizards-...
    "A frenzied race filled with computer driven chaos! At the far end of the galaxy lies a fully automated grid-widget factory. As one of the factory's eight redundant super computers, you have a lot of responsibility and even more free time. When boredom creeps into your circuits, you and the other computers have a little fun at the factory's expense. Pulling defective robots out of the maintenance bay, you pit them against one another in a destructive race across the dangerously cluttered and ever-changing factory floor. One robot will wind up in the winner's circle the rest go on the scrap heap. The game is for 2 to 8 players. It takes about an hour to play. "

    I agree with this comment on Amazon by Laszlo: "There is a place in our lives that is rarely spoken of and even less often brought to life with such perfection and beauty - that overlap between the strict von Neumann architecture that has defined our modern computer technology, and just plain silliness! Robo Rally is simple enough for many pre-teens to play, yet complicated enough for professional software engineers (such as myself) to really enjoy! It teaches the ultra-basics of computer programming in a very fun manner, while letting experts laugh at themselves and each other for silly mistakes or elements of chance and competition. While I think this game would be great for anyone who is vaguely interested in the subject matter, speaking as a software developer I can't stress enough that this game, for its unique combination of technical aspects and sheer silliness, is an absolute MUST for all nerds, geeks, hackers, and the like. ..."

    Just played it for the first time on Sunday, and it was a lot of fun. Simplifying, it is a bit like a board game version of turtle graphics, where on each round you get dealt nine cards and choose five of them to make a "program" for your bot (move forward 1, turn left, move backwards, etc). Your objective is to move your robot to a set of locations in order, while other players are doing the same. There are a lot of extra complexities of course (locked registers, laser guns, pits, conveyor belts, special abilities, etc.) that require a lot of thinking. There are no explicit conditionals, but it still would get anyone thinking about the basics of programming in a fun way. And maybe one could add conditional instructions somehow with new cards?

    I've also heard it said that the best way to get a kid ready to learn programming is to learn to play a musical instrument, especially the reading music part.

    Anyway, your solution of something like QBasic is very practical of course. I'd also suggest learning JavaScript because it is so ubiquitous and easy to get started for most people. Better yet, you could build something like QBasic on top of JavaScript that has the features you want. I've seen a couple (including from Slashdot articles). They often have a Scratch-like graphical programming element, but there is no reason they could not be more text-oriented from the start.

    Personally, I also like the CARDIAC pen-and-paper method, too.
    http://en.wikipedia.org/wiki/C...
    "CARDIAC (CARDboard Illustrative Aid to Computation) was a learning aid developed by David Hagelbarger and Saul Fingerman for Bell Telephone Laboratories in 1968 to teach high school students how computers work. The kit consisted of an instruction manual and a die-cut cardboard "computer". The computer "operated" by means of pencil and sliding cards. Any arithmetic was done in the head of the person operating the computer. The computer operated in base 10 and had 100 memory cells which could hold signed numbers from 0 to +/-999. It had an instruction set of 10 instructions which allowed CARDIAC to add, subtract, test, shift, input, output and jump."

    But then no one else back then my age seemed to get it... It probably helped that I had a KIM-1 I'd been playing with...

    --
    A 21st century issue: the irony of technologies of abundance in the hands of those still thinking in terms of scarcity.
    1. Re:Even simpler: check out Roborally board game by Anonymous Coward · · Score: 0

      I've never heard of the CARDIAC before. That's...a really interesting toy actually. I'd have loved to have one of those back when I was a child and computers were too expensive for my family. I had this GWBASIC manual I kept reading and fantasizing about making things with that arcane knowledge.

      Of course I eventually got my own PC when I had my own money, and with current programming languages, libraries and everything, that stuff seems trivial now. But I cannot forget the mystique of those days. That stuff I learned was essential to get somewhere with other languages like C, Python, Lua, JS... as it taught me the process of coding, even without a computer to use that knowledge.

      There's a point to that story though. I never got into CS education, though, mostly learning by trial and error and online references and user manuals. Knowing how that GWBASIC manual affected me, having something like the CARDIAC would have taught me more things that I had to learn the hard way later with less free time due to work and life.
      I knew how to code and make things work, but I had no idea of the internal workings of a CPU, memory or machine code, which would become necessary later on.

      If the thing gets a facelift and maybe a more visual approach (perhaps with some extra 2D visual instructions and a sheet of paper with a 2D grid) it might be still useful for the world of today. Today you can kind of do the very same thing directly with electronics and keep a low unit price, but I don't know, I think the full manual approach does more in terms of "learning how to think like a machine".

  116. Programming will not even exist in 10 years by cjonslashdot · · Score: 1

    Why, why, why are schools so interested in teaching kids to program? Programming will not even exist in ten years!

  117. Programming or CS Concepts? by Slime-dogg · · Score: 2

    The question is for programming, but the blog discusses AP CS. There are differences there, which are fairly important.

    If one were to teach another to program, then I'd stick with a language that is closer to English. This is a reason why PASCAL or BASIC was used - they are a lot more verbose in nature than C, Java, etc. I think Python should qualify as well, because you do want to impress upon the learner the importance of formatting.

    For CS concepts, it might be better to start with a language that's closer to the concepts in CS. For this purpose, I'd say Logo. There's a direct feedback in Logo, and it starts really simple. I learned it in junior high school. From there, you can get crazier into the functional programming world and migrate to scheme or full blown lisp, which then translates rather well to automata, grammars, languages, etc.

    --
    You need to restart your computer. Hold down the Power button for several seconds or press the Restart button.
  118. Why UK teachers like Visual Basic : real reason. by autismuk · · Score: 0

    Firstly, I'm both a qualified teacher (PGCE, the UK teacher training qualification) and a developer (BSc (Hons) Comp Sci, MCPD) in the UK. So I have a foot in both camps. It is obvious that this bloke, like most teachers of "Computing" in the UK has no clue. "It is true that Microsoft stopped programming in Visual Basic in 2005, however they did not stop programming in derivatives of this language and developing the software to program in visual basic, meaning as a foundation language it is perfect for introducing complex programming constructs." anyone with a clue would be fully aware that there is no real comparison between VB6 and VB.Net in anything other than the most Basic (ahem) syntax. VB.Net is really a syntactic sugar for C# but the whole, well, almost everything is completely different. Yes, there's a hack library which sort of works a bit. Now, in answer to the question any developer would ask "WTF are you teaching a thirteenth rate Basic language" ; there are various reasons. The teacher can't really program, doesn't understand OOP, Modular programming, Event programming or how .NET works (they will complain endlessly about strings not being mutable first class variables for example) and they really don't understand why Quick Basic is awful and totally unsuitable for future learning. But the real reason is this. Nobody else in the UK education system knows much about computing either. So the idiot examiners look at a Windows Form with some buttons on which does something vaguely (say a simple calculator) and they think (and score) as if this is some big programming achievement rather than just dragging and dropping a couple of objects and typing a couple of lines of code (probably copied) in. If they'd done it the way they did when I started (WinMain, message pump, create window etc.) then yes it would be an achievement. It's a bit like those 'impressive' Wizards for things like .NET which turn out a form with querying, sorting and so on all built in. They haven't really 'coded' anything, they've just clicked a couple of buttons. But it ticks boxes, the fact that it's just zero effort or understanding, nobody cares. UK examinations are about achieving this with the minimum of effort with zero interest in whether what is taught is useful or developmental or not, so in that sense VB6 is absolutely ideal. Another example, from MFL (Foreign Language teaching) which illustrates it better. There is a spoken exam, the idea is that someone will talk with the student in the language in question, to see if they can 'converse' in French, German, Spanish, whatever. It's supposed to (it was years ago) to be completely free flow, you knew the subject might be "My Holiday in France" but not what the examiner would ask. But what actually *happens* in most (if not all) cases now is the questions are known in advance and the students learn the answers verbatim (usually they have these little keyrings on with the Q+A and they practice repeating them). Very effective for passing the test, which simply becomes a memory test. Useless for learning French - it doesn't matter whether the language is French, Spanish, Klingon or just made up, because the student is simply repeating memorised answers without knowing what they mean (often). And no, I'm not being cynical, exaggerating or anything like that ; it really is this bad.

  119. VB Might be more productive for non IT careers by androidph · · Score: 2

    I'm working on Java project for 10 years + and just now I had a project that requires some Excel VBA work, which I realized this is more important to business users than your JEE applications. Big enterprise application would requires $$$ for any small change that business user really need. Not to mention needing at least 3 people to accomplish (developer, tester and admin); and don't forget the manager. So if the only objective is to let people be productive with their basic coding skills and will be able to use it in their careers outside of Software Engineering, I would also recommend learning a bit of VBA.

  120. Visual Brainfuck FTW! by Anonymous Coward · · Score: 0

    well, $SUBJECT says it all, really.

  121. complex constructs Python cannot do them by Anonymous Coward · · Score: 0

    What exactly is a "complex construct" and what can't Python do that C can do? Volatile memory locations?

  122. Python simply a better choice by Stonefish · · Score: 2

    Python is simply a better choice for beginers, . It's indent based syntax indirectly teaches students what programs should look like instead of require the teacher to state how indentation improves readability. There are many other nice features however these have been covered elsewhere. I have worked in IT for 25 years and about a decade ago my sister who teaches senior high school students enquired about 'better" teaching languages. I suggested python and after more research and similar suggestions from IT staff in Sydney University she adopted it. The NSW department of education rates teachers based upon their performance based the performance of the students compared against their baseline performance and she has consistently performed in a top few percent. Python won't make a great educator however it is a tool that a good educator would choose.

  123. I started with C in high school by Anonymous Coward · · Score: 0

    I started programming by taking a programming class through "ITV" (interactive television system used for distance learning in the 90s) from a state community college when I was a junior in highschool. I got an A in the class and it prepared me well for my introductory programming classes in college (Which were taught in C++ when I attended, my college has since changed to Scheme and then to Python for teaching programming concepts, I believe one or more advanced programing classes are still taught in C++). My friend, who was a PhD student studying AI and Lisp hacker, wrote the Scheme book for the introductory course - which was called "Solving Problems with Computers" (intended for incoming CS students with little programming experience and non-majors that needed a programming class to satisfy their degree requirements - lots of New Media students). So many non-majors complained about Scheme that the course was taken away from him and changed to Python.

  124. From somebody who teaches this exact thing... by sm284614 · · Score: 1

    I teach Computer Science/programmin to 11-18-year-olds in the UK. It's very easy for any professional or academic to say that everyone should learn C, python, or whatever else. The questions those people should ask themselves is have you actually had to teach those things at that level, and are you aware of all the constraints that the average school pupil, teacher, or network has? I inherited my first class (16-17 year-olds) who had been learning VB6 for a year and had to stuck with it, I moved the next year group to VB.NET and it worked well. VB.NET, if taught correctly can teach the logic, syntax, and programming concepts needed to start a new project in a new language. Importantly, the majority of pupils from 13+ are able to understand the meaning behind virtually all the code they are writing. I could not say the same thing about teaching C. The post from the teacher in question is clear: we are not teaching a specific language, whatever that may be, we are teaching the concepts of programming, from procedures, and conditions to data structures and object orientation, in order to solve problems. It's like arguing that teaching pupils the recorder is stupid because they should all learn the cello; if they learn to read and compose music, they can pick up whatever they really want to do later.

  125. Cygwin to the rescue (if it's even needed) by Phil+Urich · · Score: 2

    The argument goes both ways -- I've spent hundred hours of my life learning POSIX, and if my boss wants me to run a POSIX program in Windows, I'm pretty much doomed.

    Aha, but see, that's another reason to argue against proprietary systems and stacks. When things aren't proprietary, it's nearly inevitable that crazy, determined people will port it to everything you'd want to run the stack on; if your boss wants you to run a POSIX program on Windows, Cygwin certainly provides a pretty damn complete environment for doing so. Nearly every CLI programs I've ever wanted to use on Windows that I can on Linux is already in their repos, even, so the chances that you've written a POSIX-compliant application that can't run through Cygwin seems quite small.

    And hell, a lot of the time these days things aren't necessarily so low-level, so stuff like MinGW are all that one needs to compile a Linux/BSD/whatever-aimed CLI program for Windows. And Free toolkits like Qt supply all you need to write and compile full GUI programs that'll run on POSIX-ish systems just as well as Windows, and hell, the few things you're for some reason doing low-level enough to require POSIX somehow can probably be #ifdef'd with what little WinAPI you know.

    --
    I remember sigs. Oh, a simpler time!
  126. Python simply a better choice by slowboy · · Score: 1

    I agree.

    There are more key concepts more easily taught in Python than in other languages. I had my 9 year old on Khan Academies Javascript course, which was good at teaching concepts, but only as far as Javascript has them. For a real OO implementation and ease of use Python stood out. I got my son the excellent "Python for Kids" by Jason R. Briggs and he picked up a lot about classes and methods very quickly. IDLE is an easy to use tool for beginners, and other resources are great. I like Python as it's a real language used to solve real problems (unlike Scratch et al). Come AP testing time (US) he may have to switch to Java, but there is a good chance the test will be Python by then.

  127. best starter: pascal by maestroX · · Score: 1

    clear, unambiguous, imperative, focus on data models.

  128. why do people dislike declaring variables? by Anonymous Coward · · Score: 0

    Why do they want to conflate assignment and declaration?

  129. Multiplatform BASIC by hackwrench · · Score: 1

    That's why I recommend QB64, which has compilers for Windows, Mac, and Linux, and can compile to Android in their Windows version.

  130. Developer mode by Phil+Urich · · Score: 1

    Actually, Chromebooks do indeed have a shell and a default text editor. I think it's VIM? I forget now, and I left my Pixel at home and normally have it booted into a normal Linux desktop. The trick is just that you have to flip it into developer mode, which then gives a scary warning screen every time you start it up, and you're giving the kids a lot of leeway to muck up the system then I suppose, but on the other hand resetting it entirely is as simple as hitting spacebar and then y (if I'm remembering correctly) upon boot one time, and giving the kids who want to fiddle the ability to fiddle is probably the best education you can give many of them---figuring out how school computers and networks worked so I could install Doom and play it with my friends taught me more valuable lessons and skills for my current sysadmin job than any actual classes did!

    --
    I remember sigs. Oh, a simpler time!
  131. Just say "NO" to gateway languages by Anonymous Coward · · Score: 0

    Just as gateway drugs seem, and often actually are, harmless and non-addictive but lead to far more addictive and harmful drugs that can ruin users' bodies and minds, so-called "gateway languages" can seem harmless enough and actually be productive while insidiously instilling bad programming habits and behaviors that can ruin a team's morale and drive and lead to lethal products such as unmanageable code, poorly defined objects and improper interfaces in more complex languages. This can lead to early resignations or retirements by highly frustrated programmers and the untimely death of major software projects.

    BASIC has been known to be brain-damaging by Computer Science experts for over forty years (Edsger W. Dijkstra, SIGPLAN Notices, Volume 17, Number 5). Just say "NO!" to gateway languages!

  132. More on CARDIAC cardboard CPU simulator by Paul+Fernhout · · Score: 1

    "Old Educational Computer Resurrected As a Spreadsheet" http://science.slashdot.org/st...

    Which links to:
    http://www.drdobbs.com/embedde...

    See also:
    https://www.cs.drexel.edu/~bls...
    http://en.wikipedia.org/wiki/C...

    A downloadable emulator mentioned in the Dr. Dobbs article:
    http://www.kaleberg.com/softwa...

    But ideally it would be in JavaScript and run in a web browser... Could make a nice small project for someone...

    --
    A 21st century issue: the irony of technologies of abundance in the hands of those still thinking in terms of scarcity.
    1. Re:More on CARDIAC cardboard CPU simulator by thogard · · Score: 1

      My early Jr High computer books included things such a picture of a pigeon hole as a repression of memory. It used the classical "input/processing/storage/output" model. Flow charts where used to demonstrate breaking a problem down into parts that the computer can cope with.

  133. if you can justify VB then Vx-REXX is an option by Anonymous Coward · · Score: 0

    Easy to use, has a GUI code editing tool, a nice and easy to use language with syntax help and parameter completion a few keystrokes away. And there are open source versions of REXX so it's future proof. Justify MS Visual Basic? Really?

    http://en.wikipedia.org/wiki/VX-REXX

  134. Get off your high horses. Software is a BUSINESS. by gestalt_n_pepper · · Score: 1

    It's NOT an art form. If you're a programming diva and you see, Oh, sob! Bad, sloppy programming practices...!

    Blah, blah, blah. We've heard it all before.

    Software is about producing something usable for money. You don't expect the bricklayer of your house to be an architect with a doctorate. You don't expect the guys nailing boards together to be either. Similarly, every person who makes money programming something doesn't need to know every aspect of software development down to the level of the circuitry, nor do they need to do it perfectly.

    Sometimes you need a skyscraper. Other times, you need a quick shed in the back yard. Usually, you need something in-between.

    Can there be problems or maintenance issues? Sure. I need to replace bricks and board every so often too. All structures are imperfect and must be adapted to changing conditions (Rotting wood, rotting OSs, etc.)

    What these ivory tower assholes don't want to admit is that software development is a construction business like any other. They want their perfect constructions to exist forever in Platonic Space as perfect contemplative objects...

    Get real. I hire the programmers I can afford. We fix it later if needs be. That's the real world, and that's how it will always be.

    --
    Please do not read this sig. Thank you.
  135. "Visual Basic" (Disambiguation) by Anonymous Coward · · Score: 1

    Today, "Visual Basic" is the language formerly known as "VB.NET". When Visual Studio 98 (and thus VB6) support ended in 2005, the next version of what was "Visual Basic .NET" was named "Visual Basic 2005".

    A lot of greybeards around here probably think of "Classic" VB when they hear the name Visual Basic, with its kludgy use of "On Error Goto" for error handling, and the use of variants in lieu of an explicitly typed declaration. Modern VB has all the things you'd expect from a modern high-level language: Try...Catch blocks, strong typing, fully object-oriented, 64-bit ready, etc.

    The teacher in TFA doesn't make it clear what he's using.

    1. Re:"Visual Basic" (Disambiguation) by autismuk · · Score: 0

      I think he's using VB6 (hence the comment about 2005). If he knew what he was talking about, the argument would be that VB.Net is a non-scary language because it doesn't use either curly brackets (C#) or indentation blocks (Python) which can sometimes be confusing for average pupils age 14 with little or no experience of programming at all. Whilst VB.Net is really a bridge you can do almost everything you can in C# (and a few things you can't, optional named parameters for example). Plus IME an extraordinary number of schools still use VB6 or similar because it allows them to meet the exam specifications without much effort at all, it's easy to knock out something 'impressive' to the uneducated (exam boards and moderators). It's not clear because he's clueless. Python is 'based on C' is it ? I can see very few similarities at all, does he mean 'written in C' ? Python cannot 'do more complex constructs' than C ?

  136. "C (which is incredibly complex" by mattack2 · · Score: 1

    C (which is incredibly complex for a junior developer)

    What the heck? Didn't they learn it in college, which is even earlier than "junior developer"?

    A "junior developer" that doesn't know C, among the most widely used high level languages of all time?

  137. I wonder what he was really saying... by Anonymous Coward · · Score: 0

    I think most people here agree that what he's saying is pretty close to complete nonsense. However, VB definitely has an advantage over Python, that if you are working in MS environment, then writing windows like programs are a lot easier in VB than in Python. For that matter, the simplest python program need to run in a console, which looks weird to many Windows users. If you want to show people how make dialogue boxes, basic windows, etc., without them knowing how to solve a problem, then I won't be surprised if VB is much more powerful than Python (assuming most of your students are using Windows machine, which might not be so far from the truth). If you want to teach people basic CS concepts, then Python is a pretty nice program, and pretty hard to beat IMO.

  138. COMMON LISP by ccc31807 · · Score: 1

    I taught programming to a group of teenagers with no previous programming experience. I chose Common Lisp, using Conrad Barski's 'Land of Lisp' as the text. My objective was not to teach a particular language, but to teach HOW to program. The big advantage to Lisp is that there's no syntax, after all, everything's a list. I've also taught C++, Perl, and JavaScript, and in my judgement, those teenagers made mare progress in Lisp than college age kids did with the more traditional languages. At the end of the course, they were successfully writing real programs, which is more than my college students ever did.

  139. Stop it. There is nothing wrong with VB.NET. by Anonymous Coward · · Score: 0

    From my experience there seems to be a sort of religious preference for C# over VB.NET, a bit like how some engineers prefer to use all uppercase letters. I've asked some and can't really get an answer. C and C++ are a different matter, as they clearly offer different and useful tricks.

    I haven't done much in C# for a while and have been thinking of getting back into it, for kicks. I think that I did some MVVM web-related code last time I used it.

    I've written in both but am most comfortable in VB.NET . I find it irritating to have to put in all those semicolons when the end of line is clear enough, and with much nesting the curlies can get confusing. I think that my main preference is that, since I type quickly, I like a more text-like language because I feel that it flows more easily (more letters, fewer punctuation marks).

    I also like that VB isn't case-sensitive, and will correct capitalization for you. This saves you from stupid capitalization mistakes (for those of us who actually see a point in using capitalization in informative ways) and on a large project makes it easy to check whether you've typed a correct variable name by using lowercase and noticing whether the IDE pops part of it into uppercase.

    The Visual Studio IDE is very helpful in both VB and C#. Most of my recent work has been VB.NET (my choice) but I often read C# and used it more for mobile coding or pulling in others' code (translating from C# to VB, pretty easy in fact).

  140. Unity - Mono by 7bit · · Score: 1

    Right and just how big is the programming market in the Mono world? .NET was created solely as an attempt to kill Java and portability, and Mono is only tolerated because its usage is so small and because it occasionally serves as a distraction.

    Considering that all programming in Unity3D uses a subset of Mono I would say a decently sized market these days.

  141. Nothing wrong with BASIC by Anonymous Coward · · Score: 0

    I first learned how to "program" in Hypercard on my parents' old Mac. After that, I moved onto writing games on my TI-85 using TI-BASIC. Then learned RDBMS in Access along with VBA. That translated very well into full-blown SQL server with VB, and from there to C#, C++, Java, javascript, etc.

    There is nothing wrong with BASIC. Most people who start learning these concepts are not going to become full-fledged master programmers, and that's fine. For many people, a working knowledge of VBA will be more helpful than anything else for basic automation in Word, Excel, Access, etc. A good programmer is going to make it regardless of what language they start with. If they aren't gonna make it anyway, probably better off with VBA than Python for their everyday office tasks.

  142. netlogo by entropiccanuck · · Score: 1

    I just finished my teaching my first semester of a computer programming class. I used NetLogo, a descendant of Logo. I hadn't used it much before, but a group at the Santa Fe Institute here in New Mexico was working to have more CS taught in high schools. They were going with netlogo, and the programming curriculum had an emphasis on scientific modelling rather than traditional CS topics like search/sort algorithms.
    I was skeptical of Netlogo at first, as my real world experience was mostly with Python/Django, but the kids really took to it. There was some classic Logo programs (Spirographs), but CS topics like recursion (drawing a fractal tree) and sorting (a bale of turtles sorted on different criteria, with different algorithm efficiencies) were covered too. There was some great modelling though, for ecosystems or a disease spread model.
    For my second semester of the class I'm switching to Python, to give the kids a different perspective on programming.

  143. What about chemistry students with no lab at home? by msobkow · · Score: 1

    Your point about vendor lock-in is pointless. There was a time when computer classes were taught using terminal-based systems, and everyone had to use the school computers, much as chemistry students have to use the school's labs.

    You kids. So damned spoiled nowadays.

    --
    I do not fail; I succeed at finding out what does not work.
  144. C# maybe. Not VB. by MikeFM · · Score: 1

    I could see an argument for C# maybe but not VisualBasic. I like Python best but C# programs do usually run faster and the harder type checking is helpful most of the time. I wish C# had real decorators, had a unlimited lossless big number class with its existing number classes in a logical hierarchy under it, had a standard epochs-based date time class, had a standard way to flag any variable as un-nullable, had a standard way of defining order-aware structures for import/export, had a standard way of creating event logged data, and had events that weren't a bit wonky and mysterious. It'd be nice if there was a way to create a subprocess that acted as its own program with its own memory, disk permissions, etc but I can't say I've seen any other language get that right either. At least VB essentially maps all the same underpinnings as C# .. just not as well and using weird terminology and syntax. Python has its own unique syntax but it's clean and uses pretty standard terminology.

    --
    At what price learning? At what cost wisdom? The price is a man's peace of mind, and the cost is his life.
  145. Quite the opposite by Anonymous Coward · · Score: 0

    I see Java programmers building Python code every day. The code just plain sucks. It doesn't make use of the expressiveness of the language. A Python programmer going to Java will be frustrated and annoyed, but will write good Java code after a short period. The reverse is not true.

    MIT, Berkeley, and many other schools start with Python. It doesn't have the same effect as Basic. It's not a question of "human" readable, but of based around good design practice. Human readable is almost always a good thing; I can complicate any language with more bad syntax, and it doesn't help. The problem with Basic isn't readability, but the brainfuck way in which it forces you to organize code.

    VB actively encourages bad design practice. It's a broken way of organizing code. That carries along when you move. Python encourages good design practice. Pythonic code is good code. That also carries along. C and Java encourage one way to write code, which while not broken like Basic, is only good for some settings, and not for others. People coming from C/Java have a very hard time writing other types of code (e.g. functional) when it's useful. From Java, they have a hard time using the right OO paradigm for the right task, and are lost when something is best expressed as structured. They force everything into nouns, even when verbs make more sense. Etc. C coders do a bit of the reverse, although not as badly as Java coders. C somehow doesn't seem to permanently break people, the way Java and Basic do -- there's just a bit of a learning curve.

  146. Freebasic maybe? by Z80a · · Score: 1

    First, Freebasic is truly free and runs on several platforms unlike VB that is strictly tied to windows unless you use Wine etc..
    Secondly, if you're trying to teach the basics of the basics (variables, if statements etc), an clean environment like the freebasic is much preferable to the visual basic one, as there's no functions, classes and things that are only useful on the vb environment itself like the window editor itself to worry the student and take his time.
    Of course, if i was going to use it to teach, would be just the basics, getting the student used into how to formulate his own code and having fun doing so and then quickly boot him into something actually decent like python or C.

  147. C is hard? by YoungManKlaus · · Score: 1

    I had quite the contrary experience. C was my first language and it is super awesome because it is so simple.

  148. Not python by otter42 · · Score: 1

    Not python. It has an obnoxious syntax that is incompatible with modern IDEs. Python's flexibility is really cool, but the poor syntax (len vs length, [-1] instead of [end], etc..) and use of whitespace as a syntax unnecessarily complicates programming and makes it hard for a modern IDE to enforce style.

    What we need is a language with python's back end but with a front end that wasn't created by someone with an axe to grind when it came to syntax and program layout.

    --
    www.eissq.com/BandP.html Ball and Plate System. Amuse your friends. Crush your enemies.
    1. Re:Not python by FryingLizard · · Score: 1

      Completely disagree; having spent decades writing in many languages, when I first used Python I thought "WTF this enforced whitespace stuff is ridiculous" - for about two days, then the lightbulb went on in my head and I realized the supreme joy of having everyone's code use the same formatting; It's a huge win for code readability. IMHO the syntax doesn't suck at all; it's very productive, concise and clear IMO.
      Python is also (with some corner cases) extremely portable; I switch runtimes between Win/OSX/Linux all the time and the code Just Works.
      It's not an absolutely perfect language but it's damn near close enough for me.

      --
      [FrLz]
  149. Re:Java dynamically typed languages by sanosuke001 · · Score: 1

    I completely disagree. Dynamic typing makes keeping track of what you're doing more difficult; at least for a beginner. If they don't understand the difference between a string, an "object", and a numerical value (which is confusing itself) then they cannot be an effective programmer. Also, writing more code and being demanding aren't what I would define as being a additional bonus you get for using a dynamically typed language. You write more code because it doesn't work well and you need to fight with the language more than use it. Also, the dynamically typed aspect makes it more demanding the same way driving with your eyes closed makes driving more demanding; it is not helping you in any way shape or form.

    Java's "syntactic clutter" I call "helpful verbosity" and most scripting-turned-application languages are sorely lacking in readability; something Java has been getting better at in recent years. Java forces readability and corectness more than most scripting languages I've ever used, at least. Structure is more beneficial to a beginner than freedom.

    --
    -SaNo
  150. Connection timed out by tepples · · Score: 1

    How well does Tutorials Point's online software vm environment work on IOS?

    Not at all, seeing as my connection to www.tutorialspoint.com is timing out at the moment. And even if it weren't, it'd work only as long as the device remains connected to the Internet. An iPhone or cellular iPad? Fine, so long as parents are well-off enough to keep the data plan valid. An iPod touch or Wi-Fi-only iPad during the ride on a yellow school bus? Not a chance.

  151. Edge case focus by tepples · · Score: 1

    You really are too focused on edge cases.

    I'm in good company: "First they came..."

    1. Re:Edge case focus by CronoCloud · · Score: 1

      Jesus christ, I can't believe you wrote that. Not having a windows pc is no where close to being equivalent to THAT. Not The Same Thing.

    2. Re:Edge case focus by tepples · · Score: 1

      I fully agree with you that the moral hazards associated with policies advocating wide use of deceptively inflexible software and hardware are nowhere near those of the National Socialist party. But the general reasoning still stands: First $whatever_authoritarians came for the people in situation A, but I shut up because I was not in situation A at the moment. Likewise for those in situations B and C. By the time they came for people in my situation, the tradition of speaking only for your own exact situation was so ingrained that there weren't enough people speaking for my situation, and my livelihood ended up written off as acceptable collateral damage.

      The other reason is my programmer mentality. As a programmer, I need to be aware of how my code behaves in situations other than the most common one. These situations are called the edge cases. A program is more reliable if it handles edge cases correctly, and a policy is more complete if it provides for edge cases.

  152. Pascal ? by ToddInSF · · Score: 1

    I remember Turbo Pascal in a programming class in college.

    In 80's that is...

  153. Matlab? by rogerbly · · Score: 1

    Matlab has become a popular intro CS language for engineering students. And, you've probably noticed that those $300K per year PhD "Algorithm Designers" in your company use Matlab for development, then have someone translate the final algorithm to a production language.

  154. Stephen Wolfram says Basic is not that bad by Anonymous Coward · · Score: 0

    Stephen Wolfram: "The idea that students have to learn #include, etc.—this kind of strange incantation of having to write at least 20 lines of code to get their first C program working—is really unfortunate. It gives them the idea that programming is much more of a black-magic kind of thing than it actually is. That's a pity.

    In a sense, BASIC was, from that point of view, a much better kind of language."

  155. Better, worse, whatever by Anonymous Coward · · Score: 0

    Any language that vaguely looks like english and can handle the teaching tasks is a fine teaching language. I don't see VB as BETTER for teaching at this level - and ESPECIALLY not for the reasons this teacher justifies it - but I wouldn't say it's really a terrible choice either.

  156. Again, how is the proprietary software better? by tepples · · Score: 1

    Are you seriously saying using proprietary software to teach beginning CS if it's the best tool still isn't the best tool because it's unethical?

    Implicit in this is a claim that "it's the best tool" in some manner. To determine whether the ethical hazard of forcing inferior tools on students outweighs the ethical hazard of forcing non-free software on students, I first need to see the facts in each case. So let me rephrase my previous question in the terms of your post: In what way is proprietary software demonstrably better "to teach beginning CS"?

  157. Page count... of language.. by niftymitch · · Score: 1

    The incredible complex bit is bogus
    The book on "c" is vastly shorter than any VB intro text.

    If he is a good instructor any modern or near modern language is fine with me (I have my doubts).

    I have my preferences in strongly typed languages and I am open to functional vs. object oriented
    models. I have been astounded with the work that clever folk do with OO languages but I get
    disillusioned when maintenance becomes an issue. Pascal helped many instructors and for
    that reason alone still needs to be on the list.

    Any language that takes more pages to describe than "The C Programming Language" uses
    is suspect to me. Sadly many consider the big pile of library functions and all their interactions
    as part of the language.

    Modern languages need to be precise enough that a compiler can make common optimizations
    safely. A foundation of basic library functions that only depends on the language itself can be
    volume II. Having said that string libraries need to be improved. Math libraries are important
    to me so Vol III but bounded to K-12 math and statistics. Sorting and Searching can be Vol IV.
    University level tools and goals as addressed in libraries need their own number space.

    But Vol I needs to be the language itself and no more.

    --
    Truth is stranger than fiction, but it is because Fiction is obliged to stick to possibilities; Truth isn't. Mark Twain.
  158. Delphi/Object Pascal still checks all the boxes by Anonymous Coward · · Score: 0

    Pascal has always been a good teaching language. It still is, and the recent versions of Delphi have all the latest language features from aspects and closures to regular expressions and unicode strings. Visually it is as easy and quick to develop in as VB, the compiler is fast, it can produce fast running stand alone executables, and it can also target iOS, Android, and OSX in addition to Windows.

    The academic edition is fairly cheap and there are hundreds of books for Pascal that all still work with Delphi.

  159. your all idiots by Anonymous Coward · · Score: 0

    Reading the amount of shit in comments about programming is depressing.....

    Pretty much all of you are idiots..

    The language does not matter!!!!! (although avoiding stupid fucking white space python is a good idea!)

    The most important is teaching about how variables, allocation, decisions and looping work..

    Once you understand the basics you should be able to do it in ANY language.

    In 40years I haven't come across a coding language I could not program in...

    From my perspective they are all the same.

    Only the verbs and the fancy way of laying shit out changes

    1. Re:your all idiots by Anonymous Coward · · Score: 0

      > In 40years I haven't come across a coding language I could not program in...

      And how many times have you reinvented LISP?

  160. If it involves coding .. by ananthap · · Score: 1

    If it involves actually thinking about what you are going to write instead of cutting, pasting, failing, following up on the net (and not by thinking through) then certainly lower level languages are complex.

  161. PYTHON by Anonymous Coward · · Score: 0

    Is easier to learn than VB, has VASTLY better libraries and is trivially extensible with C or Fortran. Holy crap I'm a Microsoft shill most of the time but this? Really?