Short Coding Projects?
sapped asks: "Whenever somebody advocates a new programming language for you to try, they will usually suggest writing something in it that will take you an hour or two to code, so that you can get a feel for it. My problem is that I tend to go from extremely trivial ideas straight to stuff which will keep me busy, for at least a few days. I don't seem to have a handy in-between size project that I can test stuff in. The closest I came to this was writing a little ad-blocking proxy for my browser, a few years back. Any ideas on neat small non-trivial projects?"
Try to get your hands on some programming exams. The programs there are usually designed and written within one or two hours (to fit into a typical lesson). Also they touch all subjects that are of interest in your case, for example the 8-queen-problem for recursion, simple algebra (prime numbers) for number handling, pointers, etc without going to deep into details not necessary if you are not writing productive software.
Keep open minded - but not that open your brain falls out...
Or War (the card game), or a slightly more complex turn-based card game.
Or, if you're terrible at programming or the programming language or compiler sucks, "Hello World!" might take a few hours.
Alex.
A friend of mine suggested a reverse-polish notation caclulator. It's a pretty good project since you'll have a chance to use a common data structure (stack) along with all the basic features of the language.
I implement a simple irc bot in whatever language i test. Usually takes few hours and you can write it as top down script or as oop monster, up to you.
The good thing is that you can use this irc bot to test just about every aspect of the language later on. Its not a project which is just done and discarded. Possible enhancements are user recognition or even something fancy like cvs commit reporting.
For example when i decided to play with sqlite took the ruby version of the bot and added a funny quotes database.
What language? I can get you a web browser using MSHTML.DLL or Gecko in five minutes in VB (implementation is the same, as someone made mods to Gecko so that it worked as an ActiveX control, and IDENTICALLY to MS's HTML control).
I'll skirt around your question and instead suggest after you get done with helloworld.lang you go straight to something interesting even if it's huge.
Why? Well most 1 day projects aren't very challenging or interesting. But most major projects will have subsystems that you can do in one day, and the project in its entirety can hold your attention long enough that you may eventually complete it, by which time you're an expert in the language.
This is pretty much the approach I had to take to learn C++ and OOP. I started a job knowing only C and the basic ideas of objects, and took on small bits of the C++ project until I could handle larger chunks.
Hhmmmm....You'd figure somebody would have made this lame remark already.
But seriously, a good project for learning a language depends on the language itself and the problems you yourself face. You're not gonna write a simple 3d engine in python and you're not gonna write a log parser in C (actually you could, but that wouldn't be the easiest/quickest solution).
Just pick something trivial that bugs you at any given moment that's the right job for the language.
When I'm studying a language, I like finding an open source project I care about and looking for something to tweak. Advantages of this include feedback from other developers, an instant framework to fit your small changes into, and the warm and fuzzy feeling you get when you make something other people will use. You can pick up the idioms of the language quickly by reading code used in real life. Participating in an open source project also connects to a lot of other people who already know the language you want to learn, and you can ask them for help.
Don't be intimidated by the size of projects. Pick a project, browse through the source code, try to get the feel of things. You can usually find a bug report small enough for you to work on. If not, think of a feature you'd like to have and try to implement it. =)
Great way to get into a language.