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?

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    5. Re:Javascript by narcc · · Score: 2

      It is NOT object-orientated, though you can pretend that it is.

      You are very confused.

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

  9. 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 Hadlock · · Score: 2

      How about Powershell? It has an ISE you can pickup and learn in less than 20 minutes. It takes about 2 hours just to get to the point where you're writing actual code. Powershell gives you full access to the .net library and runtime but the requirements to produce executable code are on par with Python. In fact Powershell looks a lot like "Python#" and IDLE.

      --
      moox. for a new generation.
  10. 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

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

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

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

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

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

  15. 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.
  16. 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 qpqp · · Score: 2

      You have outdated information:
      e.g. https://itunes.apple.com/us/ap...
      and
      http://omz-software.com/pythonista/

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

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

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

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

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

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

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

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

  23. 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
  24. Kids are programming by gatkinso · · Score: 2

    that is a win right there regardless

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

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

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

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

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

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

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