The most recent example was the
move from Assembler to Third Generation Languages (3GLs), which happened
decades ago. As we all know, 3GLs such as FORTRAN and C gave developers
much more expressive power than Assembler and in a much easier-to-understand
format, yet compilers could automatically translate them into Assembler. According
WHAT IS DSM? 15
to Capers Jones??™ Software Productivity Research (SPR, 2006), 3GLs increased
developer productivity by an astonishing 450%. In contrast, the later introduction
of object-oriented languages did not raise the abstraction level much further.
For example, the same research suggests that Java allows developers to be only
20% more productive than BASIC. Since the ?¬?gures for C++ and C# do not differ
much from Java, the use of newer programming languages can hardly be justi?¬?ed by
claims of improved productivity.
If raising the level of abstraction reduces complexity, then we need to ask
ourselves how we can raise it further. Figure 1.7 shows how developers at different
times have bridged the abstraction gap between an idea in domain terms and its
implementation.
The ?¬?rst step in developing any software is always to think of a solution in terms
that relate to the problem domain??”a solution on a high abstraction level (step one).
An example here would be deciding whether we should ?¬?rst ask for a person name
or for a payment method while registering to a conference.
Pages:
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49