Stack OverflowSimple but powerful programming language for a hobby software project
[+46] [32] Gulzar Nazim
[2008-10-08 19:33:02]
[ windows language-agnostic programming-languages ]

Long time back, I used to do some home projects in Basic. It was fun and I could get things done without reading tons of documentation (or whatever documentation was available at that time).

I guess it is the not the same anymore. Nowadays, programming languages comes with a heavy baggage of framework, environment setup etc. Even for writing a simple program, it is not easy to get going within a day.

I agree a good knowledge of concepts is important. But, my question is this: Is there any easy-to-use programming language out there for some hobby projects. I have some free time available next month and I don't want to spend half the time learning how to write programs.

Since this is for Windows, I could have used Visual Basic but looking for something in keeping with modern trends and for some knowledge enhancement. Would love to hear your thoughts.

Update1: What kind of hobby projects? It is for desktop apps but keeping an open mind.

Update2: I am a C#/VB.Net developer by day (at least for the past 6-7 years). Looking for something different.

That's hilarious. 3 answers recommending Python in about 10 seconds. - Mark Biek
If I was standing in Barnes & Noble and I heard one guy say to another guy "I'm looking for a good hobbyist programming language..." I'd yell "Python!" at him. It's a knee-jerk reaction for me now. - David Hill
Ok looks like choice is between Python and Ruby after going through some answers.. - Gulzar Nazim
"What kind of hobby projects? It is for desktop apps but keeping an open mind." Kind of sounds like a personal ad :P Looking for a programming language for fun times and maybe more... - Dana
I think you'll get better desktop support with Python. - Mark Biek
@Dana - haha. always have an open mind..always.. - Gulzar Nazim
@Mark - Thanks for the edits. Neat!! - Gulzar Nazim
@Gulzar No problem. I just thought it might make your updates more noticeable. - Mark Biek
[+57] [2008-10-08 19:34:05] David Hill [ACCEPTED]

Python [1] has everything you're looking for.


(2) Can I use Python to interact with hardware? - Saif Khan
If going with Python, check out the Activestate version. - Gary Willoughby
Usually, yes. There are several reported cases of successfully using Python to interact with, for example, keyboards and monitors. - F.D.Castel
(4) In fact, Python has 20x as much as you're looking for. Good luck finding the 5% you want amidst the 95% you don't want... - Norman Ramsey
(3) Learning to effectively use a programming language always comes down to finding your "sane working set". This was a phrase coined by one of my first mentors. You find the parts of the language that apply to your daily job. Your response is ridiculous. RFTM. - David Hill
Python is a hoot. If your sick of Interfaces and plumbing just to get simple things done, you can't beat a bit of python. Its raw, dirty stinks a bit, its the best fun you can have without your Partner being involved in some sort of depraved way :) - WeNeedAnswers
[+22] [2008-10-08 19:41:16] Lucas Oman

Ruby [1] is a really neat and easy to learn language. Combine it with Shoes [2], and you get a great way to create apps with fun GUIs.


(1) Shoes? Damn, never heard of that. Looks good. - QBziZ
(1) I think shoes has moved to - DMan
[+21] [2008-10-08 19:34:12] Mark Biek

I do most of my hobby stuff in Python [1].

Especially for command-line apps, it's very easy to just fire it up and go. You can even work entirely interactively if you want to.

Pygame [2] is also an easy way to do some game programming in Python.


[+21] [2008-10-08 19:55:49] Troy Howard

If you want to learn something new, and have fun while you do it, but still be in a familiar world of the .Net Framework, you could try out F# [1].

I personally think it rocks and it's pretty easy to learn. You'll have to 'forget' your procedural and OO background a little bit in order to grok functional programming. That said, F# is cool because you can still write code in a procedural/OO way, if you want, but can ALSO include functional programming.

It's extremely flexible.


I like this answer because you take into account the op's background - Tom
[+11] [2008-10-08 19:41:38] Cruachan

