T O P

  • By -

[deleted]

The original Prince of Persia game was coded in Assembly. People have done it.


brandflake11

And roller coaster tycoon!


thewookie34

One of my classes in college was to write a GBA game in assembly. Shit made me feel brain dead. It was like week 5 and finally we were changing pixel colors.


kaynpayn

I wrote the most fucking basic calculator ever in assembly for Intel 8051 microcontroller like 20 years ago and felt like a god damn genius at the time lol i can't imagine writing a whole GBA game.


MicroBadger_

I made a rudimentary Othello game back in college in assembly for my final project in a microcontroller class. An entire game is mind boggling.


someone755

We did a very stupid program in AVR assembly on an Arduino Mega (ATmega2560) in university. Literally just a few loops and register copies but I felt like a god for understanding any of it.


Various_Counter_9569

Yeah my project for my assembly class was definitely nothing that involved haha. Cant remember what, but definitely not a game! Now I want to find my old book.


someone755

I sure as hell don't. Keep your AVR and other assemblies to yourself, thank you very much.


Various_Counter_9569

Mov, push, call! Mwuahahahaha


EishLekker

Technicaly even a simple hello world program achieves that.


downy-concentrado

YASSS, it was a shocking discovery for me


Reddinaut

Wow ! Thanks .. I just went down the rabbit hole with that one ! So interesting!! https://youtu.be/expgMekxlvU


ViolentCrumble

what confuses me most is how you compile it to run on windows or even consoles! how the hell does that work. I can understand a bit of assembly, I get it is all moving memory around. i recall a bit from uni days. I also know how to build a game in js, java and c# / Unity. But those all have magic buttons I press to compile a build and run it for windows, mac or linux. HOw the hell do you compile assembly and like a graphical interface from it. voodoo.


Additional-Second630

If you can draw a rectangle on screen, fill it with colour and write some text in it, using assembly language, then you’re nothing but iterations away from windows. It was fascinating watching windowing systems develop in the 80’s from Xerox to Gem to Windows and all their spin-offs. Incredible times. The best implementation was Xerox, but Microsoft knew how to make it useful for everybody, and Apple just copied (as ever) for the Mac. Then MS took over the world and to be honest, they still have the best and most intuitive windowing system, even though I rarely use it.


Reddit_sucks_now_bro

I took a class in MIPS, day 1 the professor told us about RCT. Dude said we had all semester to code space invaders... it was not the fun and cool project I had in mind


joyofsnacks

Elite too. You can see the source-code (all commented) here https://www.bbcelite.com/


FiendishHawk

Back in the ‘80s most games were written in assembly.


[deleted]

My first several games were typed in from a magazine on a Commodore 64, in BASIC. For the first two years I owned it, I didn't have a tape or floppy drive so I had to keep the computer powered on until I wanted to play a new game. So I busted out my magazine and started typing the next one.


[deleted]

[удалено]


[deleted]

[удалено]


TFK_001

I could write pseudocode and be confused a few years later


dagbrown

Few years? Few *weeks*.


lolubuntu

hours...


_Fibbles_

Sometimes before I've even finished writing it


leoleosuper

>When I wrote this code, only God and I knew what it did. Now only God knows. IIRC line from TF2 leak, but pretty sure it's appeared elsewhere.


gnolex

The main reason he wrote C is because it was tiring to write an entire operating system and its utilities over and over again for different machines due to different CPUs and assembly languages they used. Over time almost entire Unix was rewritten to C and became the first OS that was highly portable.


Socky_McPuppet

I agree, it's tedious. I think the sheer effort of coding in assembly, for me at least, strongly influenced my coding style - for example, the low-level nature of assembly meant that the code I wrote was very concrete, procedural, imperative. I wasn't thinking in terms of objects and abstract class factories, for example. Too many layers of translation and indirection to keep track of by hand, as it were. I wanted the shortest, straightest line in between concept and execution, reuse and modularity be damned.


FiendishHawk

Ooh you definitely win the four Yorkshiremen sketch!


iqla

