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

I can speak only for Haskell-land, but I honestly see no truth in any of the author's negative arguments towards the functional programming community.

I have been doing most of my programming in Haskell for 3 years now, having worked in Ruby and Python before that. I can tell you that the Haskell community is among the most cordial, helpful and communicative I have ever seen in any field. In fact, many members of the community will cry foul if anyone dons on a "smug" attitude at any point; I've seen countless comments on reddit get buried for this alone.

If you want proof, just ask a question on StackOverflow[1], join #haskell on freenode or check out the reddit[2] page.

[1]: http://stackoverflow.com/questions/tagged/haskell

[2]: http://www.reddit.com/r/haskell/



I find that many functional programmers, including Haskell programmers, seem convinced that I will completely abandon C++ if only I spent the time to understand Haskell.

After spending quite a bit of time learning Haskell, seeing a number of advantages and disadvantages, and being unconvinced and staying with C++, the assumption is I didn't "do enough".

Of course, I also know a number of lovely functional programmers as well!


> I find that many functional programmers, including Haskell programmers, seem convinced that I will completely abandon C++ if only I spent the time to understand Haskell.

With enough work, you can accomplish any task in any language. The only thing you can't do is force yourself to use something you don't like. So I commend you for giving it a try, but I certainly don't begrudge you for not liking it or using it for everything.

Programming language proselytization is one of the most obnoxious things about our industry. We love to cloak our feelings in rational language, but at the end of the day, all of the design decisions in a language are choices that have upsides and downsides. Some of these upsides are going to be valuable to a particular user or a particular problem, a lot of them are going to be irrelevant and a few will be detrimental. The factor that determines success is absolutely the individual and not the language.

Believing your language is the best must help motivate people to use it, but it is definitely an irrational belief, and not a technical fact. Advertising language differences as factual improvements when they are, at best, assumptions derived from untested principles must be doing for our industry what snake oil has done for Western medicine.


Happily, my experience was quite different.

I used to attend the Bay Area Functional Programmers meetings (apparently now defunct). At one point, I mentioned that I was having a hard time applying FP to my work, which requires lots of iterative updates to vectors that represent states in physical systems.

The general reaction was not that I simply wasn't committed enough to FP. Rather, it was a very thoughtful version of "Yeah I can see where pure FP probably isn't a good fit".


This is almost the definition of religious differences.

Adherents of religion X will tell you how it changed their life, and it can change yours too, if you just believe hard enough.

When you investigate, find problems or just say "it's not for me", it's "your fault" for doing it wrong, or with a bad attitude, or you didn't talk to the right people, or you'll "grow up" later and 'see the light'.


I disagree - choosing a language is not choosing a placebo. Languages are tools, and need to be chosen appropriately. Often the exact choice will not matter (compare Java/C# or Python/Ruby), but sometimes it will.

"it's not for me" is not a valid excuse, it means you cannot handle the tool. This is your fault. A valid excuse is "it's not for my application domain".


Languages are tools to be used by people, not by identical automatons. "This tool doesn't mesh well with the way I approach this class of problems" is a perfectly valid objection.


In my case it's more often "this language makes tradeoffs that are counter to the way I want to work". E.G. I won't touch C++ with a 10 foot pole because I believe it's the compilers duty to track down and at least warn me about as many errors in my code as possible, and C++ seems to go out of its way to allow you to introduce subtle and hard to find bugs. I've worked in a ton of languages from nearly every paradigm (no logic languages yet) and in each one I've found at least one language that works best for me, or best in a particular problem space. Some of that choice is based on need (must be able to search text easily, must have a strong HTTP framework, must have a nice cross-platform GUI, must have strong matrix math framework, etc.), and some of it is based on preference (prefer strong typing, prefer meta-programming features, prefer garbage collection).


C++ and Haskell have some overlap, but mostly cover different domains. Do you use C++ for high-level application programming that has no performance requirements? Conversely, I would not use Haskell for low-level code that has to have very predictable, tight resource use on an embedded device.


Do you use C++ for high-level application programming that has no performance requirements?

I understand this has been done a number of times.


Maybe you're not ready to leave C++, but if you don't have a slightly icky feeling from C++ compared to Haskell, then you've been programming C++ for so long that the weirdness has metabolized.


Errr... perhaps you meant metastasized? Or solidified/ossified?

I think if it had metabolized, that would mean your body had burnt up the weirdness and gotten rid of it.


This is exactly what I am talking about, I'm "not ready to leave C++".

C++ certainly has it's faults, and some of them are quite painful. However, I find there are things I can do nicer in Haskell than C++, but some jobs call for an XORed linked list, or implementing trailing by knowing my underlying types are C and just calling memcpy, and I can't do that in Haskell.

At http://minisat.se/ , you will find Minisat, an (in my opinion) neat, easy to read(ish) and highly efficient C++ program. I've seen numerous people try to turn it into Haskell and all they have ended up with is something less readable, and much slower.


To borrow from The Onion, like violence, my favorite programming language solves all problems. If it doesn't solve a problem, use more!


Did you actually mention any of these disadvantages? Most often I see the attitude you describe when someone says "I tried haskell/lisp/ocaml/scala/clojure but it isn't practical". And that's it. No explanation of what their problems were, just "nope, it obviously can't be used for anything practical and you must be crazy if you think you can use such a language". After seeing that kind of nonsense enough, it can be easy for somebody to fall into the trap of assuming you didn't really try it either if you don't bring up some specific problems.


3 years of Haskell.. May I ask where do you work? I've been trying to learn Haskell but are afraid that there are no jobs out there for Haskell programmer. Job sites aren't helpful in revealing the Haskell jobs either.


For Haskell jobs (and FP jobs) the best places to look are:

* announcements on the Haskell reddit - http://www.reddit.com/r/haskell/search?q=job&sort=new...

* LinkedIn's Haskell and FP group.

* Haskellers.com - http://www.haskellers.com/

* CUFPs general FP board - http://cufp.org/jobs

* Consult partners of fpcomplete - http://fpcomplete.com/partners/ or CUFP members or IHG members - - http://industry.haskell.org/

* Follow Haskell groups on G+


I would assert that learning a language for the joy of it, or for how much it expands your mind, is a much better motivation than that you hope it will get you a job. And I believe that a number of potential employers out there feel the same way.




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

Search: