
Is Python The New Basic? ("Python For Kids") - modernise
http://scienceblogs.com/gregladen/2012/11/24/is-python-the-new-basic-python-for-kids/
======
RodgerTheGreat
For someone who already knows how to program, Python seems to be very easy to
pick up. It's still a tremendously more complex language than BASIC.

I help teach an after-school programming class for middle schoolers. Last
year, we tried using Python. While some students got the hang of it, many
seemed confused and demotivated.

This year, I wrote a simple TinyBASIC REPL from scratch[1], aiming to produce
the simplest subset of the language that made it possible to do interesting
things and illustrate concepts like looping, branching, variables, etc. It was
a big hit with the kids, and the whole class has been extremely engaged. As a
next step, I've built a Logo[2] implementation so that we can move into
writing modular, reusable procedures and play with graphics.

Learning to program is almost entirely orthogonal to learning a language, and
I think that starting with very small "toy" languages is a good way to
approach teaching core concepts without getting lost in the quirks and complex
features of popular "real" languages. BASIC is small, Python will never be.

    
    
      [1]https://github.com/JohnEarnest/Mako/tree/master/demos/Masica
      [2]https://github.com/JohnEarnest/Mako/tree/master/demos/Loko

~~~
modernise
Remember those laptops for African kids? They integrated Python for learning
to program. I only watched the video, back then, but I remember them showing
the Python console.

    
    
      http://en.wikipedia.org/wiki/One_Laptop_per_Child
      
      Pippy https://www.youtube.com/watch?v=E7aQxYuKJ18
      Turtle Art https://www.youtube.com/watch?v=i2MblcmwWo8

~~~
RodgerTheGreat
Interestingly, OLPCs also come preloaded with a Forth environment by virtue of
the fact that they use OpenFirmware: <http://wiki.laptop.org/go/FORTH>

------
darkstalker
I'd rather take Lua as "The new Basic", since it has a syntax closer to Basic,
and it's a simpler language.

~~~
andrewflnr
I don't fully understand why Lua hasn't taken over the world. Seems that a
large part of it is a sort of weak ecosystem (maybe larger than it seems, but
too spread out), and maybe the table thing weirds people out. People want to
learn something they can use in "real life" as soon as possible, at least in
my experience. But if Lua had taken over that wouldn't be a problem. Grrr.

~~~
extension
No standard library, nor even a standard class/object model. Lua is more of a
language engine than a complete language. In that capacity, it is quite a
success.

------
naner
There is no new Basic. Computers are massively more complex now and
expectations have changed as well with the Internet and tablets and smart
phones being what they are. Most first-world kids would be bored out of their
minds with Basic.

But Python is a fine programming language for beginners. A Raspberry-pi would
be another good teaching tool. Processing might be interesting to some kids as
well...

But there is no new Basic, no new Logo, no new Oregon Trail, no new Math
Blasters. Those things belong to a different era.

------
klrr
I tried it as "first language" and it's a freaking pain, I still don't
understand the "everything is an object" stuff and why to use modules for
everything instead of solving problems with your own code. BASIC is way better
for beginner's, especially kids.

~~~
volaski
1\. If you think Python is a pain, I don't think there is any other language
you can learn. I've learned lots of different languages, but Python was one of
the easiest to pick up and get started--not so different from BASIC. 2\.
Unless things have changed since I last worked with python, your statement
"Everything is an object" is not true. Actually this is one thing I like about
Python over Ruby (In Ruby, everything actually is an object.) As far as I
know, Python has primitives, and therefore not as confusing as ruby for
beginners. 3\. Here's a problem: "Build a program that fetches content from a
web page.". Try building that without using any modules. Maybe even try that
with your BASIC if you want. By using modules you just reuse what people have
already built, and can solve aforementioned problem with just a couple of
lines.

~~~
klrr
I get your point, but why should you even bother using modules when you are
trying to learn programming? The scenario you suggests isen't a task for a
beginner, especially not a kid with no experience. Anyway, I just want to say
a quick apology, I relize my first post sounded a bit more aggresive than
intended, sorry about that.

~~~
Jach
What sorts of problems and modules did you have in mind? Sure some modules can
spoil the learning fun of the problem, but in most cases they seem to enhance
it. Implementing the sqrt function is interesting to me (and in fact it's done
early on in the SICP book for college freshmen), I also think it's interesting
how other math functions can be implemented, but would you want kids who may
not even have a solid grasp of what a logarithm is to implement the log
function? How about making a 2D game? Why _wouldn't_ you use PyGame?

~~~
klrr
The thing is, using a function like sqrt is totally ok, but what I was more
pointing to is that many tutorials teaches how to use module's in the very
beginning and encuaraging(sorry for my bad english) using them to rather
bypass problems instead of solving them. As for pygame, all tutorials I found
said prior OOP knowledge was essential, which I had yet to understand.

~~~
Jach
I'm still having a hard time following... Maybe you could give a specific
example of a problem that modules bypass? Is it just simply the idea of
modules and the annoyance of having your code in multiple places and naive
tutorials wanting to put everything in classes when you just want to solve one
problem you thought was pretty simple?

