545
top 48 comments
sorted by: hot top controversial new old
[-] Naich@lemmings.world 100 points 6 months ago

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.

[-] grandma@sh.itjust.works 40 points 6 months ago

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

[-] 01101000_01101001@mander.xyz 16 points 6 months ago

Ah yes, the great filter

[-] kionite231@lemmy.ca 28 points 6 months ago
[-] Naich@lemmings.world 24 points 6 months ago

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

[-] dirtySourdough@lemmy.world 4 points 6 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?

[-] umbrella@lemmy.ml 1 points 6 months ago

i still have a z80 reference manual on here somewhere

[-] Cethin@lemmy.zip 17 points 6 months ago

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.

[-] Zangoose@lemmy.world 2 points 6 months ago

Another interesting low-level interpreter/emulated system to look into for anyone else trying to get started with this type of thing is the CHIP-8! It's a pretty basic 8/16-bit instruction set (there are 35 opcodes, the instructions themselves are mostly simple) and there are tons of detailed guides on making one and writing roms for them.

[-] WldFyre@lemm.ee 2 points 6 months ago

Turing Complete looks really interesting! How polished is it? Just looked it up and saw it was in early access

[-] Cethin@lemmy.zip 2 points 6 months ago

I would say it's very polished. It does everything you'd expect and has some nice QoL features. There was work on a big update that'd improve performance and things, but the last information about that was from Aug of last year as far as I can tell. That's not a big deal though. The game works fine without it.

[-] WldFyre@lemm.ee 2 points 6 months ago

Thanks! I'll try it out over 4th of July weekend!

[-] notabot@lemm.ee 10 points 6 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.

[-] GenosseFlosse@lemmy.nz 6 points 6 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!

[-] steersman2484@sh.itjust.works 6 points 6 months ago

Did the same in school on a Z80

[-] A_Very_Big_Fan@lemmy.world 3 points 6 months ago

You're a god amongst men around these parts.

[-] Valmond@lemmy.world 3 points 6 months ago

Same, and also for the C64 :-)

[-] Prunebutt@slrpnk.net 72 points 6 months ago* (last edited 6 months ago)

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

[-] NateNate60@lemmy.world 73 points 6 months ago

ASM is high level. Real programmers use punch cards

[-] sylveon 76 points 6 months ago

Real programmers use a magnetized needle and a steady hand.

[-] Prunebutt@slrpnk.net 34 points 6 months ago

There's an emacs-command to do that.

[-] Hupf@feddit.de 17 points 6 months ago

No, the emacs command is for the butterfly

[-] Prunebutt@slrpnk.net 8 points 6 months ago

Dang, I meant a neovim-Plugin

[-] Ziglin@lemmy.world 2 points 6 months ago

Emacs keybind?

[-] EntirelyUnlovable@lemmy.world 20 points 6 months ago

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

[-] boonhet@lemm.ee 42 points 6 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.

[-] duckythescientist@sh.itjust.works 42 points 6 months ago

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

[-] abbadon420@lemm.ee 10 points 6 months ago* (last edited 6 months ago)

There is no way ASM is high level

[-] MartianSands@sh.itjust.works 41 points 6 months ago

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

[-] victorz@lemmy.world 25 points 6 months ago

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.

[-] Ziglin@lemmy.world 1 points 6 months ago

Is it a chain though? I think it's more of a branching network that (almost?) always is stopped at quantum physics and it's theories or some form philosophy.

[-] victorz@lemmy.world 1 points 6 months ago* (last edited 6 months ago)

My mental model of it is a chain, yes. But you can define it however you like. It's just steps in some direction.

Maybe a cake would suit someone the best.

[-] Lmaydev@programming.dev 2 points 6 months ago

It's higher than machine code. It's degrees of highness. Any abstraction technically makes it high level.

[-] abbadon420@lemm.ee 1 points 6 months ago* (last edited 6 months ago)

It's not really abstraction though. It is more like syntactic sugar. In stead of 1000111011 you say ADD, but it is still the exact same thing. There is no functional, prgrammatical benefit of one over the other. It's just that asm is readable by humans.

At least thats as far as I understand asm. I haven't gone beyond NandToTetris

[-] Cethin@lemmy.zip 3 points 6 months ago

I would argue they don't know what that means really. Assembly is pretty much a mapping of words to machine code. It's just a way to make machine code easier to read. It doesn't actually change how it works.

A compiler re-arranges and modifies things so what you write isn't the same as the final program that is created. With assembly it is. It's not really an abstraction, but a translation. It doesn't move you further from the machine, it only makes it so you're speaking the same language.

[-] IsoSpandy@lemm.ee 13 points 6 months ago

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.

[-] MonkderDritte@feddit.de 4 points 6 months ago

I think C was 2nd, 3. is Java and Python, 4 SQL and 5th would be some hypothetical AI instruction language?

[-] thefool@sh.itjust.works 1 points 6 months ago

SQL has been around since the 1970s

[-] Blackmist@feddit.uk 6 points 6 months ago

That doesn't mean it's not higher level than other languages from more recent times.

[-] MonkderDritte@feddit.de 3 points 6 months ago

Level means level of abstraction. Right?

[-] mkwt@lemmy.world 1 points 6 months ago

When the gp's book says that C is a third generation language: I would guess the first generation is Fortran and the second generation contains ALGOL and BCPL. C was heavily influenced by BCPL. (get it? C comes after B)

[-] MonkderDritte@feddit.de 1 points 6 months ago

I think we mean different kinds of "generations".

[-] Lmaydev@programming.dev 2 points 6 months ago

Java applets and flash were an absolute security nightmare of the highest degree.

You were just running applications on your computer.

If you had to download and run an application on your computer to view a website now people would lose their minds (and rightly so)

[-] umbraroze@lemmy.world 12 points 6 months ago

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.

[-] 30p87@feddit.de 10 points 6 months ago

In the modern world it's completely subjective.
The lowest-level language is probably ASM/machine code, as many people at least edit that regularly, and the highest-level would be LLMs. They are the shittiest way to program, yes, but technically you just enter instructions and the LLM outputs eg. Python, which is then compiled to bytecode and run. Similar to how eg. Java works. And that's the subjective part; many people (me included) don't use LLMs as the only way to program, or only use them for convenience and some help, therefore the highest level language is probably either some drag-and-drop UI stuff (like scratch), or Python/JS. And the lowest level is either C/C++ (because "no one uses ASM anyway"), or straight up machine code.

[-] tatterdemalion@programming.dev 8 points 6 months ago

But quiche is tasty!

[-] PlexSheep@infosec.pub 1 points 6 months ago

C was always a high level language for me? As soon as I knew it existed at least.

[-] iAvicenna@lemmy.world 1 points 6 months ago* (last edited 6 months ago)

I guess this is what gen z programmers making memes look like

this post was submitted on 22 Jun 2024
545 points (100.0% liked)

Programmer Humor

19821 readers
104 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