this post was submitted on 31 Oct 2023
242 points (89.3% liked)

Programmer Humor

23995 readers
1365 users here now

Welcome to Programmer Humor!

This is a place where you can post jokes, memes, humor, etc. related to programming!

For sharing awful code theres also Programming Horror.

Rules

founded 2 years ago
MODERATORS
 
all 38 comments
sorted by: hot top controversial new old
[–] dauerstaender@feddit.de 42 points 2 years ago

Unsafe block detected. Extermination initiated. There is no hiding from memory safety!

[–] 30p87@feddit.de 32 points 2 years ago (1 children)

Personally,

echo Hello World!
[–] pranaless@beehaw.org 31 points 2 years ago (1 children)
use std::process::Command;

fn main() {
    Command::new("sh")
        .arg("-c")
        .arg("echo Hello World!")
        .spawn()
        .unwrap();
}

Like this?

[–] 30p87@feddit.de 10 points 2 years ago (2 children)

No, more like

use std::process::Command; fn main() { Command::new("sh").arg("-c").arg("echo Hello World!").spawn().unwrap(); }

.
Just a little bit shorter, as it seems /s

[–] funkajunk@lemm.ee 8 points 2 years ago (1 children)
[–] 30p87@feddit.de 6 points 2 years ago

I did too. Multiple times in fact, I had to look at the other Rust code!

[–] TadoTheRustacean@programming.dev 2 points 2 years ago (1 children)

Isn't echo a shell builtin?

[–] pranaless@beehaw.org 1 points 2 years ago

Yes and no. While coreutils does provide an echo binary, shells also have a built-in for optimisation purposes.

At first I had the code calling the binary directly, but then changed it to spawning a shell (and so using the builtin). It's very cursed either way.

[–] starman@programming.dev 16 points 2 years ago

Console.WriteLine("Hello World!");

[–] umbraroze@kbin.social 16 points 2 years ago (1 children)

Oh you fancy PC people and your fancy syscall instruction.

I still don't know why I could remember jsr $ab1e. I didn't even write that much assembly.

[–] AVincentInSpace@pawb.social 1 points 2 years ago

That looks like a 6502 instruction. What system is it from?

[–] r00ty@kbin.life 16 points 2 years ago

Or, you could just go the whole hog. Create your own simple CPU emulator, design a basic 8bitesque CPU, give it an output port that is the console, and load up some basic ASM to cycle through Hello World to the console port.

[–] Speiser0@feddit.de 13 points 2 years ago* (last edited 2 years ago) (1 children)

Definitely left. Right one won't be optimized. (And there are ~~so many~~ some mistakes in your inline asm...)

[–] TadoTheRustacean@programming.dev 1 points 2 years ago (1 children)
[–] Speiser0@feddit.de 6 points 2 years ago (1 children)

Mostly the missing listing of clobbered registers. Other than that it's mostly just that you're doing useless things, like manually putting the stuff into the registers instead of letting the compiler do it, and the useless push and pop. And the loop is obviously not needed and would hurt performance if you do every write like that.

asm!(
"syscall",
in("rax") 1,
in("rdi") 1,
in("rsi") text_ptr,
in("rdx") text_size,

)

("so many" was inappropriate, sorry.)

[–] TadoTheRustacean@programming.dev 1 points 2 years ago (1 children)

I am hopeless at getting the text_ptr simpler than i64::from_str_radix(&format!("{:p}", my_string)[2..], 16).unwrap(); How can i get it the normal way?

[–] Speiser0@feddit.de 2 points 2 years ago

Just use str::as_ptr().

Here's an example (disclaimer: I haven't used inline asm in rust before, expect issues): https://godbolt.org/z/sczYGe96f

[–] cypherpunks@lemmy.ml 8 points 2 years ago
[–] nonearther@lemmy.ml 7 points 2 years ago* (last edited 2 years ago)

console.log("Hello World!")

[–] lugal@sopuli.xyz 6 points 2 years ago
def main(): 
    print("Hello world") 
[–] DNOS@reddthat.com 4 points 2 years ago* (last edited 2 years ago)

Ec Emm this side is the best one ....

++++++++[< +++++++++>-]<. ++++[<+++++++>-]<+. +++++++.. +++.

++++++[<+++++++>-]<++. ------------. ++++++[<+++++++++>-]<+. <. +++. ------. --------.

++++[<++++++++>-]<+.

[–] raubarno@beehaw.org 4 points 2 years ago (1 children)

Why do you call write() for every char? You can always just pass a pointer with its length.

I am not skilled enough to do that ngl

[–] SpaceNoodle@lemmy.world 3 points 2 years ago
echo Hello World
[–] cypherpunks@lemmy.ml 3 points 2 years ago* (last edited 2 years ago)

dc <<<'10435358689859 70511561 11297399 23 5 3 2 ******P'

note: lemmy's "smart quotes" vs its input sanitization required me to code-format the second half of that line (and not the first half) to make it copy+paste runnable.

[–] MonkderZweite@feddit.ch 3 points 2 years ago* (last edited 2 years ago) (2 children)

plan 9 cat vs GNU longcat meme

edit: reddit image linking is broken?

[–] AMDIsOurLord@lemmy.ml 4 points 2 years ago (1 children)

Well, the GNU version does more and is more documented. The Plan9 code is frankly shitC, even for 1980z

But this monstrosity is something else

[–] MonkderZweite@feddit.ch 0 points 2 years ago

Of course, not always is shorter better.

[–] rhpp@programming.dev 2 points 2 years ago (2 children)

reddit image linking is broken?

Well you didn't link to a reddit image, you linked to Google image search result page which is not an image.

[–] MonkderZweite@feddit.ch 0 points 2 years ago (1 children)

I did that because the image didn't show in reddt.

[–] rhpp@programming.dev 2 points 2 years ago (1 children)

Looks like you need to insert the raw image link, not Reddit's media wrapper link.

plan 9 cat vs GNU longcat meme

[–] MonkderZweite@feddit.ch 0 points 2 years ago

Oh, so it's only my browser setup that doesn't show it.

[–] verstra@programming.dev 3 points 2 years ago

Camel case?

this_is_not_going_to_be_a_serious_debate

[–] Cwilliams@beehaw.org 3 points 2 years ago

I thought the whole point of rust macros was to abstract away the scary asm at zero cost!

[–] sj_zero@lotide.fbxl.net 3 points 2 years ago

? "Hello World"

[–] idunnololz@lemmy.world 1 points 2 years ago

Hello, world!

[–] cypherpunks@lemmy.ml 0 points 2 years ago* (last edited 2 years ago)

base64 -d <<<SGVsbG8gV29ybGQhCg==