4 ms·
Being a real-world language was absolutely one of the design goals of Haskell. See point 1 of section 2.4 in "A History of Haskell: Being Lazy With Class"[1]. I
by chowells 9y ago
Being a real-world language was absolutely one of the design goals of Haskell. See point 1 of section 2.4 in "A History of Haskell: Being Lazy With Class"[1]. It succeeded at being suitable for writing large systems, too. It's easily the least-bad language I've used for writing software where garbage collection is acceptable. It hits a sweet spot between expressiveness, maintainability, and performance that I haven't experienced from any other language.
Question: Have you used Haskell to write real software? I find that people who have used it tend to have much more precise criticism than "isn't designed for writing real software". It certainly has lots to criticize, just like every other language. But most of the criticisms I see of it seem to have gone through 20 rounds of telephone, with basically no relation to the reality of using Haskell.
[1] http://haskell.cs.yale.edu/wp-content/uploads/2011/02/history.pdf http://haskell.cs.yale.edu/wp-content/uploads/2011/02/histor...
- kjksf 9y agoIt says "It should be suitable for teaching, research, and applications, including building large systems." So building production software is stated as 3rd most important goal. In contrast, here's Rob Pike's talk about Go: https://talks.golang.org/2012/splash.article https://talks.golang.org/2012/splash.article The title: "Go at Google: Language Design in the Service of Software Engineering" It puts building production software as the first most important goal. It then goes in depth about how design decisions were driven by things the authors learned from Google's vast experience of writing production software. It methodically describes pain points of large-scale software production and how Go's design decisions are trying to address those pain points. Unlike Haskell, Go wasn't designed for teaching. It wasn't designed for research. Go was designed for writing production software that needs to be reliable.
- wtetzner 9y ago> So building production software is stated as 3rd most important goal. Nowhere in that sentence do they claim the list is ordered by importance. > Go was designed for writing production software that needs to be reliable. That might be true, but it doesn't actually say anything about how successful they were in reaching that goal.
- geodel 9y ago> but it doesn't actually say anything about how successful they were in reaching that goal. How would measure that? To me it is simple: lots of cloud related infrastructure is written in that. So it seems successful.
- wtetzner 9y agoWell, all that really says is that the marketing for Go was successful, and that Go is sufficient to build said infrastructure (just as the languages preceding Go were).
- Tehnix 9y ago>So building production software is stated as 3rd most important goal. Ehrm, no? It is to be taken with no implicit meaning on ordering, i.e. teaching == research == applications, more or less. All of these priorities are weighed in when there are talks in the community about removing or adding features. Haskell is a lot better for writing _reliable_ software. It just has a higher barrier to entry, if you come from an imperative background (not much if it's your first language). >Unlike Haskell, Go wasn't designed for teaching. It wasn't designed for research. Several times I've heard mentioned that the strength of Go was the simplicity and on boarding new developers, along with them not getting confused about what code means. I'll agree it certainly wasn't designed for research though, since it seems to want to ignore the progress in CS over the last 20 years. Haskell is very serious about stability, they don't just add or drop features without a long deprecation cycle. Most experimental things are language extensions, which are entirely opt-in. The main problem Haskell has had for adoption (IMHO) was the lack of good _pedagogical_ material that would hold the users hand and teach them the concepts of the language - there have been superb efforts into fixing this in recent years such as with the Haskell Book etc.