this post was submitted on 08 Jun 2025
120 points (97.6% liked)

technology

23816 readers
109 users here now

On the road to fully automated luxury gay space communism.

Spreading Linux propaganda since 2020

Rules:

founded 4 years ago
MODERATORS
 
you are viewing a single comment's thread
view the rest of the comments
[–] [email protected] 17 points 3 days ago

There are different programming languages. React native is a fancy version of a language called JavaScript that is interpreted as opposed to compiled.

In a compiled language, you write your code then compile it into assembly (the inscrutable language of computers) for the computer platform you want it to run on. That means if you want it to run on a wildly different computer, with like a phone cpu (arm) instead of a desktop cpu (x86) or a mac (apple silicon, also low key arm), you need to compile and distribute a different version of the machine language file the computer will run called a binary.

Computers need assembly files instead of human readable files because they arent usually actually doing what the programmer is talking about. A good analogy is the old “tell me how to make a peanut butter sandwich” lesson where the teacher asks the class to instruct her how to make a peanut butter sandwich and performs all the instructions literally, making a mess.

The programmer asks for a peanut butter sandwich and the binary file the computer runs actually says “undo the twist tie” “take out the first two non-heel slices of bread” etc.

Interpreted languages aren’t compiled, instead your human readable code is processed directly by a program called an interpreter and transformed into assembly in real time. It’s great because now anyone can run your special program as long as they have your language’s interpreter installed on their device.

But compilation takes lots of processor power! So what would be incredibly fast stuff when run as a compiled binary like opening a menu with a list of options now has to be first interpreted before the results can appear, resulting in a delay before the start menu opens.

Interpreted languages also open up a few significant security issues because the file that says “open the start menu” is now human readable code and all evil Dennis has to do is change that file to add some “send all credit card information and passwords to evildennis.net” to get stored information every time the start menu is opened.

The interpreter that runs everytime the menu gets opened is also a security concern because if evil Dennis can get his own evil interpreter on your device he can steal data any time any JavaScript is run.

So when should you use compiled versus interpreted languages? Well the general rule is if you know what computer is gonna be running your code, use a compiled language. Microsoft knows what computers are gonna be running their start menu code. They’ll be windows computers.

So why would Microsoft have done this? There are a few reasons: it could be that they’re not worried about the start menu and if it runs slow but supports lots of ad serving frameworks then that’s fine. It could be that they’re not sending their best when it comes to writing the user interface of windows. It could be that introducing an insecure component of windows fits their business model of giving you a free foot-gun then selling you Kevlar shoes.

TLDR: they used the most wrong language for something that’s core to the operating system and the only explanations are incompetence or malice!