Functional and declarative languages do pose a learning curve for the experienced programmer...and somewhat less so for the novice, who has fewer "procedural assumptions" to unlearn before understanding the paradigms expressed by these languages. Prolog sticks in my mind in this connection: early in my developer education, I had encountered Prolog and had experimented with a Prolog interpreter; when I used Prolog later in graduate schoool, after a few years of intense C coding, I found it more difficult to reacquire Prolog than I did learning it the first time, due to the mindset for expressing algorithms procedurally that I'd acquired in the meantime. You have to accept these languages on their own terms, and experiment, experiment, experiment until the light goes on and you "get" how it works.
I learn a language by writing a compiler in it - I have a language called Tyke which I first wrote the compiler and runtime for in SPL (a dialect of PL/1 on Prime computers) then wrote it in C, then C++ and now C#
At the time I was very comfortable with C, C++, Assembler, Basic, Pascal, HTML and several database support languages then they wanted me to write in Perl. It is just another language, I thought, all you need is the syntax; what I did not know at the time is that Perl is all syntax. Now that was a learning curve but huge fun. Perl of course is a write only language and now ten years later, surprise surpise, I have forgotten it all but I treasure the memory and it was an interesting project.
I'm a programming dinosaur. I learned Turbo Pascal. But since then, it's all been mostly in the C/C++/C#/Java/Obj-C/Actionscript family. I can pickup PHP or Actionscript in a weekend, and have, so no big deal. Just dive in and do a web search. On the weekend do a little reading and you are ready to roll.
I suppose there are so really obnoxious languages but even then you can prototype in your language of choice and port the code.
Agree. Sure, there are some languages with different concepts - functional programming, OO etc - that may throw you a bit if you're not used to them, but my experience is that once you learn a second language it gets very easy to learn the next ones. Programming is programming, and languages is just about syntax for the most part. It took me only a day or two to pick up the essentials and be reasonably productive in both C# and Java, and so far I've had the same with just about any other language I've tried.
That was the phrase I was trying to remember! The old language classifications of imperative vs. declarative and structured vs. unstructured. Now there's also procedural, functional, OO, etc., etc., etc.!
One of the first bits of professional programming I had done was RPG, which was very different from the Fortran and Pascal I learned in school. The job I now have started 16 years ago maintaining COBOL applets for an Informax database, and that was REALLY different. You cannot just start coding with RPG and COBOL: both of these languages have different syntatic sections for app setup and data layout, so you have to organize on a much more fundamental level, and writing something from scratch requires that you start with the entire application in mind before you begin.