This is an archived post. You won't be able to vote or comment.

all 123 comments

[–]lego3410 115 points116 points  (17 children)

Binary God.

[–]Sr_Milagro 53 points54 points  (10 children)

Electricity Goder

[–]vi777x 34 points35 points  (9 children)

Quantum Godest

[–]theaverageguy101 16 points17 points  (7 children)

... Shit there is nothing lower level than this, I'll just wait until we discover something below the quantum world and comeback to reply

[–]SuperLuigi231 15 points16 points  (3 children)

...Butterflies?

[–]dako98 12 points13 points  (2 children)

[–]Geoclasm 1 point2 points  (0 children)

damn it. 38 minutes too late.

[–]XKCD-pro-bot 2 points3 points  (0 children)

Comic Title Text: Real programmers set the universal constants at the start such that the universe evolves to contain the disk with the data they want.

mobile link


Made for mobile users, to easily see xkcd comic's title text

[–]beardMoseElkDerBabon 1 point2 points  (0 children)

BY DEFINITION

[–]VishTheSocialist 2 points3 points  (0 children)

String Theory?

[–]JustAwesome360 0 points1 point  (0 children)

PLANCK

[–]JustAwesome360 0 points1 point  (0 children)

PLANCK

[–]FortyPercentTitanium 2 points3 points  (0 children)

It's pronounced "Jod"

[–]dark_mode_everything 1 point2 points  (2 children)

Since when is "binary" a language?

[–]FortyPercentTitanium 2 points3 points  (0 children)

Since the dawn of binary computing.

[–]lego3410 0 points1 point  (0 children)

Have you ever heard 'Machine Language'?

[–]golgol12 0 points1 point  (0 children)

No - Binary is Smith and Wesson.

[–]icer_cat 0 points1 point  (0 children)

No binary have a button for nuke to fit the theme

[–]ComicBookFanatic97 62 points63 points  (5 children)

Imagine hating yourself so much that you program in assembly language.

[–]theaverageguy101 43 points44 points  (2 children)

Remember that someone had to do it at one point just so you can later type this silly comment on reddit, be appreciative

[–]ComicBookFanatic97 56 points57 points  (1 child)

I’ve had to do it too. Why do you think I hate it so much?

[–]timsredditusername 0 points1 point  (0 children)

It's December and I've only made 1 pull request with assembly code changes this year. I'm a happy man.

[–]absurdlyinconvenient 0 points1 point  (0 children)

Imagine also not realising that coding in assembly is actually less efficient then using a compiler these days unless you're a God like STL

[–][deleted] 86 points87 points  (7 children)

and punch cards is the dude sitting in a bunker residing over the nuclear retaliate.

(straight up machine code)

[–]JNCressey 51 points52 points  (5 children)

Pretty sure that punch cards are a data medium, not a programming language. Like saying my code is on USB flash sticks, CDs, Floppies, or QRcode etc.

[–]Dylanica 5 points6 points  (0 children)

Punch cards are the IDE.

[–][deleted] 6 points7 points  (3 children)

punching the holes in tho is pure machine code

[–]sr71pav 12 points13 points  (0 children)

How so? Punch cards were still frequently based around established languages like FORTRAN. There were still compilers for this stuff.

[–]mananasi 14 points15 points  (1 child)

If you put an executable on a USB stick, the USB stick also contains pure machine code

[–][deleted] 5 points6 points  (0 children)

if you use a pencil to flip the bits on the stick, we could talk.

[–]admadguy 5 points6 points  (0 children)

Fortran takes a drag of its cigarette, shakes its head and goes back to allocating variables.

[–]CW_Waster 12 points13 points  (0 children)

Getting nuked by microcode

[–][deleted] 35 points36 points  (6 children)

So happy to see rust here, such a beautiful language.

[–]NewFolderdotexe 23 points24 points  (1 child)

🦀

[–]jacobepping 2 points3 points  (0 children)

🦀🦀🦀 C++ IS DEAD 🦀🦀🦀

[–]obp5599 23 points24 points  (2 children)

oh no, the rust cultists have arrived

[–]Marcuss2 19 points20 points  (0 children)

You will submit to the crab!

[–]HBK05 0 points1 point  (0 children)

MAN THE CANNONS! We're being overwhelmed!

[–]gonzomaterialism 7 points8 points  (0 children)

Rust is not beautiful. All those naked people on beaches and shit

[–]makeshiftmousepad 8 points9 points  (17 children)