You don't specify what your projects are, but if it's unspecified try Processing

It's java based, comes with it's own IDE, is free and produces some of the coolest stuff you'll see.

[+10] [2008-10-08 19:34:17] Robert Elwell

I originally copied the word "Python" and pasted it 1000 times.

Just use Python. It's really simplistic and easy to use.

(6) simple != simplistic - bobobobo
(1) Simple: Easily understood or done; presenting no difficulty. Simplistic: Treating complex issues and problems as if they were much simpler than they really are. So I guess Robert was right in a way, if Python makes everything easier. But that would mean it isn't easy in the first place, right? - DMan
[+9] [2008-10-09 22:13:25] cschreiner

How can you miss Squeak (Smalltalk) ??? Self-contained development environment, movable image to at least three major platforms.

You said you wanted something different... Once you get the hang of this, you'll have problems going back.

[+7] [2008-10-08 19:51:48] JTA

Boo language. Very similar to Python but written exclusively for .NET Framework (and works with Mono).

It comes standard with the #develop IDE.

[+6] [2008-10-08 19:37:23] Paul Nathan

C# is your best bet for Windows.

Edit: Definitely C# for Windows Desktop Apps.

edit2: If you've been a C# dev, try Delphi. It's a Wirth-family language, not a C-family. It's pretty nifty.

While I agree C# is the best bet for Windows desktop apps, the poster also said he had C# experience and was looking for "something different" and "knowledge enhancement". - Dour High Arch
@Vilion: Please see Update 2 in the question. - tzot
@TZ: Update2 was done after I posted. If he's looking for something simple & different for GUI's, then I'd recommend Delphi. - Paul Nathan
[+6] [2008-10-08 21:39:56] Jeff Kotula

I agree with the votes for Python if you are doing console apps. But if you're doing GUI stuff then I think you're better off sticking with C# and WinForms. FWIW

[+5] [2008-10-08 19:41:49] user26145

If you want to do Windows Programming, I would choose VB.Net, it's easy to learn, with a simple syntax. And there's a lot of tutorial on the internet.

I think that C# is a step above with the special syntax that comes from C/C++ and Java.

(1) A step above or a step below? From a productivity standpoint, I prefer VB.Net to C#. Why, almost a decade into the 21st century, do modern programming languages still force case-sensitivity on us? Just because K&R did it 35 years ago? Yuck! - E Brown
(3) I quite like case sensitivity. Keeps code looking neat. :) Forces developers to write SayHello() instead of jumbles of sayHello(), sayhello() and sAyHeLlO() - Sekhat
[+5] [2008-10-08 19:48:22] Erin

I would love to say Python it is my go to for any thing that doesn't require a GUI interface, So if there is no GUI use python. If you are going to have a GUI use C# and visual studio, but if you decide to do python look at it is the least painful of all the GUI frameworks.

[+4] [2008-10-08 19:35:11] Lindsay

What kind of hobby projects? Are you looking to create desktop apps, web apps, mobile apps or something else? That would definitely influence recommendations.

It is for desktop apps but keeping an open mind. - Gulzar Nazim
Here is a link to the free versions of Visual Studio: I'd recommend C# over VB, but if you're familiar with Basic it might be an easier transition. For web apps, play with javascript and libraries like jQuery. They are very powerful and easy. - Lindsay
You could always use javascript in something like Adobe Air to make desktop applications as well. - Lindsay
[+4] [2008-10-08 19:39:17] GvS

If you already know Basic, then Visual Basic Express [1] will get you going very fast.

I think you should also look at environments like Scratch [2] (for children, 2D graphical environment) Alice [3] (3D programming) or Squeak [4], general OO programming.These environments will give you results very fast.


