views:

394

answers:

13

I'm often thinking of start writing an application in my spare time. The one thing that holds me back is the fear of having to abandon the project after 5 years because maintenance becomes unfeasible due to an ever changing "programming environment". By this I mean the combination of the programming language, a good IDE, some extensive fundamental libraries and the operating system. I'd like a programming environment which allows me to write an application once, and then for the next ten years merely do some tiny modifications.

Nobody can look into the future, but this is an important consideration for everybody starting a new project. What programming environment has the best chance to survive the years to come?

+6  A: 

If you want something that is future proof, you might want to look at those languages that have already proven themself to be future proof: C for example.

Other than that you could have a look at the TIOBE index to see which languages are popular right now and what the trend is. The chances are that any language that is very popular now is not just going to disappear overnight. Even if something better comes along the momentum is huge so they will survive for many more years I'm sure.

Finally, I would recommend that you don't worry about it too much anyway. If you are just learning then it is more important to understand the principles than any specific programming language. Just find something you enjoy and learn the basics well. When you come to change to a new language one day (and I think any professional programmer ought to try more than one language) then it should be easy to take most of your knowledge from one platform to another.

Mark Byers
lisp too.... :)
Srinivas Reddy Thatiparthy
The problem with the durability of C isn't so much the language as it is the libraries. So the question is, what platform do you build it on, and what libraries do you use?
Erick Robertson
+4  A: 

I would throw my hat in for Java. Version-to-version, they do a very good job of marking old API's as deprecated so that you have enough time to re-engineer obsolete code. It is also about as platform-independent as you can get. It is being used for Android phone development, which is brand new and will be around for quite some time.

Obviously, it's impossible to guarantee anything in the future, but I think Java is the best bet from this standpoint.

Erick Robertson
+1  A: 

Id expect Visual Studio to still be around in 5 years (seriously, people still use Visual Studio 6, which is even older and doesnt even come close to following the standard lol) as well as other major IDE's and toolchains.

C/C++ will almost certainly still be around due to the amount of legacy code, support for nearly every platform, and flexibility. .NET id also expect to still be around, at least on Windows and mono is also gaining ground :)

Fire Lancer
+1  A: 

If you want to write an application, start doing it in the language that you already have expertise. If the application is useful enough, there will always be some followers. No one can tell on future of languages.

Typically application involves many pieces -- persistence, core business code, threading, communication, caching, reporting, printing, installation, help documentation.. If you choose Java, you have many libraries and products to to choose for each of the areas.

As for IDEs, it depends on who is promoting it. Netbeans is good, not sure what Oracle has in store for it. IntelliJ is best java IDE, it has community edition as well.

Jayan
+1  A: 

There are thousands of mission critical servers out there running Unixes with 30-year old C code in them. And banking hosts have PL/I and COBOL code even older than that. Some companies are still using butt-ugly X windows applications written in Tcl/Tk decades ago. There are a bazillion device drivers written in C++ out there. While popularity of some languages and/or technologies may decline over time, I'd say most of them remain a niche for enthusiasts or very specific purposes.

In general, I find that stuff that falls under the umbrella of 'UNIX-y' techonology tends to be supported for a long time, even if only by a small subset of the original crowd.

That said, .NET and Java are not going to go away any time soon.

axel_c
+1  A: 

I'd advise choosing a proven platform with a rich development ecosystem and growing user base. A platform that's already been around 10 years and is still expanding is unlikely to dissapear completely in another 10. Java and .NET have been around for a decade or more and show no signs of becoming less relevent any time soon. C and C++ are obviously also well established and will certainly stil be around a decade from now. I'd also argue that Python, which has been around for over 15 years, is still going strong for both desktop and web development. PHP is also a good option on the web. On the Mac side, if you're happy with that platform Objective-C is a great dev environment and it's hard to see Apple droping off the face of the planet in our lifetimes, although I'd advise avoiding tying yourself down too strongly to any given OS. That kind of rules out .NET and Objective-C.

Beyond language though, the modules/frameworks you choose are also very important. For example if you go with Python, which web framework or GUI framework do you choose? Turbo-Greas vs Django? wxPython vs PyQt? This is a much harder question. For these decisions you'll just have to choose what you judge the most proven and currently well supported options, and try to architect your application into components that are as loosely coupled as is practical so that you have the option to switch out components if necessery. Of course, that might mean avoiding highly desirable features in a library to reduce dependency, but it's up to you to decide on that tradeoff.

Simon Hibbs
+1  A: 

As for language, there are far more to choose from than there is to avoid. C, C++, Java, VisualBasic are all well established and not going anywhere. Even the most fly-by-night of the bunch, C#, has a 10 year history and shows no sign of going away. Some just rising now, like F# and Python, might give you pause for the very long-term, but for a five-year windows even these will be fine.

IDEs: No problem at all. The new hot IDE will always let you import from the one it wantS to replace.

Platform: You'll probably want to choose between Linux & Windows, but whichever, both have a solid furture for the next 5 to 10 years at least.

James Curran
Windows? Meh. It doesn't have much of a future :) Too slow, buggy, and insecure.
George Edison
Neither does Linux. In fact it doesn't have a present on the desktop.
JeremyP
@Jeremy: Oh? That's news to me. I use it.
George Edison
Visual Basic has already gone through one breaking change. VB6 and VB.NET are both called Visual Basic, but they aren't compatible. For safety, I'd try to avoid one-company languages like VB. The OP may want to extend that to Java and C#.
David Thornley
A: 

Google will promote their own language :) so we will be all programming in some sort of gLanguage.

thelost
Just plain ridiculous. "gLanguage" doesn't exist.
George Edison
I said "some sort of `gLanguage`" but you name it how you wish
thelost
That doesn't make sense - Google hasn't created a language.
George Edison
Yes they have http://en.wikipedia.org/wiki/Go!_(programming_language)
nportelli
@thelost: What are you talking about? Are Google promoting that everyone should switch to using Go? Is Dalvik "their own language"? Or what are you referring to? And how is it different from Microsoft pushing C# and .NET?
Mark Byers
Just to be clear, thelost said "Google will" not that Google has.
Quenton Jones
+1  A: 

I think a cross platform toolkit like Qt would be your best bet. It's been around since 1991 and has been used in a number of well-known projects: Opera, VLC Media Player, and Google Earth.

It continues to get improved and is available on a number of platforms.

George Edison
+3  A: 

Avoid proprietary systems for they may make older versions cease to function in order to get leverage at you buying their 'upgrade'.

Hermann Ingjaldsson
A: 

Is that really the best criteria for deciding on what to write your program in? Things change, even within the same language. Most programming languages I know about now don't require an IDE to compile. That shouldn't matter a whole lot. Your program should target the most used OS of it's users. If it is multiple OS's then that changes things quite a bit. Focus on good practices, not necessarily the technology under it.

nportelli
A: 

It depends on which kind of application you are writing, if you are going to write a desktop application I recomend you to use C++ and try to use GCC as your compiler,in addition, use standard libraries. If you are going to write a web application, in my opinion PHP is the best. And if you want to write for mobile devices go for Java - Java to micro edition. This languages are quite common in these areas and have lots of librarie, literatures and tutorials.These popularity make them more persistent and more developing than others.

Ehsan
A: 

There are many other factors that you need to consider. The type of application you decide to write, and its intended purpose, will play a large role in the language and environment you choose.

Quenton Jones