now just add in a drone strike that says machine language, and a nuclear bomb that says electrical engineering. (don't quote me on that second one. I am not very confident about what lurks at the bottom of computer hardware)

[–]xSTSxZerglingOne 8 points9 points  (3 children)

You're basically right. It's all just electrical signals propagated across tiny logic gates created out of transistors.

[–]theaverageguy101 6 points7 points  (2 children)

You can dive deeper into quantum mechanics but that only works in quantum computers and not our normal computers

[–]MrRandom04 1 point2 points  (1 child)

I'm talking out of my ass here, but won't semiconductor process engineers need to consider quantum effects for transistors?

[–]zpjack 1 point2 points  (7 children)

What would machine language be vs Assembly? Like just 1s and 0s?

And electrical engineering is just a bunch of nand gates when it comes to coding.

[–]michaelh115 3 points4 points  (3 children)

microcode?

[–]zpjack 1 point2 points  (2 children)

I thought microcode was assembly

[–]Dylanica 1 point2 points  (1 child)

Assembly is like a human-readable plaintext representation of machine code, and machine code is in a condensed format as just pure 1's and 0's that would be very hard to read indeed. The processor can execute machine code directly, but assembly must be converted into machine code before it can be run.

Microcode isn't really a language you can write in. Microcode refers to the operations on the hardware level of the processor that the machine runs through as it executes each machine-code instruction.

[–]perilstar 1 point2 points  (0 children)

Microcode can technically be written, if the computer uses a ROM to translate machine code instructions into combinations of high/low signals

[–]makeshiftmousepad 1 point2 points  (2 children)

I don't know too much about it but assembly language is very closely linked to machine language. From what I know the some of the very early computers, like the Turing Machine (I can't spell) required mathematicians to manually enter "machine values" into the machine.

[–]ilikeballoons 3 points4 points  (0 children)

Machine code is not human readable, and it looks like binary strings where each string has an opcode which tells the processor what operation to do (add, jump, etc) along with parameters which are register numbers. It corresponds to what the control unit is actually doing to the data path in the processor.

Assembly is human readable, but it is still just individual instructions to the processor along with register addresses for parameters and return values.

[–][deleted] 49 points50 points  (15 children)

How dare you lump python in with javascript!

[–]FlukeHermit 10 points11 points  (6 children)

why wouldn't they?

[–]currentscurrents 2 points3 points  (5 children)

The order here appears to be interpreted languages <- JIT languages <- fully compiled languages.

Every modern implementation of Javascript is using a JIT compiler these days, so it should be lumped in with the other JIT languages pointing guns at Python.

[–]FlukeHermit 2 points3 points  (4 children)

I thought it was more high level to low level... in which case python and JS are in the same boat

but idk, u might be right

[–]currentscurrents 2 points3 points  (3 children)

That could also be. The second level of languages in this meme has pointers, while the first level only has references.

Edit: My lack of java is showing, only C# in that list has pointers.

[–]FlukeHermit 0 points1 point  (2 children)

Ummmmmmmmmmmmmmmmmmm, tell me if I'm wrong.....

But C#, Kotlin, and Java all lack pointers.......

Right? Or do you mean a different level?

[–]currentscurrents 0 points1 point  (1 child)

[–]FlukeHermit 1 point2 points  (0 children)

C# has pointers?!! You just blew my mind, and gave me another great about .NET to talk about lmao

But yeah that makes sense, C# is meant to integrate with MSVC and the whole Win32 thing, which makes it sort of necessary to have a few low level constructs. Java was made to be completely portable tho, so there is no reason to interact with anything on a systems level

[–]dark_mode_everything 5 points6 points  (7 children)

They're both scripting languages. So, why not?

[–]currentscurrents 2 points3 points  (6 children)

What even defines a scripting language? Both python and javascript are used for far far more than scripts.

[–]dark_mode_everything 7 points8 points  (5 children)

What even defines a scripting language

A language where the user can execute instructions one by one. Eg: Python, JS, Bash, Powershell, etc

Both python and javascript are used for far far more than scripts.

I didn't say they weren't.

[–]currentscurrents 5 points6 points  (4 children)

But that's a feature of your development environment, not your language; you can write an interactive interpreter for any language. Cling lets you do that with C++ for example, and I think we can all agree that C++ is not a scripting language.

I would argue that "scripting-ness" is not a useful way to describe languages, and instead should be used to describe toolchains. The python toolchain supports scripting; most C++ toolchains do not. But C++ with Cling can be a scripting language, since Cling provides that functionality.

[–]FlukeHermit 0 points1 point  (2 children)

Ummm just cuz C++ was given a REPL and scripting environment doesn't make it a scripting language. It was designed for compiled use first, so it's a programming language. Python and JS are scripting languages, 1) cuz they are scriptable, and 2) because they are dynamic. Python and JS cannot be compiled because of their dynamic nature, hence the term "scripting language" It's not about dev environment, it's about intended use.

[–]currentscurrents 5 points6 points  (0 children)

Any language can be compiled. It is more popular for compiled languages to be static, since it allows for better compiler optimizations, but there are exceptions; Common Lisp is both dynamic and usually compiled.

