Chosing a programming language for today and the next 10 years

Joseph Sinclair plug-discussion at stcaz.net
Tue Mar 22 22:15:36 MST 2011


Lots here, Hopefully this will help.

1) Windows is a terrible bet.  It's already having trouble in the market on multiple fronts; it doesn't scale up to servers (well), it doesn't scale down to mobile devices, and it won't likely work well with the transition to ARM architectures and a more diverse hardware ecosystem.
2) Apple will never dominate anything (in computing devices) for long.  They're too tied to the closed-control-everything walled-garden approach, and most people don't really want a device that's completely closed (witness the surprising popularity of jailbreaking iPhones) outside of simple single-purpose consumer-electronics devices (like an MP3 player, and even there Apple is less dominant than they'd like you to believe).
3) Don't choose a single language and expect to use that for 10 years; it's extremely unlikely any given language or platform will hold sway that long.
4) Apple IOS *is* OSX on phones.  It's the only "version" of OSX that will ever run on a phone.

That said:
Java is a great platform to learn, particularly for mobile; consider building an Android app to learn with (Android apps are Java with some slight modifications and extra API's).  The Android SDK runs in Linux and provides an actual system emulator so if your app runs in emulation it will almost certainly run on real devices (unless you do something really weird).
If you also want to try some web development look at building a straight-up servlet app with Tomcat6 (avoid Spring and J2EE; the first has jumped the shark and the second is very complex).  Servlet programming is relatively easy to learn, and it's immensely powerful.  Almost all examples of JSP programming follow the broken ASP model, which is almost the worst possible way to architect a web application.  You might also look at the Google Web Toolkit, which allows you to use Java to develop the AJAX frontend as well.

C and C++ are strong languages, but not terribly well suited to mobile apps unless you have a lot of experience and need the absolute maximum performance on a phone. If you are interested in those languages learn the QT toolkit as well, as that will help you create C++ applications that are cross-platform without a lot of *very* difficult work.  Understand that it's generally expected that everything you write for the first 5-10 years using C++ will be horrible, just because C++ is more complex and powerful than generally recognized.

It might be useful to look into Python, Scala, and Javascript as additional options for a, currently in-demand, strong niche language that will buy time to build a broader skillset.

If you really want to develop for iPhone, then buy a Mac desktop or laptop and develop using Objective-C, since that's more-or-less required to develop a native iPhone app.

For most cases, the best place to develop a new desktop application is Linux; develop using Java, C++ with QT, or Python with wxWidgets and you'll be able to run it on Windows and Mac as well, but developing on Linux will encourage cleaner code and provide a smoother software development process.

Good luck,
Joseph Sinclair

On 03/22/2011 09:36 PM, keith smith wrote:
> 
> 
> Hi,
> 
> 
> 
> I would like to build a desktop
> application to run in Windows.  And I am looking to the future... 10
> years, if that is possible.
> 
> 
> 
> With mobile computing (smart phones)
> starting to emerge, and a possible future dominance by Apple devices,
> I would like to try to prep for that too.
> 
> 
> 
> 25 years ago I learned dBaseII and
> liked it. For that time is was very feature rich and very powerful. 
> Then I followed with dBase+, III+, FoxBase+, FoxPro DOS and Windows,
> and finally Visual Foxpro.  Really enjoyed that 13 year run.  M$
> bought VFP and now it is almost dead.
> 
> 
> 
> I moved to Perl for a short time, ASP
> for a short time, and then PHP, where I am now.
> 
> 
> 
> Looking back I can say I learned one
> major lesson - be careful what sills you build and maintain.
> 
> 
> 
> So I am needing to learn a new skill to
> create this simple Windows Application.  I was thinking of C++ 
> because no matter where the market goes C will more than likely be
> useful on Windows, MAC, and Linux. 
> 
> 
> 
> 
> Then there is Java.  The write once run
> everywhere language.  Nice thing about Java is I can build web apps
> with it as well.  As phones become smarter, I suspect there will be
> some real need there also.  Then I also hear the rumor of OSX running
> on phones.  Nice!
> 
> 
> 
> So when the day is done and gone I do
> not want to spend a bunch of time learning a new language and the
> development tools that go along with it and find I wasted my time.
> 
> 
> 
> Any Suggestions?
> 
> 
> 
> Thanks in advance!
> 
> 
> 
> 
> 
> 
> ------------------------
> 
> Keith Smith
> 
> 
> 
> 2 Chronicles 7:14 (New International) : if my people, who are called by my name, will humble themselves and pray and seek my face and turn from their wicked ways, then I will hear from heaven, and I will forgive their sin and will heal their land.
> 
> 
>       
> 
> 
> 
> ---------------------------------------------------
> PLUG-discuss mailing list - PLUG-discuss at lists.plug.phoenix.az.us
> To subscribe, unsubscribe, or to change your mail settings:
> http://lists.PLUG.phoenix.az.us/mailman/listinfo/plug-discuss

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 490 bytes
Desc: OpenPGP digital signature
URL: <http://lists.PLUG.phoenix.az.us/pipermail/plug-discuss/attachments/20110322/2949f163/attachment.pgp>


More information about the PLUG-discuss mailing list