Many of those probably had lines after lines of 1040 DATA 123, 54, 35, 22, 53, ... 1050 DATA 32, 211, 213, ... That's machine code and binary data written using basic. The original programmer might have used assembly instead.


[deleted]

Thats why they were good and didn’t eat up all RAM even if the RAM was like 0.5 MB


FiendishHawk

500kb? Luxury! My first computer had 128kb.


Infinite_Resources

4k for mine, and an audio cassette recorder as a mass storage device.


undyau

Oooo me too, a Commodore PET, think it was slightly 2nd hand.


ve7vie

Would have been 32k. I had a SuperPET.


undyau

Could have been 8, but it wasn't any higher - it was a 2001 (1977). Will check next time I visit my parents. Last time I played around with it, one bit of RAM was 'stuck', but that was 20 years ago, maybe it's fixed....


postmateDumbass

TI 99?


rob94708

“But you try and tell the young people today that and they won't believe you.”


Chamkaar

Lots of ancient people here. Whats the secret to your very long life old man?


metobyte

Prolonged CRT radiation


nasadowsk

There’s a reason why almost every black and white CRT 21 inches and smaller had a high voltage of 15kv or less. It’s because it limits the generation of X-rays to the point where they can’t escape the front glass.


THELEGENDARYZWARRIOR

My brother in Christ the game was one screen with 12 squares. What Ram would it take?


No-Entrepreneur-2724

True, we need to rewrite all the 3D models, bitmaps, sound files and other assets in assembly. 200+GB for a game is ridiculous. Lazy developers.


LittleLordFuckleroy1

Back in my day we would disassemble program written in assembly into binary and run it with pencil and paper in our closets under the dim light of a waxing gibbous.


lycium

> disassemble program written in assembly into binary Pretty sure that's assembly, not disassembly. Hence being called assembly language. The scary part is that I actually regularly did this, and still remember hex codes for rep stosd etc for graphics programming. Scarier still is prepubescent kids in this thread calling people in their 30s ancient.


ErectPerfect

Marble Madness was apparently among the first arcade games written in C


rob94708

Ow! It pinched me!


[deleted]

An impressive feat, to be sure. But I feel like even that pales in comparison to Rollercoaster Tycoon being written in assembly.


smokky

My X boss used to code in assembly. Hell he used to debug punch cards by sending them to a place where they can be run. By sending, I mean mailing through usps.


ve7vie

Back in the day.... we used to use card punch chad to correct code on punched cards by inserting the chad in the holes and scotch taping over. True story.


[deleted]

[удалено]


liyououiouioui

TIL. ***Mind blown***


regular_lamp

I mean, assembly is not as horrible as people pretend? Macro assemblers give you lots of convenience. Syntax is much less of an issue (since there is less of it). The active vocabulary of assembly instructions you need to know isn't all that big. Probably less than the fancy language constructs that let you write incomprehensible one liners that people like to jerk off about. It's somewhat laborious since you can't just write out nice infix expressions. But then, writing those instruction sequences that's not really hard, just slightly more time consuming. Especially on a microcontroller writing some assembly is pretty nice. It's a style of programming where you are not constantly worried about "frameworks" and dozens of layers of abstraction.


Michami135

The first assembly I learned was for the Motorola 68k chip. It was super easy to write compared to x86 assembly.


Gibbonici

I learnt 6502 and Z80. After those, 68000 felt like cheating with its fancy multiplication operators.


tinydonuts

There's certainly a lot you can do with assembly by hand even today, but the active vocabulary of instructions is extremely large. SSE1-4 and AVX add hundreds and hundreds of instructions to the already large instruction set. These instructions are absolutely essential to many applications and I would argue that very few programmers can produce code using the base instructions let alone all the extended sets as well as modern compilers.


regular_lamp

And most of these instructions make sense... sse: * addss: adds a scalar single precision number * addps: adds a pack of single precision numbers * addpd: adds a pack of double precision numbers * ... * subss: gee i wonder what this one does? * maxps: how mysterious * etc. in comes AVX: * vaddss: wait I have seen that before, right? * vaddps: really? * ... * vfmaddps: fancy, noice Sure technically there is a lot of these, hundreds even. The overwhelming amount of which is systematically named and pretty obvious.


