hello, world (of programming)
August 17, 2008 9:37 PM   Subscribe

What should my first programming language be, if I just want to have fun? And what are good books or websites for learning said language?

I am looking to learn how to program. I don't have any ideas as to what I want to program, I just want to learn something for the sake of having a new skill and having fun. I'm sure the ideas of what I could do with any language will come when I have some idea how they work. There are plenty of other questions about which language to learn first, but they all have some purpose in mind, whether a specific program that needs to be created or to become a better employee and so on.

If it matters: I dual-boot Ubuntu and Windows Vista. I have previously used OpenSUSE 9 and 10 and have installed just about every other major distro at least once. I have reasonable competence when it comes to the Linux terminal. I'm a rising senior in high school and I am planning on focusing a lot on academics this year, so something easyish and fun is preferred. I have very limited experience with Visual BASIC. I wrote a text and button based choose-your-own adventure story with it for a school project and also a Twister caller so I could play by myself or with a small group of people. My dad helped with that last one, but I understood it at least. My friends ask me for computer help.

Finally, now that I know which language to learn, how do I learn it? Books? Websites? Podcasts? I'd be willing to spend a maximum of 30 dollars on books, though ten bucks is much appealing...

posted by papayaninja to Computers & Internet (45 answers total) 77 users marked this as a favorite
It's hard to beat Python. Start with Dive into Python
posted by Nelsormensch at 9:42 PM on August 17, 2008 [6 favorites]

Learn Python. It's powerful enough to let you do whatever you want and high level enough to make doing whatever it is that you want straightforward.
posted by null terminated at 9:42 PM on August 17, 2008

Best answer: Oh, man, _why the Lucky Stiff's stuff on ruby is just up your league. There's Try Ruby, _why's (poignant) guide to ruby, and (it's supposed to be for kids but its really a lot of fun) his Hackety Hack thing. All of them are fun and pretty breezy.
posted by jmhodges at 9:45 PM on August 17, 2008 [2 favorites]

Python - it really is fun. It still makes me giggle when it turns out be fantastically easy to do something which would have taken me ages in other programming languages and yet at the same time it's very powerful.

I like the tutorial which is part of the Python documentation.
posted by southof40 at 9:46 PM on August 17, 2008

LOGO, with Elica perhaps? If you're interested in learning for the sake of learning and not to develop some practical skill. Not that LOGO isn't practical.
posted by ostranenie at 9:48 PM on August 17, 2008

Another vote for Python here. I don't actually know any python, I started with PHP (practicality really), but almost everyone I speak to in regards to branching out, or learning something alternative (and yes, I'm afraid of C++) recommend Python to me, it's easy to learn, powerful and actually practical too (eg: Django for web development using Python)
posted by chrisbucks at 9:57 PM on August 17, 2008

Processing (a java environment) is great for super simple out of the box graphics/animation programming.
posted by norabarnacl3 at 10:01 PM on August 17, 2008 [1 favorite]

Another vote for Python and Dive into Python. Have fun!
posted by schwa at 10:05 PM on August 17, 2008

Response by poster: @jmhodges Try Ruby gives me "502 Bad Gateway" surrounded by a bunch of HTML tags, and I can't find anything on Google about the error. That said, the poignant guide is looking oh-so-very promising.

@ostranenie You caught me. Maybe something a bit more useful. :D

I figured it would be mostly between Ruby and Python from reading the other threads, but please keep suggesting other things or give reasons why one is better than the other. Thanks a bunch!
posted by papayaninja at 10:07 PM on August 17, 2008

Best answer: I'm going to vote for Ruby, although I'll admit I haven't used Python! I find Ruby to be incredibly intuitive though, in that you just DO stuff and it works, no reading required, because it works the way you'd expect it to work...

Try this website for a good starting book on Ruby:

Learn to Program

Good luck!
posted by ranglin at 10:08 PM on August 17, 2008 [1 favorite]

