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.
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] http://www.ruby-lang.org/en/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.
[1] http://www.python.orgIf 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.
[1] http://research.microsoft.com/fsharp/fsharp.aspxYou don't specify what your projects are, but if it's unspecified try Processing
www.processing.org
It's java based, comes with it's own IDE, is free and produces some of the coolest stuff you'll see.
I originally copied the word "Python" and pasted it 1000 times.
Just use Python. It's really simplistic and easy to use.
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.
Boo language. Very similar to Python but written exclusively for .NET Framework (and works with Mono).
It comes standard with the #develop IDE.
http://www.icsharpcode.net/OpenSource/SD/
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.
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
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.
SayHello()
instead of jumbles of sayHello()
, sayhello()
and sAyHeLlO()
- Sekhat
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 http://www.wxpython.org/ it is the least painful of all the GUI frameworks.
What kind of hobby projects? Are you looking to create desktop apps, web apps, mobile apps or something else? That would definitely influence recommendations.
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.
[1] http://www.microsoft.com/Express/VB/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:
http://www.codeplex.com/IronPython
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.
http://python.net/crew/mhammond/win32/Downloads.html
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).
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.
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.
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.
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.
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.
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.
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]).
[1] http://www.lua.orgScheme is as simple as you can get! And more than powerful enough.
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.
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. :)
My kneejerk reaction is also Python. For a quick leg-up, you can leverage your existing .Net framework knowledge by using IronPython [1].
[1] http://www.codeplex.com/Wiki/View.aspx?ProjectName=IronPythonMy 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.
[1] http://harkal.sylphis3d.com/2005/08/10/multithreaded-game-scripting-with-stackless-python/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.
[1] http://www.arduino.cc/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.
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.
For hobby projects in Windows, I use Jeremy Gordon's Go Tools for Win32 and Win64 (assembler, resource compiler and linker)
URL: http://www.jorgon.freeserve.co.uk/
I like to get close to the Windows API. With GoAsm, it is easy and interesting.
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.