As I do my professional and personal work, I am always looking for
the best tool for the job. In software development, there are several
programming languages that can be used for a wide variety of reasons. I
am often asked by people new to software development what is the best
language to learn. They get confused when I ask them what they plan on
doing. The reason is that people think there is going to be a best
language for everything. However, everyone knows that there is no silver
bullet. On the other hand, there are some languages which are better
suited or more widely used in specific areas. So, given that idea, I
came up with a list.
Enterprise Software Development –
Java is typically used in this space as people are moving many administrative applications to an intranet.
Windows Development –
C# should be used for any Windows
development, this includes anything interface with the Microsoft Office
Suite. Don’t tell me about POI for Java, I have used it, but the native
libraries kick POI’s ass.
Rapid web prototyping and anything WordPress –
PHP
is really good for rapid prototyping what a web site should act like.
It may even qualify as v1.0 for your site. It may not be a good long
term solution and there are better options for large-scale development.
It is also the main language for anything related to WordPress.
Web Prototype with a backbone –
Python has quickly
gained acceptance as the “next step” after PHP. Many current web
applications use Python extensively. Adoption will continue as more
services natively support Python like Google’s AppEngine.
General Web Development –
(X)HTML, CSS and Javascript
must be in your toolbox for any significant web development. If you try
to remain standards compliant (which you should) then you need to look
at the
XHTML standards.
Data Integration –
XML and JSON
are the main data interchange formats on the web and in corporate
development. With XML, there are various syndication formats (likely the
subject of another post) and other business format standards to review.
Databases –
SQL is critical to almost any application.
If you learn standard SQL, then you can translate this to almost any
database product on the market especially the popular engines like
Microsoft SQLServer, Oracle, DB2,
MySQL.
Toolbox – Every programmer should be able to do more than just
program in one language. In addition, there are many scripting tools
that can be part of your toolbox which can make you extra productive.
Cygwin
is a Unix shell that you can install on Windows, and I can not live
without it. Unix scripting is very powerful when dealing with batch
processing of files or even just interacting with the file system.
Perl,
the Pathetically Eclectic Rubbish Lister, is another language that can
be used for web development, but it really shines when dealing with file
and text processing.
I know I have ignored various tools and languages, but this is really
just a starting point. In software development, it is always helpful to
keep learning new things and new concepts. If you really want to
stretch your mind, start working in Artificial Intelligence and
programming in
LISP, or do some logic programming in
Prolog. If you feel really adventurous take a look at
Standard ML. I am not sure what it is really useful for, but it is a completely different language than most.