this post was submitted on 22 Jun 2024
549 points (96.1% liked)

Programmer Humor

19564 readers
557 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 1 year ago
MODERATORS
 
top 50 comments
sorted by: hot top controversial new old
[โ€“] [email protected] 106 points 4 months ago (8 children)

I have programmed by looking up op codes in a table on a sheet of paper and entering the hex codes into an EPROM programmer.

[โ€“] [email protected] 44 points 4 months ago (1 children)

Did this in university in the very first week, quite a few people dropped out after that ๐Ÿ˜…

[โ€“] [email protected] 17 points 4 months ago

Ah yes, the great filter

[โ€“] [email protected] 29 points 4 months ago (1 children)
[โ€“] [email protected] 26 points 4 months ago (2 children)

Fucking ancient. This was for a Z80 based system using discreet logic for addressing and IO, constructed on a wire-wrapped board.

[โ€“] [email protected] 4 points 4 months ago

Oh that's interesting. I started poking around with a Gameboy emulator guide implemented in Python that intended to emulate a Z80. Got any good resource recommendation in case I decide to pick this back up and inevitably get stuck?

load more comments (1 replies)
[โ€“] [email protected] 16 points 4 months ago (4 children)

If you want some modern day fun with this, try the Zachtronics programming games; TIS-100, Shenzhen I/O, and Exapunks.

Or, my personal favorite I only discovered somewhat recently, try Turing Complete. You start by designing all your logic gates from just a negate gate IIRC. You eventually build up an ALU and everything else you need and then create your own computer. Then you define your own assembly language and have to write programs in your assembly language that run on the computer you've designed to complete different tasks. It's a highly underrated game, although it takes a certain type of person to enjoy.

load more comments (4 replies)
[โ€“] [email protected] 11 points 4 months ago

Ah, memories. That was me on a Spectrum. It's all fun and games until you forget to save (to tape) and your code hangs the machine, losing everything.

[โ€“] [email protected] 7 points 4 months ago

Did the same in school on a Z80

[โ€“] [email protected] 5 points 4 months ago

When I was young, we didn't have hex codes, we only had 1 and 0s. One time we where all out of 1s, and I had to code a whole Database system with only 0s!

load more comments (2 replies)
[โ€“] [email protected] 72 points 4 months ago* (last edited 4 months ago) (3 children)

I once knew somebody who supposedly thought that ASM was high level.

[โ€“] [email protected] 79 points 4 months ago (2 children)

ASM is high level. Real programmers use punch cards

[โ€“] [email protected] 78 points 4 months ago (3 children)

Real programmers use a magnetized needle and a steady hand.

[โ€“] [email protected] 35 points 4 months ago (1 children)

There's an emacs-command to do that.

[โ€“] [email protected] 16 points 4 months ago (1 children)

No, the emacs command is for the butterfly

[โ€“] [email protected] 7 points 4 months ago (1 children)

Dang, I meant a neovim-Plugin

load more comments (1 replies)
[โ€“] [email protected] 22 points 4 months ago

REAL programmers tap into the electron flow across the CPU and set bits in real time

load more comments (1 replies)
[โ€“] [email protected] 44 points 4 months ago

Once met a man who said he loved assembly language because it was so much nicer than punch cards and FORTRAN, but C was OK too.

This was last year. In his defense though, he's been retired for years, used to work as a professor.

[โ€“] [email protected] 45 points 4 months ago (1 children)

Wait until you learn about micro ops and processor internals. That somebody isn't as wrong as you think.

[โ€“] [email protected] 7 points 4 months ago* (last edited 4 months ago) (3 children)

There is no way ASM is high level

[โ€“] [email protected] 44 points 4 months ago (1 children)

It's a matter of perspective. To someone who's job is to write the system which interprets ASM, ASM is high level

[โ€“] [email protected] 26 points 4 months ago (2 children)

Exactly. For every level of abstraction, the abstractor is the high level and the abstractee is the lower level. Those aren't real words perhaps, but you get what I'm saying. It's all relative along the chain of abstraction.

load more comments (2 replies)
load more comments (2 replies)
load more comments (1 replies)
[โ€“] [email protected] 47 points 4 months ago (2 children)

I am once again asking programmers to explain the joke

[โ€“] [email protected] 64 points 4 months ago (2 children)

C was originally created as a "high-level" language, being more abstract (aka high-level) than the other languages at the time. But now it's basically considered very slightly more abstract than machine code when compared to the much higher level high-level languages we have today.

[โ€“] [email protected] 26 points 4 months ago

Other way around, actually; C was one of several languages proposed to model UNIX without having to write assembly on every line, and has steadily increased in abstraction. Today, C is specified relative to a high-level abstract machine and doesn't really resemble any modern processing units' capabilities.

Incidentally, coming to understand this is precisely what the OP meme is about.

load more comments (1 replies)
[โ€“] [email protected] 30 points 4 months ago* (last edited 4 months ago) (1 children)

To add on to @[email protected] 's comment, "High Level" in terms of programming languages means further away from how the computer processes things and "Low Level" means very similar to how machines process things. For example, binary and hexadecimal (16 bit) machine code such as "assembly language" are both low level.

Imagine if program interpreters were building blocks, then 6 layers of abstraction would be very tall or higher level.

[โ€“] [email protected] 5 points 4 months ago (3 children)

This is pedantic, but assembly languages get "assembled" to machine code. This is somewhat similar to higher level languages being "compiled," which eventually becomes assembly which gets assembled. The major reason why these are different is because a compiler changes the structure of the code. Assembly is a direct mapping to instructions. It just converts the text into machine code directly, which is why it's easy to go from machine code to assembly but decompiling doesn't give you identical results to the original source code.

Also, binary and hexadecimal are just different ways to view the same binary data and aren't different things. There is only "machine code" which is a type of binary data but you can view binary with any arbitrary base, though obviously powers of 2 work better.

load more comments (3 replies)
[โ€“] [email protected] 13 points 4 months ago (10 children)

When I learnt programming (back in early 2000s) the textbook said C is a high level 3rd generation language with 4th gen languages being something higher (I don't remember what examples were given specifically). This is back when the java applets and action script for flash were the hot things. How I miss the days without the world being cursed by JS.

load more comments (10 replies)
[โ€“] [email protected] 12 points 4 months ago (1 children)

I mean, C is a high level language? Now, sure, C isn't a super expressive language and every C statement compiles to very few assembly instructions comparatively speaking, but it has a whole lot of stuff that assembly doesn't have. Like nice loops and other control structures and such, and not worry about which processor registers are used.

load more comments (1 replies)
[โ€“] [email protected] 8 points 4 months ago

But quiche is tasty!

load more comments
view more: next โ€บ