God, I hate javascript so fucking much and the javascript ecosystem.
I think it works great. At least I’m don’t have to deal with Python
I never had any issues with npm. Moved to bun nowadays and still going strong. If I want to install something, I install it, and then it works.
Setting up anything with pip however…
The only thing that sucks about npm are when package dependencies are not updated and dependency hell becomes very real, but that’s not really the fault of the package manager.
Yeah, fuck virtual environments and different Python versions.
The puffer fish is Bash
Yep, it’s the one starting everything.
And doing nothing else. And still something manages to no be right.
Rust is still in the locker room having an argument with their coach (borrow checker).
C++ is home sick, currently the doctor (compiler) is not sure whether it’s got the flu or a terminal cancer.
terminal cancer
“I’m sorry, you’ve been diagnosed with :():;:”
“You have a couple seconds to live.”
Labelling the crab as C is sure to ruffle some exoskeletons…
As at least one nautically themed childrens’ book surely has it: C is for crab.
Coming at programming sideways feels more like a Haskell or Prolog thing, though.
Apple is for ADA
Ball is for BASH
Crab is for C
Dog is for D
Elephant is for Ecsmascript
Fox is for F#
Goat is for Go
House is for Haskell
Igloo is for
…okay I got stuck there.
Java has Duke
Ugh, I accidentally got a fake transparent background. Oh well.
Branding fail so bad that everyone forgets that Java even has a mascot.
I thought it was a cup of coffee? A hipster barista in 90’s Memphis style illustration would be most accurate I think.
Damn, I went searching online for some examples and got nothing that was really from back then. Just shitloads of AI vaporware slop. Time to dig out my old design mags I guess.
That would be the natural assumption, but Sun didn’t do it. I think there is a logo for books, but not one by Sun/Oracle.
There are dozens of us! Millions of devices and dozens of us know about Duke!
Fun fact, Duke is released to the public. I forget in what way exactly, but Oracle freed them (him? it?).
Igloo is for Idris
Jigsaw is for Java
King is for Kotlin
Lion is for LUA
Monkey is for …
Monkey is for MoonScript
N is for Node.js
O is for Objective-C
P is for Pascal
Q is for QBasic
R is for R
S is for Swift
T is for TypeScript
U is for …
Umbrella is for UnrealScript
Van is for VimScript
Water is for Webassembly
Xylophone is for Xod
Yacht is for YASS
Zulu is for Zig
Okay, I had to consult Wikipedia’s list of programming languages for some of those.
I mean, at the end of the day, if you really understand your language of choice, you know that it is jusf a bunch of fancy libraries and compiler tricks of top of C. So in my mind, I’m a fully evolved programmer in a language, when I could write anything I can write in that language in C instead.
I assume you’re joking but just in case you’re not.
That is extremely not the case.
only true if your language compiles to c. fortran peeps are safe.
I thought it compiles to LLVM intermediate representation and then to the machine code of the requested platform arch. Am I missing something?
Fortran is from 1957, LLVM is from 2003. It’s probably like C where there is a compiler tool chain that goes through LLVM like you describe and others that go directly to executables.
only if you design it using llvm. llvm is pretty new.
Ah ok I was referring to Rust specifically. Thanks!
yeah but rednax wasn’t.
I’m an 80’s/90’s BASIC bitch, so I’m still irrelevant!
10 PRINT "FARTS" 20 GOTO 10
Or, rather, most compiled languages are just syntactic sugar on top of assembly, and that’s especially true with C. (Oh, you can use curly brances and stuff for blocks? That’s sure easier to read than the label mess you get with assembly.)
Assembly is a little too high level for me. I prefer to directly write machine code.
You may as well be a script kiddie. I leverage my very steady hand and highly magnetized needle to write my code
It’s not what you can use that language to do - all general purpose languages are Turing Complete, so what you can do with them is exactly equal. It is about what the language will do for you. Rust compiler will stop you from writing memory unsafe code, C compiler cannot do that.
Fun fact, some languages are not turing complete and I believe people would still consider them programming languages. They’re typically targeted at making mathematical proofs.
I did say “general purpose”. And many proof assistants are Turing Complete actually, such as Lean.
I did say “general purpose”.
I did say “fun fact”.
…are Turing Complete, so what you can do with them is exactly equal.
But they’re only equal in the Turing complete sense, which (iirc) says nothing about performance or timing.
But how does the Rust compiler do that? What does it actually check? Could I write a compiler in C that does this check on a piece of Rust code?
C is so simplictic, that if I can write a piece of functionality in C, I must understand its inner workings fully. Not just how to use the feature, but how the feature works under the hood.
It is often pointless to actually implement the feature in C, since the feature already has a good implementation (see the Rust compiler for the memory safety). But understanding these features, and being able to mentally think about what it takes in C to implement them, is still helpfull for gaining an understanding of the feature.
Could I write a compiler in C that does this check on a piece of Rust code?
Well yes, but that code has to be written in Rust. The human has to follow rules to give the compiler a chance to check things.
C is so simplictic, that if I can write a piece of functionality in C, I must understand its inner workings fully. Not just how to use the feature, but how the feature works under the hood.
I don’t think that’s particularly more true of C than Rust or even Golang. In C you are frequently making function calls anyway for the real fun stuff. If you ever compile a “simplistic” chunk of C code that you think is obvious how it would compile to assembly and you open up the assembly output, you are likely to be very surprised with what the compiler chose to do. I’ve seen some professional C developers that never actually had a reason to fully understand how the stack works, since C abstracts that away and the implications of the stack don’t matter until you exceed some limitations.
I mean, yeah, most languages are turing complete.
Only those who lack a sense of humor.
Rust isn’t shown because it’s already completed the course
Not a word of a lie, I saw a “segmentation fault” error in JavaScript.
Can’t remember how we resolved it, but it did blow my mind.
Technically any language runtime can end in a segmentation fault.
For some languages, in principle this shouldn’t be possible, but the runtimes can have bugs and/or you are calling libraries that do some native code at some point.
Even safe rust can do it, if we allow compiler bugs
I have seen a Java program I wrote terminate with SIGSEGV. I think a library was causing it.
Yup, can confirm. We had a wrapper to a C++ library using JNI, so whenever this library crashed so did the entire JVM.
Ive also seen this, but not from js but node
Why is the crab not Rust. This is outrageous, it’s unfair
Rust would be some borrow checker compile error like
borrowed data escapes outside of associated function
argument requires that `'1` must outlive `'static`
rust errors are funny if you don’t know rust
News at Ten: Borrowed Data Escapes Outside of Associated Function
Those also happen to be errors you’d typically run into, if you don’t yet really know Rust…
I do run into them even though I use Rust for ~3 years now, but only in non-obvious cases, e. g. when all references to the borrowed data are dropped before the end of the function.
you can still segfault in rust iirc
Not in safe Rust. Only if you explicitly tell the compiler “I got this, don’t worry” but then fuck up.
I guess they fixed the weirdness involving calling main later in the program
As in, you call
main()
recursively? Don’t think, I’ve ever tried that in any language…
Rust: Downloading 7390327 crates…
Same with C and C++ libraries.
Definitely not as egregious as with rust though
Yes, but you also don’t get cargo to find C/C++ libraries.
I literally never had more than 10 dependencies for any standalone program (standalone as in not dependent on a whole ecosystem like KDE)
I feel like Rust would be some complaint from the compiler saying that some apparently unrelated struct can’t be Send/Sync for some inscrutable reason. Or something about pinning a future.
So it’s just JS with an even more immature spec
Rust and Cargo were built to be in a symbiosis with each other.
NPM is an afterthought of a rushed language.
I would disagree. Especially since unlike npm every part of cargo was through through with all the experience and knowledge gained from npm, pip, nuget & co.
I have a LOT more problems with npm over cargo. Also it’s 1 tool and not 100 different tools to do the same job (npm, pnpm, yarn, bun, deno, etc…)
I find it funny that the pufferfish blows up at its own gunshot
Why is openbsd the referee?
C trying to take the shortest path to the goal.
Would probably have won (and broken the universe), if the referee didn’t exist.Python is being even smarter by trying to underflow the distance to the finish line.
“npm install” in particular is getting me.
This implies that Javascript will get moving in the correct direction once it finishes installing dependencies, but it’s just going to get fucked with incorrect behavior that doesn’t even have the courtesy to throw an actual error.
incorrect behavior that doesn’t even have the courtesy to throw an actual error.
To be fair, this can be said of C. A C executable only really forces a crash out when you royally screw up beyond the bounds of your memory. Otherwise functions just return a negative value and calling code that never bothers to check just keep on going.
Golang is similar, slightly mitigated that if you are assigning any return value from a function, you must also explicitly receive an error and you know full well that you are being lazy if you don’t handle it. Well unless you use a panic/recover scheme but golang community will skewer you alive for casually suggesting that and certainly third party libraries aren’t going to do it that way.
No NullPointerExceptions in Kotlin.
The humble
!!
operator.Well, also the fact that all variables are non-nullable by default anyway.
Noob should’ve used PNPM