oops. I guess I forgot to mention I was working on .Net since version 1.0. Looking for something different. :) - Gulzar Nazim
but definitely not Alice or Scratch. Thanks anyway. - Gulzar Nazim
No problem, Just trying to sum up some alternatives. - GvS
To be honest, I liked Alice. Definitely worth trying out. +1 - Gulzar Nazim
[+4] [2008-10-08 19:42:33] Dana

I'd also add to the votes for Python and additionally suggest that if you're working on Windows, you'll likely want to look into:

A python implementation on the .net platform which will let you use the .net framework from within a python environment. Very handy, and my first choice for scripting-style tasks on windows.

Mark Hammonnd's Win32 extensions for Python (I'm not sure how up to date it is, I haven't used it in a while).

[+4] [2008-12-23 00:25:52] blabla999

As you explicitly stated to look for something different:

I recommend Scheme or Smalltalk (or Squeak). These are old, mature, stable and proven languages which give insight into how easy live could be. They avoid many of the pitfalls, which cost time and nerve (pointer bugs, memory allocation trouble, casting, ...). Things like higher order functions, continuations, closures etc. are pure fun to use and now even find their way into mainstream languages (Seaside web framework). These languages have had that stuff for a long time, and still demonstrate a pure and clean solution.

Smalltalk had and still has one of the best integrated IDE ever - and its really integrated, making your app a part of the system and not something which is manipulated by it !

Many of the modern patterns and movements come from the Lisp and/or Smalltalk community: garbage collection, unit-testing, extreme programming, byte-code VMs, Just-in-time compilation, meta-class-protocols, IDEs, window systems, refactoring, ...

Even if you cannot use those for work, the insight, understanding and inspiration you get is worth it - also for your work in other - more traditional - languages. You will not have to learn syntax with either of them. Instead, the pure semantics is expressed in their function- or class-libraries respectively. In Squeak, for example, everything is visible from the lowest level VM-implementation up to the GUI, process scheduler and Browser. And all written in one language and easy to understand.

[+3] [2008-10-08 19:37:46] pmlarocque

Ruby or Python are 2 nice languages to have under your belt. Even if you don't use them for work. You'll probably find a use for it.

[+3] [2008-10-08 20:00:55] semiuseless

Python or IronPyton.

Since this is Windows, IronPython with the .NET integration would be the best of both worlds. If you use code in any .NET languages. This will allow you to write any performance critical code in C#, if you are into that kind of thing.

The really nice thing about Python (and wxPython for the GUI parts) is that you can take your code to another platform with a bare minimum of pain.

+1 for IronPython since the OP has a .NET background - galaktor
[+3] [2008-10-08 20:02:01] Jason Miesionczek

If you want to leverage your C# skills, while learning a new technology you could also consider learning WPF. Its a different approach to creating Windows Desktop apps than the old .NET 2.0 forms.

[+3] [2008-10-08 20:45:33] agartzke

I personally have had fun working with Ruby (and Rails) and Python (for Google App Engine or Django projects). Most of my time is spent on web projects, but at the language level, they both have the same qualities that you're looking for.

[+3] [2008-10-08 23:06:39] dsimcha

If this is a hobby project where performance matters and availability of lots of frameworks, etc. doesn't, you could try D. It's not as easy as Python or Ruby, but it's dead simple for someone with a C# background to pick up, has lots of modern convenience features that C/C++ don't have, is much more flexible about programming style (less bondage and discipline) than C#/Java, and is almost as fast as C++. For a hobby project, use D2, which is less stable but includes more interesting features.

[+3] [2008-12-05 03:38:50] Norman Ramsey

Python is a fine choice, but Lua [1] comes with even less baggage and setup. And it is not about to undergo a convulsion. And as a bonus, you can integrate easily with C, in case your hobby takes over and becomes something bigger.

If you want something you can master completely, try Lua, and read Roberto's book Programming in Lua (the first edition is available free online [2]).


[+3] [2008-12-05 15:58:25] leppie

Scheme is as simple as you can get! And more than powerful enough.

