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.

+50  A: 

Python has everything you're looking for.

David Hill
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.
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
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 :)
+19  A: 

I do most of my hobby stuff in Python.

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 is also an easy way to do some game programming in Python.

Mark Biek
+10  A: 

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

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

Robert Elwell
simple != simplistic
*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?
+4  A: 

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.
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.
You could always use javascript in something like Adobe Air to make desktop applications as well.
+2  A: 

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.
+5  A: 

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.

Paul Nathan
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.
Paul Nathan
+3  A: 

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.

+4  A: 

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

I think you should also look at environments like Scratch (for children, 2D graphical environment) Alice (3D programming) or Squeak, 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. :)
but definitely not Alice or Scratch. Thanks anyway.
No problem, Just trying to sum up some alternatives.
To be honest, I liked Alice. Definitely worth trying out. +1
+18  A: 

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

Lucas Oman
Shoes? Damn, never heard of that. Looks good.
I *think* shoes has moved to
+9  A: 

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.

+5  A: 

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.

E Brown
I quite like case sensitivity. Keeps code looking neat. :) Forces developers to write `SayHello()` instead of jumbles of `sayHello()`, `sayhello()` and `sAyHeLlO()`
+4  A: 

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

+5  A: 

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.

+2  A: 

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. :)

Robert S.
I actually started my career with Delphi. but, its been a while and I am not even sure who is owning that now..
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
+5  A: 

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

It comes standard with the #develop IDE.

+2  A: 

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

Troy Howard
+20  A: 

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

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.

Troy Howard
I like this answer because you take into account the op's background
+2  A: 

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 and decided to suggest stackless python.

+2  A: 

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.

+2  A: 

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.

Jason Miesionczek
+3  A: 

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.

+6  A: 

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

Jeff Kotula
+2  A: 

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.

+8  A: 

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.

+3  A: 

Python is a fine choice, but Lua 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).

Norman Ramsey
+2  A: 

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. You can develop on Windows, and run on the arduino. There are several nice Arduino kits for $50 or so.

+3  A: 

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

+4  A: 

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.

+1  A: 

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  A: 

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.

+1  A: 

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.

Turing Complete