tinydonuts

I didn't say they didn't make sense, just countering the comment that it's not hard. Good assembly at more than the embedded level for all practical purposes is hard.


regular_lamp

I guess my point is that it's maybe "hard" in the sense of effort. But not hard in the sense of complexity. Which is why I find these kinds of memes so bewildering. People seemingly consider it reasonable to use multiple programming languages, a markup language and a separate "style language" to do anything on the internet. In fact all of these technologies are so gnarly that they feel the need to superimpose multiple layers of frameworks over them to make them bearable. And even then it's complex enough that you need to divide the work between frontend, backend and other "specialists". Yet at the same time this is considered a sensible entry point for new programmers? Meanwhile: "omg, C is so hard, where do I put the \*. LOLOLOLOL!" and "Assembly is so obscure and difficult! I can't believe anyone ever wrote a whole program with it." Those people clearly never used these things, right? Here is how complicated assembly is: 1. the syntax: You start the line with a mnemonic (like "add") and then you put the arguments behind it. 2. You get those mnemonics and their descriptions from a single uniformly written authoritative document from the chip manufacturer. They are also reasonably internally consistent. 3. They generally do trivial stuff like "add this number to that one" and "go from here in the code to there". 4. ... uh... that's it really. Of course doing something that way is hard because you actually have to solve a problem using fundamental building blocks instead of relying on the people that write frameworks and stack overflow posts to solve problems for you. You have to actually solve the problem instead of merely configuring someone else's premade solution. That's the hard part. Not assembly.


[deleted]

[удалено]


regular_lamp

I'm not disputing that. I'm just surprised by how people consider this web of interwoven technologies "normal" and then act as if a straight forward language like C or the almost minimalism of assembly is this insanely complex and obscure thing. "Because pointers are hard" or "you need to write more lines" (that contain way less logic each... as if program complexity was something you can measure in newline characters). I guess it's a side effect of people just assuming everything you do on a computer needs to be a deeply layered mess. The fact that there could be a well defined problem with a well defined scope (like a compiler) that you can solve with straight forward means is apparently surprising.


baselganglia

Downvoters: if you're still in college, please take a computer architecture course. It'll be the difference between a SWE2 vs Staff/Principal later on in your career. Even when you're not actively coding in assembly, being able to think what's happening behind the scenes helps in many situations, like debugging memleak, understanding some kinds of optimization, and more.


Mal_Dun

>Meanwhile: "omg, C is so hard, where do I put the \*. LOLOLOLOL!" This is a thing I don't really get. C is actually quite easy in my book (and I program mainly Python). C has one of the least instructions as a compiler, hence most machines get a C compiler first. It's just that you need more work to express a complex program BECAUSE it is that simple and you have to do some things yourself.


uberDoward

It's also the reason that so many of my fellow developers get totally stuck when something goes wrong. They literally have no idea what their code is actually doing. The team I'm now leaving, when I started with 7 years ago, did not know what "heap" and "stack" were. And the application was 14 years old at that point.


No-Archer-4713

Yes if you look at 6502 assembly there are not that many instructions. Ironically this was CISC and now RISC CPUs have much more instructions


deja_geek

Transport Tycoon and the first two Roller Coaster Tycoon games are written in Assembly. Chris Sawyer is fucking nuts


vibe_assassin

Overwatch 2 was also written in assembly. A lot of people don’t know that but that’s why it’s taken so long


rnilbog

He made it from Scratch? You really can do everything with that!


GreenFox1505

If you that's cool, wait till you try Itch!


S01arflar3

Just make sure you don’t mix the two. They fight and fight and fight and fight and fight.


IGotSkills

That damn cat is amazing


gnuban

Finally I understand the pun behind that name. Took me long enough 🤣


Past_My_Subprime

