The Little Coder's Predicament
whytheluckystiff.net
whytheluckystiff.net
It's at least a little bit surprising that platform developers don't put more of an effort into making coding for their platforms more accessible. One might assume that Microsoft would have a lot to gain from a generation of young programmers learning to develop for Windows.
MS Small Basic http://msdn.microsoft.com/en-us/devlabs/cc950524.aspx
Pretty well done, at least in my opinion. The one problem is that there's really nowhere to go after that - if you stay with MS tech, it's far too large of a leap to build anything larger than what you can already accomplish with Small Basic.
Just my two cents. shrug
C# Express, Game Studio, and XNA Framework are free for personal and commercial use on Windows. Deploying to your Xbox 360 costs $99/year which includes the rights to sell your games on Xbox Live.
The download includes a simple Platformer game "starter kit" (written by yours truly) which is perfect for game development newbies with just a tiny bit of programming experience. There are loads more samples at http://creators.xna.com/en-US/education/catalog/
I believe that Apple and MSFT did this licensing fee program to stop any sort of homebrew movement (e.g. people sharing games outside of the approved ecosystem). They came from Homebrew but that's in the Cambrian age for them.
The only barrier comes when you want to start putting your apps on the Android Market, at which point you must become a registered Android Developer, for the cost of a whopping $25, which then allows you the ability to publish apps to the Market.
What if I don't want to sell anything? Do I still need to pay in order to write programs for a console that I own?
He also describes how students can get one year free through the DreamSpark program: https://www.dreamspark.com/
I think that's _why's point: the language needs to be bundled, so that programming feels to the newbie like a natural extension of exploring their system. Otherwise, not many will take the leap. It's like the difference between free and $.01.
Nowadays, #1 is harder because there's no programming language bundled with the system, because it doesn't drop you into a REPL when you boot it up, and because the programming languages you can easily get hold of don't have nice easy facilities for graphics and suchlike. That's _why's point.
But of course #2 is harder too, because modern PCs are capable of all sorts of astonishing 3d moving graphics and stuff, and the games you can get for them exploit that. But that stuff is really difficult for a novice, and poorly supported by learner-friendly programming languages, and really difficult to do well even for experts.
So, for most people, the amount of gratification you get from writing your own code is less relative to what you get from just using other people's software, even if we solve #1 comprehensively. So the motivation to learn to program is less.
(Of course, there's a small minority who fall in love immediately with the very idea of programming. But it is a small minority.)
I'm pretty sure I could write Guitar Hero in Python. (Oh wait, someone already did! http://fretsonfire.sourceforge.net/)
I know, there are also some very good indie games, but you have to be very creative to be able to compensate for a lack of production values. Not everybody is so multitalented.
One possible solution is to get into programming by modding existing games (instead of starting from scratch). Many cool games have very good scripting engines (for example Unreal, Civilization or Half-Life).
If you mod an existing game, your work is incremental, you can play with all these expensively produced assets. There is an instant gratification when you see some change in the game world made by you. Additionally, your results are immediately understandable to your gaming buddies.
http://www.timesonline.co.uk/tol/news/uk/scotland/article382...
Maybe your friend was doing just a port on one of the platforms? That could be in the ballpark.
The Apple was programmable because it was made by hackers for hackers. There were a few firms that would do software consulting for corporations and institutions, but the notion of consumer software barely existed.
Apple didn't mind it if a few people wrote third-party software and sold it. But I think in the beginning they expected to provide all the important software themselves, just like every computer manufacturer of the era.
Hm, I wonder if pg's concept of Languages For Smart People applies. Is it possible that kids just don't like kids' languages, like Logo and so on? I have to say that I certainly didn't, although I was exposed to it much later than Alan Kay would have preferred.
Don't forget Ted Nelson, whose book (which I bought YAY :D) Computer Lib/Dream Machines features the slogan, "You can and must understand computers now!"
i don't get what people are talking about. maybe that's because i'm not a video game or linux nerd. i don't like c or assembler or l33t h4x0ring. i mean, i'm not very good at it. but in the past 2 years i've learned how easy it is to program and make things. wow--i can make a twitter app. wow--i can make a robot. wow--i can make a real website. there are so many opportunities that weren't available before, especially in the realm of tutorials and thoughtful introductions.
BASIC on TI calculators is very popular among kids because they can figure out how to write a program during their math class. You don't need much reference to write a text-based game or a program to help you cheat on a geometry quiz.
api's allow people to do cool things. they're libraries. kids would find programming on a calculator much more tiresome if they had to write the multiplication method first.
i guess tinkering with a calculator is fun, but that seems kind of old school, and also pretty narrow (in my day the kids with the fancy expensive calculators were the ones taking APs and headed towards private colleges).
writing a 10 line python script that does something with twitter or other social networks--tons more fun than math.
It's really easy to program for; Lua is a language you can pick up without much effort. It's reasonably fast and built upon a few fairly ubiquitous libraries. Game distribution is easy (zip and change the extension to ".love").
Obviously it doesn't come pre-installed anywhere, but it's not hard to get. It would probably take a little work to make it run on game consoles, though, depending on how many of the libraries it depends on are already ported.
On the subject of game consoles and development, the PS2 did have a version of Linux where you could use it to run various things (games, scripts, programs, etc). Granted I never got to use it myself, but I recall reading that the reason Sony didn't push it too hard is that there was little to no interest in it, at least compared to the overall market.
I actually reviewed a couple different programming environments for kids about a month or two ago, over on Linux.com (http://www.linux.com/feature/155203). Bit of a shameless plug, but I figure it's somewhat relevant to the discussion at hand. shrug
Or just eliminate the fee in its entirety and take a slice of the revenue (or marginally larger slice).
I don't see how lowering cost of entry could be anything but advantageous to console makers.
On the second: Maybe, but that might be seen as a barrier to publishing a game made for fun that just happened to be good. "Eh, I'll just give it away, I was only doing it for fun anyway."
is it so obvious that it was overlooked?
You can do tons in javascript these days also.
I think if someone could provide a browser-based all-in-one solution with language+IDE+hosting+tutorials, then that would fulfill most of his criteria. You could type a few lines, instantly view the page and then send a link to your friends (who can view it at any time).
What you don't think there are enough ridiculously bad programmers using PHP/javascript already?
Barriers to entry are good. It sorts the people who really want to do it because they love it, from the rest.
The issue is, there is pretty much no barrier at all to programming at the moment. That's why there are so many bad programmers who have just heard there's money to be made. Add to that the fact that identifying bad programmers is sometimes hard, and you have a bad situation.
Raise that barrier for entry, and perhaps someone who thinks "Wow there's money to be made in programming, I better get a job in it", will fall at the first hurdle.
If you're interested in it enough, there's plenty of easy to start development environments around for any beginner.
As far as open source is concerned, bad programmers don't bother me, because you can generally find a solution written by someone that is good.
How many of the other folks here started out just as described in this article: namely, writing silly little BASIC programs for early Commodore, Apple, or DOS systems?
There are a handful of projects aimed at just this niche (Scratch and Greenfoot, for example) but none of them come standard on any new system. That lack of immediate availability means that kids have to actively seek out the tools + have the ability/privileges to install new software before they can even start experimenting with something like this:
10 PRINT "JENNY HAS COOTIES!"
20 GOTO 10 $ python
>>> while True:
>>> print "JENNY HAS COOTIES!"
No installations, no extra privileges, nothing. It just works. _why is tilting at windmills.I bought my son a ZX Spectrum. You can still buy all the fantastic home computers on ebay etc etc.
Or, there are web based spectrum etc emulators out there where you can just write code and run it.
I'd agree though, it'd be nice to make sure kids can get access to the dev environment that lets them play quickly and easily.
It'd be cool to have something better on netbooks, like the eee. I don't know if there are any good learning programming tools included, but there definitely should be.
Macs also now ship with PHP and Ruby, though they are sometimes broken.
Then there are things such as http://tryruby.hobix.com/ and processing.
Second, that's a pretty cool link! I don't know Ruby, so I learned a thing or two. Unfortunately, I had to use some of my existing programming experience to save me when I experimented a bit. For example, I decided I liked 'cheese' better than 'honeydew'. That put me in a state where I needed to guess what the tutorial was monitoring for and had to replace cheese to move forward. Additionally, there was times where I experimented and it advanced a page with no way for me to go back. With some polish, this could be a very promising educational tool!
His main programming progress for the last two years has been Hackety Hack, a programming environment for kids, based on Ruby.
The first iteration of HH was built on top of Mozilla, but abandonned because of cross platform issues.
The next version, due this march, runs on Shoes, a GUI toolkit he developed with HH in mind.
The bar to get the machine to do interesting things is too high, and the distractions are too many. You can spend weeks with your computer without running out of websites to explore.
P.S. If anyone does figure this out, please be sure not to implant damage that must be undone later. The mental leap from line-numbered BASIC to structured programming was a big one.
Graphing calculators today are essentially the new programmer's playground that all computers were 20ish years ago.
Why seems to be making great progress toward reversing this change with Shoes and Hackety Hack, but I think the ultimate solution right now would be some sort of programming environment built into iPod Touches. (EDIT: Heh, I stopped reading before the end. I guess that was his idea too.)
I abused the GOTO statement, though... hey, it wasn't like you were going to care about elegant code design at age 14 on a TI...
...oh, and personally, I can relate. If it weren't for the Apple IIe in my middle-school math teacher's class room, I wouldn't be a programmer today.
mac's come with sqlite3, python, a terminal, a decent developing environment (extra cd). it's probably not a big deal for windows folks to download languages and developing environments, too, to say nothing of ubuntu.
the web is a trove of treasure tutorials. open source and the web are thriving, the community is more inclusive and inviting than ever. more and more i run into artists, non-video game players, females, mechanical or electrical engineers and young folks discovering the joy of programming (arduino, processing, openframeworks, scratch and python are examples from recent interactions i've had).
video game consoles might be less programmer-inviting than they used to be, but they're also catering to a more varied and more expecting audience than they used to.
Available tools are worth nothing if it's not painfully obvious how to make them do something interesting...and you have to remember that interesting is different today than it was when I started programming. I doubt today's 10 year old would be impressed by a text adventure...unfortunately...
as a non-video-game-playing female i didn't find programming approachable then, but i have found it approachable in the past 2 years. i can't speak for 10 year olds, though.
there are numerous improvements in the approachability aspect (scratch, alice, processing, arduino on the educational front). i suspect approachability had little to do with you success as a 10 year old. your argument is simply that BASIC was available when you were 10 and now you can't think of modern fun tools and fun tasks. letsmakerobots and instructables come to mind as good starting places.
The majority of today's 10 year olds are not writing twitter scripts. It requires a significant amount of understanding and time to do so. You need to pick a programming language, install it, figure out how to write your program and how to execute it. The barrier is a lot higher than writing a program for your calculator during math class.
It'd be much easier for you to find people who wrote trivial programs on their Commodore when they were 10 than it would be to find 10 year olds who are writing python.
I agree. If Commodores or Amigas were available today, I'd buy one for my 5 year old nephew so that he could fiddle around with it, play some simple games, write some small programs and so on.
Maybe there is a market for a small computing device that has the "instantly have something running, but is completely hackable" characteristic.
I think _why rather likes the idea of himself as the Pied Piper, but the situation is nowhere near as bleak as he makes out.
Deciding that you need a programming language installed and then picking one and installing it is a very big step. It was a fluke that many of the people posting in this thread discovered programming. They stumbled upon the editor, tapped out a couple lines, and something happened. Cool!
Python is certainly accessible to an experienced developer, but a 10-year-old's curiosity is superficial. They need to tinker and receive instant gratification without the barriers of setting up an environment. Programming isn't integrated and exposed in a dead-simple way to foster experimentation these days.
He's a full-time C++ programmer now :-)
I think you're just so out of touch with how a 10-year-old learns that you can't comprehend what the article is addressing. A kid that age doesn't pick up programming the same way that a person in their 20's does. He's still mastering reading, figuring out the fundamentals of his operating system, and making real-world analogies for objects on his computer that you might already have at 24. He doesn't understand what an algorithm is, he doesn't even really know what a programming language does or what role it plays. He doesn't know algebra.
Most kids are not scholarly. They don't seek out information and work through tutorials. They're never going to hear about alice/scratch/squeak/LÖVE. They stumble upon things and their curiosity drives them, but their attention span is relatively small. They do things because they're fun and not because they want to learn.
When you began programming you probably read books and tutorials, followed-up on documentation, and relied heavily on examples. Learning through your teenage years is evolutionary. It's almost all trial-and-error at that stage. Computers are a incredibly complex place to start, that's why so many of these anecdotes are about programming BASIC.
What's interesting is that their environment inherently supports concurrency. If kids learn concurrent/parallel programming from the beginning, maybe they'll make better software suitable for this multicore/cloud age later.
I miss the days of mode 13h!
Alice is an innovative 3D programming environment that makes it easy to create an animation for telling a story, playing an interactive game, or a video to share on the web. Alice is a teaching tool for introductory computing. It uses 3D graphics and a drag-and-drop interface to facilitate a more engaging, less frustrating first programming experience.
They've even gotten EA on board to allow use of their Sims 2 characters. Good stuff.
Happy memories :) Discovering that what you see on the screen is just bytes in memory, and you can access them directly.
As a 7 year old I just loved the feeling of making the computer do what I want. The instant feed back of print/ input/ run cycle also played a big part in it.
After playing with C++, Pascal and learning Java I didn't get the same feeling until I started learning Python - Really captured that moment again :)
I've enjoyed learning Clojure too - the LISP syntax is so different to what I've learnt that it brings the same feeling :)
Great article!
What got me started was that in 10 minutes, I could have a program running on my TI 89 that did something cool, even if I never looked at it again. We need something like that for this generation that uses this generation's portable technology.
http://wiki.cc.gatech.edu/ccg/classes/7470/7470-f06/bluetoot...
HGR: HCOLOR=3:
burned into their corneas?10 print "hello" 20 goto 10
Felt great to watch that mother scrolling!
But the first thing that kids of today will do when they get hold of a new pc, is get on internet to search for pron.
Yes, I too learned programming on my TI99/4A and Aquarius and Laser 128 but then I also played games on my Intellivision without a way of trying my code there.
I always saw hacking on my computer as a "gateway" (no pun intended) to creating more advanced programs in much the same way as playing backyard football was a "gateway" to playing professional football (if I was good enough).
Finally, it seems to me that the ultra-portable laptop revolution will be the driver of getting more "computing" devices into the hands of future generations.
Last week my partner was in Spanish class and the teacher told her that the most important languages to know in the future will be English, Spanish, and a programming language. Programming is the new literacy. She decided she wanted to learn to program. We opened up Terminal on her Mac laptop, typed "python", and used Mark Pilgrim's Dive Into Python as a guide. Done.
With a PC you at least have access to JavaScript (and Marijn Haverbeke's Eloquent JavaScript tutorial) which is more than suitable for a first language.
I think it could easily be ported to a variety of platforms.
And _why's totally right. My 8-bit sprite of a jumping cow for Logo was the sweetest (yes, C64's in Texas, that explains a lot about the jumping cow).
php and rails tutorials, html, flash, even custom myspace profiles (for example) are the BASIC for today's kids. then you get your facebook apps, iphone apps, etc as you move up the food chain to more sophisticated languages.
So when users do finally get to program, the supported way of doing it is: http://www.charlespetzold.com/etc/DoesVisualStudioRotTheMind...
If people are unable to easily learn how something works, they will, for all intents and purposes, treat things as black boxes or "magic" and learn to distrust them (and those who do understand them) when things go wrong. This problem isn't unique to computing. My father grew up in an era where automobiles could still be serviced by end users, and learned to appreciate doing things like changing the oil or replacing parts himself. As such, he knew the limitations of the machine and could be more helpful to mechanics when bringing in a vehicle that was too broken for him to fix. Even more importantly, he knew when a mechanic was trying to snowball him with bogus repair suggestions.
The distance most people have from our food production processes is another example. A century ago, vegetarianism, when it was rarely practiced, was usually a religious choice and not regarded as a threat by meat eaters, or vice versa. Nowadays, its a full blown political movement which I suspect is in no small part due to the shock some people have growing up when they first learn where meat comes from late in their life (and in conditions most people feel have to be hidden.) I've seen kids who vehemently deny that meat comes from animals. When they grow older and finally learn/accept the truth, the impact would be much more shocking that a child who sees farm animals from a very young age.
Back to the original topic, even if most end users don't bother to learn to program, the perception that it is easy to get into is very important, in that it insures that they might know somebody who does.
I wish I could write more, but the gist I'm trying to get at is very hard to put into simple words. Hopefully, somebody else here will understand my underlying point and enunciate it better than I can.
Would people know why is it cold inside the fridge, while it is hot outside? Or what makes the cold stay inside the box? Nevertheless, almost everybody relies on a fridge ...and almost nobody knows what actually it is. Tricky situation indeed on the long run...
Somebody has made the series available on:
http://www.youtube.com/profile_play_list?user=JamesBurkeFan
but the account has been closed. There are some traces on:
http://www.youtube.com/user/JamesBurkeWeb
You might like it: it is worth every minute.
I really enjoyed the Connections2 series that was available on American cable TV a few years back, but I know of few people who have. I think my country has developed a real hostility to learning the history of anything, technologically or otherwise. I've never watched it, but I've had similarly minded co-worker point out how much the movie Idiocracy rang true as a premise. I weep for the future...
Going off topic...
There is no chance of my kids not knowing where meat comes from. I often use the words beef/cow or pork/pig etc interchangeably.
e.g. "What's for dinner tonight?" "Chopped up bits of cow."
My wife got me another on off Ebay a few years ago.