10 Programming Languages You Should Learn

  • (5 Pages)
  • +
  • 1
  • 2
  • 3
  • 4
  • Last »

66 Replies - 8363 Views - Last Post: 26 March 2014 - 02:25 AM

#16 jon.kiparsky  Icon User is offline

  • Pancakes!
  • member icon


Reputation: 7578
  • View blog
  • Posts: 12,746
  • Joined: 19-March 11

Re: 10 Programming Languages You Should Learn

Posted 16 March 2014 - 06:38 PM

The idea that you'd decide what languages to learn based on the number of postings for those languages seems to me completely weird. It doesn't matter how many jobs there are in language L - you only need one of them at a time.

The idea of dismissing someone's opinions on computing because they're in academia seems even weirder. Particularly when they're right.
Was This Post Helpful? 0
  • +
  • -

#17 xclite  Icon User is offline

  • LIKE A BOSS
  • member icon


Reputation: 894
  • View blog
  • Posts: 3,153
  • Joined: 12-May 09

Re: 10 Programming Languages You Should Learn

Posted 16 March 2014 - 06:39 PM

That's what I was trying to poke at(though perhaps obtusely) when I said it was unfair - I found that particularly condescending, to be honest. There's a lot of value in keeping current and people don't have to throw their lives away and abandon families to pick up a new useful language.
Was This Post Helpful? 2
  • +
  • -

#18 ishkabible  Icon User is offline

  • spelling expret
  • member icon




Reputation: 1622
  • View blog
  • Posts: 5,709
  • Joined: 03-August 09

Re: 10 Programming Languages You Should Learn

Posted 17 March 2014 - 12:02 AM

I'm a big believer in learning the language that will teach you the most and make you think most differently. I feel I can pick up any language I need to for work. The time that is required to learn the idioms of a language, framework, or library is the only thing that take any time for me anymore (and this can admittedly take many years to master). I can quickly pick up a language almost anywhere on the procedural or functional spectrum thanks to lots experimentation and practice with all corners of the world of languages. I view this as a far more helpful skill than knowing any one language.

Quote

Amazon takes a "best tool for the problem"

This; this has become my best friend. I use quite a few languages anymore. I use the language that has the tools to accomplish the job I want done. I'm a research assistant for a machine learning group; I've used C#, Java, Haskell, Python, Bash (although for gluing things together not actual problem solving), and a number of other languages at my job. When we wanted to use named entity recognition and temporal canonicalization we used Java because there are a LOT of natural language processing libraries for Java. We used Stanford NLP for that project. For some research I'm doing in program search I'm using Haskell because it gives me a very nice way of using trees, making my code parallel, and has a nice synergy with my specific improvement. We even considered using Prolog, and CLIPS at different points. My uncle is a financial fiduciary but one thing he as always told me is "right tool for the right job" meaning use the "best tool for the problem". For any practical reason this is the only rule to go by for me. I think the saddest thing is that I spent so much time in C++ in my more actice days here at DIC and haven't used it hardly at all at work. I've primarily used it in outdated programming competitions.
Was This Post Helpful? 0
  • +
  • -

#19 mostyfriedman  Icon User is offline

  • The Algorithmi
  • member icon

Reputation: 727
  • View blog
  • Posts: 4,473
  • Joined: 24-October 08

Re: 10 Programming Languages You Should Learn

Posted 17 March 2014 - 04:43 AM

View Postxclite, on 17 March 2014 - 04:39 AM, said:

That's what I was trying to poke at(though perhaps obtusely) when I said it was unfair - I found that particularly condescending, to be honest. There's a lot of value in keeping current and people don't have to throw their lives away and abandon families to pick up a new useful language.


I agree, especially since people in academia are most probably much smarter than you and they know what they're doing.

PS: by you, I don't actually mean you, xclite
Was This Post Helpful? 0
  • +
  • -

#20 mostyfriedman  Icon User is offline

  • The Algorithmi
  • member icon

Reputation: 727
  • View blog
  • Posts: 4,473
  • Joined: 24-October 08

Re: 10 Programming Languages You Should Learn

Posted 17 March 2014 - 04:48 AM

