Page 1389 - (ISC)² CISSP Certified Information Systems Security Professional Official Study Guide
P. 1389
0s, and that’s it! The instructions that a computer follows consist of a
long series of binary digits in a language known as machine language.
Each central processing unit (CPU) chipset has its own machine
language, and it’s virtually impossible for a human being to decipher
anything but the simplest machine language code without the
assistance of specialized software. Assembly language is a higher-level
alternative that uses mnemonics to represent the basic instruction set
of a CPU but still requires hardware-specific knowledge of a relatively
obscure language. It also requires a large amount of tedious
programming; a task as simple as adding two numbers together could
take five or six lines of assembly code!
Programmers don’t want to write their code in either machine
language or assembly language. They prefer to use high-level
languages, such as Python, C++, Ruby, R, Java, and Visual Basic.
These languages allow programmers to write instructions that better
approximate human communication, decrease the length of time
needed to craft an application, possibly decrease the number of
programmers needed on a project, and also allow some portability
between different operating systems and hardware platforms. Once
programmers are ready to execute their programs, two options are
available to them: compilation and interpretation.
Some languages (such as C, Java, and FORTRAN) are compiled
languages. When using a compiled language, the programmer uses a
tool known as a compiler to convert the higher-level language into an
executable file designed for use on a specific operating system. This
executable is then distributed to end users, who may use it as they see
fit. Generally speaking, it’s not possible to directly view or modify the
software instructions in an executable file. However, specialists in the
field of reverse engineering may be able to reverse the compilation
process with the assistance of tools known as decompilers. This is
particularly useful when attempting to determine how an executable
file works when performing malware analysis or competitive
intelligence, where you do not have access to the underlying source
code.
Other languages (such as Python, R, JavaScript, and VBScript) are
interpreted languages. When these languages are used, the

