File: 10097fb3-84e1-41f7-86f9-b9a25f455014-1681409090.png (90.3 KB)
Literally none of them are widely used in the industry.
>inb4 why
because why use crappy tools when you have better tools? why use C++ when you can have C#? (both are crap compared to pure languages, but C# is mostly an upgrade to C++ except when you need performance)
Showing all 61 replies.
>>
>>
>>
>>
The problem with languages like Rust/C++, or Zig is that they shallow copy concepts from pure languages without fully understanding what made those concepts work with pure'er systems in the first place. C++ has "objects" but they don't behave like objects like with Smalltalk or Self. C++'s objects are just a fancy wrapper for C structs, meanwhile in Smalltalk objects are real and communicate through message passing without exposing their internals. just like real objects. and the entire system is objects, so the "API" is a given and nothing is broken for the sake of performance.
Rust isn't even an OO nor a purely functional language like Haskell since like nonpure languages, it breaks purity for the sake of performance. why does this matter?
because if I gave you a complete tool (like a complete hammer) you wouldn't go use a compromised hammer that only barely resembles the tool because it had to compromise for the sake of some other thing and is thus very painful to use compared to an actual hammer.
>>
>>108995523
Never said it was. I am saying purity has no use-case that isn't solved by Rust's borrow checking model.
>>108995526
Which is what? Real world IO heavy haskell just looks like Rust, but with more noise because you need meme structures like monad stacks and lenses.
>>
>>
>>108995571
First see above >>108995568
second, you're still conflating mutability with purity. the borrow checker has nothing to do with data represented in pure languages.
Rust simply does not represent data the same way Haskell does. it is a shallow functional language. it is not truly functional.
you're just not getting the same data representation as with Haskell.
Haskell solves all the problems Rust tries to solve by simply committing to the purity. this is why pure languages matter in the real world and are not just an academic circle jerk.
>>
>>108995592
You mentioned message passing like it means anything and isn't just a design pattern for specific use-cases. It has nothing to with OO or any other insane garbage the rest of your post says. So I didn't bother reading it.
>>
>>
>>108995583
A language that can be expressed as a coherent model. just like how algebra is a coherent mathematics. or a hammer is clearly defined from some weird abomination that looks like a hammer but isn't.
Lisp, Smalltalk, Haskell, Self are like a platonic circle . C++/Rust/C/Zig/Java are like a physical object that halfway looks like a wheel (trying to resemble a perfect circle) and half way a cube.
it's not coherent or complete.
>>
>>108995204
C# is Microsoft slop. They tried to be "cross-platform" and still fucking failed at it because they can't stop themselves from making everything proprietary and Windows-specific. Oh and have fun navigating their poorly written, bloated, slow documentation website.
There's a reason nothing that runs on Linux is written in C# and the few programs that do probably still use an unsupported legacy non-Microsoft C# runtime thingy. .NET Core was a big failure.
>>
>>108995583
Mathematic definition of a function.
Inputs (not mutable) that do not cause "side-effects" (I/O) that result in a specific output. Over the years plt designers made cope structures to cope with the shortcomings of this unrealistic model of computation.
No one actually agrees what it really means of course, but whatever. No one can even agree what OOP is. It's mostly meaningless fluff.
>>
>>
>>108995583
A pure programming language is one where there is no side effects.
Of course, this means that it is useless, since it cannot interact with the world. It could not print messages, send emails, etc, etc. It would be pragmatically worthless.
>>
>>
>>
>>108995665
What doesn't the real world know? Honestly? When rust came out, everyone in the world could see and reap the benefits of the writable xor shared model, an extension of hoare logic. Google already said they have virtually zero memory cups in real world rust. It meets the performance needs of actual users.
Where is your mythical garbage in all this? Next you're going to bring up formal methods ignoring the classic case of: the program is correct, but the proof is wrong. There is no purity in the real world and Godel's incompleteness should be the obvious thing to point to, to prove it.
>>
>>
>>108995674
It's not even a comparison. I'm not even saying anything about what Rust is trying to do in a narrow sense. I have nothing against the borrow checker. because it's a very specific problem that Rust is trying to solve. that's fine. In theory something like that could be implemented for compiled Lisp even. but that's besides the point.
The primary point is that pure languages offer a more comprehensive approach to programming that impure languages. that's it. that is all what I'm saying. why are pure languages not used in the industry? for probably the same reason why better tooling or methods or infrastructures aren't used in any industry. legacy reasons, things were implemented first this way and there is no reason to change from a business perspective or because most people just don't bother in general even in public matters. it doesn't say anything about better approaches however.
Tradition. that's it. that's why.
Real world shit: I'm trying to develop an App for mobile devices, were there better mobile OSes than iOS or Android? probably, most likely. but do I have a choice as a lone developer outside of their respective SDKs? No.
>>
>>
>>
>>
>>
>>108995726
Pure performance isn't the only metric. You can even write a kernel in GC languages with some modification, where you compile part of your code without GC to bootstrap the rest of it with GC.
Powerful programming or tooling for programming is a much more useful metric.
Carmack uses all the best IDEs with C++ so he can get the job done better. Linus the nigger doesn't even use text highlighting in his retarded gimped editor and barely codes anything above the kernel level.
>>
>>
for the real niggas that just want to fucking build shit: Clojure is a beautiful Lisp that also gives you access to literally any Java lib in existence. Babashka allows writing Clojure to replace shell scripts. ClojureScript allows writing Clojure and using any JS lib in existence.
>>
>>
>>
>>
>>
>>108996044
>for the real niggas that just want to fucking build shit: Clojure is a beautiful Lisp that also gives you access to literally any Java lib in existence.
this is all true!! It also sucks compared to Common Lisp, which also can call Java libraries easily, should you be as stupid to want to use libraries written in a shitty programming language, Java.
If you must program for the JVM, use Scala.
>>
>>108995592
>you're still conflating mutability with purity
No he isn't, quote
>Borrow check's single mutable owner is good enough model for any use case that requires purity
>purity has no use-case that isn't solved by Rust's borrow checking model
Maybe you should mutate your brain to add the ability to read
>Haskell solves all the problems Rust tries to solve
Which are?
>by simply committing to the purity
Which provides what benefit? Specifics please, no "muh data representation" repeated yet again
>>
>>108995717
>The primary point is that pure languages offer a more comprehensive approach to programming that impure languages. that's it. that is all what I'm saying.
What you're saying is fucking nothing. "More comprehensive" doesn't mean anything
>>
>>108995568
You are describing differences without actually making any arguments WHY the more platonically ideal version is better.
This is the problem with you academic retards. You come up with an idea and rather than treating it as an avenue to explore the field from a new perspective, you get fucking mindbroken and start thinking the entire field should twist and turn to fit the perspective of your idea. Nobody in the real world gives a fuck about true message passing, or making everything a list, or making all data immutable.
Your hammer analogy is retarded, rust isn't a "compromised hammer" it's just an easily accessible hammer in a toolbox that contains other stuff. Borrow checker is simply a tool that's enabled by default to prevent creation of certain types of memory errors, that's it. If you need to do something it doesn't support, you can turn it off for that part, and nobody will bitch about it. If you have a nail in rust, you use the hammer by default, if not, you use something else.
Meanwhile, haskell isn't a "complete hammer", it's cutting your fucking hands off to replace them with hammers, because you have a mental illness and you can't just use a hammer when applicable, to you swinging the goddamn hammer is the goal in and of itself. Nail? Hammer. Screw? Hammer. Measure? Hammer. Need to paint something? Here, have a paintbrush you have to hammer, we call it a monad.
What's actually painful is limiting yourself to one tool because you were bron wrong
>>
>>108996939 (cont)
I don't give a fuck about true message passing, I want a fucking error when I try to access something that doesn't exist and I want to statically categorize my types
I don't give a fuck about pure functions, i just want my data to not get corrupted and to do the computation as fast as possible. I WANT "side"-effect, that's the whole fucking reason I run a program in the first place
I don't need everything to be a list, I am not going to read the contents of a function at runtime, if I ever need to swap an action in a middle of a function I'll just DI it
and I want my shit fast
>>
>>
>>108996939
Yes, nobody in the real world cares about correctly modelling their problems. they just want silly assembly wrappers like C or Rust.
Of course you don't give a shit about abstract useful modelling. you're an assembly nigger. go punch some cards.
>>
>>108995620
not a single thing in this post is true except maybe that dotnet core is a failure adoption-wise, but that's only because the rewrite happened too late when all the companies have their stack established, probably using jvm.
There is no more comfy mainstream stack to develop shit in
>>
>>108996590
nah, Clojure is far more enjoyable to write than Common Lisp, IME.
>it SUCKS!
lmao, ok CL boy. I really do not want to shit on Common Lisp writers, for I thought we could be friends. but, frankly, your attitude is annoying as fuck, and I'm going to use my >15 yrs of experience to start shitting on you.
>>
>>
>>108997363
Nobody in the world cares about perfectly modeling a problem, especially not to the retarded rules of your OCD trigger. The correct model is the one that produces the correct answers, and that is the necassary, not sufficient, codition for good software.
I care about abstract USEFUL modeling deeply. Borrow checker is useful, not because it fits some retarded academic purism, but because it catches errors, saving me time. And when it doesn't, I turn it the fuck off, and use the time saved on not debugging the 99.9% of trivial code handled by BC to correctly model the 0.1% it can't handle
>>
>>
>>
>>108997345
>>108995717
And yet rust is relatively brand new and people are actively adopting it in spite of billions of LoC of C++.
Rust is useful. Your "purity" is not.
>>
>>108998561
Perfect modeling isn't even possible. It's nice to be able to shit out something in TLA+ to help you understand things, but you can never 1 for 1 a model with implementation. It's not useless, but it also isn't worth the effort 99.9999% of time, especially when it will most certainly be wrong or omit to define shit like temporal reality.
>>
>>
>>
>>
>>
>>108997345
Everything? Purity implies mathematical purity.
You cannot have a function that mutates its inputs because it changes the outcome of future calls of the function with that input. Functions don't need to be bijective for instance.
>>
>>
>>
>>
>>
>>108995204
>C# is mostly an upgrade to C++ except
except it's a completely different kind of language that requires an interpreted runtime to work, retard
after the compiler is done with C++ you've got machine code. not so with C#
>>
>>
>>
>>109002393
you argue like a Cnile
post a thing that proves you have any experience at all in interesting shit.
here is an issue report I wrote for Erlang after experiencing issues re-running client-authored code.
https://github.com/erlang/otp/issues/10450
>>
>>
>>
>>109002479
>two self-owns at once
lol, lmao
>lisp is c
kek
>dox yourself bro
no thanks
I contributed to scientific computing libraries in lisp, otherwise I write esoteric shit like wirthian compilers in x86_64 gAS.