The best programming language is...
Microsoft has squarely positioned .Net (C# primarily, but other flavors such as VB, J#, Iron Python, Jscript, etc) as the programming language for Windows. I realize its not a language, but pretend it is for a minute.
The Linux community really loves C and Python. Lets just focus on high-level languages (if you think C is a high level language, you’re too old) so we’ll say that Python is the language of choice for Linux.
Mac users are increasingly rallying behind Ruby and Ruby on Rails. Note that a lot of influential people in the Web development community use Macs, and since they know that they’ll never have enough market share to attract big desktop application vendors, they’re a driving force behind the movement to make all major productivity apps go web 2.0, which is a place where Ruby sparkles.
Lets discuss these three languages. Ruby is primarily used for web apps. You can write shell scripts and simple programs in Ruby, but who does?
Python is primarily a glue language. A lot of excellent non-web productivity apps have been written in Python. However until very recently, it has been non-trivial to write web-apps in python. Writing GUI apps is tricky, because Python lacks a standard, or even de facto GUI toolkit that looks and works like other modern kits. And unfortunately, there has been little commercial adoption of Python because its difficult to protect your IP if you write your app in Python. This doesn’t matter in web apps where you don’t distribute your program to your customers, but as mentioned, Python has not been a big contender in the world of web apps.
.Net is a great platform for developing both Desktop apps and Web apps. It’s only disadvantage is that when you choose .Net, you lock yourself into using Microsoft as your primary vendor for dev tools, productivity software, server software and operating systems. Replace a single component with a non-Microsoft tool and you loose a major portion of the benefits of using .Net.
So, when choosing a high level language, you are forced to either:
- Tie into a single vendor, or
- Limit yourself to only web apps, or
- Limit yourself to desktop apps
OK, so you astute developers reading this have likely noticed that I have left out one major high level language from my evaluation above. That is Java.
- Java works excellently on Windows, Mac and Linux,
- Java is great at writing desktop applications and command line/batch processing applications
- Java powers some of the webs most pervasive and high-powered web applications
Seems like Java is the perfect language… what’s the catch?
Early on, Microsoft hamstrung Java by creating a version that was slightly incompatible with other versions of Java. Sun had to change the license to ensure that developers could write code that would run anywhere Java would run. This license restriction made it hard for Linux vendors to include it.
Additionally, the Java community seems to love obscure acronyms, which makes it very difficult for new developers to jump in. You’ve got to first learn JINI, Jar, War, Ear, JCP, JDBC, AWT and a lot of other stuff.
Fortunately, Java’s license is changing to be compatible with Linux. Java comes pre-loaded on Macs and it is easy to install on Windows. There is plenty of free and commercial development tools. There is a dearth of entry to medium level documentation on the web, but you can go to your local book store and find at least a couple books.
As you know, I like Linux and OSS. I don’t like it because I’m anti-Microsoft, I like it because it provides a choice. I can choose to use Firefox browser, I can choose to use PostgreSQL, I can choose to use Ubuntu, etc.
I like the idea of Java, because of all the programming languages, it offers the widest variety of choices. Web? yes. Desktop? yes. Server? yes. Windows? yes. Mac? yes. Linux? yes. Commercial software? yes. Open source software? yes. For each of these options, Java provides a top-notch tool you can choose without making compromises in quality. This makes it truly unique.
Now I just wish I actually liked Java.
Bearfruit
Comments
Java
Java also has the interesting distinction that it’s basically where all the R&D is happening. Things like Aspect Oriented Programming, bytecode weaving, etc. is being developed in Java pretty exclusively. Not only that, but the universities have been teaching Java for ages, and the Free tools for development are reasonably advanced.
A nice thing for you might be JSR 223. There’s some hooks to let Python scripts run in that, and it gives access to the Java core language classes. Although, I think that the winner there will be JavaScript, since Rhino is included in J2RE 1.6. What’s interesting there is that you can then rapidly prototype some code in JavaScript (or Python). If it’s too slow, you can compile it. If that’s still too slow, you can refactor bits into Java and just call those from the scripting language.
who can I start to use java professionaly?
who can I start to use java professionaly?
Hi there,
I would like to know how can I start into the java world?.. I have basic/academic knowledge in this language.. but I am trying to jump into the professional field.. specailly in WEb applications… guys… any suggestions about how to start in this are welcome!
thx in advance
Cristian
an interesting link...
As mentioned above, I like Django a lot. I’ve really disliked all the work it takes to create a servlet based website (who wants to edit all that xml?)… maybe this is an option http://grails.codehaus.org/
What about C++?
I stumbled across your post after recently posting “Is C++ The Only Real Language?” on my blog. I really like your roundup and your justifications for choosing Java as an excellent all round programming language. However, have you considered C++? I think C++ can be considered a high level language (especially with the wide variety of libraries now available). It is excellent for desktop programming and can be used to write server side code (although my choice would probably be PHP for this).
C++ is good...
Hi David, good points. Here’s my thoughts on C++:
But when you leave the world of Visual Studio:
Then there’s always the pointers.
Please note that I learned C++ in college in ‘95 and we didn’t even have strings (my text book was “Moving From C to C++” by Greg Perry, published in 1992) except for character arrays.
Recently I did some experimenting with the CDT plugin for Eclipse and was very impressed. No more makefiles, assuming you use the managed environment. However debugging still didn’t work too well and there still isn’t a clear GUI toolkit to choose if you want to target users across multiple platforms.
I would prefer to write and maintain C++ code over C code though. Its just such a pain developing one app in Python or Java then switching to C and wishing you had more than a struct.
Where do I start
I work at a company for a group that supports business unit website scripts. We use Mercury BAC and Loadrunner to Monitor websites and download and test scripts. I usually download and perform text checks on HTML and URL based scripts. I’ve been doing this since about April 2007. I want to develope my skills more to be able to code scripts better and rebuild them when the business units make changes to them in which some cases they fail. I know a lot of this has to do with just practicing a lot of this stuff. I just want to know what would be a good place for me to start. Should I start with a certain programming language or maybe a certification like MCAD?
Thanks
Agree with Java
Java is best if one wants to end up using a single programming language in every kind of project (which is not possible all the time). Comparing with other programming language, Java is a best, make life easy for a all rounder programmer (one who work in every field). But if we are concentrating on only Windows or Linux operating system, then our rivals can beat us with quality (not in cases like bad or good programmer). Java is slower than C/C++ but I think now a days hardware improved a lot and it is good for Java as it require more RAM. I think one should know just 2 languages, one is C and other is Java. Ruby… Python.. and all who reduce coding lines wont count when we are talking about quality (in my view) / Performance . If a language comes with better performance and better options then we have with Java or C then no problem on learning that, C# seems to be good for those who can afford and with Microsoft.
Post new comment