Does the world need more programmers? Of course, it does, says Jay Silver. Everyone should be a programmer. That's not to say everyone should make their living as some sort of ponytail-ed, Python-obsessed shut-in. But just as everyone should know how to write, everyone should know how to program. And that's the computing …
LEGO...L E G O
Not "Legos"...That makes no sense
Pedantic statements aside, this could well be a good idea. Lego themselves already have a similar thing to this with their Mindstorms series.
Everyone should know how to program, read, write or drive a car. Owning a computer you can't program is as stupid as owning a car and then going everywhere by taxi.
"Owning a computer you can't program is as stupid as owning a car and then going everywhere by taxi."
On the surface this analogy makes sense. But the truth is without programming you can still do useful stuff with a computer, like send emails, edit videos, put together the digital family photo album, and even pay your bills online. Certainly not technical stuff like programming, however, useful and productive.
So let's say it like this, it's like owning a 4x4 vehicle and only ever driving it one paved roads.
Me, I'm constantly surprised at the inability of people in offices to use Excel, never mind write code. That said, the obvious choice is PHP5 CLI. And vi.
I played with scratch a few months back as research for work, and I wasn't really sure about it. I guess it depends what you expect from it, but it doesn't remove the concepts of programming - conditions, logic flow etc. Maybe that's a good thing if you want to teach programming, but my feeling, based on explaining programming to various lay-people, is that the way of thinking is the first stumbling block, rather than having the write stuff.
Maybe I'm over qualified for it though!
Languages like Logo and the Lego Mindstorms visual scripting seem more natural to use as teaching tools...
Until programming is taught along side maths and science in primary school (which it can be with tools like this), it won't be something everyone can do (or has some idea how it works).
i am old
I remember all this the first time around - Papert and the Logo turtle:
It's Legos in the US, Lego everywhere else.
Amos with a gui? Or perhaps this is what Visual Basic aspires to be.. whatever, it's a fun toy and my family loves it.
I downloaded this...
And it is fun as can be!!! I don't think I will be writing the next great social networking application with this, but for anyone who remembers LOGO, or tinkering with sprites on the Atari 800, Amiga or TI 99/4, it will be a blast.
There is a time to do serious work coding, and a time for just fun interacting with stuff you can play with - this is the latter. I can see this being a nice distraction - I can also see myself doing quick and dirty animations for the hell of it.
Speaking of quick and dirty - will Scratch p0rn catch on???
Do you make aircrafts out of legos? what about sheeps or deers?
Honestly, I can understand making fun of grammar nazis, but picking on LEGO folk is bound to end up giving you a world of pains.
until National Instruments gets up to its old tricks re visual programming languages (US patent 5301336).
"Digital Media Creation" ISN'T programming.
Grow a fucking brain. Software engineering can only be done by those who a) understand the concept and b) CAN DO.
And what the fuck is so wrong with being a Python obsessed shut-in?
AMOS with a GUI already exists - one of its original programmers developed it. Significantly more complex with Scratch but then it's not designed specifically for beginners/kids.
But on the subject of Scratch, anything that gets people young or old interested in programming is good in my book. Talented, impressionable kids need the same kind of exposure the rest of us got in the 80s/early 90s to stave off the Java-drinking code monkey dregs.
I have changed my mind...
This is MORE than just a fun distraction...been drawing graphics programs for the last several hours, getting to know the language and "syntax". Of course, syntax is rather easy when you have colour and shape coding, the editor is a doddle, and things just fit together to produce code. As a programming UI goes, it's bloody brilliant - particularly the shape fittings for code and operations.
I can think of all these features I would like to add to the language, such as subroutines, true arrays, etc. But then it would be more powerful, and not as fun. Part of the fun with it is trying to achieve things that you KNOW the "correct" way to do, but have to implement with fewer tools. But most of the primitives are there, and some powerful non-primitives, so it's just a case (er, no CASE actually ;-) ) of finding the old fashioned way to do it.
Get this in the hands of every child, please...forget if it teaches them programming per se, it will teach them LOGIC - without all the rigamarole, which is really what it is all about.
May this project see much success...
I saw Scratch a while ago, and it looked very nice, fun to use, and lets people very easily make at least simple apps. As they say in the article you shouldn't need to pull out a C compiler or even python just to come up with some simple little game or the like.
I don't think it ties in with OLPC though. I think Negroponte did end up jumpstarting the netbook market, but he sold out a main concept of OLPC as an open system that encourages tinkering when he turned it into a underpowered Windows PC.
"And what the fuck is so wrong with being a Python obsessed shut-in?"
You end up making livid, elitist forum posts.
The car analogy is broken.
Saying everyone that owns a computer should know how to program is more like saying that everyone that owns a car should know how to fix it and design a new suspension for it.
What the world needs is more Good programmers and less bad programmers. Lowing the bar by making cut and paste programming does not help make good software but merely increases the amount of shit out there. Similarly, Microsoft Songsmith just won't produce a generation of concert musicians.
And as anyone who has done much with the Lego Mindstorms system will tell you, it is only good for simple applications. A drag and drop programming environment is too cumbersome for doing anything elaborate. More sophisticated Lego programming requires more familiar programming tools: Lejos (Java), OSEK (C), etc.
Everyone should be able to code
I agree with that. Scratch looks fun and educational, but not too practical. For a practical but easy language for "everyone" (well Windows users really), I recommend AutoHotkey. No drag-n-drop interface, just text files, but it integrates with the OS so it can do "real" stuff like parse data files, hide windows from your boss, create macros, auto-correct typos and so on.
Making apps with a native Windows GUI is easy if you're not too picky how they look and you can even turn the scripts into stand-alone executable files.
Screenshot looks very confusing
wooosh all over my head. Great payback, I say we all swap roles, put the sales and marketing team onto development and the development team takes their place.
Then just come down with ridiculous demands and deadlines, when they try and explain what they have to do, just go 'woooosh!, over my head.' flapping some papers around at the same time.
Then go off mumbling how techy, geeky, nerdy types never understand business, and must have some personal grudge against us.
"For instance, we don't do functions that can specifically take variables, because we haven't been able to design this in so that it would be completely intuitive."
So it's just a toy, not a programing language, then?
Pardon me while I ignore it ...
Everyone needs to program?
I have a washing machine with what appears to be 500 programs all in a nice LCD display, I only want clean clothes so I put two different loads in both on the same 90 minute cycle, they come out clean that's the limit of my interest in it! My fridge/freezer, my microwave, my TV, my Sky box, all have limited programmable interfaces, I spend all day making databases work properly, when I get home I don't want to fight with my appliances to get them to work, I want to push two buttons and stuff that I bought them for, just happens!
I have a car, I have no real interest in what goes under the bonnet, I pay a mechanic to make it work and put the right bits under the bonnet when it doesn't. I put stuff in the right holes and it goes when I push the buttons. Average Joe, I bought a computer, I put emails and docs in, they get sent or printed or I chat to my mates. I bought AV and AntiSpy, I make sure it's updated!
What's wrong with people using computers but not knowing how to program them - not everyone want to program? The "driving cars" analogy is wrong IMHO, I would argue that the majority of people who drive cars don't need to build or service them. Servicing/building can be left to those with the skill/interest.
Having said that, if it gets people interested in programming by starting them off with something that has a gentle learning curve, it could be quite useful.
Dispite what some people seem to think...
We do need a new BASIC. Something kids can use to make small programs, and learn the basics of how a computor "thinks", and start to understand the whole "how do you make a cup of tea" idea.
I tryed explaining this to a friend of mine a while back and he just could not see why a computor would not understand that "you boil some water" just didn't work and thought I was trying to wind him up by asking him things like "where dose the water come from"...
"Owning a computer you can't program is as stupid as owning a car and then going everywhere by taxi"
Obviously it's more like owning a car and not knowing how to give it a service. Or change the fuel intake timings in the ECM. That sort of thing.
One of the MIT group manufactured a USB gadget called a Scratch Board. It's has a switch, rheostat, microphone, light sensor and some spare connections with jack sockets for anything else you can think up. It looks a bit basic - a circuit board, but that's OK. They provide code supporting for using the relevant input data.
Just don't try taking it on a plane with you, it might make some excitable airport security operative a little too interested in you.
With this we could play with different sorts of controls, other than the keyboard and made things to entertain our (then) 5 year old, who'd not got the hang of QWERTY then.
I wish every success to the Scratch team at MIT. It offers more public service value than any amount of "educational" software and tax-dollar funded PSB television doing the rounds.
It's not about how cool the programming environment is - that's beyond doubt. It's about getting people (especially in the 8-15 age range) engaged with the idea they can be creators and not just consumers of content and that's one of the most economically and socially valuable lessons we can teach.
Scratching an itch
I'm involved with running a science club at a local primary school. I introduced Scratch about a year ago and let them play around with it to find the different ways it can be used. Me, I couldn't write code - maths (and most academic stuff) doesn't work for me, but I have fun playing with Scratch. Some of the children just play games with it, some like the idea of using sound and colours and others can't be bothered if they have to think.
A few try and see how they can alter the games, something I encourage a lot as many kids seem to think it's somehow 'wrong' and they can 'break' things. This behaviour is often a reflection in to home life where the idea of perfection is paramount, the strive for 'success' where anything less is to bring shame and maybe a slap. Just getting some to change a sprite can be big step in experimentation.
Once it's understood that we can just reload or restart if things get messy many of the kids begin to get creative. I'm asked "What happens if?" and often the reply is "I don't know, try it out and we'll both find out." From this they lose the fear of 'getting it wrong' as it turns in to experimenting with values, adding new loops and the subsequent '"Why is it doing this, it should be doing something else" --- "Dunno, have a look and see if you can find it while I'm helping others".
I'm not going to ask them to do anything I can't. They need something that is graphic, something to play with. Not some grown-ups bleating about 'Oh,it's much easier coding with Notepad' and 'You need a 'REAL' programing language'. It's a shared journey of discovery, Scratch is supposed to be played with, not intellectualised until any interest is drained out of young people.
That and it's free, just like another toy I've introduced them to - Audacity.
Play and learn , or is that to simple for some?
Scratch is part of the ... software ... for the OLPC
Well, tried it and there are downloads for OSX and Windows. Nothing for Linux.
I was coding assembly at 9.
What about Games Factory?
Klik 'n' Create (later Corel Click and Create)? Multimedia Fusion?
Did no-one else spend hours building apps with these things? They're so simple and easy I could use them from a fairly early age. And so powerful I'm still using some of my apps from that time.
Plus in the later versions there was "Visualize!" which was a plugin allowing the creation of online apps.
Bloody typical, if linux aint at the top of the list with the flashing lights saying here I am there is a fecking sulking competition (which admitedly is usually the preserve of the Mac community)
http://info.scratch.mit.edu/Linux_installer look a bit harder next time
Seriously though it should have been listed on the first page of the download section.
Anything that encourages a new generation has to be a good thing
I haven't looked at Scratch but ...
There is a brilliant, mature Smalltalk environment aimed at kids called Squeak http://www.squeak.org/
Why are these people reinventing the wheel when we already have a mature multi-platform environment that does almost the same kinds of things?
Why didn't they contribute to Squeak? The GUI programming building on top of it would have been really easy and supported Linux too.
Drives me nuts. Another loud clanging of reinvented wheels thundering down the lane.
There is an "experimental" Linux version here, which nevertheless seems to work fine on Ubuntu (for example):
It seems that there *is* a Linux download -- experimental, small link, etc.
Don't drink and post!
Where is the "I am stupid" icon? Oh, wait.
Nobody seems to have mentioned "Alice" in this thread - I tried it and it also looks a lot of fun.
Of course it's a programming language. Go back to CS 101 and "stored program computers".
If a machine contains a piece of data which directs its actions, it's called a "computer", and the data directing its actions is called a "program". Software for creating a "program" from some kind of higher-level description is called a "compiler" and software which takes the higher-level description and runs it directly is called an "interpreter". The higher-level description's encoding is know as a "programming language".
This is an interpreted graphical programming language.
The lack of variables means it's possibly not a Turing-complete programming language, but Turing completeness is another issue entirely. Cg/HLSL are likewise not Turing-complete, but does anyone claim that pixel shaders aren't programs?
Looks like Alice to me
Looks very much like Alice to me. Carnigie Melon Uni might have something to say about it. Sadly, Professor Randy Pausche isn't with us any more to throw in his two penneth ... but from what I've read about the man, I imagine he would be more likely to say, "the more opportunites the merrier." One he** of a guy.
maybe if they taught programming along side Maths and English and maybe other languages from an early age all skils would benefit.
I hadn't thought about it before but why do we wait so long to even consider teaching programming? If by the time your 6 or 7 you have a reasonable grip on basic English and Math then why not programming in a basic educational language. It actually seems to me to be a damn good idea.
child programmer hating MIT...
all I have to say is:
Teh INternets. Serious f****** business.
Woooossssh went right over my noggin, back to your cave, and write me some code. I want solutions not problems. Wheeee I am getting into this.
all the fecking cats in the examples ?
Jeez thats all I need is a multitude of lol cat apps to depress me.
Hey Jolyon you gonna do a sine scroller with Scratch ?
Not everyone needs to program
Do all car owners know how their car works?
How to diagnose their EFI and EMS?
Change brake discs?
Do they need to?
They need to be able to do basic maintenance - that's it.
Wow, cute baby, does she have an agent?
Car simile (again?)
"Do all car owners know how their car works?"
No. In fact, from what I can see, most car owners don't even know how to drive.
However, most hackers (real meaning, not media version) know how cars work. For example, I machined a new cylinder head for my race Datsun 510 ... The stock version has the intake & exhaust on the same side, so I decided to see what would happen if it had a cross-flow head. Result? 70HP over stock. The Mikuni carbs, better exhaust & two plugs per cylinder helped ... Although I liked the Buick 215ci V8 in it better (That's the Rover 3.5l V8 to you brits).
This "Scratch" thing is a toy, not a programming language. If you teach a kid that this thing IS programming, when they first come into contact with a real programming language, they will run away shrieking ... Like it or not, computers are NOT easy to understand. They have a learning curve. Sometimes I think that Apple's "ease of use" myth has set back the GreatUnwashed's understanding of the reality of computers by several decades.
And FFS, do NOT teach kids BASIC as a first language! Instead try Lisp, or Smalltalk, or Scheme or similar ... At least give 'em a boost in the right direction!
Next thing that'll happen is a few politicians will try it out (sounds about their level). Then they'll be convinced they know all about programming.
Then what sort of IT laws will they start passing? I dread to think.
Arrays and Functions
Actually it does have arrays. They're called "lists", and easy to miss, but they're in there. No functions, true, but after poking around a little I realized that a "broadcast" is effectively a subroutine (or perhaps a method) so you can accomplish the same thing. Scratch surprisingly complete for how easy it is. (Or surprisingly easy for how complete it is.)
I also noticed that the variables can hold text as well as numbers, though it's definitely short on commands for dealing with strings.