For PyGame, I wouldn't say it's that essential, but there's a tendency for
most tutorials to classify everything when often there's no reason to. The
amount of OOP knowledge needed is very basic and following the simple examples
is a great way to learn OOP in the first place. But I remember feeling
frustrated with all the indirection and namespacing (part of the "module"
frustration you had perhaps?) when I first looked at Python, having come
previously from PHP. "pygame.display.set_mode() is dumb, why can't I just type
make_screen()?"

~~~
klrr
If I had more time I could gladly try to find all tutorials I'm targeting at,
this ain't targeted at the book mentioned in the story, that one I haven't
tried. The thing I personally found hard is that these OOP and modules things
come up in many tutorials in general, not all, I can see that both OOP and
using modules instead of rewritting stuff that's already made is good, but I
don't think that's the way to go for beginner's, BASIC is much better at that.

------
pav3l
The biggest reason BASIC was popular to teach back in the day, is because it
is very simple. You are allowed to use GOTO statements which will make (bad)
programming a whole lot easier for absolute beginners. On the other hand
Python is a well-designed language. It encourages both OOP and FP, and
honestly I am not convinced that just because smart people are actively
pushing Python to become "the next BASIC", it is going to be very interesting
for absolute beginners with little exposure to math and logic.

~~~
zobzu
To iterate on what you said:

Because it was simple and the rest was very complex. In fact, only assembly
language for some CPUs was as simple as basic (now, it's not really the case
anymore, although asm basics are simple, stuff often gets complicated with
special registers and special opcodes doing magic)

Many languages today as simple and relatively sane, like, say "python" ;-)
(now the other reason why I like python is because while you don't feel
limited with it, it _forces_ people to code half readable, half decent stuff.
They got a good balance)

------
prezjordan
I wish SmallBASIC (there are two of them! [0] [1]) would catch on (become a
household name). Very easy, approachable, and has the same charm as normal
BASIC/QBASIC - with regards to the development environment. Perfect for
children.

[0]: <http://smallbasic.com/> (Microsoft SmallBASIC)

[1]: <http://smallbasic.sourceforge.net/> (SmallBASIC - One more basic)

~~~
rbanffy
It's still way beyond 8-bit BASIC. I think the BASIC interpreters that ran on
small home computers of the late 70's and early 80's were in a sweet spot
between being high-level languages (variable names, strings, arrays) and being
close enough to the metal to illustrate things like conditional branching (no
multi-line IF's demanded the use of GOTO's for conditional branches).

------
mhd
Nothing is, that's the problem.

~~~
blablabla123
Yes... At least for non-technical people.

Last year I did a small project with Excel/VBA and I realized VBA is even more
difficult than C#. String manipulation is overly complex and nearly everything
seems really difficult.

------
ConstantineXVI
The one key difference between BASIC and (python lua javascript & etc) has
nothing to do with the language at all: modern computers don't boot straight
in to a REPL. Anyone who used a C64 more than likely knows a little BASIC,
can't say the same for naive Windows or Mac users.

~~~
olaf
Maybe the modern equivalent of "boot straight in to a REPL." is starting a
browser, everybody and his grandma knows how to do that, and if that is done,
Javascript is closer than any other programming language. I can imagine a
default, browser based Javascript REPL just being one mouseclick away. that
can be done and probably will be done sooner or later.

~~~
ConstantineXVI
> browser based Javascript REPL

Cmd-Opt-J[0]. While easy to get to, it's not the same as being forced into a
REPL every time you use your computer; you still have to know it's there,
lessening the temptation to jump right in and break things.

[0] or insert browser/platform appropriate shortcut for JS console/debugger
here

~~~
Evbn
My PC booted to DOS. Basic was an installed program.

My apple booted to the program on the disk you inserted.

------
olaf
Javascript is.

~~~
ufo
The problem with Javascript is that you basically can only use it to interact
with websites (thus forcing people to also learn HTML and CSS along with it).
There is also the problem of it being a language full of warts and
implementation incompatibilities and missing lots of features you would want
from a modern language.

~~~
Jare
BASIC had plenty such warts, incompatibilities and lack of 'modern' features.
Javascript is still not as immediately available and direct to use as the
BASICs of old were. As a beginner, to easily make anything useful and
interesting (by today's standards) in Javascript, you need to run it in a
browser as a saved file, wrap it in some html, and add a bunch of boilerplate
(create a canvas, make stuff move, access the DOM).

------
hiroprot
Where I went to school, they taught Turbo Pascal as the first language, and I
thought it was a much better beginner language than Basic.

------
chris123
These days, it seems that when I ask great 20-something-year-old programmers
(or whatever term we use) at what age they started to program computers, I the
answer is usually 10+. I wonder if it will be the same in 20 years? How young
will it go?

~~~
Evbn
It was the same 10 years ago. Presumably it will be as low as it was when
programmable computers were first deployed to homes with kids. It might get
older if kids get too much video games that don't inspire them to program the
machine.