View Postmacosxnerd101, on 17 March 2014 - 04:16 AM, said:

View PosttlhIn`toq, on 16 March 2014 - 10:46 AM, said:

Ahh... That explains a lot. So what you're saying is that like many that still haven't left school, there is a disconnect happening here due to a lack of real world living experience. Got it.

Actually, Bioinformatics and computational biology people work a lot with medical research and the pharmaceuticals industry. There are a lot of neat problems, many of which are NP-Complete or NP-Hard. I don't know that I'd be so quick to dismiss cfoley's insights based on him being an academic (and cfoley- please correct me if I'm saying something wrong!).


A friend of mine did his Bachelor's thesis in bioinformatics. There's a lot of optimization, dynamic programming, and advanced string algorithms AFAIK.
Was This Post Helpful? 0
  • +
  • -

#21 tlhIn`toq  Icon User is offline

  • Please show what you have already tried when asking a question.
  • member icon

Reputation: 5441
  • View blog
  • Posts: 11,674
  • Joined: 02-June 10

Re: 10 Programming Languages You Should Learn

Posted 17 March 2014 - 05:18 AM

View Postxclite, on 16 March 2014 - 04:59 PM, said:

Amazon takes a "best tool for the problem" approach. I wish my teammates had a little more exposure to !Java.


On the flip side, our company just made a large effort to remove any java code from all of our products. "Java free software" is a big push being made at the next trade show.

Honestly I don't know all the details, but apparantly it has something to do with the latest big security issue that was discovered. I know in my last job Java was a primary language for one of the offices/teams and that product was hard to ever keep running. For something that is supposed to be so easily cross platform it had trouble surviving the update from Java 6 to java 7 even on the same OS.

Like I said - Not my area - So this may just be people not really 'in the know' about how these things should have been handled. But it sure wasn't good press for the language.
Was This Post Helpful? 0
  • +
  • -

#22 jon.kiparsky  Icon User is offline

  • Pancakes!
  • member icon


Reputation: 7578
  • View blog
  • Posts: 12,746
  • Joined: 19-March 11

Re: 10 Programming Languages You Should Learn

Posted 17 March 2014 - 05:57 AM

Java isn't a language I would really go to for deployment software if I were making a new system today. However, that really doesn't have much impact on whether it's a good language to have on your "to-learn" list, or even whether it should be your first language. Some things to consider:

1. There are many companies running Java today, and this will be true for the lifetime of anyone reading this. So if you're just thinking in terms of your career, you will always be able to work in Java, regardless of what the current trends are. This is not just rinkydink outfits and stodgy financials - a friend of mine was recently trying to get me to come work for her a Akamai, and Java was the main thing she was interested in for that position.

2. Java is an excellent language of instruction: if you have good professors who want to teach fundamentals of computing, Java has a lot of advantages over any contender for the "first language" spot. It offers a good place to do procedural imperative coding, which most beginners find the most natural. It moves you immediately from there to imperative OO programming, which is a good basis for larger-scale modeling of problems (one of several, true, but a good one). It has good scope, so students can exercise in many problem domains. It's an open language, with a free and well-written specification and the source code for the reference implementation is freely available, so students can learn from the language. Basically, I don't know of a better choice for an undergrad program to use to teach computing.

3. Java runs on the jvm, and there are a lot of things to like about the jvm, even if you write your class files in some language that isn't java. (scala, clojure, jruby, jython). Learning Java, if done right, can be a good introducion to the jvm.


So if you're naive enough to be reading "top ten" lists and wondering what languages you should learn next, you're probably a total newb, and in that case Java is probably a good choice. So in that sense, the list gets it right by putting Java at the top. And hopefully by the time the newb gets on to their second language they'll have enough of a clue that they'll ditch the laundry list and learn something useful like python or a lisp - and with any luck at all they'll have figured out that it doesn't matter what languages you know, there are always jobs in those languages, and employer you want to work for is interested in what you can do with those languages.
Was This Post Helpful? 0
  • +
  • -

#23 xclite  Icon User is offline

  • LIKE A BOSS
  • member icon


