Information Technology Reference
In-Depth Information
objects the programmer wants to manipulate rather than the logic required to
do individual operations. To computer scientists, an object is any item that can
be individually selected and handled. In object-oriented programming, an object
consists of not only the data but also the methods employed to operate on that
type of data. In addition, the introduction of engineering practices in the speci-
fication, design, coding, and testing of software has helped the software indus-
try make progress toward taming the software crisis. However, it is important
to remember that even with the best software engineering practices of today,
software systems contain somewhere between ten and ten thousand errors per
million lines of code. It is therefore not surprising that testing and bug fixing
play a large role in the life cycle of software. Lastly, we shall take a look at an
alternative model of software development. This model is based on crowdsourc-
ing , which incorporates contributions from a large group of people, and the
free sharing of the source code , the program instructions in their original form.
Such sharing of source code is called the open-source approach. One of its major
advantages is that it permits rapid finding of bugs. Eric Raymond has memora-
bly summarized this idea as “Given enough eyeballs, all bugs are shallow.” 4 In
other words, the more people who see and test a set of code, the more likely any
flaws will be caught and fixed quickly. Raymond called this “Linus's Law” after
Linus Torvalds, creator of the open-source Linux operating system. However,
other experienced software engineers would contest this statement!
Fig. 4.1. Some popular programming
languages. Wikipedia lists more than
seven hundred programming languages
but only a few of these have attained
widespread use.
Elements of modern programming languages
Before the introduction of FORTRAN in the 1950s, programmers had to
work in machine code, made up of binary commands ( Fig. 4.2 ), or in assembly
languages, composed of symbolic expressions, both of which were difficult and
time-consuming to write. FORTRAN was the first commercially successful high-
level language . That is, it resembled natural human language, was easy to learn,
and required less knowledge of the computer on which it would be run. Many
people expected that FORTRAN would make software easy to create and sim-
ple to fix. It is amusing to look back at the optimism expressed in the original
FORTRAN proposal from John W. Backus in 1954:
Since FORTRAN should virtually eliminate coding and debugging, it should be
possible to solve problems for less than half the cost that would be required
without such a system. Furthermore, since it will be possible to devote nearly
all usable machine time to problem solution instead of only half the usable
machine time, the output of a given machine should be almost doubled. 5
So how did software production reach such a crisis point only a decade later?
Part of the answer lies in the features of early languages.
We will begin by looking at some early programming languages and three
concepts that led to better programming: (1) type checking , which checks and
enforces certain rules to help prevent one major category of errors; (2) recursion ,
where a function can call itself; and (3) dynamic data structures . A data structure
is any organized form, such as a list or file, in which connected data items are
held in a computer. A dynamic data structure provides a way of organizing data
that allows more efficient use of computer memory.
Fig. 4.2. In the early days of computing,
programming was done in binary. It was
only with the introduction of assembly
language that programming became
slightly more intuitive. High-level pro-
gramming languages like FORTRAN and
COBOL only became popular with the
development of efficient compilers that
produced performance close enough to
assembly language programs.
Search WWH ::




Custom Search