views:

151

answers:

5

I am about to retire and looking to take up programming as a hobby. I want to create applications both that are desk top applications and Web based application (or a mix) that interact with a database. What is the best program to learn and grow with for a relatively old new guy?

A: 

As to the best, that is a question with a thousand answers, and most of them revolve around you.

That said, their are some common truths. When you are looking to start programming there are a few key criteria you should consider. First off and most important ( IMHO ) is the amount of support or documentation available. For example Scheme may be the greatest language in the universe, but the amount of help available is somewhat limited. The next thing that really helps for a new language is the simplicity of the environment. This is a two fold point, as it could take the form of an extremely simple development environment. Python is a very good example, as you can just type it in and see what happens. Many scripting languages are quite powerful in this regard as its easy to learn when you are witnessing cause and effect first hand. The second aspect is an developer environment that makes things initially easier for you. Visual Studio Express, Eclipse and NetBeans are all great examples. With these tools you don't have to learn the nitty gritty of build scripts, can often do development work via drag and drop, etc...

In the end I would suggest you start with a desktop application or web application first. Each are different and require a different learning curve, start simple.

Language wise I would probably pick something interactive. Python is a very good beginner language in this regard. Additionally if you learn Python, understanding C based languages ( Java, Javascript, C#, C, C++, etc... ) isn't much of a leap. That said, Python is by no means your only choice in this category.

I would recommend against C or C++ as needlessly difficult, especially for the tasks you are wanting to accomplish. I would also recommend against Java. Not because Java is a bad language or the fact Java is difficult to learn, but because the Java ecosystem is just overwhelmingly complex. There are just so many different frameworks and libraries, it can be jarring ( pun intended ) to even get started. If you do go the Java route, have someone pick out a framework for you in advance.

I also could recommend C# if you don't chose a scripting language from the above suggestion. Its very similar to Java, but much more focused in the eco system. Sometimes less choice is in fact better, and in the case of a beginner, this is definitely true. This suggestion falls on its face if you are a Mac or Linux user. There exist C# options under both platforms ( see Mono ), but it adds a layer of complexity you dont want right now.

Serapth
+7  A: 

You might want to start with Microsoft Visual C# Express, which is free to download and will let you start creating simple desktop and web applications without having to learn a lot first.

Just work through the included tutorials, and lean heavily on Google and SO to figure out what's going on. Once you get some idea of how these things work, you'll be able to decide where to go next.

This won't be popular, but I'd recommend staying away from Python, Java, PHP, and other supposedly easy languages at first. They are great choices if you have someone to lead you through the initial steps of getting everything set up and running. However, if you have no programming background and nobody to assist, you may just find them frustrating.

Kristopher Johnson
Its actually a pretty good answer. A free VB or C# express would get him up and running quickly and at no cost.
GrandmasterB
I agree about Java, but I don't really see how Python would be any more difficult to learn than C# and I can see how it could be much easier to learn. Python can be just as easy as Visual Studio to install and get up and running, especially if you go with something like ActiveState, and unlike C# can be just typed and ran. This interactivity is extremely valuable when learning to program.
Serapth
I love Python, but learning how to create desktop apps and web apps with it without any previous programming experience seems pretty complicated to me.
Kristopher Johnson
Frankly, starting out and trying to learn desktop apps and web apps at the same time is asking for failure, regardless to the language you choose.
Serapth
+1  A: 

I'd recommend Adobe Flex for front end, Python for back end and data management.

Flex is relatively easy to get started with, has great documentation, community, and resources, has a good IDE built on Eclipse with many wizards and extras that are helpful for beginners (including a WYSIWYG design view), allows creation of fairly powerful applications and fluid interfaces without needing too much experience, is based on solid object oriented design, and can target either the web or desktop.

Python... well, python just rocks. Imo it has just about everything you could want in a programming language, beginner or otherwise. The syntax is simple, clear, concise, and intuitive. The documentation and community are excellent. There are a ridiculous number of 3rd party libraries that make it possible to do just about anything imaginable. There are a number of excellent frameworks to choose from for web programming (web2py is my favorite), but you won't be limited to the web -- python is also great for desktop uis, system administration, and countless other tasks, so you can grow into the language. Another huge plus for Python is the ability to use Google App Engine and get free/cheap and easy to use hosting that scales. As a beginner, you want to be focused on getting your apps working, not hosting, so GAE is a great option.

Good luck!

Dane
A: 

A truly easy entry into web programming could be PHP, CSS - perhaps in the context of WordPress or Drupal. Depends on how deep you want that first jump to be... :)

morganpdx
A: 

Books - the nice thing about being retired is that you have the time and patience to read something instead of needing to get something out of the door quickly.

If you have no need to learn a specific technology then take a look at the MIT online lectures and SICP - especially if you have a maths/tech background.

Martin Beckett