Live data from Hacker News

Mastering Time-to-Market with Haskell

fpcomplete.com

51–60 of 120 posts

Re: Mastering Time-to-Market with Haskell

#51
post #22

IME Haskell development has a sort of bell-curve to it. Initially, you're spending a lot of time prototyping, fumbling around trying to find the right abstractions. Here Haskell mostly gets in the way: you have to declare up-front which functions do I/O, etc. But once the core abstractions are settled, you start to reap its power. The type system catches tons of potential errors. Combinators allow for enormous expres…

> But then you hit a wall. Laziness makes for brutal debugging. Singly linked lists actually suck. Performance optimization is a black art To be fair, these issue are more-or-less solved by newer functional languages, such as OCaml or Rust.

Technically you are correct (the best kind of correct) but from where we sit today in time, Haskell and OCaml appear as are peers. They probably have some 4~5 years between them, and probably less if you consider ML.

Re: Mastering Time-to-Market with Haskell

#52
post #45

Earlier quoted context omitted.

> a really rigorous language Is it rigorous in theory or in practice? An academic veteran might want to better express his ideas in code while a professional veteran might want more readable code with better test coverage. And that's just 1 axis where the two viewpoints might diverge or even come in conflict.

I'm trying to imagine what "rigorous in practice but not theory" might look like. It seems to me that rigor derives from theory and can then be applied in practice. Haskell is rigorous in both.

I'm not talking about Haskell "the language", but about Haskell "the ecosystem".

Industrial rigor regarding code means:

* consistence in using a coding style

* having adequately named modules, functions and variables

* having adequate comments

* having an adequate level of code coverage through automated tests

* having performance and regression tests

* having good release notes

* etc.

Many of those things, required for high quality libraries, are often skipped for the academic projects Haskell is known for.

So that's why Python or even PHP or Javascript, as less "rigorous" theoretical languages, can have more "rigorous" libraries in practice.

Re: Mastering Time-to-Market with Haskell

#54
post #5

Although very fresh into the Haskell world myself, I tend to agree with the author that, when I know what I am doing, my Haskell code is usually written in less time and has less bugs. Having said that, Time-to-Market is only partially influenced by my-code, the biggest part is the code that I don't have to write, i.e. third-party libraries. In my Haskell adventures I am having trouble finding third-party libraries f…

Mine has a single star but you may find it useful. https://github.com/eklavya/hascas

Re: Mastering Time-to-Market with Haskell

#55
post #36
post #2

> In summary we've seen that: Haskell decreases development time... Have we actually seen that or have you just asserted that? Is this really true, and if it is, by how much? Haskell has been around for a couple of decades now, and has had least two hype cycles (I remember that when I was in university in the late '90s, Haskell was the next big thing). It does not seem to expand significantly even within organization…

You appear to be misrepresenting the blog post. His example of an aesthetically motivated language is Python, not Haskell. Haskell's design was not motivated by aesthetics or superficial ease-of-use, which could well be its downfall. Haskell was and still is motivated by enabling software development gains, e.g. abstraction, composition, concurrency. You may disagree that it has achieved these goals, but to that I wo…

> Haskell was and still is motivated by enabling software development gains

The same can be said about nearly every language. Haskell is first and foremost a research language motivated by answering a research questions, which is what it is like to program using a certain mathematical formalism that is aesthetically appealing to some. Its designers didn't set out to find the best abstractions etc., but to test the validity of a specific theoretical approach.

> but to that I would say don't knock it until you have tried it.

I'm not knocking it. I'm saying that given how expensive it is to try, perhaps some actual information rather than marketing would do a better job in persuading people to use it. Saying that I'm not persuaded by virtually zero information is no knocking anything, except perhaps the advocacy effort.

Re: Mastering Time-to-Market with Haskell

#56
post #55
post #36

Earlier quoted context omitted.

You appear to be misrepresenting the blog post. His example of an aesthetically motivated language is Python, not Haskell. Haskell's design was not motivated by aesthetics or superficial ease-of-use, which could well be its downfall. Haskell was and still is motivated by enabling software development gains, e.g. abstraction, composition, concurrency. You may disagree that it has achieved these goals, but to that I wo…

> Haskell was and still is motivated by enabling software development gains The same can be said about nearly every language. Haskell is first and foremost a research language motivated by answering a research questions, which is what it is like to program using a certain mathematical formalism that is aesthetically appealing to some. Its designers didn't set out to find the best abstractions etc., but to test the va…

