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?
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...
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.
No, thanks.
Choosing a proprietary solution is not a good answer.
Uh, Linux geek since 1999.
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.
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.
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.)
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.
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.
Infuriate left and right
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.
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
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.
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.
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.
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?
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.
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.
I keep seeing stories about how cobol is sticking around, let the kids do it.
lose != loose
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.
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.
To understand why proprietary software in schools is a poor answer, please see this 15-minute TED talk.
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...
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.
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
that is a win right there regardless
I am very small, utmostly microscopic.
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.
What is the one true religion?
Hey, Windows users, there is no such thing as "forward" slash, there is only slash and backslash.
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.
Program Intellivision!
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.
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.
Easy Online Role Playing Campaign Management
Learning to program has little to do with learning a programming language. Programming is a thought process.
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.
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.
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.
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!