|
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.
|
|
|
|
|
Paul Darlington wrote: Perl of course is a write only language
FTFY
|
|
|
|
|
Thanks Derek, you are quite correct, fingers working faster than brain this morning I have edited it accordingly.
|
|
|
|
|
Same here - and I had to maintain it.
Paul Darlington wrote: 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.
When I found a bug or needed to add a feature I could quickly conceptually work out what I needed to do. Then it would be a struggle of several hours figuring out the right syntax!
Paul Darlington wrote: Now that was a learning curve but huge fun
I didn't find it fun at all. I would always leave home at the end of the day in a foul mood.
It's the worst language I've ever used.
Kevin
|
|
|
|
|
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.
|
|
|
|
|
I think you'll have more trouble with functional languages
|
|
|
|
|
The big jump is to object oriented stuff when you started with C or Fortran... It's doable but you wouldn't pick it up on your own.
Anyway, if you do a course you get a week's jolly and a little diploma you can hang on your CV.
------------------<;,><-------------------
|
|
|
|
|
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.
|
|
|
|
|
I'd be very impressed if you picked up Haskell in a couple of days.
Picking up a language that has the same basic programming idiom is trivial: C, Java, C# especially so as the syntax is so similar.
Smalltalk, SELF may be more problematic: there's more to them - to write well requires a shift to real object-oriented programming.
Going to a functional language requires an entire shift in thinking. Haskell, as a pure functional language, particularly so. I'm still struggling with it.
|
|
|
|
|
True, I expect it would take more than a couple of days to learn Haskell
As I understand it functional programming is a completely different concept. Would be interesting to try one day...
|
|
|
|
|
rudolfsson wrote: As I understand it functional programming is a completely different concept.
Functional is to OO what OO was to structural. Many of us find it alien right now but perhaps in a few years we won't.
Kevin
|
|
|
|
|
Picking 5 languages at random...
Fortran IV
Prolog
C#
Perl
XAML
Yeah, all just the same with syntax changes.
Of course, as the number of languages you know increases, it does become easier to pick up new ones, but you then have to be careful not to get caught by the differences.
|
|
|
|
|
Hey, I know COBOL, I should be able to switch to anything right?
I think previous experience with any imperative language is a major handicap to learning Prolog, so that's a good one to counter the OP's point.
'As programmers go, I'm fairly social. Which still means I'm a borderline sociopath by normal standards.' Jeff Atwood
|
|
|
|
|
Julien Villers wrote: imperative language
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.!
Fortran IV | - | imperative unstructured | Prolog | - | declarative unstructured | C# | - | imperative procedural? structured OO | Perl | - | imperative? (un?)structured OO? | XAML | - | declarative? structured? |
"Besides, the determined Real Programmer can write FORTRAN programs in any language." [^]
|
|
|
|
|
Different language genres, e.g., functional, declarative, imperative, procedural and O-O, require different ways of thinking. I've seen people struggle with XSLT (I was once one of them) trying to use imperative (like C# or Java) techniques when XSLT is declarative--and its associated XPath language is functional. Sure, changing among C#, Java and JavaScript is relatively easy, but other languages are different by more than just syntax and library API.
|
|
|
|
|
Nope, consider two 'the same by definition' languages like C# and VB.NET : wonderful, brilliant, innovative the former and ugly, convoluted, dumb the latter.
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler.
-- Alfonso the Wise, 13th Century King of Castile.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong.
-- Iain Clarke
[My articles]
|
|
|
|
|
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.
With some languages, mere syntax is not enough.
|
|
|
|
|
The languages you stated are similar but there are other languages: F#, Prolog, ErLang, Scala which are remarkably different.
|
|
|
|
|
Aren't those just academic languages or do people actually do paying work with them?
|
|
|
|
|
ErLang is widely used in Telecommunication industry. Recently, Facebook used ErLang for its chat feature.
Twitter uses Scala.
Prolog is mainly academic.
F# use have started at a few places.
They are not widely used, but they are being used.
|
|
|
|
|
Rama Krishna Vavilala wrote: Twitter uses Scala
As does LinkedIn, EDF and The Guardian (UK newspaper).
Rama Krishna Vavilala wrote: F# use have started at a few places.
Financial sector is interested. Credit Suisse definitely use it, it as Don Syme posted a job ad from them about a year ago.
Kevin
|
|
|
|
|
I think language is secondary skill but anyway it should be at high level. If product designed bad no language can improve it.
|
|
|
|
|
I only learned enough to finish what I had to do.
When I got out of the fetal position I took a shower and cleaned myself real good.
A girl phoned me and said, 'Come on over. There's nobody home.' I went over. Nobody was home! Rodney Dangerfield
|
|
|
|