3 ms·
> 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,
by didibus 6y ago
> 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
I agree with you 100%
Did C++ kill C? Will Rust kill C++?
I think Haskell wasn't there to replace anything except maybe Standard ML, and you could say it won that one.
Rust is trying to be a better C++. And it addresses C++ issues directly in ways that are relatable to C++ programmers.
Similarly for Go, it really appeals to the Java croud that wants less patterns, less verbosity, more simplicity and especially that want lower memory footprint, fast startup times and simple deployments and delivery. It appeals to the Python croud that want better performance and to use what Google uses, etc.
I think in that sense, I see languages that take hold are those that directly address some of the pain points of other popular languages. Another great example of this is TypeScript.
And I'd say, that language cannot change everything that is familiar in doing so. You got to keep around a good 70% from the language that is popular, and with that 30% you can replace with something that fixes major pain points from it.
I think when you look at Rust it does that regarding C++, it purposely stayed close to the syntax.
And when I think of Haskell, it didn't do that. It wasn't trying to address the biggest pain points of everyday programmers in some other existing popular language. It was trying to be a whole new thing, an evolution of an already niche paradigm. It didn't meet anyone 70% of the way unless you were an ML programmer.
Now Squeak I find much more interesting, because it seem like it could have blown up, I mean Smalltalk too, not sure what happened, even Sun was working on Self, and the Java, Java won. I think it was due to performance at the time.
- masklinn 6y ago> Rust is trying to be a better C++. And it addresses C++ issues directly in ways that are relatable to C++ programmers. Just as importantly, it's trying to be a better C++ and it addresses C++ issues directly in ways that are relatable to non-C++ programmers. For devs used to higher level languages, C++ is horrifying, it's a footgun wrapped in grenades, with an internet as full of legacy bad advice as VBA. Rust is a promise that you can get C++-type performance without blowing your foot off or falling into a million traps along the way unless you really want to.
- pjmlp 6y agoManaged scripting languages you mean, C++ is quite high level and managed languages like Swift, D and C# offer similar concepts.
- masklinn 6y ago> Managed scripting languages you mean No. I mean what I wrote. > C++ is quite high level and managed languages like Swift, D and C# offer similar concepts. Languages like Swift and C# have memory safety and automated memory management by default, unlike C++. They also don't have C++'s unique blend of language features mis-interacting with one another in rather deadly way.
- pjmlp 6y agoJust because C++ is unsafe by default that doesn't make it less high level. Languages like Swift and C#, or even Rust, while safe by default do also have their gotchas, do expose unsafe code capabilities, and when an application crashes or panics in the middle of a critical workflow, it is deadly no matter how it came to happen. Specially deadly in the age of thin runtime libraries, that requiring installing half of the Internet for each basic dependency, without any sort of control quality. For example, Rust libraries that make use of unsafe just because the authors gave up on writing the code in a proper way, but n levels deep on the whole dependency chain.
- AstralStorm 6y agoStill, it makes testing and finding bugs much easier, because you can relatively easily ensure correctness of the safe part of code, and unsafe parts get visible. It's not as potent as say Isabelle/HOL prover or top of SML or SPARK Ada, but much easier to write, and safer than Java at memory management in practice. (Where you get to write very thick foreign interfaces with no way to even try to make them safer, and cannot control memory allocation manually easily.) A decent balance.