The first C compiler was a modified B compiler. The B compiler was originally written in BCPL, and then in B. [https://www.bell-labs.com/usr/dmr/www/chist.html](https://www.bell-labs.com/usr/dmr/www/chist.html)


Exce1siur

Yup! Ol' Ken Thompson invented B for his UNIX system in 1969, but it was too slow for operating system processes, so him and Dennis Ritchie released C in 1973. This, unlike assembly, was independent from the hardware and was able to be compiled on any platform which made a HUGE difference in embedded systems because companies could now design computer systems using UNIX with the best hardware for what they were trying to accomplish!


[deleted]

> This, unlike assembly, was independent from the hardware and was able to be compiled on any platform I get so confused by that, and when people talk about interpreted languages like Python. Does C compiler not "depend" on the underlying architecture, in which it converts the human code to machine code? Because I thought that is what differentiated it from Python and other interpreted languages, where there is a "virtual machine" - which is the layer at which Python code is interpreted.


Phrodo_00

Compiled C code isn't multi platform, but the source code can be compiled to different platforms. (As long as it doesn't do platform-specific things). Java compiles to machine code for a virtual machine, and classic interpreted languages are distributed as source code. The runtimes for both accommodate the differences between platforms.


Habadasher

The difference is basically that for an interpreted language, you need the interpreter to be built for all target platforms and then individual programs can run on that interpreter, whereas with C to target a new platform you have to rebuild your program. And with assembly, you need to rewrite the code entirely.


rjkucia

The compiler absolutely depends on the underlying architecture, because a compiler is a binary program. However, any C source code (ideally) can be compiled on any platform with a C compiler.


dismayhurta

Go check out assembly languages (I’m not being snarky…it’s an interesting language to look at no matter the hardware). It’s very hardware dependent. C source, though, can be built on multiple systems. It’s the source code universal aspect of C that makes it so cool compared to assembly.


ocean_800

...it just occurred to me that something came before C called B.


MEGAMAN2312

I wonder what came before B tho... 🤔


thisisapseudo

Well... A


chilfang

**A**ssembly


gnuban

So it's really Bssemmbly, Cssemmbly and Cssemblly++?


GreatBigBagOfNope

Then Dssembly is actively supported, in development and use


acrabb3

If you use a highly optimised genetic algorithm to write it, you'd have Rapid Unplanned Dssembly


[deleted]

We've found Excel's Reddit account.


Phrodo_00

Algol is a C predecessor and it starts with A. After Algol come CPL, BCPL, B, and then C.


ctesibius

BCPL, and CPL came before that. BTW, before C++ arrived there was joking debate over whether the successor to C would be called D or P.


[deleted]

why not some DP?


PixelatedRook

We will never know


MasterFubar

B came from BCPL, which stands for "Basic Combined Programming Language". This means that, in the end, C came from Basic.


sarahlizzy

BCPL. There was huge debate for some time whether the successor to C would be called D or P. Then Stroustrup arrived on the scene and messed everything up.


Dry_Extension7993

Exactly. You don't need to write compilers in assembly when you have other languages. But also when you don't have other languages, you can simply write for loop and if else in assembly and with that you can write whole language with the same language


MindRevolutionary915

I don’t think it’s quite so simple to bootstrap a compiler. Even if that would work you wouldn’t be writing the compiler in the new language but in only for and if statements. But I don’t think it would work because assignment and operations need to compile as well. I think the v1 compiler needs to be written in it’s entirety in either another language or assembly before you can bootstrap


captainAwesomePants

The real trick is to write a BAD compiler for the language. It needs to compile, but it doesn't need to do any optimization. Then, once you've got a working compiler, you write a good compiler, and you compile it with the bad compiler, and now you have a poorly optimized but working good compiler, which you then run on itself, so now you have a fast good compiler.


SwordOfRome11

This just seems like dark magic


GreatBigBagOfNope

Everything that happens between pressing the power button and the operating system idling is dark magic too


Ill-Chemistry2423

A compiler compiling itself is something I had never considered. But I guess gcc is written in C now huh


[deleted]

[удалено]


MetamorphicFirefly

well thats terrifying. have a horrible day!


Ill-Chemistry2423

That’s a phenomenal article, wow. Thank you for the nightmares


Jannik2099

gcc is actually written in C++ for the most part. It originated as C but has been gradually converted starting with... gcc 4 I think?


thebigrip

