Choosing a Programming Language
-
In a previous post I talked about using Python as a first language for a new beginner. Moving on to a second or third language or knowing what language to choose for a specific project is a much more complicated task. If you are a seasoned developer and know the project that you are doing to be tackling well you can generally make a highly informed choice as to language and platform. For those looking to get into a project and need to choose a language without a broad understanding of what is out there for common projects and when different tools are most applicable, this list is for you. This is by no means comprehensive or authoritative. It is simply meant as a basic guide to understanding where a language is likely to be most useful and applicable based on the project you intend to tackle. For example, if you need to write an iOS native application, what do you turn to? What about a corporate website? What about maintaining WordPress?
A quick list of languages that would generally be avoided for any new project but could easily come up for legacy code support. If your job is to maintain code in these languages (or countless others), you have to learn what you have to learn and that's that. But if you are looking to write a new project, it is assumed that these languages would never be chosen: COBOL, Visual Basic, Fortran, Pascal, SmallTalk and to some extent even Perl.
Java: The biggest language in popularity. Java is primarily used for building large, internal applications at large companies. Java is an extremely power, and complex, language and language platform, is widely known, taught in most universities, very mature, extremely fast and heavily supported. For large, "server side" applications, Java is the primary language and language platform. Would rarely be used inside of the SMB market but is very applicable there too, if internal development is done. Cross platform.
C and C++: While two distinct languages, their usage tends to overlap. C dramatically outranks C++ in usage and usefulness. C++ tends to be restricted to internal corporate development. C is probably the leading language of open source software and is the primary language used in writing some of the biggest software such as operating systems and databases. Very powerful, very mature, very fast and extremely complicated to learn and use. Would essentially never be used in an SMB environment unless supporting external projects such as open source. Cross platform with complications.
C#: Rounding out the top four most popular languages is Microsoft's C#. Far more in common with Java than with C or C++, all four languages in the top four are considered "C Languages" because they share a common style and syntax with C, which is by far the oldest of the group. C# is by far the youngest and was Microsoft's answer to the rising popularity of Java in the 1990s. C#, like Java, uses a power platform as leverage (C# uses .NET, Java confusingly uses Java) to make the language very extensive. C# is often used in similar ways as Java, for big server side application development. C# is also the core language for the development of Windows native desktop applications. C# is theoretically cross platform, but practically the .NET family is restricted to Windows platforms. This is our first "platform dependent" language.
Python: The most popular non-C language and our first scripting language in the list is Python. Python is an extremely fast and versatile scripting language used for nearly any conceivable task. Commonly used for systems administration tasks (primarily in the UNIX world), popular for web application development, used for many games and utility applications it can be used for nearly anything including cross platform desktop app development. Python has essentially replaced Fortran for scientific computing and is the leading language for first time programmers. Python is cross platform.
PHP: The next most popular language is PHP. While a general purpose scripting language at heart, PHP's focus and ecosystem is so fully around web development that it is assumed that this is the only use of the language. PHP is the leading language for light and/or open source web applications. It is fast, extremely easy to use and learn and very broadly used, especially in the SMB market. PHP knowledge is often used to extend existing applications rather than to write new ones in the SMB. Common PHP applications include WordPress, Drupal, Joomla, SugarCRM, etc. PHP is cross platform.
JavaScript: Used in every web browser and part of the HTML5 suite, JavaScript is a powerful, versatile language with a ton of development money behind it. JavaScript provides the client side automation of nearly every web page and is used in conjunction with server side languages to make web platforms powerful. But while designed for and traditionally assumed to be solely an "in browser" language, JavaScript has expanded and is now available, and extremely popular, on the server side too. JavaScript is primarily used for web app development on the front end and network server development on the server side. JavaScript is cross platform.
Ruby: Another general purpose scripting language akin to Python. Ruby is famous for trading code performance for speed of writing code. Ruby is extremely expressive and is popular for rapid web application development and systems automation tasks but can be used for nearly anything. Many large scale websites are built on Ruby. Ruby is cross platform.
Objective-C: The "other" member of the C family. This one runs only on Apple platforms and used to be the core development language for Mac but has recently been replaced by a more current language so today, Obj-C is primarily only for legacy support, although is a fully viable Apple-only language.
Swift: Apple's replacement to Objective-C. A powerful, modern language rapidly displacing Objective-C in use. If learning a new language for a new Apple project you will almost certainly want to be using Swift. Apple only.
There are many other, far less common, languages that have great use cases like Scala, Clojure, F# and Groovy. But nearly anyone looking for a language need is going to focus on the big languages above and their main use cases.
-
-
Well, @Dashrender, we know why Java won't die... people are still using it, apparently!
-
@dafyre said:
Well, @Dashrender, we know why Java won't die... people are still using it, apparently!
That's Java for development, 99% of that is server side. Not client side. That would be crazy. Java for the server is one of the best products ever.
-
@scottalanmiller vis a vis NodeJS?
-
@dafyre said:
@scottalanmiller vis a vis NodeJS?
NodeJS is a JavaScript framework. Not related to Java.
-
Cool. So much stuff coming and going lately, it's hard to keep track for me, lol.
This graph that you show above is for server-side development only?
-
@dafyre said:
This graph that you show above is for server-side development only?
No, it's everything, but Java server side has always been essentially all use cases for it. Java on the client side has always been a fringe usage. Nearly the entire enterprise software world runs on Java.
-
@dafyre said:
Cool. So much stuff coming and going lately, it's hard to keep track for me, lol.
Tip off is the trailing "JS". That stands for JavaScript and by convention, every major JS project puts JS in their name for some reason.
-
@scottalanmiller /facedesk
Edit: Can I go home and take a nap yet? checks watch ... Nope, not yet.
-
Now to be really crazy, you could probably run JavaScript on top of Java somehow just to drive people crazy. Ruby and Python can both be run on top of Java very easily. (JRuby and Jython projects.)
-
@scottalanmiller That's a bit complicated for me, as I'm no Java dev, lol. ... but I think I'm going to tinker with Python some soon... Just to try and learn it. 8-)
-
Wasn't there a project that ran Python on top of Python?
-