Skip to Content, Navigation, or Footer.
The Tufts Daily
Where you read it first | Friday, April 26, 2024

Ben Schwalb | Das Coding

Linguistics has a theory of something called the Proto?Indo?European language. The commonly accepted abbreviation for this is PIE, as in what I had for dinner. PIE is the common ancestor of all the languages spoken in Europe and a significant number of those spoken in Asia (from Pashto to Hindi). However, the structure and even existence of PIE is simply a bunch of educated guesses by linguists. Whether, where and how PIE was spoken can never be known for sure. These details were lost to history.

That probably has something to do with the fact that the history of spoken language is thousands of years old. Computer history, however, is relatively short. Although important theoretical work took place for a few hundred years, the first computers were built in the 1940s. More importantly, the development of computers wasn't as natural as that of languages; the entire process was planned out by scientists.

For this reason, the proto?programming language really does exist! Many of you are probably wondering if it's Java or C++ or some other programming language you've heard of, and the answer is a resounding no. But, not exactly. The strange thing is that all of the other programming languages use this proto language.

The reason for that is that this infamous proto language is the language that a computer processor speaks. That's right, a processor has its own language. In fact, it only knows this one language. Therefore, when a programmer writes a program in Java or C++, that has to be translated to this processor language, known as assembly language. This is known as compiling a program, and you have to do it for every other programming language. (Not exactly, but that's true for any program you'll run on your computer.)

In fact, the first computers spoke only assembly language. It was only later on that someone had the idea to make other languages that can be translated into assembly. There were two reasons for this.

For one thing, they were a reaction to the fact that different processors in fact speak different languages. You didn't really think that computers have been speaking the same language they did for 90 years, did you? As processors evolved and improved, their creators came up with new languages to control them. Naturally, different creators had different opinions about what the language should look like. The languages became mutually unintelligible ?? that is to say, processors could not understand the language of many other processor types. Using one of these "high?level" programming languages like C++ or Java enabled humans to write code that any processor could understand.

More importantly, it enabled humans to write code that they themselves could understand! Assembly language is incredibly specific, to a very limiting extent. In essence, all one can tell the computer to do is to store numbers, do some math on them and occasionally to branch, or determine what to do next based on the value of a number (e.g., if a number is greater than two, start over; if not, do something else). Notice that I didn't even mention letters. Assembly language doesn't even have letters; that's just programming languages interpreting numbers.

Making code more readable for humans is the most important reason why programmers don't write in assembly language. The reality is that most current computers have one of two processors. There are the normal 32?bit ones and the 64?bit ones, and 64?bit just understands a few instructions that 32?bit doesn't. A program you download is simply the assembly code for your processor. That's why some programs ask you if your computer is 64?bit. They don't want to tell your processor words it doesn't understand.

--

Ben Schwalb is a member of the class of 2012 who majored in computer science. He can be reached at Benjamin.Schwalb@tufts.edu.