Beginning with FORTRAN in 1954, third-generation languages
allowed programmers to work at a higher level, with languages that were much more independent of the
computer hardware.
Programs can be compiled or interpreted. Compilers generate machine instructions that can run
directly on the computer, independent of further availability of the compiler program. Interpreters, on the
other hand, are programs that read and execute source code a line at a time. Java is an environment that
uses both. Java source code is compiled into machine-independent bytecode, and the Java Virtual Machine
interprets the bytecode at execution. Many JVM implementations today also compile bytecode to machine
instructions.
Some languages are described as imperative, and of these we discussed procedural, object-oriented,
and scripting languages. Other languages are described as declarative, and of these we discussed functional
languages.
When designing a new language, computer scientists value execution efficiency, human readability, ease
of implementation, expressiveness, regularity, extensibility, standardization, hardware and operating system
independence, and security. It is not possible to achieve all virtues simultaneously, so language design means
making wise tradeoffs for the intended use.
Pages:
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183