[+2] [2008-10-08 19:37:00] theraccoonbear

If you're looking to get away from .NET, I can say I've had a lot of fun over the last decade using Perl, and Perl's CPAN repository is an excellent resource when you're wanting to "get something done" but don't want to get mired down in the fiddly bits.

I've also really enjoyed playing around with Scheme, Common Lisp, and Haskell over the last year or so.

I use VB.Net and C# for work. So, something different would be nice. - Gulzar Nazim
[+2] [2008-10-08 19:50:19] Robert S.

Since you said you want to build a Windows app, and you want to do it in something "different," why not try out Delphi? There's a monetary cost involved ($300 I think?), but it is a lot different from C#, and it is great for building Windows apps. I'm a .NET developer as well, and I fire up Delphi every now and then just to do something different.

If you want something free and more sexy, try out the aforementioned Python with wxWindows. With that approach you can create a Linux version for even more fun. :)

I actually started my career with Delphi. but, its been a while and I am not even sure who is owning that now.. - Gulzar Nazim
Embarcadero under the CodeGear brand. - Robert S.
I used to be a Delphi developer myself, and back in the day it was nice, but now that we have C# I don't see a reason to go back. - Dave Van den Eynde
[+2] [2008-10-08 19:52:52] Troy Howard

My kneejerk reaction is also Python. For a quick leg-up, you can leverage your existing .Net framework knowledge by using IronPython [1].


[+2] [2008-10-08 19:57:40] Danimal

My gut was to suggest C#, because that's how I earn my bread and butter and it's my language of choice. Then I perused this thread, and was about to give in to peer pressure and suggest Python. Finally, I remembered this blog post [1] and decided to suggest stackless python.


[+2] [2008-12-05 15:55:53] shapr

If you have 128k of memory for your hobby programming, Forth is a fun choice.

If you want a small simple framework and you like electronics, you could try the Arduino [1]. You can develop on Windows, and run on the arduino. There are several nice Arduino kits for $50 or so.


[+2] [2010-07-05 15:29:24] Turing Complete

DON'T go Python. It's dynamically typed, you will get brain - cramps after a while, because nothing is what it seems to be, etc... it's almost as bad as this "Javascript".

Try F#... it's something new, it's a very interesting paradigm (functional!), it is fun to learn and to use and you will also become a much better C# - developer quickly, because you will start to incorporate more and more functional stuff.

[+1] [2009-01-07 11:49:23] sastanin

For hobby projects, you can benefit tremendously if you built on Open Source code. So make your project Open Source too, or at least choose among languages with strong Open Source communities.

My choice is Python. I tried Ruby too, but Python has a richer set of libraries. These languages really boost the productivity.

Tcl and Lua and very lightweight scripting languages. PHP is used a lot on the web. Perl is powerful but messy. Groovy is following the trend in the Java camp. I never liked Java or C++ a lot, but I would choose Java over C# (now OpenJDK is Open Source). C is more beatiful than C++ (but C++ has its strength). D pretends to be a better C++.

Now I spend some free time studying Haskell, and I find it eye-opening. Like learning programming anew.

Remember, your hobby projects are “just for fun”. And the language is part of the fun. Choose the one you really like.

[+1] [2009-04-23 11:47:41] Hideo

For hobby projects in Windows, I use Jeremy Gordon's Go Tools for Win32 and Win64 (assembler, resource compiler and linker)


I like to get close to the Windows API. With GoAsm, it is easy and interesting.

[0] [2012-02-23 02:16:16] Nick Panagakis

Try Java! You can use it for lots of things!!! Computer software(Duh), java applets(basically flash but 100 times more powerful), and android apps are some cool things that its used for.

System.out.println("Java is epic");

And if that's not good enough, then Visual C# along with XNA can be used for Xbox game design. Another language i would like to advertise would be LUA, its not very powerful and is quite difficult to put in an .exe, but it is EASY, and supports GUI.