Settings

Theme

Is Python The New Basic? ("Python For Kids")

scienceblogs.com

49 points by modernise 13 years ago · 52 comments

Reader

RodgerTheGreat 13 years ago

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
  • sown 13 years ago

    >I've built a Logo[2] implementation so that we can move into writing modular, reusable procedures and play with graphics.

    I've always felt that it's hard to go against Logo. When I was a kid, there was a direct connection between what I did on the keyboard and what the turtle would do.

    That language changes your brain, not your data. Thus, it is one of the most important languages.

  • moderniseOP 13 years ago

    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
darkstalker 13 years ago

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

  • rolleiflex 13 years ago

    I concur. From my limited experience with Lua, I'd say it's a very beginner friendly language, and it's blazing fast in certain conditions. There's also an app called Codea which runs on iPad that allows beginners to code games within. It works suprisingly well, and there are a few games on the app store that are written entirely on iPad in Codea.

  • andrewflnr 13 years ago

    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 13 years ago

      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 13 years ago

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 13 years ago

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 13 years ago

    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 13 years ago

      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 13 years ago

        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 13 years ago

          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 13 years ago

            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 13 years ago

              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.

    • int_19h 13 years ago

      Python primitive types are also objects. It's been that way for many years.

  • dangayle 13 years ago

    >why to use modules for everything instead of solving problems with your own code.

    That simply doesn't make sense. You could make that argument against every single programming language.

  • emmelaich 13 years ago

    Just ignore the object stuff when starting. And later, only use when it actually helps.

  • ufo 13 years ago

    The way to get around the "everything" is an object thing is to just ignore it. Object Orientation is mostly a convenience at that level of programming and you can do almost everything without even bothering about it.

    • klrr 13 years ago

      Indeed, it's still very annoying though, I can see how OOP can be good for larger scale but when you want to learn pragramming it shouldn't be something that gets in the way, it did for me.

      • JulianWasTaken 13 years ago

        Can you elaborate? I'm curious to hear ways in which it got in the way for you.

        • klrr 13 years ago

          Sure, I spent about 1 week learning the very basics about variables, loops and functions etc. After that I started looking for a harder challange and finded a few fun problems in some tutorials. I got very angry when I tried to solve them, since I pretty much didn't knew how to program, just about the basics of pythons syntax. What made me even more angry was, when I tried to find the solution many people suggested using all different modules and learning how to use it, instead of telling how to solve it with what I thought was programming. Also this OOP stuff was also very hard for me, since I only found. Tutorials which assumed you knew OOP in another language already.

          • JulianWasTaken 13 years ago

            I see. So your difficulty really doesn't have to do with OOP at all then. The OP was saying that OOP doesn't really change your ability to use a language procedurally. It doesn't seem from your answer that you had difficulty with that.

            It does sound like you had difficulty with managing complexity. That's definitely valid. It's hard to learn a bunch of modules when you're first starting out. I guess for that you just need to add a sprinkling of common sense where warranted, and manage the amount of new things you're learning.

            Anyways, just was curious to hear where people have difficulty when starting out, so thanks.

pav3l 13 years ago

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 13 years ago

    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 13 years ago

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 13 years ago

    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 13 years ago

Nothing is, that's the problem.

  • blablabla123 13 years ago

    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 13 years ago

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 13 years ago

    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 13 years ago

      > 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 13 years ago

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

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

  • teilo 13 years ago

    Agreed. Tandy Color Computer 2 for me (with Extended Basic ROM upgrade - Oh Joy!), but same deal. Natural transition from there to QuickBasic (not QBasic!) running on a 386SX and the world of compilers and runtimes. Between QuickBasic and Python there was a blur of other languages which I have mostly forgotten.

    But were it now for the REPL, I would likely not be a programmer today.

olaf 13 years ago

Javascript is.

  • Turing_Machine 13 years ago

    Agree 100%. You don't have to install anything. It's on every machine with a modern web browser, even mobile devices.

    It's even got the "nastiness" factor down. :-)

    We're also starting to see things like Snap written in pure JavaScript/HTML5:

    http://snap.berkeley.edu/snapsource/snap.html

  • ufo 13 years ago

    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 13 years ago

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

    • mwill 13 years ago

      JavaScript w/Nodejs is pretty great.

      I'm pretty language agnostic, but I'll admit I've briefly fantasized about an ECMAScriptish language that shared all it's feature, down to the object model, weird hybrid half FP/OO and prototypical inheritance, etc, plus some of the propose features and other cool junk like clean macro support, operator overloading, etc, and squared up some of the crazier stuff like weird definitions of truthiness, and looser type coercion.

      Throw in a way to set up bindings, GUI toolkit or whatever, and a way to build distributable standalone binaries, and I'd use that as my go to language, esp to prototype and hack out ideas.

      It's a fun way to just dump ideas and a few changes would make it a great all-round language worth favouring.

  • the_mitsuhiko 13 years ago

    I agree strongly with that. It's easier to use, solves the deployment problem and does not even force the concept of objects onto a newcomer.

hiroprot 13 years ago

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 13 years ago

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 13 years ago

    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.

Keyboard Shortcuts

j
Next item
k
Previous item
o / Enter
Open selected item
?
Show this help
Esc
Close modal / clear selection