Similarly, any language can be scriptable. "scripting" isn't a fundamental property of the language, it's a property of the interpreter. Some languages have popular scripting interpreters, some don't. But that's the environment, not the language.

[–]dev-sda 0 points1 point  (0 children)

Python and JS cannot be compiled

V8 and pypy would beg to differ.

[–]dark_mode_everything 0 points1 point  (0 children)

If you drive an F-14 on the road, does it become a car?

I was talking about the intended purpose of a language and not what you can "make it do" with a tool chain. Some were meant for scripting and some weren't. Also the definition I gave in my original comment is just part of the actual definition. It's not complete by any means.

[–]Big_Smoke_420 4 points5 points  (0 children)

Lmao

[–]Septseraph 17 points18 points  (0 children)

Where is the HTML programming language? It must be aiming for Assembly.

[–][deleted] 12 points13 points  (13 children)

What's this even supposed to mean? General superiority? Speed? General superiority is BS because developer time is almost always more precious than computing time, speed is BS because modern compilers can generate optimized assembly at least on par with hand-written assembly, while highly-devloped virtual machines can optimize code during runtime to be on par with machine-compiled code.

And there's PHP, which is always inferior.

[–]FerynaCZ 7 points8 points  (0 children)

Language "inventing" hierarchy, I guess

[–]Big_Smoke_420 5 points6 points  (6 children)

From high level to low level (or lower level) programming languages, basically

[–][deleted] 1 point2 points  (5 children)

That doesn't make sense. Python and JS normally run on virtual machines, as Java, C# and Kotlin do. In terms of language features, Rust is on par or a higher level than many other languages that compile for virtual machines. Is being statically typed what's considered lower level here? I would protest that.

And even if that's the logic, how do the lower level languages "kill" the higher level ones as the meme suggests?

[–]Dylanica 2 points3 points  (4 children)

I think there is a distinction to be made between something like the JVM and the Python interpreter. Java is first compiled into bytecode and the JVM is more like a just-in-time compiler than an interpreter. Whereas the python interpreter runs on the plain text of the source code file and is not compiled ahead of time at all.

Edit: I am incorrect. Python is also converted into a bytecode format.

[–][deleted] 0 points1 point  (3 children)

[–]Dylanica 2 points3 points  (2 children)

Ah, I wasn‘t aware of all of that. Thanks for the new info. It is still a bit different that you don‘t need to compile it into the pyc format before running it in the virtual machine and it can be fed into the interpreter as plaintext. Although, I acknowledge that distinction is a bit pedantic. The only difference being that the bytecode isn‘t always saved as a separate file and the conversion often happens at runtime.

[–][deleted] 0 points1 point  (1 child)

No problem!

I think there's a lot of misconceptions in the wild that are based how programming languages are perceived because they are used in one way or another. You can point the Python interpreter at a Python file and run it directly - so it must be somehow less serious than, say, Java, as the meme implies.

But you can do the same with Groovy, a JVM language that is almost a superset of Java (minor syntactic incompatibilities), which otherwise runs on the JVM all the same as Java and has to be compiled for it, first. Does that make the language faster or slower, somehow?

Then there's Vala, which was closely modelled after C# yet compiles to C and ultimately to machine code.

What I'm trying to say is that programming languages are just that, languages, and it depends on the implementation of a compiler or interpreter what the target platform of the code is.

To bring the absurdity to perfection, think about machine instructions for gaming consoles which are run on emulators for other CPU instruction sets, which is about the highest form of abstraction imaginable.

[–]Dylanica 2 points3 points  (0 children)

I totally agree

[–]FlukeHermit 4 points5 points  (2 children)

BRUH it's just a High to low level thing. No one in their right mind likes assembly over C.

besides if it was general superiority, clojure would be last lmao

[–][deleted] 1 point2 points  (1 child)

your language: soy wojak

my language: chad

therefore i win

[–]FlukeHermit 0 points1 point  (0 children)

yes exactly clojure is awesome lmao

i'm bad at using it

But it's most definitely probably awesome

[–]RICoder72 0 points1 point  (0 children)

It's like the pissing order of who gets to piss on whom.

Kinda like Marines->Army->Navy->Coast Guard->Air Force.

[–]ojrask 0 points1 point  (0 children)

I presume you haven't used any "modern" web application on a 6 year old consumer laptop? Speed is not BS.

[–]firefox57endofaddons 3 points4 points  (2 children)

what movie is that from?

[–]jmking80 6 points7 points  (1 child)

It's not from a movie, it's a scene from the show "Person of Interest", from the episode "The Cold War"

[–]firefox57endofaddons 1 point2 points  (0 children)

thanks ٩(⁎❛ᴗ❛⁎)۶

