   Languages
  Only three posts and now a post about languages?  Don't get annoyed yet, I've been looking around for some opinions on this and most were contradictory.  I'm not asking what language one should learn for programming, I'm asking what languages one should learn.In the latest book I finished I noticed a few differences between C++ and Java that really stood out and would probably change what programming really is to a newbie depending on which language they learned first.  I've also read a lot about this one language per year business and it seems like a good idea.  So my question is:In your opinion(s), what languages or types of languages would somebody most benefit from learning?For instance I learned C++ first (am learning really but, it's irrelevant) and, from what I've read, I should try something like Haskell or Scheme to get a good grasp on functional programming.  What do you think?  What types of languages should each person strive to learn?   
  It is not so much about what language, it is more about what type of language.In my opinion, people should learn as minimum, one functional language, one object oriented language and one state language.  This gives you the major paradigms for what you might have to do.  There are others but after you learn those three you should be okay.theTroll   ;  As said by a previous poster, it's the "type" of language that matters. E.g. if you learn C++, Java, C# and Eiffel, you'll remain confined in the box of statically typed OO-languages.If you're interested in learning languages which really are different, I'd suggestHaskell: functional programming, and it'll force it upon you (which is a good thing for someone interested in learning the paradigm)Prolog: logic programming, which is great funCommon Lisp: meta-programmingOz/Erlang: beautiful concurrencyCoq: if you think static type systems should be more expressive;Quote:If you're interested in learning languages which really are different, I'd suggest    * Haskell: functional programming, and it'll force it upon you (which is a good thing for someone interested in learning the paradigm)    * Prolog: logic programming, which is great fun    * Common Lisp: meta-programming    * Oz/Erlang: beautiful concurrency    * Coq: if you think static type systems should be more expressiveHey, you forgot Smalltalk [grin]I learned Java in first year uni then did a course in 2nd year which introduced a number of different languages like C/C++, Scheme(Lisp variant) and Prolog. I found that the more languages you learn, the easier it is to learn a new one (with the exception of Prolog, i just could not get my head around it).   ;Quote:Original post by KhadoI noticed a few differences between C++ and Java that really stood outJust a few? Once you get over the syntactic similarities, C++ and Java really are two completely different languages.Quote:Original post by KhadoI should try something like HaskellExcellent choice.   ;  At this point any difference have to be somewhat shoved into my face for me to notice, I suppose :PThank you all very much for the opinions, I think I'll stick with Haskell next as it seems to be a good choice and then move on to Prolog.Smalltalk is an OO language, right?  I want to say it's the first but, I really can't even pretend to have that kind of knowledge.   ;Quote:Original post by KhadoSmalltalk is an OO language, right?  I want to say it's the first but, I really can't even pretend to have that kind of knowledge.Yes, it was one of the first, if not the first, OO language. It was designed by Alan Kay, one of the fathers of object-oriented programming.   ;Quote:Original post by Khado What do you think?  I think that you should learn programming first. That means pick one syntax that isn't C++ (seriously, anything else is substantially better) and learn to program. Then worry about diversification.Quote:What types of languages should each person strive to learn?Depends on the person and their situation. In general, you'll need to know one mainstream language (Java, C#; possibly C++, C, Python; maybe perl, php) exceptionally well, be able to write code in most of them, and be able to read code in all of them. You'll almost certainly need to know some SQL variant. You'll almost certainly need to know Regular Expressions. You'll probably need to know html, xml, css, and &#106avascript. You should eventually learn the quirks of Lisp-like syntax, and ML-like syntax. You should eventually learn to program in a functional style (which for most people means writing code in a Lisp derivative or ML derivative, but needn't necessarily).That is what a standard, employable programmer should know. From what I've seen, it's far beyond what even senior programmers know...  but that's perhaps a failing of management/HR.;  Yes, i agree with Telastyn. I got a job programming in Smalltalk (hence why i mentioned it earlier) even though i had never even used Smalltalk before. But because i knew a few different languages and the general concept of OO programming i got the job and was able to pick up Smalltalk in just a few weeks.   ;Quote:Original post by TelastynI think that you should learn programming first. That means pick one syntax that isn't C++ (seriously, anything else is substantially better) and learn to program. Then worry about diversification.Python, perhaps?  Or would Haskell fit the bill as well.  I tried picking up Python a while ago and kind of got derailed, should I pick that back up before looking into Haskell (and continuing C++) or could I just go to haskell?   