7 ms·
The Little Coder's Predicament
- jballanc 18y agoWhile this is rather old, it's also rather timely: http://hackety.org/2009/02/05/theFundamentalLittleHackersSummit.html http://hackety.org/2009/02/05/theFundamentalLittleHackersSum... ...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.
- diN0bot 18y agoit's also relevant. 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.
- jballanc 18y agoSure, but I think _why's point is less about availability and more about approachability. As a 10 year old playing with BASIC, it took me all of a day or two to begin writing my first text adventure game. A few weeks after that, and I was writing graphical interfaces. 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...
- diN0bot 18y agotoday's 10 year old is probably writing a twitter script in python in 2 days. 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.
- tsetse-fly 18y agoI think approachability is absolutely key. Kids wrote programs on their Commodores, Ataris, and TI calculators because the environment was already setup. You could type in a few commands and instantly have something running (a program that solves the area of a triangle or one that plays a cool sequence of tones). There's only one editor and one language. 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.
- plinkplonk 18y ago" I think approachability is absolutely key. Kids wrote programs on their Commodores, Ataris, and TI calculators because the environment was already setup. You could type in a few commands and instantly have something running (a program that solves the area of a triangle or one that plays a cool sequence of tones). There's only one editor and one language." 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.
- shiro 18y agoIsn't this what Squeak guys are (kind of) aiming at? OLPC comes with Etoys, in which children can easily write and modify graphical apps. 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.
- gcheong 18y agoThe one thing that seems to be missing is the idea of including a programming tutorial with the pc or console. What if your XBox came with a manual called "Programming the XBox - a tutorial introduction"? When I got my Apple II+ it came with a programming manual on Apple BASIC presumably because that was part of the reason for the machine's existence - as an easily accessible platform for people to learn to program on. Nowadays, the idea that the common person would actually want to program their computer seems to have been lost.
- jballanc 18y agoThat's because the Apple II+ was produced in an age where the inventors of computers envisioned everyone learning to program computers...as opposed to using them as really expensive fancy typewriters, which is essentially what most people use computers for today.
- neilk 18y agoThe only person who has ever had that vision, consistently, is Alan Kay. 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.
- neilk 18y agoAnd, I speak as somebody who used to hand-compile SHAPE files on the Apple II. These were a sort of vector graphics which you had to first painstakingly draw on graph paper, unspool as a series of draw/turn commands, and then translate into bitmasks according to a lookup table, and then cut those up at seven-bit intervals, and convert those into decimal numbers. This is not something that anyone ever conceived of as a children's toy. Even though some kids (like myself) persevered. 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.
- ojbyrne 18y agoI get his point, but can't get away from the idea that he's describing the web... and php. New distribution system, larger audience, same idea.
- scott_s 18y agoThat seemed to the obvious answer to me. Nintendo, Sony and Microsoft aren't going to open up development on their consoles because they make money off of licensing fees.
- Shamiq 18y agoUnless they disallowed vendors from charging for games made by the "open" dev kit, thereby preserving the licensing fee. 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.
- Radix 18y agoOn the first thought: I don't see it,they would still have to contend with a growing community of people who mostly want to play homebrew and open source games. 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."
- jwb119 18y agocompletely agree.. even building a basic html webpage hits a decent amount of his marks (transportable, improves connectivity, etc.) is it so obvious that it was overlooked?
- neilk 18y agoPossibly, but PHP limits you to web-style interactions. You have to be excruciatingly clever to get it to act like a chat server or something. And forget about doing animation or sound or anything fun.
- Erf 18y agoTruth. I got my start in programming with BASIC via DOS. Today, I find that the biggest mental block to learning a new language is the difficulty of setting up a development environment. 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.
- hedgehog 18y agoSomeone at MS cares: MS Small Basic http://msdn.microsoft.com/en-us/devlabs/cc950524.aspx http://msdn.microsoft.com/en-us/devlabs/cc950524.aspx
- Klonoar 18y agoI actually had my younger brother try this out, and it did what it set out to do very well - that is, it's very sandboxed, but at the same time gives you access to change certain things such as your desktop background, etc. 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
- hedgehog 18y agoDefinitely. Aside from that I'm not a big fan of BASIC as a starting language any more, the syntax is weird and inconsistent etc etc. Although I really like Python I think Löve (Lua) might be the best place to start now.
- snprbob86 18y agoWe care on the XNA team as well! It's not bundled, but you can develop for your Xbox 360! http://creators.xna.com/ http://creators.xna.com/ 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/ http://creators.xna.com/en-US/education/catalog/
- Jebdm 18y agoWhat about LÖVE? http://love2d.org/ http://love2d.org/ 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.
- iamwil 18y agoYou can just cat the game on to the love executable, and package it together, so that people wouldn't need to download love, according to their docs.
- GHFigs 18y ago_why on löve: A+ http://hackety.org/2009/01/29/loveInTwoDimensions.html http://hackety.org/2009/01/29/loveInTwoDimensions.html
- burke 18y agoI learned to program on my TI-83. Over the past few decades, computers have built more and more walls between typical users and programming, whereas on my calculator, it was right there... on a whim, I could, say, make a program to calculate the area of a trapezoid. At the time, if you asked me to do the same thing on a desktop computer, you'd be getting a blank stare. 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.)
- Spyckie 18y agoYeah, I learned on my TI-89. Ironically, made a DnD character stat generator and a function to calculate the first 6 elements of an infinite series... (calc class was quite boring). 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...
- thalur 18y agoI suspect you hadn't been indoctrinated on GOTO being the one_true_evil at that point. I remember writing programs on my TI83 during maths and physics classes, but BASIC on a BBC was where it all started for me. Lots of GOTOs there. >:)
- utnick 18y agoSame here, I made some pretty complicated games on the TI-85, tetris for example with all of the blocks drawn with "0"s, that was a HUGE mess of gotos and especially when you can only see like 8 lines of code on the screen at a time gotos to far away can get very confusing.
- psyklic 18y agoI miss how difficult it is to get into graphics programming nowadays. DirectX and OpenGL have somewhat high learning curves for new programmers (especially kids). Even the "simplified" graphics libraries are usually OOPified and take some learning. I miss the days of mode 13h!
- diN0bot 18y agotry scratch or alice for kids programming try processing or openframeworks for graphics
- reconbot 18y agoSince you're the only one who's mentioned it, I second Alice. ( http://www.alice.org/ http://www.alice.org/ ) I learned about it from Randy Pausch and his "Last Lecture" (it's also mentioned in his following lecture). It's a way to simply drag and drop java until you want to drop it and type on your own. You control animations. From their site. 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.
- davidw 18y agoTcl and Tk are pretty simple ways of getting started and putting something on the screen.
- almost 18y ago> I miss the days of mode 13h! Happy memories :) Discovering that what you see on the screen is just bytes in memory, and you can access them directly.
- dhouston 18y agothe fundamentals haven't changed; the gateway drugs are just different :) 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.
- Spyckie 18y agoI think this is a great idea, and there's a lot of weight behind it. In trying to teach my little cousin how to code one of the biggest blocks I faced was that there was nothing right at his fingertips to play with. I had to spend an hour or so getting him to install stuff, and by that time, he was disinterested. 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.
- neilk 18y agoOk, who else here has HGR: HCOLOR=3: burned into their corneas?
- njharman 18y agoThe BASIC of today is HTML/CSS/JavaScript. Then there are things such as http://tryruby.hobix.com/ http://tryruby.hobix.com/ and processing.
- snprbob86 18y agoFirst, you are totally right about HTML/CSS/JavaScript 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!
- pygy 18y agoBoth "Try Ruby" and "The little coder predicament" have been written byt the same person, namely why the lucky stiff or _why. 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. http://hacketyhack.net/ http://hacketyhack.net/ http://shoooes.net/ http://shoooes.net/
- pygy 18y agoI can't edit my post anymore, sorry for the typos. BTW, s/progress/effort/
- Klonoar 18y ago_why's made significant inroads in this area since this posting, though. Sure, there's definitely a ways to go, but Shoes is one of the best toolkits I've seen period, regardless of being aimed at children. 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 http://www.linux.com/feature/155203). Bit of a shameless plug, but I figure it's somewhat relevant to the discussion at hand. shrug
- jsvaughan 18y agoAnother vote for http://www.processing.org/ http://www.processing.org/. It's superb; if you haven't tried it and you, like me, spent your childhood writing programs on your spectrum, you should check it out.
- catch404 18y agoI owe alot to the Pre-computer 1000 : http://www.vintagecomputing.com/index.php/archives/324 http://www.vintagecomputing.com/index.php/archives/324 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!
- Create 18y agoAs a general note, consumers are not supposed to fiddle with the product, since customizations are supposed to be sold as services related to the mass market item. Exploration and learning should be restricted as much as possible (see Digital Restrictions Management, and the Right to Read). But then again, dumbing down consumers does fire back in the end... So when users do finally get to program, the supported way of doing it is: http://www.charlespetzold.com/etc/DoesVisualStudioRotTheMind.html http://www.charlespetzold.com/etc/DoesVisualStudioRotTheMind...
- DLWormwood 18y agoI know you're being flippant, but there really is a critical underlying problem with making everyday technology intentionally arcane. 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.
- danw 18y agoThe closest modern equivalent is myspace. Myspace users are encouraged to modify their profiles with custom html/css. There's existing layouts to copy and modify. Any changes are instantly visible. It's easy to share layout code with friends.
- stuartk 18y agoI remember as a kid going into the local computer shops, getting onto a speccy or commodore and typing the immortal lines: 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.
- gjm11 18y agoWhat _why describes is half the problem. (Maybe a bit more than half.) In the Good Old Days, you could take your Spectrum/Amiga/BBCmicro/C64/whatever, and (1) write a program that (2) did something comparable to the games you could buy. (Less polished, sure, but not a million miles off.) 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.)
- eli 18y agoGuitar Hero is an incredibly popular game and requires no 3d graphics or full motion video. I'm pretty sure I could write Guitar Hero in Python. (Oh wait, someone already did! http://fretsonfire.sourceforge.net/ http://fretsonfire.sourceforge.net/)
- bd 18y agoExactly, lack of motivation is a big deal. Games these days have crazy production values (GTA IV took 3.5 years, 1000 people and $100 million budget). 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.
- codemonkey 18y agoYeah, that would be great, but I don't see it happening. In 1982, little geeks like me wanted to spend time playing with their computers, but there was almost nothing you could do with them, so you /had/ to become a hacker to have any fun. And the hardware was more accessible. We wrote code in real mode with no protections, and the peripherals were simpler. I wrote my own banner printer when I learned I could control the pins of my dot matrix printer individually. Now you have to learn postscript or something comparable just print "Hello World," or you have to write a kernel driver to talk to the thing directly. 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.
- nirmal 18y agoUnfortunately Handykey (makers of the Twiddler) are out of business for the time being. Fortunately, there is some work in our lab along with Chris George, founder of Handykey, to build a Bluetooth version of the Twiddler that follows the Bluetooth HCID Profile. http://wiki.cc.gatech.edu/ccg/classes/7470/7470-f06/bluetooth_twiddler http://wiki.cc.gatech.edu/ccg/classes/7470/7470-f06/bluetoot...
- sgharms 18y agoAs _why alludes to, I think the best work being done in this area is by Alan Kay and his work with Squeak in the squeakland project: http://www.squeakland.org/ http://www.squeakland.org/ 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).
- evanjacobs 18y agoThe predicament presented is not new since there has always (in my geek lifetime at least) been a division between "computing" devices and "gaming" devices. 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.
- skenney26 18y agoLearning to program now is easier than ever before. 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.
- dimitar 18y agoI think javascript can be a possible solution - if only making Firefox extensions were more accessible to kids (remember - short attention span; they wouldn't want to read much to do it).
- anthonyrubin 18y agoOS X includes Perl, Python, Ruby and AppleScript. More tools are available when Xcode (free) is installed.
- iamelgringo 18y agoI learned on a TI99-4a, too. My wife got me another on off Ebay a few years ago.