13 ms·
What killed Haskell, could kill Rust, too
- tapirl 6y agoWhat's the weak points (except not-very-easy-to-learn and complication speed) of Rust? It listens perfect in every other aspect from the Rust promotion articles.
- MaulingMonkey 6y agoIDE tooling / intellisense is improving but still weak compared to, say, C# IME - although I should maybe give IntelliJ another shot. It's still got a lot of low level building blocks in place but there are still gaps and mid-tier / high level frameworks are still missing for many problem domains. It's strictness, while generally useful in the long run, can be more of a drag than a boon for quick and dirty projects (although the more I use it, the faster I'm getting with dealing with said strictness...) It's got a nice hefty stdlib, which is usually a boon, but can be annoying to port for weird platforms. There's almost always a working C++ environment available, but Rust takes more work. A concrete example: https://github.com/MaulingMonkey/rust-opendingux-test https://github.com/MaulingMonkey/rust-opendingux-test . And yes, that "Rust" repository does have 2 lines of C code in it ;). EDIT: Also, no standard/stable Rust ABI. And extremely limited dynamic runtime reflection via "dyn Any" (although pretty decent hygenic macros / proc macros and related crates makes the compile time stuff sufficient for most of my day to day needs). Still, C# DLL reflection is super nice at times, whereas Rust is "forced" to ship source code for libraries unless they want to jump through a bunch of hoops to limit the API surface to the C ABI... EDIT: Also, a lot of rust libraries are quick to adopt new features of the latest stable compiler. Tools like rustup make it trivial to stay on the latest stable compiler, but can make things awkward if you insist on apt-provided rustc, or if you need to customize the compiler or stdlib for your particularly oddball target platform (read: consoles, but not opendingux like I linked above) - this can be a pain point.
- orthoxerox 6y ago> Its strictness, while generally useful in the long run, can be more of a drag than a boon for quick and dirty projects (although the more I use it, the faster I'm getting with dealing with said strictness...) I wish cargo/rustc had a "I don't care about borrow checks right now, just don't reclaim any memory, I want to make sure my code does what I want first". Maybe I don't have enough experience writing Rust, but I don't enjoy switching from thinking about domain logic to thinking about memory management every time I want to run a unit test.
- unrealhoang 6y agoThere’s `Box::leak` that you can use to turn your object into a static pointer.
- perryizgr8 6y ago> I wish cargo/rustc had a "I don't care about borrow checks right now, just don't reclaim any memory, I want to make sure my code does what I want first". That's exactly what C is. The truth is you need to be always thinking of memory. If you care so much about the domain problem, you should choose a different language. Python and javascript are both very good at letting you grapple with your problem, without worrying about the computer. Once you have solved it, and need a performant implementation, come back and write it in rust. And this time you need to be worrying about memory. C lets you ignore that and that's what rust was designed to prevent.
- MaulingMonkey 6y agoRc<RefCell<...>> / Arc<Mutex<...>> and borrowing or locking for micro-scopes, only exactly when you need the inner values, will get you pretty far when you're looking to turn off your brain. Sometimes they're even the correct choice! It's not entirely frictionless, but it can get pretty smooth. Cell / Atomic* can be nice too.
- umanwizard 6y ago> I wish cargo/rustc had a "I don't care about borrow checks right now, just don't reclaim any memory, I want to make sure my code does what I want first". This couldn’t work because running destructors is sometimes required for actual correctness, not just reclaiming memory. (E.g., you might have a type that writes some records to a file and flushes the outstanding records in memory to disk when dropped)
- moldavi 6y agoRust fits well in low-level cases and data-oriented design situations. For things needing any abstraction or modern OO, the borrow checker really damages your architecture.
- Ar-Curunir 6y agoRust does abstraction very well with Traits. Abstraction != OOP.
- 1tCKV3QfIo 6y agoIt still pales in comparison to OCaml, Haskell, etc for composing abstractions without OOP.
- moldavi 6y agoNot from what I've seen, and idiomatic Rust (to my frustration) advises against traits in favor of enums, probably because they dont do well in Rust. Also, I didnt claim abstraction == OO, but Rust struggles with both. Luckily, Rust shines in cases where no abstraction is needed.
- Ar-Curunir 6y agoIdiomatic Rust does not advise against traits. The standard library makes extensive use of them, and most libraries in the space do that as well.
- steveklabnik 6y agoI think you're talking about trait objects, not traits entirely, right?
- umanwizard 6y agoAll rust code I have seen uses a massive amount of traits. I second the other comments saying you must be confused about something.
- higerordermap 6y agoYou have to think about memory management. No matter what rust evangelists say, you have to think about it. Well you don't have to worry about it like in C. Of course rust is intended for safe performance-critical programming. GC is fine for a significant portion of software. The ruby / javascript webshit culture creeping in - lot of microdependencies which can often be hard to audit. Projects like cargo-crev aren't getting any traction. Crates.io - the package registry lacks namespacing. That means package names have to be choosen carefully and you might here phrases like "import data from cabbage to rabbit using chickenshit crate" etc.. Async runtime fragmentation because stdlib doesn't provide one. Very small standard library. Many things need you install a crate which might come with 40 other dependencies. This kind of dependency counts are fine for creating webshit but sometimes you need to audit your dependencies, especially rust is intended for low level programming. Horrible compile times. You might think rust has better compile times than C++ because it has a module system. But compile times are similar. Rustc emits large chunks of LLVM IR. Not faulting people working on rust for this - but they have a shortage of talent. And rust community's zealotry makes lot of people sceptical. A very zealot community which also happens to be very active on programming link aggregators. You might get downvoted irrationally for simply critisizing some flaw of rust. You keep on hearing zero-information / out of context statements heralding rust. This is partly a consequence of influx of people from blogging-heavy ruby and javascript communities. Especially the javascript crowd has an Instagram feel to it. Some people among these have marginal knowledge of computer science concepts and still show up everywhere heralding rust. No structural typing. This may be flaw or virtue - people from dynamic typed languages may like structural typing as in Go or OCaml than nominal typing.
- Aeolun 6y agoI cannot wrap my head around the uses of structural typing. Unless I tell something to be a certain type I expect it not to be.
- higerordermap 6y agoWell it is subjective. That's why I wrote it may be good or bad. But those from dynamic typing backgrounds may find structural typing more natural. I don't bother as long as there is a way to implement an interface without lot of subclassing boilerplate.
- tobyhinloopen 6y agoIs Rust a “times 5” language? Is it that good? I can’t imagine any language being 5 times as productive as current mainstream projects.
- danielheath 6y agoThe right language choice for a problem space is a force-multiplier. I don't think 'several times more productive for the at least some of the cases where it was designed to excel' is a particularly strong claim; the devil is in asking 'which cases are those?'.
- adamnemecek 6y agoCompared with cpp yes. There are some bumps but God it's still incomparable.
- moldavi 6y agoI'm experienced in both, and IME Rust isnt that much better than C++. It's generally more fun than C++ and a bit safer, but all in all it's not 5x better, not even 2x... I'd place it around 1.1x perhaps. Each had a difficult learning curve to learn how to write safe code. At the end of both curves, I look back and see they were about the same.
- Ar-Curunir 6y ago?? Rust code is safe by default.
- 1tCKV3QfIo 6y agoLol tell me how you can implent a high performance linked list without using unsafe.
- moldavi 6y agoAnd it has a difficult learning curve to learn how to use it without unsafe =)
- bad_user 6y ago> "It's a transcript of the following talk by R. Martin with some substitutions made (SmallTalk -> Haskell, Ruby -> Rust, and others)" I kept wondering why I'm wasting my time reading this, until the end, only to find that this is the style of Uncle Bob.
- deleted 6y ago[deleted]
- deleted 6y ago[deleted]
- deleted 6y ago[deleted]
- CJefferson 6y agoI agree with this story, but I would add one more thing (which so far, Rust doesn't suffer from, but is starting to sneak in with const functions). Haskell suffered from people showing some great idea could be implemented in Haskell, without actually producing working finished code people could see. For me the classic example is ripgrep. I remember seeing tutorials about how regexes could be nearly and efficently done in Haskell, but it was Rust and ripgrep which made a day-to-day useful tool, which gives me confidence I can also use Rust to do useful things. Of course, I'm not saying everything has to be useful code, but having some commonly used programs in your language does help it seem practical. Haskell does have some great stuff (pandoc comes to mind), but very little considering its age, and compared to Rust.
- chillee 6y ago> As one might have guessed, this is not an essay. It's a transcript of the following talk by R. Martin with some substitutions made (SmallTalk -> Haskell, Ruby -> Rust, and others). You are free to make any conclusions from this. I don't find this particularly interesting. Starting from the first questionable statement, > Not because Rust is Haskell without HKTs I was wondering why the article had so many inaccuracies. Fundamentally, Haskell did not clearly solve any particular problem with other languages. There are a lot of cool things you can do in Haskell, and arguably, there are problems in other languages that aren't issues in Haskell. But the advantages of Haskell were never as clear cut as Rust. In addition, Rust has already seen uptake on a level that Haskell never has. What's the most important Haskell project? Pandoc? Haxl? On the other hand, many companies have already started building core infra in Rust. Facebook with Mononoke, Libra, Eden, and Hack. Dropbox for storage servers. Mozilla with Firefox. I think Rust has a bright future, and I don't think the analogy with Haskell is right at all. EDIT: Judging from some of the other comments, I'm perhaps not surprised that GPT-3 achieved some success on HN.
- d3nj4l 6y agoAlso, just going off the substitutions, Ruby is alive and well with a major release on the horizon, many top startups got their start with it and the community is still growing. If Rust is the new Ruby, it should be pretty damn happy about it.
- AlphaSite 6y agoRuby is nothing compared to its original hype bubble.
- vore 6y agoSPJ has said Haskell's motto has always been "avoid 'success at all costs'", so it's perhaps unsurprising they're not concerned with industrial applicability, which doesn't mean it's particularly dead in the water or anything for other uses.
- PaulAJ 6y ago> Fundamentally, Haskell did not clearly solve any particular problem with other languages. Marketeers have a saying: "Its a lot easier to sell asprin than vitamins." In other words, if someone says "This is giving me headaches" then someone with a solution for that headache will find it a very easy sale. But if your product pitch is that your general health will improve, your immune system boosted, yada yada, that's a much harder sale to make.
- pmoriarty 6y ago"Haskell in its time was at the forefront of functional programming. It was the language that kind of characterized or epitomized what FP was really about. There were other languages that were functional, but they were only sort of functional. And of course, I'm talking about languages like Scala, or JavaScript. Those were the two major competitors during the same mid 2000s." I guess this guy has never heard of OCaml or SML. Though Haskell was a leader in the FP field, it was never the only language to epitomize FP.
- deleted 6y ago[deleted]
- hg35h4 6y agoActually what kills it is Yet Another F... Language. Most new languages are barely better then anything that already exists. After the initial cheerleaders that started the project moved on, the company realizes it's hard to find coders for the niche fad language of the period.
- hg35h4 6y agoI must have angered fad language of the year fans :)
- the_mitsuhiko 6y agoI feel like this is overstating the popularity of Haskell greatly. I don’t think Haskell was ever as popular as the article implies. //edit: i just now realized that this post was not originally about Haskell but Smalltalk. That makes more sense to me.
- three_legs 6y agoRust is already greater than Haskell. Not in programming terms, but in social terms. Rust won't die, or at least won't die the same death as Haskell. Rust, compared to Haskell, has already won.
- choeger 6y agoNope. With the success of Rust, Haskell has won. Finally. The thing is, designing programming languages is a science, but practitioners often considered a craft. Things like the syntax of C++, the undefined behavior of C, the erasure semantics in Java, the weird semantics of Scala, or the minimal type system of Go all stem from that misconception. Haskell took the science part serious. It is an academic language, but it tought people what can be done with a thorough design. Rust is the first language, as far as I can tell, that takes that mindset and improves practical programming. Rust is just objectively better than C++ in so many aspects. But it would not exist if it were not for Haskell and a plethora of PL research done in that language.
- pjmlp 6y agoAnd the work done in Ada/SPARK, Cyclone, ATS. Most likely Rust wouldn't exist had Java and .NET had been properly AOT native compiled since the first version like Delphi, Oberon, Modula-3, which would have taken away many use cases that people kept choosing C or C++ instead. Or had AT&T not given up on Cyclone and eventually making into a common UNIX language, like it happened with C++.
- orthoxerox 6y ago> Most likely Rust wouldn't exist had Java and .NET had been properly AOT native compiled since the first version It's Go who wouldn't then exist, not Rust.
- pjmlp 6y agoOnly in the minds of GC haters that cannot grasp the concept of system enabled system programming languages. Both of them wouldn't exist. Go because it is basically Java 1.0 with AOT compilation. Rust because C++ wouldn't have become as widespread as it currently is. Stil trying to catch up with Xerox PARC, http://toastytech.com/guis/cedar.html http://toastytech.com/guis/cedar.html
- 02020202 6y agoRust is the language that everyone loves to talk about but no one really uses.
- dochtman 6y agoExcept Google, Microsoft, Apple, Amazon, Facebook, Mozilla, Dropbox, npm, Discord and a whole bunch of other companies.
- Annatar 6y agoYou mean the Silicon Valley bubble of reality distortion. It's become so far disconnected from the information technology industry that it's rapidly becoming irrelevant. Outside, in the trenches, one won't find much Rust. Or Haskell.
- rapsey 6y agoEvery one of those companies have extremely robust business models (ok npm I have no idea about), high profits and are not going anywhere. You are mistaking them for loss leader unicorn startups. Rust is present in quite a lot of spaces. But companies outside sillicon valley or even the US do not advertise what they are doing as much. I am as far from SV as possible and a fulltime Rust dev.
- brabel 6y agoYou need to consider most of those companies are so big they probably use every one of the top 20 languages. You argue as if they were ONLY using Rust.
- Ar-Curunir 6y agoNo, but they are using it in critical parts of some key products, and in those parts, Rust is enabling them to write better code that requires less maintenance.
- 6y ago
- ur-whale 6y ago:%s/Haskell/Lisp/g and get a valid story
- blaisio 6y agoRealistically the biggest problem with Rust today is the biggest problem it has always had - it is too hard to write useful programs. Rust has seen some success in very targeted use cases, but that isn't enough. I am 100% confident that introducing Rust to my company would be a huge mistake.
- Ar-Curunir 6y agoI mean, given that Amazon, Google, Facebook, Apple, Dropbox, Mozilla, etc are all using Rust for important parts of their infrastructure, I think "making it easy to write useful programs" is not one of Rust's weaknesses. Yes, it's not as "easy" to pick up as C or Python, but it also prevents footguns introduced by those languages.
- tasogare 6y agoNo, the companies you listed wrote a PR blog posts or two saying they use Rust for a component or two, for a minor or internal product. Saying they are using it for "important parts of their infrastructure" is quite a stretch...
- lights0123 6y agoIs Dropbox's sync engine a minor product? The entire reason why Firefox has gotten much faster over the past few years? Linkerd? What about Amazon's Firecracker, powering Lambda and Fargate?
- umanwizard 6y agoRust is very niche within FB and not used by the overwhelming majority of teams. It is less important to FB than C++, Python, Objective-C, Java, Hack, and Ruby. That said, yes, it’s used some, but that reflects a few random teams having decided to use it (most notably hg and Libra), not some grand strategic decision. Source: I worked at Facebook for four years, until one year ago. (Incidentally, I’ve spent the year since then working exclusively in Rust for my day job, and I love the language)
- 6y ago
- eecc 6y agoAhm, last time I checked Haskell was alive and well. Nothing killed Haskell because Haskell isn’t dead at all. I guess what commercial-driven people don’t understand is that something isn’t a failure if it simply doesn’t play their “market domination” success game and doesn’t win by its metrics. Go look at the photos of the first Haskell working groups; it’s an academic tool. It can be used for commercial workloads but it was never developed with that sole purpose in mind. Haskellers play another game.
- deleted 6y ago[deleted]
- rfw300 6y agoRead the article. It’s a fictionalized dispatch from the 2030s.
- platz 6y agothis article was just posted 4 days ago: https://news.ycombinator.com/item?id=24401748 https://news.ycombinator.com/item?id=24401748 see my comment there: https://news.ycombinator.com/item?id=24404593 https://news.ycombinator.com/item?id=24404593 in summary: The reason why Haskell still doesn't really break through in the corporate world is not a failure of arrogance, but a marketing failure in the strictest sense of the word 'marketing'—which means prioritizing the right features to target the right market.
- bontaq 6y agoIt's not targeted towards that. It's a 30 year old research language that is still ahead, and I don't really see a reason why it should change in any way towards businesses. If anything, it should lean more into research to keep ahead. I do not believe catering to anything in the corporate area will result in anything equivalent to the decades of research.
- johndoe42377 6y agoUnnecessary, redundant abstractions to impress other people is what plagued Haskell libraries and therefore the whole ecosystem. Language itself is a miracle of software engineering, and GHC and cabal are decent.
- jedisct1 6y agoThe same thing is happening with Rust. Many Rust crates are very difficult to understand and use, due to them using tons of abstractions. Macros don’t help either. As people get more and more familiar with Rust, they write more and more code that only them can understand. Languages such as Zig and Go are way more limited, and may require typing more characters to achieve the same thing as in Rust, but they force people to write simple, readable, maintainable code.
- ahartmetz 6y agoThe same thing is happening in C++. Just have a look at certain Boost libraries. The thing is, usually you can use something else instead.
- pjmlp 6y agoAs proven by libraries full of boilerplate code, or code generators, to work around language limitations, that is definilty not the case.
- barry27 6y agoThere were just so many FACTS in this article. I love an article dripping in FACTS.
- theonemind 6y agoI can see the use for Rust in writing an operating system or device driver...but manual memory management for application software? That's a huge step backwards. I really don't get why anyone uses Rust outside of low-level or very performance-driven problem domains. Seems like a cargo cult or hype machine, though certainly an improvement over C, it should be replacing C. It might be better than Java, but what replaces Java should look more Haskelly. I don't get it.
- DasIch 6y agoYou manage memory in Rust about as manually as you manage memory in Python, at least in normal application code. If you do very low level stuff, you might think about that a bit more but then you have to in any case.
- higerordermap 6y agoYou bullshit promoting rust on hacker news about as easily as you write a program in python. If you do very meaningful shilling, you might think about that a bit more but then you have to in any case.
- perryizgr8 6y ago> You manage memory in Rust about as manually as you manage memory in Python, That's not true in my experience. Every single error the borrow checker throws at you is in a sense "memory management". Rust forces me to think very hard about memory, in all but the simplest toy programs. You want anything to do with threads? Gear up for a long afternoon of fighting the compiler before you fully understand your memory model and use it properly. You want anything to do with linked lists? Same deal. You want anything to do with async. Plan to spend 3 hours just to figure out what you want to really do. All this is memory management. Just in a different form compared to C/C++. Python OTOH simply lets you forget that the computer exists. It's just you and the problem you're solving. You pay for that with lack of speed and bloated memory usage.
- DasIch 6y ago
- natertux 6y agoCan people tell me what useful program were produced in Haskell ? I know a few for Ocaml but I dont know much Haskell, so dont know yet any useful program written in Haskell. The program I know for Ocaml are: - coccinelle (semantic patching used by linux kernel devs) - FramaC (formal verification) - Coq (proof assistant) - Rust compiler (I think they bootstraped the language by writting a compiler in ocaml first, now the compiler is written in rust itself) I just saw pandoc. It seems nice. I know parsec. But I would like to know what kind of haskell programs are actually used in real life ? I know Jane Street does all their dev in Ocaml. Is there similar company for Haskell ?
- knowhy 6y agogit-annex is a useful program written in Haskell
- unhammer 6y agoOne that I use all the time is shellcheck, and git-annex. Others in the mainly-used-by-programmers-category include xmonad and hledger. https://github.com/owickstrom https://github.com/owickstrom has some GUI Haskell apps. Facebook's Sigma and https://github.com/wireapp/wire-server https://github.com/wireapp/wire-server may be the ones with the most non-programmer users? http://postgrest.org/ http://postgrest.org/ and https://hasura.io/ https://hasura.io/ seem interesting. https://www.quora.com/What-is-the-largest-commercial-program-written-in-Haskell?share=1 https://www.quora.com/What-is-the-largest-commercial-program... says the largest Haskell code-base is probably Standard Chartered trading system. more at https://github.com/topics/haskell https://github.com/topics/haskell and https://serokell.io/blog/top-software-written-in-haskell https://serokell.io/blog/top-software-written-in-haskell
- approxim8ion 6y agoThe dynamic tiling window manager Xmonad is written in Haskell and while I don't use it personally (I use bspwm), I've heard it's great.
- ywei3410 6y agoFacebook uses Haskell for [Haxl](https://github.com/facebook/Haxl https://github.com/facebook/Haxl), Standard Chartered has a their own Haskell [compiler](https://www.reddit.com/r/haskell/comments/6im268/standard_chartered_is_hiring_again/ https://www.reddit.com/r/haskell/comments/6im268/standard_ch...) and a massive code base in Haskell. [Agda](https://github.com/agda/agda https://github.com/agda/agda) and [Idris](https://github.com/idris-lang/Idris-dev https://github.com/idris-lang/Idris-dev) were mostly written in Haskell as well.
- 978e4721a 6y agoIMHO The only problem with Haskell is that it's on a journey to dependent types and they haven't released new standard yet. It's future will depend on how good that future standard will be. Rust is becoming more popular than Haskell because It's in a different niche (no gc). Not because it's more productive to write Rust code. Haskell is still much easier and faster to write than any other production language. Try to compare merge function for merge sort in Haskell and in other languages.
- jokethrowaway 6y agoAs much as I love Haskell, once you start caring about performance, laziness and GC gets in the way. Records are still a pain to deal with. Prelude is not safe. Async exceptions bit you like in most other languages. String, bytestring, text exist. There's also tons of extensions which I hope were a default in a production language. The language is huge. I doubt having dependent types is a factor. Haskell is definitely my favourite language but I don't think it's the easiest language to write. It could be, with the right set of defaults but it's not - and it's by choice: Haskell wants to be a language to explore language design. Rust is a production language and solves an interesting set of problems (safety, gc spikes). I don't like the language particularly, but it's concise and it has modern features. It gets stuff done and that's why it's getting popular.
- sn41 6y agoAs a person who occasionally teaches programming languages, including Haskell, I have found the PHP community to be exceptionally supportive when it comes to documentation and examples. It has a very respectful attitude towards comments on the documentation website as well, where good examples contributed by users are eventually absorbed into the official documentation. One of the least rigorous language in wide deployment has the best attitude towards its users. If other languages also adopt a friendly and approachable attitude towards helping beginning, intermediate and advanced programmers, then I think that the ecosystems of languages would be much healthier.
- averros 6y agoI have another take on it... Haskell is fundamentally misguided and not a real-world production language. What engineers need is not something which makes stuff elegant, but what makes stuff simple. Having to work with advanced mathematical concepts to achieve rather simple functionality basically means that the pool of people able to use it effectively (and willing to spend efforts on learning how to do that... instead of, say, solving the actual real-world problems) is small. Thus the niche appeal to the language astronauts - and thus their arrogance of people who mastered something with steep learning curve feeling superior to mere peons. Except it's the peons who deliver real products and get paid for that.
- m0zg 6y agoIMO what killed Haskell was weird syntax, and the lack of examples of practical problems that are solved in Haskell. No matter which tutorial you look at, it'd be this impenetrable high brow solution to some really trivial problems that do not exist in the real world. Spherical cow in a vacuum, if you will. If you wanted to learn by example, there, by and large, wasn't an example to learn from. There still isn't. Epic fail. Rust is in no danger of that. Lots of practical problems are being solved in Rust. Lots of great examples are available. And while syntax around borrow/reference annotations can be difficult to grasp, the rest of the syntax is not too bizarre and is largely conformant to what people are used to.
- KingOfCoders 6y agoHaskell didn't solve a real problem.
- KingOfCoders 6y agoHahahahaha - sure this got karma-killed on HN where people love Haskell without having written one line of code. I've been paid for writing code in 10+ languages over 35 years, I have written Haskell code and Haskell does not solve any real problem. Same goes for F# so no one uses it.
- codygman 6y ago> I have written Haskell code and Haskell does not solve any real problem. Same goes for F# so no one uses You are being down-voted for either lying or using such a ridiculous definition of "no one" to push your agenda while disregarding facts.
- KingOfCoders 6y agoYou can count the number of Haskell users here: https://charliereese.ca/article/top-50-y-combinator-tech-startups https://charliereese.ca/article/top-50-y-combinator-tech-sta... "to push your agenda while disregarding facts. " I have no agenda, what agenda would that be? What do you think my agenda is? I've written code in 20+ languages in 40 years from 6502 machine code to Prolog, LOGO and Blockly. Everyone of them has strengths and weaknesses. I like coding in most of them. "while disregarding facts" What are the facts? If I have an agenda it's to split propaganda from facts. It's moving software development from strong opinions, fashion and cults towards facts and science, so as an industry and profession we can grow up. "Haskell didn't solve a real problem" lead to the downvotes, and not one reply with a counter example. If Haskell solves a development problem the many people have and struggle with, what would it be? What problem does lazyness solve? I wrote 100k+ lines of Scala code with Monads and Monad transformers, it isn't better than my Typescript code. Purity? Good developers write pure methods in any programming language minimizing side effects. I could go on with immutability, which get's you down a rabbit whole of lenses ( I wrote a lengthy article here https://svese.dev/concurrency-with-immutable-data-primer/ https://svese.dev/concurrency-with-immutable-data-primer/ ) with few benefits. There are two possible prominent explanations for Haskells failure in the development world. First it didn't solve a real problem as Assembler (easier to read and write than machine code), C (everyone did 'C' already with extensive assembler macro collections), Perl (better shell programming), Lua (easy to embed), Java (garbage collection), PHP (everyone who can write HTML can write PHP), JS/Node (people allready know frontend JS), Ruby (Rails) and Typescript (JS with type safety) did and Rust (safe C) now does. Or every developer is too stupid to see the light.
- devit 6y agoI don't think Haskell was ever successful other than as an inspiration for parts of other programming languages like Rust. They chose an unfamiliar syntax for no reason (and one that makes it hard to learn abstractions, e.g. the practice to not distinguish between a -> (b -> c) and (a x b) -> c), and non-strictness/space-leaks makes it unusable for anything serious; plus, it doesn't support dependent types, so it's not even good as a "theoretically perfect" language. The only thing that can kill Rust is a better Rust, which means either a Rust with dependent types, or a Rust that is somehow much easier to learn while not sacrificing power and zero-cost abstraction (I believe the latter is likely impossible, but maybe I'm wrong). There is also the possibility of limited success for Rust, i.e. the fact that it will kill C/C++ (which is inevitable), but fail to kill JavaScript and Java/Go/C#.
- tasogare 6y ago> There is also the possibility of limited success for Rust, i.e. the fact that it will kill C/C++ (which is inevitable), but fail to kill JavaScript and Java/Go/C#. This is the most probable issue. Rust doesn’t offer anything new or useful for a C# developer, yet have quite a number of drawbacks. Memory safety? Heck, this is exactly what the CLR is about, hence the usual name of "managed code".
- devit 6y agoRust offers data-race freedom and in general correct concurrency (e.g. it's impossible to access mutex-protected data if you don't hold the mutex), correct handling of objects and invariant preservation due to shared xor mutable (e.g. can't pass an array to a constructor that stores it in a field, and then modify the array in unrelated code that kept a reference, breaking the class invariants), better exception safety since exception propagation is explicit, a macro system, deterministic finalization, no GC latency, reduced memory utilization, better code generation, better cross-platform support, ability to produce lighter C ABI dynamic libraries. Rust doesn't really have fundamental drawbacks other than the fact that there are more ways to store and refer to data (e.g. owned, borrowed, boxed, reference-counted, etc.) and thus you need additional code where you want to support more than one of them. Of course there are ecosystem differences and learning curves.
- ausjke 6y agoc++ advances fast there days and it has no problem to fend off rust to me. for C, there is no way, it is the root of so many systems, imperfect, but worked well so far. plus rust is not as safe as expected in practice, the unsafe mode is underrated.
- cannabis_sam 6y agoUncle bob’s original essay is largely worthless, and I’m genuinely struggling to understand what value is to be extracted by transplanting a terrible argument, onto an even less applicable programming language situation. If anyone reading this has published anything resembling this tripe, please stop programming and start crocheting, or some other, more useful hobby.
- ColeyG 6y ago> Not because Rust is Haskell without HKTs. (Some of you know what that means, and the rest of you will wonder for a very long time) It would make the paper more readable to newcomers to explain this. The author was too smug and as a newer person in the Rust community I wish people who cared enough about writing papers also cared about making them accessible :/
- steveklabnik 6y agoThey're not trying to make a real argument, see the very last bit. It's a completely different talk with some words substituted. (It stands for "higher kinded types", which is a feature Haskell is well-known for that Rust lacks.)