>> Haskell was and still is motivated by enabling software development gains

> The same can be said about nearly every language.

This clearly isn't true. For example many languages optimise for ease of use, shallow learning curve, programming in the small etc. Some optimise for efficiency and runtime determinism. Features like type-systems are great for software development (programming in the large), but do negatively impact ease-of-use.

> Haskell is first and foremost a research language motivated by answering a research questions

This isn't true. The Haskell committee contains many people from industry. Haskell just happens to have come from academia and is still heavily used in academia.

> Saying that I'm not persuaded by virtually zero information is no knocking anything

That's a huge exaggeration to suggest there is zero information. There are many experience reports published all the time at conferences and in academic journals, going back decades. None however will give you the quantitative metrics you seem to be asking for, because it is almost impossible to do such a comparison.

Re: Mastering Time-to-Market with Haskell

#57
post #44
post #33

Earlier quoted context omitted.

First, anecdotal case studies are much harder to dismiss than the nothing we have now, and as case studies accumulate they become harder and harder to dismiss. Also, dismissal is not the point. People and organizations are free to make their own considerations and choose their tools. I'm not talking about a marketing campaign. It's about information. If I don't have information, choosing Haskell would be far less rat…

> People and organizations are free to make their own considerations and choose their tools. Not true. If enough FUD is spread about Haskell, for example it being a failure at CS, then it becomes difficult to convince management. > If I don't have information, choosing Haskell would be far less rational than not choosing it No one is suggesting choices be made blindly. Managers should hire good people and then delega…

> If enough FUD is spread about Haskell, for example it being a failure at CS, then it becomes difficult to convince management.

Haskell is not yet at an adoption level where anything said about it would qualify as FUD. If I told you I have a great cold remedy and all of my friends really like it, you saying that you may want some more carefully researched information first doesn't qualify as FUD. I don't see why anyone can be expected to make a rational decision based on nothing but marketing from enthusiasts. Haskell is not even at the point where management is the part of the organization that needs convincing.

> If they want to use Haskell, don't stop them due to lack of case studies.

That is precisely the job of responsible management: to stop technical teams from using expensive technologies, that are not only unproven, but hardly have any actual anecdotal information at all. The precise difference between management and developers is that management sees the bigger picture. As a manager I wouldn't mind technical people experimenting with Haskell or any other unproven technology on side projects, though.

> The best way for other developers to understand why, is to try it.

Yes, but when you come out with an experimental, very expensive drug, you don't say, "the best way for people to see if it works is to try it". Instead, some people try it, and then they research and report on their experience. After all, you're not asking me to try a new sorting routine, but a whole new language ecosystem. I understand why some early adopters and PL enthusiasts would be happy to try, but most organizations don't and shouldn't act in this way. There are tons of promising technologies. Is every company supposed to just try each one? Do we all need to try Elixir, Kotlin, Clojure, Scala, Haskell, F#, and Go? Now, it may not be fair, but the fact is that the more expensive the experiment, the more data we'd want before we'd allocate resources to conducting it. A language like Kotlin is nearly free for Java shops to try. Haskell? Not so much. The best way for other developers to understand is, therefore, for the few early adopters to research and report on their experience, with some actual data (cost, duration, size etc.).

> You were implying that Haskell had failed somehow because SC had stopped using it.

Yes, that is a very negative signal. I don't see how choosing F# changes things.

> Decisions within large organisations are rarely made on purely technical grounds.

True, but in general, organizations shouldn't make decisions on "technical grounds", but "bottom line grounds". Even that doesn't always happen, but it generally does, and it's reasonable to guess that if Haskell had had a huge advantage, it wouldn't have been abandoned. Also, remember that the converse is also true. If abandoning a language isn't conclusive evidence that it isn't cost-effective, adopting it isn't conclusive evidence that it is. That's why we need some data. It can be anecdotal data, but it must be actual data, and not a marketing lecture.

> I can assure you there are many Haskell advocates still there.

I'm sure there are. Unfortunately, the number or enthusiasm of advocates is never a substitute for evidence. It's perfectly fine that some early adopters are swayed by the advocates, but it's also perfectly rational not to be swayed by it. I absolutely believe that some people truly enjoy Haskell and feel that it makes them more productive, but without some data, it would simply be irresponsible to pay so much based on marketing alone.