Best answer: my impression is that ruby and python feel very similar, so I'd think the knowedge would be transferrable from one to the other. The hardest thing for me with learning ruby from scratch (first programming language since plain old Basic on my c64 years ago) was groking Object Oriented concepts. Once I got that, a lot of it clicked, and then when I started looking into python, it all looked really familiar, and I was able to follow the tutorials much more easily.
posted by empath at 10:13 PM on August 17, 2008

Python for lightweight fun

and . . . the full-on VisualStudio + C# stack combined with XNA if you want to REALLY have fun. . . .
posted by yort at 10:20 PM on August 17, 2008

Python or Ruby.

If you choose Python you could try Panda3D (for 3D, obviously) or PyGame (or 2D). They're both simple game engines with a lot of community and support surrounding them.
posted by holloway at 10:24 PM on August 17, 2008

Best answer: Ruby and Python are kind of similar, in my experience. I prefer Ruby at the moment, but that's probably at least partly the novelty factor ...

One thought is that you could have a lot of fun playing with something like Ruby on Rails or Django (which is essentially RoR for Python). They're used to build webapps, and the learning curve is not bad at all.

That said, I'd also suggest that you play with scheme, a dialect of Lisp, and go through the SICP book. It's available for free online. Lisp is used almost nowhere, but it's a very *pretty* language, and the concepts it will teach you will serve you well in more practical languages. Or you might hate it; but I've never met anyone who's used it who didn't have strong feelings one way or theh other.
posted by spaceman_spiff at 10:25 PM on August 17, 2008

nthing Python, or bucking the trend with C.
posted by SirStan at 10:31 PM on August 17, 2008

Python, but i do not recommend Dive into Python. Try python for the absolute beginner. Dive into Python does exactly that, dives right in. I didn't find it to be a great book, but definitely is at least ok, and definitely is free:P
posted by figTree at 10:32 PM on August 17, 2008 [1 favorite]

This is an open ended question as everyone favours their pet language. It also depends what you want to do.

I'd recommend Python as a general purpose programming language, but not Dive Into Python as your first intro to it as it's designed for people who have programmed before. The book Think Python is well regarded and is available as a free download. If you want to buy a book, both Beginning Python and Learning Python are decent enough - I personally preferred the prior. Python's documentation is also surprisingly good.

I'd avoid Ruby for now. Its syntax encourages brevity over clarity at times, which is bad when you're starting out and there's a lack of decent books - the Pickaxe is too long-winded and the Ruby Programming Language is a bit overly terse. Beginning Ruby is supposed to be good but I haven't read it.

PHP is easy to get up and running with if you're interested in web development. The language can be a bit ugly to use in some ways, but it's easy to get up and running with and its documentation is decent enough. A problem with PHP is there's again a lack of good books or up-to-date material written by people who truly understand the language.
posted by HaloMan at 10:32 PM on August 17, 2008 [2 favorites]

Well, sorry for the discordant voice, but I'd recommend Actionscript, the programming language used to do complex things in Flash. If you want to do fun things, Flash is a fun environment in which to do them. And Actionscript is a pretty comprehensive language.
posted by Class Goat at 11:04 PM on August 17, 2008

Class Goat: I'm actually gonna have to disagree really strongly with that. Flash is expensive, if you have a legal copy (unless there's a student version I don't know about, but that's really limiting in terms of creating things to share or distribute). It's not that hard to pick up if you already program, so there's no reason not to leave it for later, when you have a professional need for it to cover the cost. Learning Javascript - which is essentially the same language - can let you do some cool, albeit visually simple, things in HTML. Pong, Lights Out, etc.
posted by spaceman_spiff at 11:15 PM on August 17, 2008

Python is clean, but isn't inherently fun (unless your definition of fun is programming in a clean language). It is a good learning language, and there are some tutorials that are pretty fun, like the Python Challenge.
posted by zippy at 11:21 PM on August 17, 2008

Nthing Python. Also try BASIC, especially if you can get your hands on QBASIC on an old version of DOS. (Stay away from Visual Basic though)
posted by fvox13 at 11:23 PM on August 17, 2008

