Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

I wouldn't say that programmers are too lazy to learn new languages. It's just difficult to keep so much in your head and to reliably use all the different languages without having to recall the particularities of that language, its build and run time oddities, IDE, etc. My advice is to pick a few languages and learn them well. It's a waste of your brain-power to only know 10% of ten different programming languages and to have to learn how the other nine do that (whatever that may be). You're far better off knowing 60% of three languages. That's my experience anyway.

Edit: The three I suggest are:

1. C or C++

2. Java or C#

3. Python or Ruby

4. (optional) Linux Bash scripting or Windows PowerShell



Your list is very short and consists of languages that are quite similar to each other. I recommend learning ten or so programming languages from several different paradigms. It will take about a decade but it will be worth it.

You should include one flavor of Lisp, a statically typed functional programming language (like Haskell or ML) and another declarative programming language (like Prolog).

Of course, by being proficient in any of the languages you mentioned will probably guarantee you a safe job, but having broader horizons in programming and computer science will make your programming career more diverse and interesting.


"We play both kinds of music in here, Country and Western!"


I fully agree. It takes a long time to get familiar enough with a language that you can really use it very well. It takes practical experience building real products to get enough of a feel of what the strengths and weaknesses really are. This precludes learning a very large amount of languages, even for someone who's a full-time programmer with some liberty to goof off.

Even if you know several of those languages, if you've coded in one for a while, the odds are good you won't remember the syntax intricacies, the gotchas, etc when moving to the next one, not to mention what the name and argument order of every function in the standard library is.

Blaming programmers for being too lazy to learn new languages is silly. We use languages to solve problems. Working in an unfamiliar language makes the problem harder to solve, not easier. Unless the new language is a much better fit to the problem at hand. That's why its handy to know a few with widely different characteristics.

If there's a language that can hit many positive characteristics at once, it's more useful to know well than one that doesn't. That isn't laziness. That's called being smart.


I would add a functional language to this list. Even if you're not going to use it for real world programming it's likely that it will change the way you code. This is something that is often said and I think you need to experience it for yourself to understand what it means. For example learning a bit of Erlang and Scheme has changed the way I program in Python.


Obligatory PG essay on "If [Functional Programming] makes you a better programmer, [why wouldn't you use it all the time?]" for massive upvotes. (Please don't upvote this comment.)

http://paulgraham.com/avg.html


I hate functional programming languages but love functional programming. I think the way Python does it is really good, combining the power with readability, whereas the functional languages I've seen are completely unreadable (operators named caadr and car?). So I totally agree with you. Spend a few weeks diving into functional languages, then run away as fast as you can IMO.


Python has functional features, but if you perceive it as being better than functional languages for functional programming, then I'm going to assert that you need to do some more serious functional programming. I say this as both a Python person and a functional programmer: Python can do functional programming, but it discourages it heavily, which is why whipping up e.g. parser combinators or monads is definitely possible but usually has some odd mismatch and either requires Python hackery or results in verbose and tedious code.

The comment about car and cdr suggests that your functional experience is a Lisp dialect; might I suggest Haskell or ML? Haskell ranges from beautifully readable to inscrutable, depending on who wrote the code—definition of arbitrary operators is beautiful, if used sparingly, and terrifying, if used heavily—while the MLs are much more consistent, but don't push you into the functional zone nearly as much and consequently are more immediately useful but less mind-expanding.


So you bring up some good points, I admit I am a little saddened to see my comment downvoted though and hope to clear a few things up. First the point I was making was about my experience, I understand I do not have deep functional programming experience. I don't perceive Python as being better than functional languages for functional programming, but rather I see it as offering the good functional qualities I personally have seen while still being good at other paradigms, I imagine if you desire pure functional programming it probably does not stack up to pure functional languages.

My experience is an AI class in Lisp and TA-ing a class that taught students Scheme and a lot of Python experience, so you are right, perhaps I should check out Haskell or ML for better readability. Although I think Python discourages functional programming itself, from what I've seen it heavily encourages functional features, between lambda functions, functions as first class objects, and list comprehension which offers mapping, filtering, and reducing. I know there are other functional features that I haven't been exposed to, but as far as the techniques taught at a college level class, I feel Python incorporates functional features beautifully, and I now find myself using functions as objects, lambdas, mapping, filtering, and reducing nearly every day I program. I know the "pure-ness" of functional languages isn't there as Python encourages side effects, but as far as giving average programmers functional power while maintaining readability, I like Python's adaptation of functional techniques.


Mine are: 1. Python - mixed with C extensions used in a functional way 2. Java - when I need better compile time tools and analysis such as static typing 3. AutoIt - Windows scripting

I have also dabbled in C++, C#, Ruby, and Perl, you need to experiment occasionally


Why did this get downvoted? I am truly saddened to see on a forum such as this a simple comment about personal language choices being downvoted.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: