Java Reference
In-Depth Information
Except possibly for librarians and sociologists, few people believe that library
science and social science are scientific endeavors.
A scientific discipline aims to discover certain fundamental principles dictated
by the laws of nature. It operates on the scientific method: by posing hypotheses
and testing them with experiments that are repeatable by other workers in the
field. For example, a physicist may have a theory on the makeup of nuclear
particles and attempt to confirm or refute that theory by running experiments in a
particle collider. If an experiment cannot be confirmed, such as the Ȓcold fusionȓ
research in the early 1990s, then the theory dies a quick death.
Some software developers indeed run experiments. They try out various methods
of computing certain results or of configuring computer systems, and measure
the differences in performance. However, their aim is not to discover laws of
nature.
Some computer scientists discover fundamental principles. One class of
fundamental results, for instance, states that it is impossible to write certain
kinds of computer programs, no matter how powerful the computing equipment
is. For example, it is impossible to write a program that takes as its input any two
Java program files and as its output prints whether or not these two programs
always compute the same results. Such a program would be very handy for
grading student homework, but nobody, no matter how clever, will ever be able
to write one that works for all input files. However, the majority of computer
scientists are not researching the limits of computation.
Some people view software development as an art or craft. A programmer who
writes elegant code that is easy to understand and runs with optimum efficiency
can indeed be considered a good craftsman. Calling it an art is perhaps
far-fetched, because an art object requires an audience to appreciate it, whereas
the program code is generally hidden from the program user.
Others call software development an engineering discipline. Just as mechanical
engineering is based on the fundamental mathematical principles of statics,
computing has certain mathematical fo undations. There is more to mechanical
engineering than mathematics, such as knowledge of materials and of project
planning. The same is true for computing. A software engineer needs to know
about planning, budgeting, design, test automation, documentation, and source
577
578
Search WWH ::




Custom Search