How do kids these days get started in programming?
ensode.net
ensode.net
Then we wanted a way for people to apply for the clan and setup tryout dates. After that we wanted a system to allow other clans to challenge us and schedule games. Then we needed a way to host videos of games we had and let people comment on that.
As the requests and features piled up we went past HTML/CSS and found out about PHP/MySQL... the rest was history. Also, we were 14-15 at the time.
Take your same story (+4 years of age) and rewind 5 years (to the days of Napster) and drop the 2K4 from UT and you have my beginning to the world of web creation.
1. How do you get useful tools? Nowadays, you can just download free interpreters and compilers for several languages, etc. This is still a somewhat new phenomenon. (I remember saving for a while to buy a C++ compiler, as a teenager.) This has gotten MUCH easier, IMHO. Starting with a free Unix helps, because it will likely have development tools pre-packaged. Windows doesn't have otherwise ubiquitous tools present, nor the sort of culture that tends to accompany them.
2. How do you recognize what tools are any good? This may be getting harder. Any good advice is drowned out by the sheer quantity of contradictory advice coming from blogs, the reddit echo chamber, etc. It's not easy to figure out the implementation quality, availability of libraries, and other relative merits of different languages until you're already at least competent with one. (Python still seems to me like one of the better choices for a first language.) I imagine that a newbie being sold on [insert language] will probably just end up more confused.
3. There are numerous protocols, standards, etc., and it's hard to figure out which matter. JSON? XSLT? TLA? Learning which of these actually matter (and, really, which will still matter in more than a year or two) takes perspective that new programmers don't have. I'm not sure if this aspect has gotten better or worse, since a lot of old stuff that seemed crucial at the time has likely just been forgotten.
Then I borrowed a TRS-80 Model I book--the intro to BASIC book that came with every TRS-80. Read it over a weekend. I remember it clearly because we also installed a garage door opener that weekend. Big fun! (Looking back, a lot of the books in those days were really clear and easy to understand.) To actually try the programs I wrote (longhand, on notebook paper), I would hang out at the Radio Shack in the mall and transcribe and debug the code. The sales dudes were really cool about letting a strange and polite little boy play with the low-spec computers for an hour at a time, even if he only occasionally bought electronic components. By this time I was hand assembling Z80 code (remember peek and poke?) and they were selling the TRS-80 module III and the Coco.
But you know what? As exciting as it was then, it's even better today. Free compilers and dev tools? FPGAs? More free online docs about anything than you could read in a lifetime? Places to meet, discuss, and share tricks with people all across the world? Hell, people throw away computers I would have killed for back then. The barrier to entry is so much lower than it was back then. No contest, things are freakin' great today and it's still exciting.
I still have the intro to Z80 book around here somewhere.
I started out with Geocities and the "View Source" function in Netscape. Amazingly, even now that most of the Web has been tamed and the most popular websites keep most of the interesting code behind the scenes, browsers still have "View Source", web-based rich text editors still have an "Edit HTML" tab, and you can still quickly download all the static components of a public webpage, modify it locally, and load your creation in a browser to see what's different. Compared to the days of Windows 3.1, this is awesome.
Then, consider the built-in interpreters that come with every modern non-Windows OS, package managers for finding and installing free libraries, free online documentation and even complete books on just about everything... if a kid these days can't get started with programming, it's because either they're not interested yet, or they don't realize they're already doing it.
Now that I think about it, every "big" program should come with an embedded scripting language. It will bring a lot of people into programming and it would make life easier for all of us. Imagine if all of the main IM clients had one.
Really? I've always thought kind of the opposite. Maybe not as easy to get your feet into the nitty gritty internals of the hw and os, but easier than ever before to get a development environment set up and start writing code.
That's the whole premise that _why was taking when he decided to make Shoes (http://shoooes.net/)
DirectX takes a lot of code just to get something on screen. Making a Windows forms program in C++ generates a lot of extra code that is confusing.
Back in the old days, no complicated APIs or SDKs were needed to do something exciting like graphics. Just one line of code and you could write a pixel to the screen. Nowadays, to do anything of value you need to know how to use complex APIs.
The only type of cool desktop app is a 3D game and they are pretty hard to get going like you said.
Another shift happened when I was 17 (last autumn), as I have discovered LISP and Python and Ruby. With Python and Ruby understood that programming itself can be fun, not just the fact of solving problems with it, and expanded my brain (almost blew it away) with Common LISP, Scheme (call/cc.. yay), and Clojure.
I was on BASIC on the BBC B computer in 1989/90ish and Q-basic around 1991/92 (when I was 11 or 12).
http://msdn.microsoft.com/en-us/devlabs/cc950524.aspx
it has a few graphics things and handles a lot of stuff for you. for example, if you want to use the Turtle object, you write one line of code:
Turtle.Move( 10 )
this will automatically open a drawing window with default properties and show an actual turtle moving 10 pixelsit has intellisense and a cute UI too
The concepts are still problematic though.
When I was in elementary school I made rocket ships with BASIC (granted, that was in the mid 1980s). I want something that simple and kid friendly.
1993: DOS Basic. Entered programs from 3-2-1 Contact magazine. 1995: Robot Battle (http://www.robotbattle.com/) 1996: Klik 'n' Play (http://www.clickteam.com/)
Making simple GUIs is easy with a lot of languages, plus many languages are more natural and English-like.