Re: Mastering Time-to-Market with Haskell

#58
post #13

If you were a developer with 10 yoe looking for something new to get into, what would you choose at this moment and thinking about the near future: Haskell, Scala or F#?

I'd recommend Scala, even if you are not a JVM lover. The language itself is very un-java-ish, but you can hook it to Java libraries if needed, which is very handy

Re: Mastering Time-to-Market with Haskell

#59
post #56
post #55

Earlier quoted context omitted.

> Haskell was and still is motivated by enabling software development gains The same can be said about nearly every language. Haskell is first and foremost a research language motivated by answering a research questions, which is what it is like to program using a certain mathematical formalism that is aesthetically appealing to some. Its designers didn't set out to find the best abstractions etc., but to test the va…

>> Haskell was and still is motivated by enabling software development gains > The same can be said about nearly every language. This clearly isn't true. For example many languages optimise for ease of use, shallow learning curve, programming in the small etc. Some optimise for efficiency and runtime determinism. Features like type-systems are great for software development (programming in the large), but do negative…

Nobody knows if Haskell's design is great for software development, and if it is, by how much and whether it justifies the costs. That's precisely why we need data.

> Haskell just happens to have come from academia and is still heavily used in academia.

Haskell isn't heavily used in academia at all. My guess is that most CS professors -- like most developers -- have hardly even heard of it, let alone used it. It is heavily used among researchers who's job it is to study the design of languages like Haskell. Languages that are heavily used in academia are C, Python, Java and maybe a few more.

> There are many experience reports published all the time at conferences and in academic journals,

Where? I've looked. If you want to see what a good report looks like, take a look at this one[1]. It's got some background, and then lot's of analysis of pros and cons, with plenty of numbers. I found it so convincing that I tried the language it advocated, and ended up adopting it. I'd seen similar (even more comprehensive) reports for Java back in the early '00s before deciding our team should adopt it. I haven't seen anything similar for Haskell. And again -- the more costly the adoption, the more information required before trying.

> going back decades. None however will give you the quantitative metrics you seem to be asking for, because it is almost impossible to do such a comparison.

I don't want a comparison, and what I'm asking for has been done at some point for nearly every language that has gained widespread adoption. I just want to know how much time and effort has gone into a single project, a breakdown of costs, and a subjective analysis of pros and cons. You see such reports being written from time to time about other languages (although usually with far more adoption than Haskell).

[1]: Slides: http://tla2012.loria.fr/contributed/newcombe-slides.pdf

Report 1: http://glat.info/pdf/formal-methods-amazon-2014-11.pdf

Report 2: http://link.springer.com/chapter/10.1007/978-3-662-43652-3_3

Re: Mastering Time-to-Market with Haskell

#60
post #57
post #44

Earlier quoted context omitted.

> People and organizations are free to make their own considerations and choose their tools. Not true. If enough FUD is spread about Haskell, for example it being a failure at CS, then it becomes difficult to convince management. > If I don't have information, choosing Haskell would be far less rational than not choosing it No one is suggesting choices be made blindly. Managers should hire good people and then delega…

> If enough FUD is spread about Haskell, for example it being a failure at CS, then it becomes difficult to convince management. Haskell is not yet at an adoption level where anything said about it would qualify as FUD. If I told you I have a great cold remedy and all of my friends really like it, you saying that you may want some more carefully researched information first doesn't qualify as FUD. I don't see why any…

> That is precisely the job of responsible management: to stop technical teams from using expensive technologies, that are not only unproven, but hardly have any actual anecdotal information at all. The precise difference between management and developers is that management sees the bigger picture.

In most cases management isn't qualified to make technical decisions. Managers rarely see the bigger picture.

I've worked on a Haskell project that worked, never crashed, was lightning fast and was meeting deadlines for new features without a problem. Then higher management decided to throw away probably around 7-10 man-years and rewrite the whole thing in Java, quite literally "just because Java". We even had a consultant from FP complete come over to take a look at our codebase and talk in front of management about the advantages of a mature codebase in Haskell. Management didn't even come.

Abandoning Haskell, in my case, had absolutely nothing to do with its technical merits and everything to do with incompetent management. When I left one year after they started rewriting the project in Java (I was staying to help maintain the Haskell code while the transition was happening) everything was buggy as hell, slow and unmaintainable. Not to mention that half the Java guys they hired had already left again.

Post reply on HN