Buzzword Compliant is calling it the "Harry Potter programming language." Hackety Hack was created as manifesto by the author of The Little Coder's Predicament (also here). Early shades of David Brin's "Why Johnny Can't Code" (below). This week sees a new beta release of Hackety Hack - ready to engage the 13+ (at heart) everywhere. Who would have thunk it. A Gecko and Ruby mashup as fun: "Code yourself a blog in 6 lines" (fn1). Along with the other options we have discussed in the past (below), could "a blog in 6 lines" save computer science education?
Shifting gears just a notch. Nicholas Carr offers a superb discussion of Dirk Riehl's (IEEE) "The Economic Motivation of Open Source Software: Stakeholder Perspectives" - both seem to echo a somewhat pessimistic view of the Open Source software ecosystem, namely that it culminates in the "Programmer's Dilemma" (Nicholas, emphasis added):
Because skills in open source programming are increasingly necessary to enhance the potential career prospects of individual programmers, individual programmers have strong motivations to join in - and as more programmers join in, the incentive for each individual programmer to participate becomes ever stronger. At the same time, the total amount of money that goes to programmers falls as open source is adopted by more companies. Individual programmers, in other words, have selfish motives to engage in collectively destructive behavior.
I'm less pessimistic. Where this analysis and the Programmer's Dilemma is weak (IMO) is in its closed system assumptions. Creation of marginal software value (e.g. faciliated by inexpensive Open Source) can, I believe, ultimately extend the reach of software into new niches and in so doing, build new demand. Future value based on an open system trumps collective destruction?
After all, I did just mention an intriguing experiment involving Gecko and Ruby.
The virtual world questions lie just beneath the surface. For example:
- Would the Programmer's Dilemma (or Creator's dilemma) be more or less applicable to user created content systems in virtual worlds?
- What of the contrast of a text programming language versus one layered above the objects of a virtual world for youth education (e.g. Storytelling in Wonderland below, or Second Life)?
Thoughts to the reader for your travels on the weekend.
--------------------------------------------------------
Related:
TN: Jimmy Tolkien. January 2007. Regarding David Brin's "Why Johnny Can't Code."
TN: Storytelling in Wonderland. March 2007. The dismal state of computer science education in the U.S. CMU's Alice and educating children in computer science using virtual worlds.
TN: Ruby Slippers. December 2006. Web 2.0 and the symbiosis of people and technology and Ruby on Rails.
David Brin. "Why Johnny Can't Code." Salon, September 2006. "BASIC used to be on every computer a child touched -- but today there's no easy way for kids to get hooked on programming."
Computer Science Teacher's Association. "When the Worst of Times is the Best of Times." December 2006. "At the risk of looking a little too hard for that silver lining in the big black cloud, I am beginning to think that some very good things might come out of the current bust in computer science education."
fn1.
blog = Table("MyBlog").recent(10) Web.page { blog.each do |entry| title entry[:title] puts entry[:editbox] end }
Hrm, I gave Hackety Hack a brief try. It's not bad, but I think I'd still recommend Processing before this. Hackety Hack wins on having a good step-by-step tutorial, but it feels stuck in a web-app mentality. Processing, on the other hand, already has the very minimal yet usable IDE and an emphasis on visual coding. No, you won't be coding up a blog in six lines, but the emphasis on creating a programming environment for artists who are non-programmers means that Processing provides exactly what the early C64 / etc environments did - easy hooks into graphical programming that give positive visual feedback to your efforts. And Processing scales well - if someone gets hooked, they can eventually be doing full-scale object oriented programming using whatever Java libs they want, but until they explicitly choose such the code environment is kept simple and clean.
Not that there isn't room in the world for more than one pre-entry-level programming hook, of course. If and when I get the chance to introduce new people to programming, I'll be running Hackety Hack past them if Processing doesn't seem like their thing.
(p.s. Erm, I tried the "six-line blog" code, and it fails with a screenful of compiler errors, mostly db related; so it's a six-line blog program iff you've already set up a database of blog entries?)
Posted by: josh g. | Apr 28, 2007 at 13:13
josh g.> Processing
I presume you mean Processing.org.
Posted by: nate_combs | Apr 28, 2007 at 16:19
Whoops, yep, thanks. Meant to link that and then totally forgot.
Posted by: josh g. | Apr 29, 2007 at 00:25
As far as modern mainstream programming goes, it takes a week or too for a smart teen to catch up in skill with those mediocre web programmers - HTML / Ajax "hackers"/designers out there... Well. one can understand those - we all have to ear our bread... Its just a pity this lead to these massive re-writes of mediocre code... - Year 2007 - still HTML re-writes... oh, My...
And it takes a bit more than Basic to code anything good these days - so, with those Playstations, XBoxes and what-not ready-made 3D stuff in the living room - who wants to bother? - That is maybe what makes most modern kids - and pretty much all of us - into passive consumers of software and digital entertainment and passive addicted "keyboard monkeys" ;)
What is the way out? - Well, open meta-programming frameworks would enable us (both kids and grown-ups) to put up OWN apps fast - from web portals to multiplayer 3D games - XML based easy markup linked to X3D and OpenGL... It should be simple than pearl or anything - normal people would not bother with anything you need yet to compile - no time, man, no time...
We will be rolling out such easy meta-framework soon - DIY-prog toolbox for casual yet pro-active netizen - roll your own web apps and games - beta-testers welcome... Due this may - revolverfactory.com
Cheers!
Posted by: gaijin | Apr 29, 2007 at 15:55
Besides HH and similar youth-oriented languages (such as Kids Programming Language) there have been a couple of efforts to draw kids into the programming world via 3D gaming tie-ins that go beyond modding tools. Microsoft is working on Boku, a kids-appropriate visual programming environment that can be used on Xbox and Windows to make a "social virtual world."
There are opportunities to try out scripting in Teen Second Life, and a Wired columnist recommends Flash as a platform for learning scripting (the same article also points to a number of other tools and resources aimed at potential youth programmers).
Posted by: Ian Lamont | Apr 29, 2007 at 17:59
The "Programmer's Dilemma" is basically the classic argument for cartelization or price supports in any industry, isn't it?
Additionally, it ignores the way that every programmer is also a user/consumer of software, especially open source software.
Posted by: Peter Clay | Apr 30, 2007 at 07:21
One of the cited articles reads: "Current research indicates that enrollment in postsecondary courses has dropped by 40% with some suggesting that the drop in applications to these programs may be down by as much as 60%."
I can say that my own university is showing a slight increase in CS majors, but it's really a shift. When I began my degree program, there were two CS tracks: Programming, and Information Management. Now there are four: Programming (100% CS courses), Information Management (about 40% business courses), Security (40% criminology courses), and Multimedia (40% art courses).
The non-Programming tracks have only the minimal core of real programming skills, leading to a couple of troubling issues. First, when programming-track courses begin, enrollment in the course drops quickly when the students from the other tracks find that they do not have the background to pass the course within the first week. Second, the programming track enrollment has dropped probably 60% in the past four years, with the slack picked up by the other tracks.
So of the same number of people in the major in the past few years, only about a third of graduating CS majors -- from this university at least -- have any understanding of what should be basic building blocks: iteration, recursion, pointers, data structures, etc.
My jaw must have been been visibly hanging the other day when a senior asked why his answer was so long and everyone else's was so short. He did not understand the mod operator.
Posted by: patrick | Jun 18, 2007 at 03:49
patrick>
Peter Denning IDs the seven great principles of computing -
"They are computation, communication, coordination, recollection, automation, evaluation and design. They are groups of related principles concerning a functional area of computing."
He ID's programming as a practice:
"The four core practices of computing professions are programming, systems, modeling, and innovating."
And concludes:
"To be a complete computing professional, you should know the principles and be competent in the four practices."
To your point, I guess competence is all that is required of programming - so long as the other practices and grounding in the principles are understood. Or at least in the view of Peter Denning.
http://www.acm.org/ubiquity/interviews/v8i22_denning.html
Posted by: nate_combs | Jun 19, 2007 at 21:03
I like that!s
Posted by: Hillari | Jul 11, 2007 at 13:15
Thanks a bunch!y
Posted by: Melly | Aug 25, 2007 at 23:55
for kids leaf because And grapes, pruning reaction as proud I never all what often the vast and went
Posted by: homefreedaya | Feb 21, 2008 at 19:13
Where do you think you're going today? http://111111jran.com -I 222222 [url=http://3333333333huin.com]333333[/url] Let me see what I can do.
Posted by: Preved | Jul 19, 2009 at 23:21
Be little more tolerant :) http://111111jran.com definite 222222 [url=http://3333333333huin.com]333333[/url] Thanks for this, seriously.
Posted by: Preved | Jul 19, 2009 at 23:21
I have no idea about this. http://111111jran.com qxetrd 222222 [url=http://3333333333huin.com]333333[/url] Thanks everyone for the appreciation!
Posted by: Preved | Jul 19, 2009 at 23:21
Those who are interested in teaching programming skills to students of any age, might also want to check out the free Scratch program coming out of M.I.T.'s media lab. Trinity University students used it in a recent course on computer hacking, and they managed to create some impressive projects in a very short time.
As others have mentioned, Flash is also a useful tool for teaching programming skills to motivated beginners.
Increasingly, there is a need for simple programming expertise outside of traditional computer science departments. Art and communication students want to know how to create basic scripts and macros to automate laborious production chores, and aspiring game designers are always eager to learn how to create new levels and interactions in their favorite games.
Once, there was a time when students were forced to become computer science majors if they wanted to get their hands on cutting edge machines. Fortunately, this is no longer the case.
Today, students believe that computer science departments are the only place they can learn programming expertise. Ten years from now, this may no longer be the case. (Fingers crossed.)
Posted by: Aaron Delwiche | Jul 20, 2009 at 14:10