What's the best programming language for a hobbyist?
I have some experience with a bit of Pascal, C++ and C# from highschool but not much (I was mainly learning algorithms and concentrating less on actually building software). During uni I did some Java and continued with C# (+XNA). In the meantime I played a bit with PHP. After I graduated I got a job as a PHP developer (PHP, Javascript, CSS, HTML).
Now, after 2 years of work, I realise I need something else. I want to learn a new programming language, or continue learning one I started in school, something that will compensate for the lack of algorithms in my work (building websites with PHP can be tedious sometimes). I want to learn it in my spare time and I want to be able to build something with it, a small application of some sort... not really important what, but I want to use those algorithms I learned several years ago.
This brings me to my question ... what should I learn? What is the best programming language for a hobbyist. The kind of programming you do on weekends just because it's cool, because it keeps your brain moving and because it's fun and rewarding. What's the programming language that puts a smile on your face? :-)
32 comments
[ 2.6 ms ] story [ 80.2 ms ] threadIf systems type stuff then Python, Perl or C. If you wanna be a hobby kernel hacker then C.
If games, well. I don't know.
I guess games are the best choice... I can use all those cool algorithms that I've learned a long time ago (which don't really come as useful in web development) and at the end of the day I have a game which I can publish and who knows.. maybe make some beer money :D
Thank you for this!
Because it has a lot of easy-to-use 3rd party library, its community is great and fun to write.
You can start with Dive into Python free-online course.
Some kind of Scheme would probably be best. Racket, especially, is supported cross-platform, has a nice little IDE, and has plenty of libraries and community support.
I suggest buying the Seven Languages book by Bruce Tate. There is no wrong choice, because learning any language will make you better.
But I'm not in College yet, so I'm a "hobbyist", people are suggesting Python: I'd say it's a great language, specially as first language or language for scripting... but you should try other ones too.
Given that you are a hobbyist you want to have fun, learn new things: Try Prolog, Scheme, Haskell, whatever.
I'm not a big fan of Ruby myself: Python does better in the desktop and I like Django (Python web framework) more than Rails. Although Ruby is nice as language too.
But what is really great about Lisp when it comes down to it is the literary tradition. I just haven't seen another language which comes close. There isn't a Richard Gabriel for Fortran.
Check out things like MOAI:
http://getmoai.com/
and LOAD81:
http://github.com/antirez/load81
There are still implementations of Pascal available, including Free Pascal and GNU Pascal. For more information about implementations, check out the Wikipedia article on "Pascal programming language".
Alternatively, if you want to get a solid foundation in Computer Science and algorithms, I would suggest you work your way through "Structure and Interpretation of Computer Programs" (abbreviated SICP). This was the textbook used for years at MIT for their introductory computer programming course, and the course materials are still freely available as part of MIT's Open Courseware program. I personally prefer the original version that used the Scheme programming language, but you could also go with the updated version that covers the same material using Python.
Edit: There are easier courses out there, but I think this one is the best if your are serious about getting a solid foundation in Computer Science.
As for Pascal... it's been roughly 9 years since I last wrote something in it. You definitely made me want to "give it a ride", for old times sake :D
As mobi for Kindle: https://github.com/twcamper/sicp-kindle
As ePub for iPad/Nook (I think?): https://github.com/ieure/sicp
As PDF for whatever reason: http://sicpebook.files.wordpress.com/2011/11/sicp.pdf
And of course, the original HTML for the browser of your choice: https://mitpress.mit.edu/sicp/full-text/book/book.html
Note: Especially the epub and mobi version have different forks floating around so maybe there are better links for these, anyone got anything?
http://blog.udacity.com/2012/05/learning-to-program-why-pyth...
If that is all you want, almost any language will do. Maybe, you want to take on a new one every month or so for a while to get a broader view on what's out there. Your experience, it seems, is only with Algol :-), so I would pick something different like lisp, Haskell or Forth.
Having said that, I think you should first think more about whether there is a deeper reason why you want to program. It might not even be the programming itself, but the learning itself. If so, reading about programming languages (or maybe even on computing history, physics, linguistics, history,...) can be a better idea. On the other hand, if, in the back of your head, you have this idea to write something to solve problem X, that could direct you in your choice of language.
In other words: what is your itch?
This is why I think I will be going to make some small games (monogame & C#, js)... and after I learn JS properly, I will definitely try some functional languages (Haskell). I think this will make me better at programming and help me see things from a different point of view... and most of all, have fun doing new things.
Here are some good sites you might enjoy:
http://www.spoj.com/
http://community.topcoder.com/tc
http://codeforces.com/
http://projecteuler.net/ (Math Focused Problems)