“Fuck you … or not. One day … or two … or every day. For certain, when you least expect it”
(C++ errors involving memory pointers)
Rust is nice, unless you have a traits compilation error from a 3rd party library using types that are more difficult to write than C++ templates.
yeah as nice as it is what you can achieve with trait-bounds there are definitely trade-offs, being compile time and error messages, and sometimes mental complexity, understanding what the trait-bounds exactly mean… I really hope, that this area gets improvement on at least the error-messages and compile time (incremental cached type-checking via something like salsa)
I much prefer getting told of that it doesn’t match a trait than get 600 characters of which the majority is implementation detail of global allocators und from what exactly the string is derived.
Depends on what trait bound error messages you have had yet, I had 1000 lines long already, where it’s not obvious at all what is meant (and is often a very simple fix). But I’m sure this will get better over time, there’s already a bigger ongoing redesign of the type system solver, so maybe it will be integrated into stable rust soon.
One of the reasons i started learning rust was bc of how easy it is to get into it, or at least that’s how it felt for me. It wasn’t until a few months into consistently writing that I started to encounter things that I didn’t understand.
The good thing about Rust is that if you have no idea of any problem in your code, it very likely because your code is ok.
On C++ things are different.
Sounds like Rust propaganda to me >:(
Tbf, you have to be pretty far with Rust to get to a point where Rust’s compiler errors stop helping you (at least, as far as I’ve seen). After that, it’s pretty much the same
Yep use a little bit more deeply cascaded generic rust code with a lot of fancy trait-bounds and error messages will explode and be similar as C++ (though to be fair they are still likely way more helpful than C++ template based error messages). Really hope that the compiler/error devs will improve in this area
deleted by creator
Would know, I’ve never had a runtime error in Rust /s
Can’t have a runtime error if you don’t have a compiled binary *taps forehead*
(For the record, I say this as someone who enjoys Rust)
This is actually unironically a major benefit of Rust - compile time errors are supposed to be for dev mistakes and runtime errors supposed to be for user mistakes. Way easier to debug something at compile time instead of runtime.
‘it should pretty much never segfault’ uh, isn’t that the entire point of Rust? Unless you’re counting failing a bounds check as a segfault
deleted by creator
I like how this depicts how rust is designed more top down and C++ is designed bottom up.
How compiler builders see peppa:
https://www.deviantart.com/ian-exe/art/Peppa-pig-front-face-743773121
I think these two pigs are the best comparison of rust and c++ I’ve ever seen. Also considering the aesthetics, it’s so accurate.
How compiler builders see peppa:
even number of nostrils
Missed opportunity.
Then there’s Haskell that would remove (well, used to at some point) your source code file if you made any errors: https://gitlab.haskell.org/ghc/ghc/-/issues/163
The world’s angriest compiler.
When the compiler is being more helpful than you realize.
That’s actually hilarious
So that’s what inspired Vigil…
Reading their page gave me a good laugh. Didn’t know about this before, and I’m glad to have learned about its existence
Vigil deleted a function. Won’t that cause the functions that call it to fail?
It would seem that those functions appear to be corrupted as well. Run Vigil again and it will take care of that for you. Several invocations may be required to fully excise all bugs from your code.
Yeah. this bit got me
Perl is panel 1, except it’s missingno. doing the talking.
C just shrugs and says “Seg Fault.”
The range those words induce is crazy
deleted by creator
Probably forgot a semicolon
This joke is never funny; Forgetting a semicolon in c results in compile time errors, not runtime errors
Have you tried segmenting in a non-faulty way?
“Shit happenned!”
Clearly, you haven’t gcc & gdb…
I love gcc but it can’t make nested template errors any less horrifying
deleted by creator
If it were up to me I’d be avoiding templates altogether. Sadly, I don’t get that choice with 3rd party code.
deleted by creator
Do you know who ate all the function candidates?
deleted by creator
I would say that joke only works with template bugs, normally gcc gives fairly good directions.
Haskell errors:
Iä! Iä! Cthulhu
(b -> (a -> c)) -> (b -> (c -> c)) -> a
fhtagn! Ph’nglui mglw’nfah[[a]]
Cthulhu R’lyeh wgah’nagl fhtagn![45 lines of scopes]
Once you understand the type system really well and know which 90% of the error information to discard it’s not so bad, I guess.
GHC messages are complete and precise, usually telling you everything you need to know to understand, find, and fix the error, that may not even be on the place it’s actually detected.
It’s also in an alien language. That’s correct.
complete and precise
Exactly. It’s a perfectly condensed yet totally complete readout of all the data you might need for debugging. It makes mathematicians everywhere proud.
If you don’t actually need a complete set of information about possible exotic type choices just to see you put an infix in the wrong place that’s basically not the compiler’s problem.
(TBF, I wouldn’t want to try and mindread the programmer in my compiler either, but then I am a maths person)
I dunno. That set of information about exotic type choices helps me very often. And I can always ignore it when it’s not useful.
The bunch of “yes, compiled that module, everything is all right” messages in between them and warnings not surviving a second compilation bother me much more than the error messages. But learning to read the messages was not easy.
And I can always ignore it when it’s not useful.
I did mention that right off the bat. I made it sound unreasonable for comedic purposes, but breaking the jerk I actually do really like Haskell, and Haskell error messages.
What about the fact it invades your dreams and slowly drives you insane?
I literally had a type-theory themed stress dream a couple nights ago. I’ll leave it up to you if that makes this less or more funny.
Segmentation fault. :
Core obliterated.
deleted by creator
MySQL: you have an error near here.
Me: What’s the error?
MySQL: It’s near here.
Me: You’re not going to tell me what the error is? Okay, near where? Here?
MySQL: warmer… warmer…
Ah yes, SQL and their games.
MySQL: you have an error around here
Me: that’s the entire query. If you aren’t going to tell me what the error is, can you at least narrow it down?
MySQL: … Stfu
Oracle: You have this error in line 1
User: Hey, no, there isn’t anything to cause this error in line 1
Oracle: I’m telling you, it’s in line 1
User: Hum… How many lines are in my 10 lines query?
Oracle: 1
My favorite, since I’m not a programmer anymore, is excel
E: Your formula has a circular reference. I ain’t doing shit till you fix it
Me: where?
E: In your spreadsheet, I don’t fucking know
It’s ok, you run the expression debugger, which says the first step, which is all of the formula, will result in an error. So helpful.
Excel: taking ages to load a file
Excel: There is a link to another Excel document, but I can’t access it to update the value.
Me: Where?
Excel: To this document.
Me: … Where can I find the cell that contains this link?
Excel: I don’t know noises
Me: What if it is a named variable?
Excel: Yes.
And don’t even try to do a conversion of text to numbers in a big column. There’s a super fast way (name is eluding me) but if you respond to the error popup I imagine it looks at each cell of text, thinks says, “abracadabra you’re now a number!” for every row. It takes that long
Yeah, but which one i cooler?
Rust because having a package manager is important.
Even C has a package manager
Bebop, he would just submit his code to the Shredder.
Shredder = /dev/null confirmed?
Well at least C++ definitely is far away from cool, you can imagine the rest…
But he has a purple mohawk!
deleted by creator
Ever tried using typenum numerals in Rust? 😅
Try it and see the errors with something like
typenum::U500
.Or deeply cascaded generic code with a lot of trait-bounds…