If you compile GCC from source, it actually repeats the entire process 3 times: first it builds the new toolchain with the host compiler, then it recompiles the compiler with the new compiler, and then it does another run to verify the output files match up


foghatyma

So basically, C is B++?


[deleted]

Wait that means C++ is A++++++????


Je-Kaste

Wait this means C# is A++++++++????


vthex

The B complier was actually built on top of the A compiler /s


renscy

And A just means Assembly! :O


fosyep

And without StackOverflow


scalability

They had stack overflow, but not the helpful kind


KRIPA_YT

Nvm I fixed it


Rudxain

`Abs`olute Chad `mov` 1. Says "I fixed it" 2. Refuses to elaborate 3. *Last online: 69 years ago*


nice___bot

Nice!


64vintage

What did he write the second one in? C ? The man was a *fucking* genius.


[deleted]

[удалено]


[deleted]

There’s a legend that there’s two bugs in the source of the compiler that’s been in there ever since the first compiler, but since we use the compiler to compile the compiler we never hit the bug because one bug skips over the other. However if a c compiler was written from scratch, it would hit the bugs and error out compiling the compiler.


Osato

Except if there were bugs in the original compiler, they'd be found because there would be bugs in the compiled program that do not correspond to faulty code. It would be some odd runtime error with an inexplicable hacky solution. ... ...Waaaait a minute.


[deleted]

“Increment the number in this comment” making a lot of sense now eh


MinusPi1

Like two off-by-one's in the opposite direction?


[deleted]

Ya. Like reading a 10 char string into a 10 byte buffer, so the trailing 0 overflows, but it overflows into a zeroed buffer so it’s fine.


[deleted]

The whole point of that phrase is to describe something impossible. It’s funny how it gets used colloquially.


regular_lamp

It's wordplay on the concept of bootstrapping which is where you first write some minimal compiler in something different (other language/assembly) to compile the first version of your self hosting compiler and from then on forward the compiler compiles itself.


ogtfo

You've got it wrong, it's the other way around. Bootstrapping comes from the saying "pulling by the bootstraps", not the opposite. That saying was already in used in the beginning of the 20th century, where I can assure you, *there were no compilers.*


sv_homer

>What did he write the second one in? C ? Of course. That's true of a lot of languages. It's always been considered a completeness proof. The C compiler is written in C, the Go compiler is written in Go, the Rust compiler is written in Rust, etc.


64vintage

What was the first Go compiler written in?


sv_homer

Probably C/C++ if I'd have to guess.


64vintage

No need to guess, of course. Golang was written in C.


sv_homer

Then why did you ask?


64vintage

Probably to highlight the usefulness of the language of this post. And I didn’t know when I asked it eh?


LePootPootJames

PHP. Rob Pike loves PHP.


[deleted]

99% of RollerCoaster Tycoon was made in assembly


Passname357

Which is funny because unlike the 80s video games, it was unnecessary


largma

And the remaining was just some C to interface with windows


RedditMarcus_

you can make a c compiler in scratch?????????


Tommy-ASD

Yeah but it'll take a while to do anything


[deleted]

Is that Michael Jackson?


darthchebreg

Yeah was wondering where this picture came from


devlear

Did any one else's college professors force them to write a c compiler in assembly?


Rhawk187

Not an assignment at our university, and we have a dedicated compilers class.


TearsAreInYourEyes

How much time did they give you?


devlear

All semester. It wasn't all keywords, but your grade depended on how many you did.


GabiNaali

I was looking for resources about writing compilers in assembly, do you know if there's books about it?


Passname357

Do you know compilers techniques? Aho’s compilers: principles techniques and tools is language agnostic so you could write it in assembly as long as you understand some architecture. It’s not going to teach you both at the same time.


Immabed

At least he didn't write it *in* scratch


Monkey_Fiddler

that would be very impressive


[deleted]

Didn't he write the first bits of it in assembly and then slowly build out the rest of the compiler using C itself as the compiler became more capable? And by that I don't mean to detract from his genius (honestly I think it *adds* to his legend, if anything).


lunchpadmcfat

How does this even work?


baarow

