Every craft may become an art. By doing your craft long enough you start showing artistic approach.
Every artist has its own tools and devices to make his/her art.
Every art can become a masterpiece.
Masterpieces are landmark of our understanding.
Being shaped as mathematician, I appreciate programming languages. Each language brings something of a new understanding.
History is market by development of programming thought.
Full flexibility of assembly, procedural and functional Fortran, Cobol and Basic, structural Pascal, low level C, modular Modula. Logic based Lisp and Prolog.
Then among structures and modules comes - a flash of light - object oriented approach. Smalltalk and then Objective C and C++.
Along the way programmers got kinda sick of "compiler" approach and wanted something that would "skip" compiling phase so many interpreted languages appeared. Funny thing I remember from working on VAX type of computers is a "runtime". Nice thing was that - every compiled basic, fortran or c relayed on runtime. It was a middle solution.
Java jumped on that approach - "semi"-compiled with a virtual machine. Nice approach, but Java never actually clicked with me. Maybe I was just not in setting for it.
But PERL did. I have spent a lot of time on PERL - quick and flexible - ideal to write all sorts of system and web quickies and even serious solutions that work day in day out. Specially fun was discovering its OO extension.
Then I stepped on python - what a relief from C syntax bounds... nice refreshment. And finally someone had a decency to admit that everyone did not follow OO as it shall be followed and created Ruby. Hat down. Elegance and consistence of Ruby astonishes me.
Now I have a particular need and particular view and these two things do not click together always. I can use what is given to me to use. I would like maybe to use ruby on rails but it is not too common among hosting providers. My need is of web automation.
On the other hands I can get a balloon and see things as they are in more conceptual view. And thus I come to a conclusion:
Programming languages bind you in particular view of the language itself. This binding force is weak as languages are extensive but it is present and if you wish to jump out of them for any kind of reason you need to switch to another language just to be bound by other rule sets. Using programming languages can be limiting factor. Fortunately, we do not live by them.
In this sense I appreciate C++ as top of the kind. Not many languages allow you to rewrite the language itself if you have a need for it.
I appreciate Ruby for being honest OO.
I appreciate objective C about being weirdest compilation of non-related languages of Small Talk and low level C.
I appreciate Java for following a runtime approach of VAX. Not that I need it, but I understand proliferation on all sort of devices.
But for the time being i will be doing PHP... :) Out of availability not out of goodness. And to be honest PHP is far far from NOT being GOOD. On the contrary, I like it because it does not get in the way of what I want to achieve.
I cannot but forget my path wandering around programming languages. Which brings question on how to educate programmers.... Education? Huh. This is completely different subject. I must say that it is completely wrong to start teaching programming from Java or Visual Basic. If I am a professor of programming I'd start from mathematical logic then go with the concepts of programming being structural, modular and object oriented. Programming is wide subject.