Having used both Python and Ruby, my vote goes to Python, though either is a fantastic choice as a first language. I would also suggest you learn some low level hackery in C, but that can come once you have the basic concepts down (which is best done in Python). Python is good because it gets out of your way.
posted by jozzas at 11:25 PM on August 17, 2008

That said, I'd also suggest that you play with scheme, a dialect of Lisp, and go through the SICP book. It's available for free online. Lisp is used almost nowhere, but it's a very *pretty* language, and the concepts it will teach you will serve you well in more practical languages. Or you might hate it; but I've never met anyone who's used it who didn't have strong feelings one way or theh other.

Hear, hear! (Though I'm a Common Lisp man myself.) Lisp is somewhat unusual in that it's probably easier to learn if you don't have extensive experience with other languages than if you do; the highly interactive nature of Lisp development environments makes it perfect for experimentation and exploration; contrary to the received wisdom and the above-quoted comment, it is a perfectly practical language in which to work on real software used by real people for real money (writing Lisp for a commercial software company paid my rent for a while); and last but not least, it is fucking all kinds of fun (but will spoil you for most other languages — not recommended if you seek a remunerative career building J2EE applications) — really a fantastic language where you can see your changes right away, can indulge in whichever style of programming you come to prefer, and never have to think "if only the bloody thing would let me do what I want I wouldn't have to work out this idiotic circumlocution to please it." I recommend Practical Common Lisp along with the excellent and accessible but more theoretical SICP recommended above by spaceman_spiff (which uses Scheme, not Common Lisp).
posted by enn at 11:29 PM on August 17, 2008

Python and Ruby are both good choices.

If you want to do something that'll let you do some graphics, give Squeak Smalltalk a try. A lot of what you can learn poking around in Smalltalk will show up later as you learn other languages and frameworks.
posted by dws at 11:30 PM on August 17, 2008

Okay, this is going to be a long, boring post, but there's a good moral to it (hey, just like Lisp! *rimshot*).

I started with LOGO in 3rd grade.
I moved up to BASIC in 4th grade.
I moved up to C in 7th grade.
I went back to BASIC as a sophomore in high school (class requirements are a bitch).
I moved... up?... to FORTRAN as a freshman in college (class requirements are a bitch).
I moved up to C as a sophomore in college.
I moved up to Livescript (now called Javascript by newbie coders) in my second year out of college.
I moved up to PHP three years after that.
I moved up to Java a year after that.

If you're looking for a lightweight language to get you started, with all kinds of free support documentation, interesting cross-platform issues, a ton of usage on even the most cutting-edge applications, and a moderate learning curve that can get very very steep depending upon how good you want to be at it, you should look at... Javascript.

I know what the peanut gallery is saying: WTF? That crap doesn't even run on the server! Well, back in the stone ages, Javascript actually was the primary language supported on the backend by a little company called Netscape. And despite Netscape's utter failings elsewhere, server-side Javascript was actually pretty damned cool.

That's beside the point, though. Writing Javascript requires you to install exactly zero extra pieces of software. Just write a rudimentary HTML page in vi (you are using vi, right? I mean, so long as we're starting religious wars, we might as well go all the way) and drag and drop it into your browser of choice, and you're off. No mucking around with Apache, no needing to worry about Tomcat's server.xml, no needing to worry about calling free() all the damned time, Javascript is about as easy as it gets.

Plus, it's a gateway drug. You're a senior in high school; by the time you graduate, you'll be pretty well versed in rudimentary OO programming. That will leave you plenty of time in college to go out drinking with prospective girlfriends while your classmates struggle over the idea of try..catch..finally in "CSC 202: Java fundamentals." From Javascript you could go the PHP route. You could go the Java route. You could go the, uh, Python route, but if you're looking for a future career in Python, go ahead and browse the results listings on Monster for "python" (1100 results) versus "java" (database overloaded, too many results).