Reputation: 894
  • View blog
  • Posts: 3,153
  • Joined: 12-May 09

Re: 10 Programming Languages You Should Learn

Posted 17 March 2014 - 08:16 AM

Honestly, if I were to put a list out for the kinds of people that want language guidance, I'd do something like:

"Employability":
Java || C#

"Utility/glue/prototype":
Python || Ruby

"Advanced topics":
Scala || F#

"Must-have":
SQL
Javascript (depending on domain, feels foolish to ignore)

And hopefully by then they can figure out what they want from there, digging into things that are considered more "academic" or specialized like:
Haskell || ML
Prolog
Erlang
Smalltalk
Julia
Was This Post Helpful? 0
  • +
  • -

#24 xclite  Icon User is offline

  • LIKE A BOSS
  • member icon


Reputation: 894
  • View blog
  • Posts: 3,153
  • Joined: 12-May 09

Re: 10 Programming Languages You Should Learn

Posted 17 March 2014 - 08:26 AM

View PosttlhIn`toq, on 17 March 2014 - 08:18 AM, said:

On the flip side, our company just made a large effort to remove any java code from all of our products. "Java free software" is a big push being made at the next trade show.

I figure most of the interpreted languages have security issues to some degree (see Ruby On Rails fiascos). I actually worry more about the future of Java under Oracle, especially since a lot of my chosen languages are JVM-based. I suspect things will survive just fine if Oracle does something crazy, but I do think about avoiding Java and the JVM from time to time. Could just be paranoia.
Was This Post Helpful? 0
  • +
  • -

#25 mostyfriedman  Icon User is offline

  • The Algorithmi
  • member icon

Reputation: 727
  • View blog
  • Posts: 4,473
  • Joined: 24-October 08

Re: 10 Programming Languages You Should Learn

Posted 17 March 2014 - 09:02 AM

View Postjon.kiparsky, on 17 March 2014 - 03:57 PM, said:

2. Java is an excellent language of instruction: if you have good professors who want to teach fundamentals of computing, Java has a lot of advantages over any contender for the "first language" spot. It offers a good place to do procedural imperative coding, which most beginners find the most natural. It moves you immediately from there to imperative OO programming, which is a good basis for larger-scale modeling of problems (one of several, true, but a good one). It has good scope, so students can exercise in many problem domains. It's an open language, with a free and well-written specification and the source code for the reference implementation is freely available, so students can learn from the language. Basically, I don't know of a better choice for an undergrad program to use to teach computing.


Oh hell no, sister. Sure, java is a good language for instruction (compared to the other mainstream languages), but if I were an instructor I would strongly advise against it and against any imperative language. That is not the natural way of thinking. I find functional languages to be much more natural. Students would already be familiar with some mathematics and they can view functional programs as mathematical objects much easier than imperative programs. Also, functional programs are much easier to write and reason about. For example if I were to write a quicksort in say Haskell, I would write it as follows:

qsort [] = []
qsort (x:xs) = (qsort less) ++ [x] ++ (qsort greater)
    where
        less = filter (< x) xs
        greater = filter (>= x) xs



It's much easier to read and understand. It simply reads: "If the list is empty, then the list is already sorted, otherwise the sorted list would be obtained by sorting the elements less than the first element, followed by the first element, followed by sorting the elements greater than or equal to the first element". It's as simple as that. In imperative programming, you normally have a bunch of variables and you perform computation by manipulating the state of the program so that when the program terminates, it ends up in the correct state. No one actually thinks like that. People think in terms of natural language, and I find the declarative programming style to be ideal for that. That being said, I think Scheme is a great first language. It is elegant, it's extremely simple and small, it has VERY little syntax, and it is functional (not purely functional though).

This post has been edited by mostyfriedman: 17 March 2014 - 09:04 AM

Was This Post Helpful? 0
  • +
  • -

#26 jon.kiparsky  Icon User is offline

  • Pancakes!
  • member icon


Reputation: 7578
  • View blog
  • Posts: 12,746
  • Joined: 19-March 11

Re: 10 Programming Languages You Should Learn

Posted 17 March 2014 - 09:17 AM

Obviously, I disagree but whatever - when you're king, you can set the rules. And when I'm king, I'll set them my way. Until then, people will teach any old way they like and probably it'll all work out in the end. I don't think this thread should really devolve into a language war.
Was This Post Helpful? 1
  • +
  • -

#27 modi123_1  Icon User is offline

  • Suitor #2
  • member icon



Reputation: 8962
  • View blog
  • Posts: 33,586
  • Joined: 12-June 08

Re: 10 Programming Languages You Should Learn

Posted 17 March 2014 - 09:25 AM

View Postmostyfriedman, on 17 March 2014 - 11:02 AM, said:

Sure, java is a good language for instruction (compared to the other mainstream languages), but if I were an instructor I would strongly advise against it and against any imperative language. That is not the natural way of thinking.


Really? Humans seem to operate on a list/task based system pretty well. Legos, flight manuels, baking instructions, etc. Operations exist, and typically having a clear order for them allows repeatability and easy validation if anything were to go awry.

View Postmostyfriedman, on 17 March 2014 - 11:02 AM, said:

...
For example if I were to write a quicksort in say Haskell, I would write it as follows:

1	qsort [] = []
2	qsort (x:xs) = (qsort less) ++ [x] ++ (qsort greater)
3	    where
4	        less = filter (< x) xs
5	        greater = filter (>= x) xs



It's much easier to read and understand.
...

As a person who hasn't seen a lick of Haskell - and you showed that to me - I would have no idea that had anything to deal with sorting. Nothing in that mess of symbols or structure (well outside of the name 'qsort') lead to an immediate - "Hello quick sort, my old friend!".


Additional:
I agree with a .NET language.. VB.NET or C#. SQL of some sort is high on the list. Basics of HTML/Javascript/CSS... a bit of PHP to grease the wheels of database interactions.. I am a little sad COBOL didn't make that list... passing knowledge wouldn't be bad to have as some of the most-bearded-of-necks are looking at heading to pasture.

This post has been edited by modi123_1: 17 March 2014 - 09:32 AM

Was This Post Helpful? 2
  • +
  • -

#28 mostyfriedman  Icon User is offline

  • The Algorithmi
  • member icon

Reputation: 727
  • View blog
  • Posts: 4,473
  • Joined: 24-October 08

Re: 10 Programming Languages You Should Learn

Posted 17 March 2014 - 11:11 AM

If you showed someone a sorting routine in a language that is too different from what they're used to, they wouldn't know what they're reading, that's natural. But I believe that declarative programs are much easier to understand, reason about, and prove correct. It's easier to state what something does in a few short declarative sentences.

Quote

Really? Humans seem to operate on a list/task based system pretty well. Legos, flight manuels, baking instructions, etc. Operations exist, and typically having a clear order for them allows repeatability and easy validation if anything were to go awry.


That may be true, but computer programs are mathematical objects, and it's much more cleaner to describe them in a declarative way.

This post has been edited by mostyfriedman: 17 March 2014 - 11:25 AM

Was This Post Helpful? 0
  • +
  • -

#29 modi123_1  Icon User is offline

  • Suitor #2
  • member icon



Reputation: 8962
  • View blog
  • Posts: 33,586
  • Joined: 12-June 08

Re: 10 Programming Languages You Should Learn

Posted 17 March 2014 - 11:15 AM

I think if you approached someone and just told them about quicksort they wouldn't know what they were hearing either. I am pretty sure if you are doing a quicksort in any language the natural language rendition of what you are doing would be about the same.
Was This Post Helpful? 0
  • +
  • -

#30 jon.kiparsky  Icon User is offline

  • Pancakes!
  • member icon


Reputation: 7578
  • View blog
  • Posts: 12,746
  • Joined: 19-March 11

Re: 10 Programming Languages You Should Learn

Posted 17 March 2014 - 11:16 AM

Well, I think we've covered this topic pretty well, so I'm just going to step out of the way of the pointless bickering about functional versus procedural... enjoy!
Was This Post Helpful? 0
  • +
  • -

  • (5 Pages)
  • +
  • 1
  • 2
  • 3
  • 4
  • Last »