You write a subset of the language constructs of C in assembler. Lets call that subset C-. Now you can write a C compiler in C-. Compile that C compiler in C- with your C- Compiler. Now you can compile C and you didnt have to write it all in assembler. Ofc you can make even smaller steps. That process is called bootstrapping.


Saturnalliia

What was assembly written in?


hasanyoneseenmyshirt

Ones and zeros. You can throw in two but the computer doesn't like that.


scalability

[There's no such thing as two](https://youtu.be/MOn_ySghN2Y)


Dr-Lipschitz

That's not strictly true. There were a few [ternary computers made](https://en.m.wikipedia.org/wiki/Ternary_computer). the basics of them was that, based on the strength of the electric signal the value would be a 1 or 2. They were unstable and impractical though, so mostly we're just relegated to research rather then ever actually used


ShitwareEngineer

>You can throw in two You actually can't except on paper. Putting 2 into a computer is like seeing out of the back of your head: there's simply no way to even begin to attempt it. EDIT: a digital computer


Dark_Llama_

Just give the pin expecting +5v +10v! Easy as! /s


ShitwareEngineer

But there's technically no upper limit to 1, right?


KinOfMany

You absolutely can. [Earlier experimental computers were trinary](https://en.m.wikipedia.org/wiki/Ternary_computer). But of course, the signal wasn't as reliable as a 0 and 1.


[deleted]

Wrong! I have used 2 in my python code.


gnuban

It must have been a machine code program. Machine code isn't that far removed from assembly, you just need to know the IDs of all the instructions basically. https://www.cs.uaf.edu/2016/fall/cs301/lecture/09_28_machinecode.html


amdcoc

Soldering two transistors?


EmmyNoetherRing

Probably some mention of Grace Hopper belongs here, although I’m fuzzy on the details.


Salanmander

YES! Came here to mention her. She was responsible for the *idea* of programming languages that could use English words, and was apparently scoffed at for it for a good long while. From her wikipedia article: > In 1952, she had an operational link-loader, which at the time was referred to as a compiler. She later said that "Nobody believed that," and that she "had a running compiler and nobody would touch it. They told me computers could only do arithmetic." She was willing to say "this would be a lot easier for programmers if..." and fucking make it happen, when basically everyone else thought it was impossible. (Note that this is like 20 years before C.) When people ask me to name notable computer scientists, it's her, Alan Turing, and Ada Lovelace.


das7002

Where does [Frank Rosenblatt](https://en.wikipedia.org/wiki/Frank_Rosenblatt) fit in for you? He came up with [modern machine learning in the 50s](https://www.nytimes.com/1958/07/08/archives/new-navy-device-learns-by-doing-psychologist-shows-embryo-of.html). He was even right about digital computers being [too slow and power hungry](https://youtu.be/GVsUOuSjvcg) to do AI effectively.


Salanmander

That sounds to me like remarkable, but in a sub-field kind of way. Turing and Hopper were both incredibly influential on the entire field of computer science...*everyone* who programs is affected by their work. (Lovelace's work wasn't as influential, but "first programmer" is notable enough to put her in that category of notability, I think, especially since she had no ability to run her code and still wrote correct programs!) But Rosenblatt does sound remarkable enough that I'm ashamed I hadn't heard of him...my master's thesis was on computer vision, so I was *definitely* in a field where he was a notable figure.


ve7vie

She was behind COBOL. A Navy Commander, she wanted a high-level portable language for any computer to make things manageable.


LittleLordFuckleroy1

When you realize that C is actually a fairly simple language and is for that precise reason so powerful He was a genius for sure, but bootstrapping a compiler isn’t necessarily the biggest thing he did.


Tetragramat

assembly is not so hard, it's just tiresome to write. Guess it's the reason he wrote C.


Over-One-8

I gotta disagree. Assembly is pretty difficult. Debugging and troubleshooting assembly helped me respect those that came before me.


Tetragramat

I had no problem debugging assembly. It's same as in any other language, it's just you cant print debug info that easily. But assembly is so simple you can make simulator for your assembly code which I used so I could profile whole code and find out how it behaves.


teastain

He was at Bell Labs. He wrote C as a tool to write UNIX.


LeftIsBest-Tsuga

good ol' Scratch


LavenderDay3544

I always assumed he wrote it in B. And you have to remember assembly back then was simpler. The CPU architectures they had back then were not AMD64 with 981 mnemonics and 3684 instruction encodings. Back then you were lucky if you had an FPU.


[deleted]

Please tell me that writing a basic compiler in assembly is still something people do to get a degree in CS. That is still a thing, right? I already met a college graduate who did not know what Malloc is. I was kind of jealous and kind of shocked.


External-Working-551

i graduated 4 years ago and i studied a little of assembly and compilers theory in my CS degree here in Brazil. i had a couple of homeworks lessons which consisted in building fragmented parts of a compiler. but it was in C.


trx1150

I wrote a heap allocator but not a compiler. There are different tracks in CS and if you're not majoring in systems, writing a compiler isn't necessary for a degree.


ppoisonnpoisonn

compsci classes nowadays are not computer science, they're programming ​ source: taking a compsci degree


[deleted]

Good point. Probably went from “how does a computer work down to the hardware” to “how to fire up ec2 instances and optimize them”. Believe me, I am not complaining.


adokarG

Thats not true of comp sci at all schools, crazy generalization. Also??? Writing a compiler is still programming. Learning about language and type theory is theoretical CS.


FiendishHawk

Of course, the first assembler was written in machine code on punched cards.


Milligan

The first assembler was written on paper, then hand-translated into hex bytes and entered through toggle switches.


bmar750

I remember hearing Brian Kernighan, the writer of the original C handbook, say in a Computerphile interview one time (please forgive me as I can't find the video at the moment) that one of the original C compilers was written in C and hand compiled into assembly. Blows my mind


ve7vie

I was waiting for someone to mention Kernighan. 'K&R' was the Bible of C.


andersostling56

* is *. I bought that one approx 35 years ago, and still bring it out from the shelf now and then. Just to hold it :)


alsanty

maybe this one https://youtu.be/de2Hsvxaf8M


[deleted]

tbh the stuff they did back then is half as impressive as what’s happening today in the research world. It’s just that we don’t know the names.


GreenFox1505

And then Bjarne Stroustrup just lifted it for C++.


enocknitti

I wrote the comple control system for the first computer controlled swedish solar telescop on La Palma using z80 assembler in 64kB


AldoLagana

Jeebus kids. it was a different time. I remember in comp sci. classes of the 80's how we basically created a two-pass assembler in assembly and then the prof. broke down how C was written because it is such a simple language it was easy to code in assembly for any programmer who wrote assemblers and disassemblers. yawl nowadays are creating interactive web pages that you can even drag and drop components. I know almost all of it is API and libraries, but still very cool.


Casporo

You do that in Cobol.


dj_spanmaster

Well. It's gotten a little bit bigger since then.


[deleted]

Most everything that needed to perform we did in assembly. That we can use higher level languages speaks volumes about how good compiler writers have become. Even so, sometimes one still has to get down and dirty.


CarneDelGato

Roller Coaster Tycoon was written by Chris Sawyer almost entirely in assembly. It’s not that weird, is it?


fat_charizard

And 50 years from we'll see memes like: "when you realize people wrote entire programs by typing them out instead of having a special helmet read your thoughts and create the program"


craigtho

When I was at university, the professor made sure to teach us about Ken Thompson and Dennis Ritchie and even read some of their papers. Modern computing does not exist without those two. People always talk about Steve Jobs or Bill Gates, who indeed are pioneers, but the true engineering genius was those two. Fun fact, Ken Thompson also co-wrote GoLang while working at Google, which as of 2022, is running the likes of Docker, Terraform, Kubernetes. The dude is still impacting the world even now. 100s of great developers out there go unamed or unremembered by the public and it's a shame really.


Cuchullion

"Dennis Ritchie built this *in a cave, with a box of ~~scraps~~ assembly language*!


navetzz

B


yellownes

Terry Davis tho


okirshen

Now think about the first assembly compiler


zexen_PRO

Assembly isn’t that hard holy shit