Last, and I do not ask this question lightly. Are you absolutely positively certain you want to do this? A life as a coder is one of spending your days cursing the fools who came up with the business requirement to have a "send to a friend" link on every page, drinking entirely too much carbonated beverages--to the point where your body really starts rebelling-- and hoping that the new code you're pushing into production this week doesn't fail on Sunday morning at 2:30am. It is not to be taken lightly, because only the most strong-minded fools enter into the arcane art of pushing bits around overheating CPU cores.

So. Javascript. Your first assignment is to figure out how the "Live Preview" works in the comments, because that's all done in Javascript.

(Bonus logic question: what year did I leave college?)
posted by mark242 at 11:32 PM on August 17, 2008 [3 favorites]

I like Python, too, but you've already heard enough about that.

Meta looks good. It seems to have the pleasing elegance of Scheme and Lisp (procedures *are* data in those languages, which lets you do some fun stuff) but also lets you make some games and graphics pretty quickly. Seems right up your alley, if you've just written a text adventure.

I meant to do something with Processing myself a while ago, but forgot about it. It's a very small and specific language for programming animation.

Finally, there's always Flash, as Class Goat mentioned. With ActionScript 3.0, the language has gotten far less ugly.
posted by ignignokt at 11:50 PM on August 17, 2008

Response by poster: I'm not really interested in making games or animation, as much as I love consuming both. Flash would be cool to know, but the expense is a major problem.

I'm pretty sure I'm going to go with Ruby. I'm already an hour and a half into _ask's poignant guide, so why stop now? I gather that whichever way I go the other will be easier to learn after. I may also go the Rails route at some point. Thanks for everyone's help.

And mark242: emacs ftw. Let me guess, you're a KDE guy, too...
posted by papayaninja at 11:58 PM on August 17, 2008

you can do flash with the free flex SDK but, frankly, it won't be very much fun. download a free trial of flash, by all means, but don't fall in love with it because you'll be selling your first born...

...or getting a job writing actionscript.
posted by klanawa at 1:20 AM on August 18, 2008

Now, far be it from voting against Ruby, as it really is a fun language to program in.

However, if/when you get bored with Ruby, please take a look at Actionscript. Now, I know spaceman_spiff says it's expensive, but there are open-source compilers (MTASC) that can compile actionscript for free.

