Skip to main content

How To Think Like a Computer Scientist C++ Edition The Pretext Interactive Version

Section 1.2 What is a Programming Language?

The programming language you will be learning is C++. It is a high-level language.
As you might infer from the name “high-level language,” there are also low-level languages, sometimes referred to as machine language or assembly language. Loosely-speaking, computers can only execute programs written in low-level languages. Thus, programs written in a high-level language have to be translated before they can run. This translation takes some time, which is a small disadvantage of high-level languages.
But the advantages are enormous. First, it is much easier to program in a high-level language; by “easier” I mean that the program takes less time to write, it’s shorter and easier to read, and it’s more likely to be correct. Secondly, high-level languages are portable, meaning that they can run on different kinds of computers with few or no modifications. Low-level programs can only run on one kind of computer, and have to be rewritten to run on another.
Due to these advantages, almost all programs are written in high-level languages. Low-level languages are only used for a few special applications.
There are two ways to translate a program; interpreting or compiling. An interpreter is a program that reads a high-level program and does what it says. In effect, it translates the program line-by-line, alternately reading lines and carrying out commands.
described in detail following the image
A flow chart that demonstrates source code passing to an interpreter and the result of running that code being displayed.
Figure 1.2.1. Using an Interpreter
A compiler is a program that reads a high-level program and translates it all at once, before executing any of the commands. Often you compile the program as a separate step, and then execute the compiled code later. In this case, the high-level program is called the source code, and the translated program is called the object code or the executable.
As an example, suppose you write a program in C++. You might use a text editor to write the program (a text editor is a simple word processor). When the program is finished, you might save it in a file named program.cpp, where “program” is an arbitrary name you make up, and the suffix .cpp is a convention that indicates that the file contains C++ source code.
Then, depending on what your programming environment is like, you might leave the text editor and run the compiler. The compiler would read your source code, translate it, and create a new file named program.o to contain the object code, or program.exe to contain the executable.
described in detail following the image
A flow chart that demonstrates source code passing to a compiler and emerging as compiled object, or machine, code. That code can then be executed to see the result of running the code.
Figure 1.2.2. Compilation process
The next step is to run the program, which requires some kind of executor. The role of the executor is to load the program (copy it from disk into memory) and make the computer start executing the program.
Although this process may seem complicated, the good news is that in most programming environments (sometimes called development environments), these steps are automated for you. Usually you will only have to write a program and type a single command to compile and run it. On the other hand, it is useful to know what the steps are that are happening in the background, so that if something goes wrong you can figure out what it is.

Checkpoint 1.2.1.

Checkpoint 1.2.2.

Multiple Response Which is true about a high-level programming language?
  • Almost all programs are written in high-level languages.
  • High-level languages are efficient and easy to understand, an obvious choice for writing a program!
  • Programs written in a high-level language must be translated before they can be run.
  • All programs in high-level language must be translated to a low-level language before the computer can execute them!
  • It’s easier to program in a low-level language than a high-level language.
  • Actually, its much the other way around!
  • Computers can only execute programs written in high-level languages.
  • Computers actually can’t understand high-level languages as they are written.
  • High-level programs can only run on one kind of computer (you’d have to rewrite the program if you wanted to use a different machine).
  • High-level programs are portable, meaning they can run on different kinds of computers with little to no modification.

Checkpoint 1.2.3.

What is the role of an executor?
  • To translate the program line by line.
  • This is the role of an interpreter!
  • To copy the program from disk to memory and make the computer run the program.
  • The role of an executor is to carry out, or execute, the program!
  • To translate the program all at once.
  • This is the role of a compiler!
  • To give an error message if something is preventing the code from being translated.
  • This happens automatically when we try to compile/interpret our program.

Checkpoint 1.2.4.

You have attempted 1 of 4 activities on this page.