What surprised me the most was the speed of the compilation, must be a very small program. I tried to compile Godot from source once. Force-stopped it after 3 hours
There’s a reason the play is called waiting for Godot
How many cores do you have and what compiler was it ? Also RAM can help with huge codebases iirc. When I was working with UE5 I had the best Ryzen available with 128 Go of RAM, could compile the engine (which is much bigger than Godot) from source in less than 2 hours iirc (yes that is a full clean+rebuild, not just compiling recent changes)
i7-7700 with 16GB of RAM :/
That should be more than enough ram for your quad-core cpu
Yeah that would do it. Multi threading doesn’t work that well for games but it’s usually great for compiling stuff, and 8 threads ain’t that much.
Why are you trying to compile an actress? What is a human’s “source”? Their DNA? I’m surprised that the compiler even tried.
This is why I will never touch Javascript again. Long ago when I worked on web stuff, half my workflow was spent in the debugger tracing garbage to find where a typo was. The industry moved to Typescript, and now assuming the strictness checks are enabled, if some Typescript transpiles successfully, I can be 95% sure whatever fuckup I observe at runtime is a logic problem.
Weakly typed languages were an awful idea. But in general, if the compiler isn’t able to detect most runtime issues (like with C++ here), it’s not going to be the most productive language to use for building solutions compared to smarter alternatives.
I’ve thought about moving to typescript. Do you have suggestions for a 20+ year JavaScript dev?
Try porting a very small bit of behavior into a new tiny library or module that is Typescript based and independently published. Enable the strictness checks in tsconfig - really, really resist the urge to use any, and enforce that any is disallowed in tsconfig. Familiarize yourself with its utility types that really trip new authors up. “Record” comes to mind here, and others that involve generics if you haven’t before worked with generics. Some of the type error messaging can be pretty obtuse - don’t be afraid to paste them into an LLM (or use Copilot enhanced Intellisense) to explain what it actually means. IMO the type violation messaging is a weak dev experience point for new authors, so don’t sweat it if you occasionally “struggle to make the squiggles go away”.
Just try it. You can usually convert a single file at a time. Start small (or even with a pet project)
Meanwhile, Rust punches you in the face for the mere suggestion. Again. And again.
Python happily nods, runs it one page at a time, very slowly, randomly handing things off to a C person standing to the side, then returns a long poem. You wanted a number.
Assembly does no checking, and reality around you tears from an access violation.
EDIT: Oh, and the CUDA/PyTorch person is holding a vacuum sucking money from your wallet, with a long hose running to Jensen Huang’s kitchen.
Rust just keeps telling me “you didn’t actually learn how references work” over and over
Lifetime annotations go brr
Just me or is the single speech bubble loop in the 4th panel weird?
Very. It’s like they’re both saying it in unison.
It makes sense to me. You start in the top left like how you read and then you get a direction for the order of the conversation. I read it naturally at intended the first time through.
It reads fine. It’s the connection between the bubbles that’s incorrect.
Ah, C++. An endless supply of footguns where the difference between a junior and a senior dev is knowing what parts of the language to never use.
Real C++ programmers pass by const ref and tell pointers to fuck off.
You can also make everything a smart pointer and be done with it.
I can count on more than one hand the number of large scale projects where converting everything to smart pointers fixed major memory issues. Even if smart pointers can’t handle circular references, the number of projects that just don’t manage their memory correctly at all and were fixed by introducing these tools is way too high.
This is a bit embarrassing but the last time I actively worked in C++ it was with Qt and pre C++11.
Almost the same as me. All kinds of programming jobs. I usually end up working in Python or C, for embedded systems work.
Of course, if you’re talking hobby, it could be anything.
Which kind of smart pointer, with which kind of footgun? I mean, it’s better than not even trying I guess, but if it was actually a full solution you’d just have Rust.
You’re right. It’s a stop gap, but when you’re talking about a code base that has been maintained for 20 years plus you can’t really sell re-implementation.
Most recently it was with an older version of C++ using shared pointers.
const ref or unique_ptr if you need ownership
I thought C++ was meant to get rid of C’s footguns?
It’s almost backwards compatible. You can use old or new foot guns.
Hooray, choice!
C makes it easy to shoot yourself in the foot; C++ makes it harder, but when you do it blows your whole leg off.
- Bjarne Stroustrup
Is C++ the first enemy that managed to win against one punch man?
Am I bad at programming?
No, it’s the language thats wrong.
I mean, this is correct in many cases, unironically.
It should be one of the core purposes of a programming language to help humans to write the code they intend. If a language doesnt do that then it’s bad.
Except that many other languages have proven that C++ is simply terrible at providing meaningful errors.
The whole point of a segfault is that you can’t really know anything about it. Even in rust, when you get a segfault there is no meaningful error.
I wish there was something like that for SQL
We can always make a Rust Query Language
Feels like some arcane divination magic, I WANT IT
Valid languages:
- HolyC
That’s it
Brainfuck has entered the chat
So? Do you really expect the compiler to UNDERSTAND the code?
Here is a grammatically correct phrase for you to think:
Compilers don’t paint tangential apostrophes unless the storm value is deeper than radish. Fraggles love radish.
Congratulations, you’ve illustrated the difference between syntax and semantics. But any competent compiler also handles semantics (just in a separate phase of compilation), because that’s necessary for any useful conversion to machine code, not to mention optimizations.
It’s more like they handle a smaller, toy version of semantics that you can actually code a compiler for. In OP, something semantically correct in that version but not by common sense was accidentally written.
Maybe an early LLM that talks about picking up fire would be a better analogy.
This is something that Rust is specifically designed to prevent.
C/C++ is mildly obsolete now, basically. Breaking the memory model is not really a small defect that’s a matter of taste.
There are C++ analyzers like this which are also designed to prevent it (if you have no choice between languages).
I’ve seen things like this posted several times on here. It always turns out it doesn’t actually catch all the possible problems, or it’s garbage collected, or it’s non-usable for real code.
If it was that easy, the people who wrote Rust with all it’s complexity and divergence from the norm were idiots, and I really don’t think they were.
It’s pleasure for me to write in rust, I really like how fast I can deploy a working solution (including debug time). As I mentioned, there are situations when, for some reason, you cannot do without C++. But you are right cpp-analyzers do not solve all possible problems.
Prevent what? UNDERSTANDING the code?
Yeah, Rust is quite successful in that :)
That’s a rather old joke. Modern compilers print more adequate things on STL/templates related things.
And it doesn’t make Rust any better.
Yeah, I know, that all just a humour. I almost always use C++, inspite of knowing rust (cz no jun vacncies for rust, but still). There is no modern language which is absolutely better than other one — compromises are everywhere, that’s why it’s a silly topic to argue about.
You do not come across as clever as you think that you are when your central point is that you personally are not capable of understanding code written in a different programming language.
I feel like a really bad job has been done of making it simple, honestly. Or at least was last I checked.
Pointers allow aliasing XOR mutability. There’s all kinds of nuance layered on top of that if you look in the compiler developers resources, but that’s just to allow for all the different kinds of sugar people want in a modern language.
Man, fraggles really do love radish though.
See? I’m telling the truth :)
I kinda want to look up Fraggle Rock to see what that show was about, but I’m worried I’ll be disappointed in my former self’s taste. I know I watched it when I was like 4-6 y/o.
I watched it when I was 30 as a method of learning English. It wasn’t too childish.
Typescript on the other hand: Exwuse me sir, you seem to have a little oopsie right here. Oh right! Let me just fix that right up.
HERE ARE TWO THOUSAND ERRORS! YOUR PUNY LITTLE BUFFER CAN’T EVEN SCROLL BACK TO READ THEM ALL! AND YOU CALL YOURSELF A PROGRAMMER?
I mean, the comic is fine I guess, but if it implies the Cpp lady is hitting you, it’s not. That would be the kernel, the lady did what you told her to do.
In some build modes clang will simply put a trap where it sees undefined behavior. https://clang.llvm.org/docs/UndefinedBehaviorSanitizer.html
Not saying your wrong, just a fun fact I guess
Yeah that is fun, credit where it’s due, compilers do a lot of cool work behind the scenes.
If undefined behavior is triggered anywhere in the program, then it is allowed by the standard for the process to ask the anthropomorphized compiler to punch you.
100% based and standards-compliant comic
Makes me think of:
deleted by creator