Reasons to try actionscript:
  • A HUGE AND MASSIVE online community Actionscript.org
  • Way more visually exciting results compared to Ruby or Python.
  • High likelyhood of there being a Flash Users Group in your area. Check the Adobe User Group Locator page. Usergroup meetings are like free classes, and often have 'newbie' sessions. You may also be able to buy old (legal) versions of Flash from people, and you'll definitely meet plenty of people that will be able to walk you through any problems you hit
  • It's way more powerful and object-oriented than Javascript (The standard it is derived from is "4th edition", where as the browser based stuff is 3rd Edition. The standard committee just decided that the next version included in browsers will be 3.1, as 4 was deemed too much of a change for javascript developers.)
  • While it's more powerful and object-oriented, it's just as easy to read as Javascript.
  • Colleges might actually have a course on Flash/Actionscript. (University of South Dakota had one several years ago, if that's any indication) They won't have one on Python or Ruby.
  • Designers are always looking for someone to collaborate with... they always want to make a game, but don't want to program. So you could learn to program by helping with the next game to be found on http://www.flashgames247.com/
  • If games aren't your thing, there's always data visualization.
  • When you outgrow Flash, you can move on to Flex.

posted by hatsix at 1:25 AM on August 18, 2008

To me the programming language that allows a person to have the most "fun" is one that lets them quickly get on with influencing the realm they are most expert and passionate about. In the last few days I have been playing with the music composition program, Sibelius - this is not something that most people would think of as programming - but if your goal is to be able to produce a piece of music for an orchestra - and especially if you have existing musical knowledge and passion - then this would definitely constitute "fun programming". This the the reason why Logo was put together to help kids control robotic turtles and why Macromind Director (ancestor of Adobe Director and, to some extent, Actionscript) was created by an collaboration between a programmer, artist and musician.

From your description it sounds like one thing you are passionate about is computing itself (ordinary people will not have "installed each [linux] distro at least once"). So you can choose pretty much any of the languages mentioned above. You might want to consider what you want to make and what else you are already an expert in - since that might guide you in the direction of the most fun.
posted by rongorongo at 2:46 AM on August 18, 2008

Best answer: This is a wonderful time for programming-as-a-hobby; there are tons of interesting, totally free environments with decent documentation available. If you find yourself getting bored or frustrated with one environment you can switch to another.

I'd suggest (and many people would likely disagree with me; YMMV) that rather than attempting to exhaustively learn one programming environment you dabble with many. Then, if you want, decide on a project and pick one language to implement it. But in the meantime there is a tremendous amount to be gained by playing and exploring.

I second Processing as a learning language. It rewards exploratory programming--you get instant feedback in the form of cool, moving things on the screen and the error messages are helpful enough that after a while you can figure out what has gone wrong. There are tons of sample programs that you can modify with good results, which is a great way to learn how various constructs work. It will reward the hobbyist impulse you're describing.

If you like math at all, go get SAGE, which is a sort of web-based math notebook. It runs as a local web server on your computer. You can use it as a glorified calculator, or you can write little Python scripts in a "notebook" in your browser and run them. You can do all sorts of programming with it but you can start with math--it's good at calculus. It has a tremendous amount of documentation. The "notebook" paradigm means that it's very easy to see what your code is doing--you see the code and right below it are your results. It'll run much better on the Ubuntu side of things, though.

You may also want to get a TeX implementation. Not all programming results in executable scripts or programs--the product of TeX and the dominant dialect LaTeX is (usually) a typeset document. LaTeX documents aren't programs in the same way, say, Firefox is a program, but there are all sorts of interesting things to learn about coding from the LaTeX environment (not all of them good or useful, but often edifying). And some LaTeX skills are quite handy from time to time, because you can use them to make professional-looking documents (depending on your profession).

For sheer weirdness and brain-melting, Squeak is an implementation of a language called Smalltalk and is geared towards education. It's worth downloading and playing with just to see if you can figure out what these people are thinking. Everything is clickable and scriptable inside of Squeak; it's turtles all the way down. Just get it and start clicking around, and try to figure out what it all means.

Above, rongorongo suggested Sibelius. In a similar vein, I learned to program in CSound, a free music synthesis language. You create an "orchestra" file to define your musical instruments and a "score" file to tell them what to do, and that compiles into sound (it's been a decade since I programmed in it and it has continued to evolve, but I imagine the basics are roughly the same). You learn a ton about synthesis and basic sound science if you learn CSound, and it's interesting and often surprising to hear the results of your programming.

If you're enjoying Ubuntu and want to be more powerful and productive, learn more about BASH scripting. Doing so will make you more effective as a computer-user; you'll find yourself writing little programs to avoid repetitive tasks (which is sort of the point of computers). There are tons of programming opportunities right on the Unix command line. Thinking about files and processes this way will be very helpful if you decide to learn Perl, Python, Ruby, or C. This is less "fun" than the above, though.

For a Socratic intro to "classic" programming, get The Little Schemer (link goes to Google Books so you can see what you're getting). This book explains recursion and symbol-manipulation in an entertaining way. Some people love it and its sequels; I found it charming but a little goofy. All the exercises in the book can be run for free in any one of many open-sourced Scheme implementations. Definitely go through this book before attempting to conquer SICP (or Structure and Interpretation of Computer Programs), which is linked above. Honestly, I'd stay away from SICP for a goodly while unless you're looking for an MIT-equivalent understanding of computer science and want to give that book a serious amount of time. (Then again you may be incredibly smart; me, I've had it for a year and I'm still on chapter 2.)

If you're interested in how computers work--as in how you go from transistors to Tetris--I've been enjoying The Elements of Computing Systems: Building a Modern Computer from First Principles, which has an exploratory programming environment that's free to download. I'm only a few chapters in but find it pretty interesting to learn how things actually work. Amazon has it for $34, so that's a little above your price range. The book itself is a model of geek clarity, though, and I love knowing how things operate once you get below all the layers of abstraction.

Finally, spreadsheets are fascinating and powerful, and doing interesting and advanced things with them requires a programming mindset. It can also be quite fun for some definitions of fun. Unfortunately most spreadsheets lack good support for things like proper string handling so programmers often get frustrated with them, but they offer all sorts of opportunities. OpenOffice is free. Wrapping your head around conditional formatting and pivot tables, or learning how different functions work, how you can put in many values and produce one result or put in one value and generate many results--all of that is programming. For instance, you could create a financial model of your own life that allows you to change variables and predict outcomes. If you want to travel to Rome but don't have much money, create a spreadsheet that allows you to figure out how much it will cost to travel, then figure out where you can cut other costs to allow for the trip. You could make a spreadsheet that tells you that if you spend an extra week in Rome you will have to cut down on your book-buying and, for the next six months, eat out only one time a week instead of two. Factor in the exchange rate for the Euro, etc. (This assumes you're not already in Europe, of course.) Make as complete a model as possible; you'll learn a ton. Programming for self-exploration like that can be very fun, and there are all sorts of life-and-money-planning puzzles that can be modeled in spreadsheets. Plus it never hurts to have good spreadsheet skills, no matter what you do for a living. Everything needs a budget sooner or later.

All of the above will run on Windows and Linux (and the Mac). All of the software mentioned is free and open-sourced, although the books mentioned might run you over your limit.

If you take any of these suggestions, don't worry if you get frustrated. Sometimes just installing some software is a total pain, and can be confusing. It can be especially hard to get started. But in the meantime you can just quit the frustrating thing you're doing for a while and do something else, and still have fun.
posted by ftrain at 5:38 AM on August 18, 2008 [11 favorites]

And, you know, Ruby and Python are perfectly fine too.
posted by ftrain at 5:48 AM on August 18, 2008

NB, the new SICP is How to Design Programs. For an out and out beginner I'd choose the latter over SICP.
posted by pharm at 6:05 AM on August 18, 2008

I'm resisting trying to not to create a flamebaity post

But Flash is focused largely around designers and making pretty things simple, Python and their ilk are focussed largely around general application development and getting practical tasks done. It depends largely what you find fun - they're fundamentally different problems.

Oh, and saying ActionScript is "way more object oriented" and "more powerful" and calling JavaScript "easy to read" are all extremely debatable and summing up the whole ES4 thing like that annoys me greatly. Plus many, many university courses use Python - most notably MIT's Intro to Computer Science. *cough* Sorry. Couldn't help it :(
posted by HaloMan at 6:05 AM on August 18, 2008

I'd love to know what a beginner thought of Haskell. The core language is lovely.

I suspect that there are no decent online tutorials for the novice programmer, although the online version of Real World Haskell wouldn't be a bad place to start.
posted by pharm at 6:12 AM on August 18, 2008

Oh man, Haskell was my first language, and I loved it. Hadn't touched a computer before, now I spend 12 hours a day on them.

Although, I've gotta say, the transition from Haskell to imperative languages is hard, and Haskell itself might not be all that fun for somebody who isn't all that mathematical.
posted by claudius at 7:39 AM on August 18, 2008

Python is an awful choice for a first programming language where people want to have fun. Probably the third worst choice available after Cobol and Java.

Squeak, Processing, Actionscript, Blitzbasic -- those are languages for learning and fun. If you want to branch out and start learning more serious concepts, try ruby. Only try python if some poor bastard forces you to use it for work and thinks they're being hip by not choosing Java instead.
posted by felix at 8:21 AM on August 18, 2008

posted by todbot at 8:46 AM on August 18, 2008

Flash is free, if you want to go with that. I downloaded FlashDevelop and the Flex SDK and got up and running fairly quickly. I don't know a whole lot about Flash, but people seem to be able to make some pretty cool games and toys with it.

I don't like Ruby very much compared to Python. I think Python has more going for it, but they're actually pretty similar in basic concepts. I think the Ruby syntax gets really weird sometimes, but maybe I'm just having Perl flashbacks with all the @ symbols. Anyway, you can look at both of them and learn the basics fairly quickly. I still wouldn't start with either of them though.

Processing is pretty fun, fairly easy to get things working, and has tons of examples. I would start with that and then go on to something else based on what types of programs you want to create.
posted by demiurge at 9:40 AM on August 18, 2008

Response by poster: I always have been a bit interested in LaTeX, now that you mention it, and SAGE could come in handy for AP calc this year. I think the best advice has come from several people, which is to do a lot of dabbling and sort of branch out.
posted by papayaninja at 10:03 AM on August 18, 2008

Nodebox brings the fun if you find yourself noodling around with Python http://nodebox.net/code/index.php/Home
posted by crustix at 9:15 PM on August 18, 2008

Just to be difficult...try SuperCollider...a great, interesting OO language, and you get to make noises. I find that very fun.
posted by dubitable at 9:25 PM on August 18, 2008

Wow, fantastic advice from ftrain earlier in the thread. I don't recommend Dive Into Python as a good starting point if you've never programmed before, instead I strongly recommend "How to Think Like a Computer Scientist", which teaches you programming and Python without assuming that you know anything about how programming languages work. I would complement HTLaCS with "A Byte of Python", which is a great tutorial on getting up and running and may provide more context, though it is not as well written as the former.

To address your last statement, unfortunately Computer Science requires depth as much as it requires breadth. It is more important that you understand at least one programming language really well than know how to do simple things with many of them.

Feel free to get in touch if you have specific questions on how something works, I'm always happy to mentor starting programmers in languages that I'm familiar or interested in.
posted by onalark at 6:49 AM on August 19, 2008

Processing was recommeded to me on Metafilter a while ago as an alternative to Java for developing Internet applets.

The first applet I developed in Processing can be found here:

Vector View

The code is available on that page as well.

Currently I am working on a much more complex program, a game which I hope to soon post on the Metafilter Projects page.

I had extensive programming experience, thought not at professional levels, before diving into Processing so my perspective might not be that of a novice.
As it was pointed out here, processing is great for developing interactive, graphics based applications. It also includes a 3D library with lights, cameras and solids.
The structure of an applet is geared towards real time applications, that is, by default you have a function that repeats itself endlessly at specific time intervals (the framerate).
That took a little to get used to but it does make coding games a lot easier.
Again, it depends on the OPs purpose. All I can say is that I am having a lot of fun coding in Processing.

Another beginner's language is VBA (visual basic for applications). Most people use it initially to write Excel macros that supplement Excel's built-in function library.
VBA is easily accessible from Excel , and the help is pretty well documented. It's also great for interoperability purposes. Most software packages have APIs that can be accessed using a built-in VBA environment (like the one in Autocad and the Microsoft Office suite, for instance), or by referencing externally by loading the API dll which gives access to the object library. With these features and its simple syntax, VBA is great for introducing the novice programmer to object-oriented programming. There is tons of information and examples on VBA on the Internet,again a plus for beginners looking for some ready-made code to start tinkering with.
posted by spacefire at 6:18 AM on August 20, 2008

Concepts, Techniques, and Models of Computer Programming is another intro to programming book in the vein of Structure and Interpretation of Computer Programs, but it uses the extremely obscure Oz language instead of Scheme. Like SICP, it's pretty challenging. It covers a lot of ground (especially in the realm of concurrency).
posted by Monday, stony Monday at 8:18 PM on August 21, 2008

« Older Help me find a knee PT in San Francisco   |   Plexiglass woes! Newer »
This thread is closed to new comments.