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?

418 of 648 comments (clear)

  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: 4, Funny

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

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

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

      VBScript != Visual Basic

      it's kind of like Javascript vs Java

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

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

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

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

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

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

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

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

    12. 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.
    13. Re:instant disqualification by kthreadd · · Score: 1

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

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

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

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

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

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

      or even VBScript <> Visual Basic

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    37. 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? """
    38. Re: instant disqualification by mfalcon007 · · Score: 1

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

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

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

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

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

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

    45. 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!
    46. 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).

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    61. 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
    62. 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.
    63. 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.
    64. 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
    65. Re:instant disqualification by jmac_the_man · · Score: 1

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

    66. 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."
    67. Re:instant disqualification by terjeber · · Score: 1

      BZZZT! WRONG!

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

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

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

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

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

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

    12. 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.
    13. Re:This guy hasn't done his research. by Anonymous Coward · · Score: 1

      You left off, "Dammit, Jim".

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

    16. 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.
    17. 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)
    18. 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.

    19. 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.
    20. 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.
    21. 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.
    22. 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.

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

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

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

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

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

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

      Python can do that, too.

      Well, yes.

      --
      Have gnu, will travel.
    32. 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.

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

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

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

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

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

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

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

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

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

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

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

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

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

    45. 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.
    46. 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.
    47. 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.

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

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

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

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

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

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

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

    60. 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? :-)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    8. 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'
    9. 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
  6. 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.

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

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

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

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

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

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

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

    3. Re:C# by Richard_at_work · · Score: 1

      You don't even have to use Xamarin anymore.

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

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

    8. Re:C# by Dragonslicer · · Score: 1

      It also shares enough syntaxal (is that a word?)

      The adjective you're looking for is "syntactic".

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

    5. 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?
  14. 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
  15. 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.

  16. 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
  17. 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 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.
  18. 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 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
    2. 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/

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

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

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

    7. 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.
  19. 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!)
  20. 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.

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

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

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

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

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

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

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

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

    13. 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"
    14. 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.
    15. 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.
  26. 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

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

    9. 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."
    10. 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
    11. 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?
  28. 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 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.

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

    4. Re:Java by jaklode · · Score: 1

      PHP is a huge piece of crap.

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

    6. Re:Java by narcc · · Score: 1

      Even compared to Java?

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

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

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

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

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

  30. how about cobol? by steak · · Score: 2

    I keep seeing stories about how cobol is sticking around, let the kids do it.

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

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

  34. 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
  35. 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 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"?

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

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

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

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

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

    7. Re:TED talk about proprietary SW in schools by Darinbob · · Score: 1

      Because kids love videos and have forgotten how to type coherently?

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

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

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

    12. Re:TED talk about proprietary SW in schools by terjeber · · Score: 1

      Perl

    13. Re:TED talk about proprietary SW in schools by tepples · · Score: 1

      A. Why ought they to continue to be?
      B. Why is it?

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

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

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

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

  40. 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.
  41. 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.
  42. 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
  43. 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.

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

  45. Kids are programming by gatkinso · · Score: 2

    that is a win right there regardless

    --
    I am very small, utmostly microscopic.
  46. 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.

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

  49. 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.
  50. 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.
  51. 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...

  52. Re:VB? Been there, done that by qpqp · · Score: 1

    I suggested processing in another post. Best of both worlds.

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

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

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

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

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

  58. Re:Translation... by qpqp · · Score: 1

    Great quote, and insightful conclusion. Amen.

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

  60. 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. --
  61. 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.
  62. 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.
  63. 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.
  64. 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."
  65. 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.

  66. 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.
  67. 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.
  68. 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.

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

  70. 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
  71. 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!
  72. 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.

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

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

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

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

  77. 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 :-)
  78. 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.

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

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

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

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

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

  85. 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.
  86. 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!

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

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

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

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

  93. 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!
  94. 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.

  95. best starter: pascal by maestroX · · Score: 1

    clear, unambiguous, imperative, focus on data models.

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

  97. 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!
  98. 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.

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

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

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

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

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

  105. 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.
  106. 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.
  107. 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.

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

  109. 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]
  110. 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
  111. 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.

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

  113. Pascal ? by ToddInSF · · Score: 1

    I remember Turbo Pascal in a programming class in college.

    In 80's that is...

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

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

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

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