On 09/03/12 07:11 AM, Joe Pluta wrote:
People get Perl jobs too. :) But to use the trite observation, if you
were building an application today would you use PHP as your first
choice? I wouldn't.
Joe: You've made your choices very clear. But people choose programming
language for many different reasons.
First, to be clear, few programmers have the choice. For the vast
majority of us, the choice was already made by others, years ago, for
reasons which may or may not have made sense at the time, and probably
make even less sense now.
Why did I choose to learn PHP? Because I looked at what local companies
were looking for. In December, I started a project in PHP, and within
weeks, I got an offer to work as a PHP programmer. The job didn't work
out (not because of my technical skills, BTW), so now I have some time
again to do some more work on that project while resuming the job search.
But let's say you had carte blanche to choose a programming language for
some new project. While language features would have been the primary
consideration 25 years ago, there are a lot of other factors to consider
these days. Here are some things to consider:
Compiled versus interpreted? That was certainly an issue 25 years ago.
Today, performance can be safely ignored. CPU's are blazingly fast these
days. For many shops, if performance is an issue, just throw a few more
CPU cores into the mix. But what really gives the edge to interpreted
languages these days are rich language features.
Frameworks? There are a plethora of rich frameworks to choose from. This
is probably the most important criteria these days. Today, no
application should be written without consideration of what the popular
frameworks have to offer. Python, PHP, and Ruby all offer a dizzying
choice of frameworks. Take CakePHP for example: It offers great support
for MVC programming, and handles a lot of the housekeeping tasks that
keep programmers busy in other languages. You don't have to write SQL
code, even for queries with joins! (To be fair, that's pretty much true
for PHP in general anyways. But CakePHP makes it easier.)
Platform? I've mentioned elsewhere that platform is pretty much
irrelevant these days. PHP can run on pretty much all operating systems.
Same is true with Python. (Perl can run on most, but outside the
Linux/Unix world who cares?) These days, there's no reason not to choose
a language that can't be deployed everywhere.
And on the issue of portability, interpreted language again have the
edge. As long as the interpreter can be ported to a platform, programs
can run pretty much without modification. It's harder to make that claim
for compiled languages. And I would clearly avoid any language that runs
on just one or two systems. That's a good way to lock yourself into a
single-supplier situation, as well as limit employment possibilities.
(Unless you're a clear expert within that domain!)
Type of application? I've said this before: As a rough first order
guideline, you choose a compiled language for systems programming, and
an interpreted language for applications programming. For systems
programming, you're more than likely locked into one particular piece of
hardware anyways. And you probably do care at least a bit about
performance. For applications, you care about programmer productivity.
If you're dealing with an interactive application, these days you're
probably dealing with a web-based environment, and so web-based
frameworks again become an important factor.
Support? That is, where do you go for help? Most programming languages
have good on-line communities. RPG400-L is a good example! But also look
at how well the language is supported by common tools, such a Komodo
Edit. That's a free source code editor that runs on Windows and Linux,
and has great features.
What would be MY first choice of programming language? I'd probably go
with Python as my first choice. (No surprises there!) But I certainly
wouldn't rule PHP out of that position. It's a gawd-awful ugly language,
but it works.
Cheers! Hans
As an Amazon Associate we earn from qualifying purchases.