
What's the best programming language for a hobbyist? - RutZap
TLDR: There are so many programming languages and frameworks out there... and there is so little time :( Which one would you learn just for the fun of it?<p>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).<p>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.<p>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? :-)
======
mikecane
Another point to consider: Would you want to be able to easily show off what
you created? Then you should likely do HTML5/CSS/JavaScript so you could put
it on your phone. Who knows? Maybe you will come up with an app idea that's
commercial and you'd be set.

~~~
RutZap
I do work with these everyday (JS HTML CSS) but the JS I write is basic and
can't really be considered proper JS (in my opinion). I think you are right
and I could give it a go... probably do a Win8 App and get the grips on
JavaScript and then move towards a functional language (like Haskell or Lisp
as someone else suggested).

~~~
_Dude_
This will be useful then: <http://wtfjs.com>

~~~
RutZap
:-) it reminds me of this: <https://www.destroyallsoftware.com/talks/wat>

------
dysoco
That really depends on what's exactly your "Hobby". I'm a hobbyist myself, but
I'd like to study Computer Science (I actually like the SCIENCE in computing.)
and become a Software Developer.

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.

------
inetsee
I'm going to swim against the tide here and suggest that you might want to go
back and play with Pascal some more. Pascal was the third programming language
I learned (after machine language and Algol) and after all these years
(including decades of working professionally with C, C++ and Ada) Pascal is
still the language I have the fondest memories of. I loved it because it was
simple and elegant and I could get my mind all the way around it (something I
was never able to do with Ada).

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.

~~~
RutZap
Thank you for suggesting SICP... It seems pretty good and it will definitely
help me see programming from a better place.

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

~~~
a_bonobo
There are different versions of SICP around, depending on what you use for
your reading pleasure:

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?

------
untothebreach
I know a lot of people are going to say Python, which I would normally agree
with. In this case though, I would almost say that some kind of Lisp might be
a good idea. The lack of a complex syntax means you can just get started
hacking around, and it would definitely "keep your brain moving," as you say.

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.

------
ishbits
What's your hobby? If web development I'd look at Python, Ruby or JavaScript.

If 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.

~~~
DoritosMan
For games, I would recommend C++, C#, or Java. They have good libraries for
games already created. C++: SFML and SDL C#: OpenTK and XNA Java: LWJGL and
Slick (Which uses LWJGL)

~~~
_Dude_
C# - MonoGame (supports iOS, Android, Mac OS X, Linux and Windows 8 Metro -
more to come).

~~~
RutZap
This seems to be awesome. I used XNA to build a Xbox 360 game for my
dissertation. I really enjoyed working with XNA and this will allow me to
build something that can run on mobile devices and Win8... awesome!

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!

------
Someone
You write _"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"_

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?

~~~
RutZap
I guess my itch is the fact that at work I do the same thing almost every day
(make them websites, add guest checkout, style the page, integrate X and Y's
API). It's becoming tedious and boring. I think my learning curve is now flat.
I need some new challenges from which I can learn new stuff, use more math and
elegant algorithms.

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.

------
damian2000
Others have said Python and I'd back that up, but if you're looking at Windows
only, then have a look at Visual Studio 2012 Express - a free & decent IDE. It
supports C#, C++ and VB.

------
brudgers
The language which moves my brain the most is Lisp. It's built around pointers
and memory locations but garbage collection, cons, and car take away the
tedium I associate with C. The REPL provides the instant gratification of
instantaneous frustration while pondering the possibilities of macros offers a
mental infinite loop.

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.

------
Oculus
Why not do some competitive programming? That should utilize the algorithms
you learned and you could use any/all of the languages you already know
(Pascal, C++, Java,C#)

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)

------
yamural
I've learned Python exactly same purposes as a hobbyist. Although it depends
on your learning curve, Its easy to start and continue. You can find tons of
examples for every level. Also if you interested with web developing, Django
(Python web framework) can be good solution. If you are total beginner, this
lesson will be very useful: <https://www.udacity.com/course/cs101>

------
bdfh42
Ruby - because it is a little bit different to what you already know - which
would be the entertainment factor and also might change how you write code
elsewhere.

------
fmw
Beware of people suggesting their personal favorite language. There are many
languages worth knowing. My personal favorite is the Lisp family and
particularly Clojure. Pick up a book like SICP or any of the Clojure books. It
can really give you a new perspective.

I suggest buying the Seven Languages book by Bruce Tate. There is no wrong
choice, because learning any language will make you better.

~~~
RutZap
I'll definitely take a look into a Lisp language. I guess it will also make me
learn some maths (lambda calculus) (one can never know too much math :D)

------
orangethirty
Depends on what the project is. If I'm building a web app, then Ruby or
Python. A mobile app is Java (android). A local script that does not need to
be blazing fast or light is done with Python. If I need to deal with a lot of
text then Perl. And I just want to get something done and have fun with it
then Common Lisp.

------
_Dude_
C# - it just keeps constantly evolving. Supports dynamic/static,
functional/imperative, OOP and language-integrated asynchronous programming
models. It gives you a nice balance between performance and features like
introspection. Also ReSharper + Visual Studio will give you the best IDE in
the world.

~~~
_Dude_
Python could be a decent choice as well:

[http://blog.udacity.com/2012/05/learning-to-program-why-
pyth...](http://blog.udacity.com/2012/05/learning-to-program-why-python.html)

------
ozirus
Python, I think.

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.

------
mrtunes
I dont know if you call it a language since it's based on Java, but Processing
seems to fit the bill for this.

------
metaperl
Python

------
k7n
Python.

------
sonabinu
Python

------
borabinbas
my opinion : python

