Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

One mandatory course I took in uni was about functional and logical programming languages (Haskell and Prolog). It was mildly interesting, and most I talked to showed even less interest to the course (or even to learning any very-high-level languages, for that matter). The general consensus was that it is enough to know the common languages such as C, C++, Java, Python, etc.

But are these kinds of languages underestimated? Should all programmers learn at least one very-high-level language, even though he or she may never have any practical use of it?

share|improve this question
1  
Is it even possible to be a programmer without learning bash or cmd? Those are pretty high-level. –  Mechanical snail Oct 11 '11 at 3:55
add comment

closed as primarily opinion-based by gnat, MichaelT, GlenH7, thorsten müller, Robert Harvey Jan 14 at 19:28

Many good questions generate some degree of opinion based on expert experience, but answers to this question will tend to be almost entirely based on opinions, rather than facts, references, or specific expertise.If this question can be reworded to fit the rules in the help center, please edit the question.

6 Answers

up vote 12 down vote accepted

Yes, every programmer should learn new languages, and particularly languages that uses a different programming paradigm e.g. functional programming or concurrency oriented programming.

Even if you will not use the language, you will be a better programmer in the language you use by learning different concepts and see alternative solutions.

There is an upcoming book that can be interesting: Seven Languages in Seven Weeks

share|improve this answer
    
That book is already on my to-read list. ^^ –  gablin Oct 1 '10 at 15:27
    
I'm currently working through a beta copy of the book, it's pretty good. It only skims each language, but unlike most introductory books it doesn't spend ages explaining "Hello world" but instead gives you a sample of each language's "trademark" features. –  FinnNk Oct 5 '10 at 18:41
    
@FinnNk: That sounds great! –  Jonas Oct 5 '10 at 20:06
add comment

All programmers should learn about each paradigms/concepts possible in programming. So Each language that is dynamic, high level, static, low level, templatized, or not, with or without abstraction of whatever feature you computer provide, will allow you to learn something by practice.

Personally I like to learn about high level, dynamic languages when I'm working with static language like C or C++ at work. And the other way around. I also like to take a look to other programming languages showing other ways of thinking about the same things.

I use C++, Python, Java, Javascript, C, and I'm learning a bit of Ruby, D, Haskell...

share|improve this answer
add comment

I think all programmers should, at the very least, understand the concept of "language levels." If the easiest way to do this is to learn a very-high-level language in addition to the standard languages, then I'm all for that. Programmers should at least be aware of what is out there, in case they ever come across a problem that is much easier to solve with a higher level language (or, on the other hand, much more efficiently solved with a lower level language).

share|improve this answer
add comment

you should. because learning a functional language is quite huge difference from object-oriented language. this forces you to go to the underlying concepts of the new language, just be able to begin to understand it. you will learn about first-class function, immutable data, state, and many other things.

after that you'll just get curious about what is it that makes your common languages tick. and you'll just get better in programming those once you know about them.

plus, knowledge of one type of language is not exclusive. you can use that knowledge into other types of languages. more power to you

share|improve this answer
add comment

My philosophy on languages is not so much "should" you learn a new language or a certain type of language, but "can" you and "will" you learn a new language if it becomes necessary.

In my time in this profession I've met basically two kinds of programmers: the first kind find a language that they love and stick with it, shooting holes in the flaws of other languages as a way to justify their position and stick with the language they love. The other kind of programmer says, "I just want to use the best tool for the job, and if that's a language I don't know, I'll learn it."

The programmers in the second group seem to me to be much more open, inquisitive and aggressive about furthering their own education.

share|improve this answer
add comment

Fine... I'll be the contrarian...

No, why waste time teaching yourself something you'll never use?

Life is too short to spend time and energy on something you're not going to use. There are so many things in this world that need help, if you're going to waste your time on something you're not going to use, why not "waste" it on something that will make a difference??

Let the flamming begin!! :-)

share|improve this answer
    
+1 for being the contrarian and initiating "dicussion". ^^ –  gablin Oct 1 '10 at 15:27
    
+1 - Especially if your definition of learning a language goes beyond general principals and gets bogged down with syntax. –  JeffO Oct 1 '10 at 16:36
8  
But the point is - you WILL use it. I've never written a line of SmallTalk code ever; that said, learning about the way that SmallTalk works has positively influenced my code. And that's the point. –  Bevan Oct 2 '10 at 9:06
    
@Bevan - But was learning SmallTalk the only way you could have learned what you learned? Couldn't you have learned X without learning a language? –  Walter Oct 2 '10 at 11:46
1  
@Walter - in any language there is a "normal" approach, a "conventional" way to do things. Once you're working in that style, you're very unlikely to encounter other approaches unless you deliberately step outside of the echo-chamber of people working the way you do. It's not that you can't learn new approaches without learning new languages; of course you can. It's that you're more likely to have your mind stretched in new ways by doing so. Here's a way to think about it: There's a big difference in the things you'll learn between reading about life in Japan and living there for a year. –  Bevan Oct 3 '10 at 2:04
show 2 more comments

Not the answer you're looking for? Browse other questions tagged or ask your own question.