3 ms·
Too bad the tone is so vitriolic, because there is an argument hidden in there somewhere. Type systems allow us to add theorems to our programs about how they
by vnorilo 6y ago
Too bad the tone is so vitriolic, because there is an argument hidden in there somewhere.
Type systems allow us to add theorems to our programs about how they operate and have the compiler check their consistency.
We fight with bugs: programs behaving unlike we planned and specified. We encode plans and specifications as types, and now have formal proof that a certain class of bugs is eliminated. Excited, we want to use this strategy to eliminate more bugs.
A larger part of the programming task is moved over to this higher order type layer. As it becomes less trivial, bugs and antipatterns start to manifest.
We do not have any answers about the objectively best division of labor between static and dynamic aspects. This is a research project that's bigger than any single person, community or language, and I'd argue we need more of Haskell, Rust, Idris and their ilk rather than less. To merely argue that they did not result in a dramatically better OS or a word processor is beside the point.
- asplake 6y agoI for one upvoted not because I agreed with the article but for what I hope is a constructive discussion. Personally, and without wishing to sound entitled, I would love for it to be a lot easier to dip one’s toe in the water. A great start would be a web dev tutorial that starts from scratch with a sane Prelude that hides away anything I don’t need to know now (or perhaps ever). With of course a database, json, and html. Coming from Flask where I was well served in that regard (no pun intended). Aside: Thought ocaml might get there first but I’m not seeing that either
- dgb23 6y agoI agree, the benefit of this, is that it creates a frontier where math can be applied more rigorously to programs. There is a related xkcd comic about this. We’re in a “not there yet” kind of situation. The author likely comes from a very mainstream product centric domain, as most do. In this context one has to agree with the criticism and maybe also admit that this is not what the language is for?
- feanaro 6y agoThis is a good point. But I also want to add that as a freelance developer, I've done quite a number of medium sized projects for business use cases in Haskell singlehandedly. Empirically, the results were very low in bugs and remain at use at the companies in question without requiring much maintenance. So this kind of thing is something that is well served by Haskell, in my opinion. I wouldn't seriously recommend someone else that the best path to doing this kind of work is to go and learn Haskell but I also feel this is something I wouldn't have been able to do as well using many other more popular languages.
- robertlagrant 6y agoVitriolic is an exaggeration. It's a little cynical, for sure, but not necessarily without reason.