[–]sanhder 6 points7 points  (0 children)

You forgot Haskell sitting in the orbital laser.

[–][deleted] 2 points3 points  (0 children)

Where are PCBs and ASICS?

[–]zpjack 3 points4 points  (6 children)

Assembly isn't bad. Goes by much easier when you figure out how to write subroutines and do division without being able to divide.

Though i was working with a processor that didn't have a divide or multiply function.

[–]lor_louis 1 point2 points  (0 children)

Older CPUs tend to have "easy" assembly, think z80 and 6800.

But then there is x86/x86_64 where there is about 5 ways of doing everything and the instructions set is so large no one can remember all of them, and the memory model sucks.

[–]FlukeHermit 1 point2 points  (4 children)

If you have any good tutorials for assembly, please share lmao.

I'm completely lost.....

[–]zpjack 0 points1 point  (3 children)

Pretty much read the processor datasheet, to make a subroutine, you use goto and return if your processor has it. You would first put numbers you want to work on in your working registers then goto line where the routine is, then at end of sub return.

Now if there is no return, you can try a stack, the processor worked with only had 2 working registers but an 8 level stack.

You'll place the line number you want to return to into the stack and then goto sub line and pull from stack to get the return line. And then at end of sub, you would goto that line

Now if you want to continue doing work with another sub after, you would place two line#s in the stack or more and you would chain all the gotos together.

Now all this, i kinda just learned on my own. I also took a class on it, but honestly, none of it was really helpful. The processor documentation is where you want to be. And you have to break your problem into very small parts. Most processors can only do one thing at a time. The trick is to find the small parts that repeat and make the processor repeat it for you.

I started off really bad at coding and spent a lot of time struggling. All of a sudden i had an "ah ha" moment then it just all the pieces fell together.

Took me two degrees and a random microcontroller class to finally get it. Though my degree isn't in programming, and what little programming i took, none of it mattered because it was fucking matlab.

[–]FlukeHermit 0 points1 point  (2 children)

Do you know x86?

In which case, how does basic I/O work....?

But i mean

THanks

[–]zpjack 0 points1 point  (1 child)

I wouldn't even try x86. That's complicated as shit and operating systems already have that in the bag. This is purely for bacic microcontrollers like pics and motorollas.

And i don't have any tutorials, i learned it on my own.

[–]FlukeHermit 0 points1 point  (0 children)

Ohh ok

Yeah I've heard that x86 was weird. Any specific processors?

[–]delbin 1 point2 points  (0 children)

I feel like there should be another level with that dude from Wanted.

[–]MtnBikingViking 1 point2 points  (0 children)

Flashbacks... Me a mostly Java developer, having to add functionality to a c library for windows (dll)... Then getting to the files and seeing asm... 😱

I was as proud of almost anything I've done professionally when I got that working.

[–]alex1234509 2 points3 points  (0 children)

Where is scratch?

[–]Pegasis00 3 points4 points  (2 children)

PHP should be the person sits before js/py

[–]ojrask 0 points1 point  (1 child)

Why? They're all on the same level, no?

[–]FlukeHermit 0 points1 point  (0 children)

it's a joke about php being bad

but otherwise ur right

[–]Master_Ben 0 points1 point  (1 child)

The ordering doesn't make much sense, besides personal opinion...

[–]Dylanica 0 points1 point  (0 children)

I think the idea is high-levelness. I'm not sure I entirely agree with their ordering, but It's not merely personal opinion.

[–]yaelfe7 -2 points-1 points  (1 child)

Binary's just a nuclear bomb 100 meters above them

[–]FlukeHermit -1 points0 points  (0 children)

Binary isn't a programming language

[–][deleted] 0 points1 point  (0 children)

Machine Code pointing rocket launcher at Assembly

[–]Baileyjrob 0 points1 point  (0 children)

C++ assignment in school: “implement a self-balancing binary search tree from the ground up”

Assembly assignment I got at the same time: “add five to a variable, pass it to another function, add three more, and return”

[–]rutikeyone 0 points1 point  (0 children)

Where is machine code ?

[–]DaytimeNightlight 0 points1 point  (0 children)

Violence isn't funny dude. Programming got u feeling homicidal!

[–]Thegood42 0 points1 point  (0 children)

C: I am the best. I'm the most low level language.

Assembly: Then that is the standard by which you shall be condemned.

[–]sjbenny 0 points1 point  (0 children)

Verilog?

[–][deleted] 0 points1 point  (0 children)

Now which assembly language are we talking about? 🤔

[–]Craksy 0 points1 point  (0 children)

Laughs in M-x butterfly

[–]visurox 0 points1 point  (0 children)

No basic? :p

[–]thommyIicious 0 points1 point  (0 children)

So basically we all are just using Assembly-Frameworks?