What Is Code?
This question was asked to me on Quora. You can see the original here. Got a question yourself? Send me a question on Quora, or just a plain old email :-).
I really love questions like yours! It’s great to ask from time to time: “How does it work?”
Yes, a computer uses transistors. They form “flip flops”. A flip flop is a piece of hardware that can have two states: on and off. Applying current makes the flip flop switch. Placing a couple of them in line can let you execute sequential commands, because you can create multiple combinations of on-and-off switches. The clock inside a CPU (the thingy that pulses electrical current) makes the flip flops switch, really fast, so it can load up instructions and execute them. Simply put, that’s a computer: binary representations of state data, billions of times per second.
In basic terms, the “stack” of computer languages is this:
- Higher order language, such as Swift, gets compiled into:
- Assembly language, a instructional language for processors (like: add 1 to this registry, or move byte A to registry 42), gets translated to:
- Binary, the raw 0’s and 1’s the flipflops in the CPU process, consists of:
- Analog electrical currents, high and low, representing 1 and 0. This is where you start to see transistors. An iPhone 6 CPU has 2 billion transistors. These currents consist of:
- Electrons moving through a conducting wire. You can see the wire as a tube of marbles: push one in, and another comes out the other end.
Who’s Checking The Dentist’s Teeth?
A higher-order programming language like Swift gets compiled into assembly, and some other stuff, by a compiler program. That compiler program can be written in anything, really. Just like the dentist goes to another dentist to have their teeth cleaned, a compiler is written by another programmer in another language.
Also, programming languages can be interpreted. Instead of creating an independently runnable executable file, the language is fed into an interpreter, which in turn feeds it to the CPU. Closely related to the interpreter is the virtual machine, such as the Java VM, that mediates between the Java language and the hardware. In that way, you can write Java code once, then develop multiple VMs for different types of hardware (an Intel processor, or the tiny CPU in your washing machine), and still run the same code.
What Does Binary Look Like?
In essence, a binary code is just analog electrical current. As a programmer, you really don’t think about that, though. You can’t see it with a microscope, but if you were to run a binary current through an oscilloscope you’d see this:
(You can clearly see “on” and “off”, although there’s some leakage too.)
Down The Rabbit Hole
Imagine, that as I’m typing this, my fingers are causing the keyboard to send out electrical currents. They get picked up by some electronics, and ultimately hit the CPU. The CPU then informs the screen to put some pixels up there, in the form of letter characters. It also gets sent to a space in memory that stores the text I’m typing, as part of the HTML on the page. Then I hit submit…
The text gets sent over the internet, across routers and big fiber optics internet cables, to you. And then, it hits your CPU and your CPU…
It’s almost too much to think about. Thankfully, there’s a human at the other point of the line. Because in essence, computers are just a big bunch of marble pushers…
Join 11.000+ app developers and marketers
- Get a weekly curated list of app development tools, articles and resources in your inbox
- 10x your app installs with relevant App Store Optimization and app marketing strategies
- BONUS: Grab a free copy of the App Toolbox 2017 to supercharge your next app project
Most Popular Content
Grab the App Toolbox 2017 to learn how to save time building your app,
and how to 10x your app installs in the App Store. With the toolbox, you'll immediately know how to move forward to build better, more profitable apps.
Comments & Thoughts
On The Blog
5 Skills That Boost Every Career If You Learn Programming
Learning how to program gives children problem solving skills that come in handy later in life, and it primes them for a possible future in engineering or computer science. It helps them to secure better careers and a brighter future. But for those who are already making a career, can the same skill help them too?
Swift Programming Cheatsheet
Learning a new programming language can be daunting. For all aspiring app makers, I’ve made a Swift Programming Cheatsheet to help with that! A cheatsheet shows you most important Swift programming keywords, statements and concepts. While you learn, you can rely on the cheatsheet to help you rememember all those narly programming words.
Best Of Quora: Android vs. iOS, Finding A Job, Prototyping And Gazing Into Space (Week 35)
This week's edition, topics include the Android vs. iOS debate, finding a job as a programmer, prototyping, coding clubs and gazing into the void of space.
How To Take Your First App Project From Start To Finish
You've learned how to code, and now it's time to move on to your first app project. Where do you start? How do you develop the project? Let's find out!