Term
What were some of the factors that made programming early computers especially difficult? |
|
Definition
- Very little storage
very little power
- more complicated to programmer
- increases chance of programmer errors
|
|
|
Term
What were the benefits of optimal coding? What were the drawbacks? |
|
Definition
- The address of the next instruction would come right after the previous
- but it was a tedious and error-prone process
|
|
|
Term
What are the benefits of program design notations? How are they distinct from programming languages? |
|
Definition
- They would allow the programmer to design program layouts without being concerned about the details (such as optimal coding); others provided menumonics for machine operations
- but these languages/notations were designed for programmers and not for processing of the computer
|
|
|
Term
What were the benefits of psuedo-code interpreters? What were the drawbacks? |
|
Definition
- Because they eliminated a great deal of lower level details, but they ran a magnitude slower than the real computer\
- implemented a virtual computer
- provided more suitable applications
- eliminated many details from programming (automation principle)
- regular rules, w/out exception, are easier to learn, use, describe and implement
- but:
- --magnitude slower than a real computer; additional cost due to floating-poing and indexing
|
|
|
Term
What factors made pseudo-code interpreters practical for a period of time? What were the drawbacks? |
|
Definition
Although subroutines added a great deal of time to psuedo-code interpreters, it was acceptly small since floating point and indexing subroutines took time anyways |
|
|
Term
What factors made psuedo-code interpreters practical for a period of time? What development made them impractical, and why? |
|
Definition
- Floating point hardware made interpreters unattractive because programs were no longer spending most of their time in floating-point subroutines
- the factor of 10, or more, slower execution of interpreters became intolerable
|
|
|
Term
Why was “automatic coding” considered unfeasible in the early 1950s? |
|
Definition
Programmers were mainly concerned about efficiency in their code, rather than readability/maintainability |
|
|
Term
What factors led John Backus to develop Speedcoding and then FORTRAN? What was Speedcoding? |
|
Definition
- Backus recognized that it was more expensive to design and debug a program than to run it
- this was around the time that people were using psuedo-code interpreted languages/interpreters
- speedcoding was the first higher-level language created for an IBM computer; an interpreter focusing on the ease of use rather than efficiency of computer resources
- since efficiency was on most programmers' mind, it was not accepted(?)
|
|
|
Term
What were the main goals of FORTRAN's developers? Was language design a big part of these goals? |
|
Definition
- to design an efficient language with conventional methemetical notation, comparable to a good programmer
- language design wasn't a big part of those goals
|
|
|
Term
What factors helped FORTRAN to succeed despite the “indifference and skepticism” that met the release of its preliminary specification? What were FORTRAN's main contributions? |
|
Definition
- Exceptionally clear documentation, very sophisticated optimization techniques, and because FORTRAN delivered the efficiency that had been promised.
- FORTRAN is considered the first widely used programming language supported across a variety of computer architectures
|
|
|
Term
What FORTRAN statement "is the workhorse of control flow"? |
|
Definition
|
|
Term
What is the overall structure of a FORTRAN program? |
|
Definition
Main program subprogram 1 (0 or more) subprogram 2 subprogram n |
|
|
Term
What functions do FORTRAN declarations perform? (hint: variable declaration in FORTRAN really only perform 2 of the 3 functions mentioned in MacLennan on pg. 42, but the wise programmer will make sure that the 3rd function is taken care of as well even if the declaration doesn't to it …!) |
|
Definition
1. They allocated an area of memory of a specified size
2. they attached a symbolic name to that area of memory. This is called binding a name to an area of memory
3. they initialized the contents of that memory area
|
|
|
Term
What are the three kinds of imperative statements in FORTRAN? |
|
Definition
|
|
Term
What were the four stages in the FORTRAN compilation process? What are the three phases in the compilation stage of the compilation process? |
|
Definition
- Linking
- Loading
- Execution
- control turned over to memory
- Compilation stage
- synctactic analysis
- optimization
- code synthesis
|
|
|
Term
What were FORTRAN control structures based on? What FORTRAN statement "is the workhorse of control flow"?
What was the only "high-level" control structure provided by FORTRAN? Why could it be provided? |
|
Definition
- Control structures were based on the IBM 704 branch instructions.
- only high-level control structures provided was "do", because it was highly optimized.
|
|
|
Term
How can you write a leading-decision loop in FORTRAN?
A trailing decision loop? |
|
Definition
100 IF (condition) GOTO 200
...statements for body of loop
GOTO 100
200 ...
and a trailing decision loop:
100 ... statement for body loop ...
... |
|
|
Term
Why does MacLennan describe FORTRAN's GOTO as a “two-edged sword”? What principle first proposed by Edgay Dijkstra seems to explain why GOTO-based control structures are not ideal? You should be familiar with this principle. |
|
Definition
- it is possible to implement almost any control regime with it, those that are good, but also those that are bad.
- he pretty much proposed that programs should move downwards in a consistent order (think no gotos) – The Structure Principle
|
|
|
Term
Why can FORTRAN's Computes and Assigned GOTO's be easily confused? |
|
Definition
Syntax is too familiar... |
|
|
Term
Be able to give examples of interactions of features in FORTRAN that can lead to problems within programs … |
|
Definition
- Overwriting constants/literals
|
|
|
Term
You should be comfortable with both FORTRAN's arithemetic IF and logical IF |
|
Definition
Arithmetic IF:
IF (e) n1, n2, n3
- Less than 0, equal to zero, greater than 0
Logical IF:
If (e) statement
IF (X.EQ.A(I)) K = I - 1 |
|
|
Term
How are parameters usually passed in FORTRAN?
What are the benefits and drawbacks of this approach?
What is the alternative sometimes used in FORTRAN implementations?
Given appropriate fragments of code and the parameter-passing method, you should be able to determind the values that result within each fragment... |
|
Definition
- They are passed by pass by reference
-
- efficient
- but pass by reference can change the values of an input variable which may be changed by the subprogram
|
|
|
Term
What were the two kinds of data in FORTRAN (MacLennan calls them the two data structuring methods included in FORTRAN, p. 66)? |
|
Definition
|
|
Term
What is meant when one says that FORTRAN arithmetic operators are overloaded? |
|
Definition
- It can be used with integers as well as reals
- because different types of mathematical operations are completely different based on the type of number, it is necessary to overload several meanings to each arithmetic operation
|
|
|
Term
Why is FORTRAN's INTEGER type considered to be overworked? |
|
Definition
it is required to do double duty; it represents both integers and character strings. |
|
|
Term
What is the data constructor in FORTRAN's array? Why are these limitations in place? |
|
Definition
Arrays. Static and limited to 3-dimensions because they have to be simple and efficient |
|
|
Term
When are names bound to locations in a FORTRAN program?
|
|
Definition
These are performed by FORTRAN declarations |
|
|
Term
When are names bound to types in a FORTRAN program? |
|
Definition
names are bound to types also during declaration |
|
|
Term
What is FORTRAN's optional variable declaration? What are its benefits and drawbacks? |
|
Definition
- optional variable declarations allows variables starting with a certain letter to be declared a certain type automatically
- drawbacks to this are that programmers may pick obscure names to represent certain variables
|
|
|
Term
What were FORTRAN's lexical conventions?
What were its fixed-format lexics? |
|
Definition
one statement per card and columns dedicated to particular purposes...
fixed-format lexics:
Columns Rows
1_5 Statement #
6 Continuation
07/01/72 Statement
73_80 Sequence number
|
|
|
Term
How are blanks treated in FORTRAN?
Benefits and drawbacks of this decision? |
|
Definition
Blanks are ignored in FOTRAN
drawback: conflicting variable names if the programmer takes too much advantage of it
good: improvement over fixed fields |
|
|
Term
Why is the lack of reserved words in FORTRAN considered to be a mistake? |
|
Definition
Collides badly with the automatic declaration of variables … |
|
|
Term
What are some major characteristics of "first-generation" languages such as FORTRAN? |
|
Definition
- Control Structures
- non-nested
- depends on goto
- no recursion
- Data structures
- name structures
- synctactic structures
- linear arrangement
- ignores blanks
|
|
|
Term
What operation is not available in pure functional programming? |
|
Definition
Do, while, for loops; if statements. |
|
|
Term
What common control structure is this also not available in pure functional programming?
What takes place of this control structure in pure functional programming? |
|
Definition
Variables and iteration are not available;
recursion takes place of iteration |
|
|
Term
What is means by the term referential transparency? |
|
Definition
- Pure functions
- the property of a pure function is that its value depends only on the value of its arguments (and non-local constants)
|
|
|
Term
What is meant by a higher-order function? |
|
Definition
Takes in functions and outputs functions |
|
|
Term
In lecture (and posted) we discussed five qualities of functional programming languages and functional programs (as summarized by Louden) – what are they? |
|
Definition
- All procedures and functions all clearly distinguish incoming values (parameters) from outgoing values (results)
- There are no variables or assignments -- vars are replaced by parameters
- There are no loops--loops are replaced by recursive calls
- The value of a function depends only on the value of its parameters and not in the order of evaluation or on the execution path that led to the call
- functions are first-class values
|
|
|
Term
What are some benefits of functional programming (and of functional styles of programming, even with imperative languages)? |
|
Definition
- Clarity
- Straightforward semantics
- can be manipulated in arbitrary ways, without arbitrary restrictions
|
|
|
Term
Are lisp and scheme suitable only for pure functional programming? Are they used only for pure functional programming? |
|
Definition
|
|
Term
What led John McCarthy to start developing LISP? |
|
Definition
- Conditional expression that is short circuting
- higher-order functions
- anonymous functions
- garbage collection
|
|
|
Term
What control structure did John McCarthy need for his work, develop, and suggest he included in Algol (as well as in Lisp?) |
|
Definition
He wanted to use this with what powerful concept for processing lists? |
|
|
Term
Why was it important to McCarthy that the conditional expression be short circuting? What is meand by short-circuting in this context? |
|
Definition
In recursion, if you hit your base case, you want to short circuit and go no further |
|
|
Term
How did LISP's distinct notation come about? Why did it persist? |
|
Definition
The abstract syntax tree; because programmers liked it |
|
|
Term
What is the primary data constructor in LISP (pg. 314) |
|
Definition
|
|
Term
How are both data and programs represented in LISP? |
|
Definition
|
|
Term
What is the relationship between linked lists and lisp LISTS? |
|
Definition
lists used linked lists; the first element in a list is the first part of a linked list node, and the next is the next in a linked list? |
|
|
Term
LISP was the first language to contain what type of expression (then added to Algol)? |
|
Definition
|
|
Term
How is iteration accomplished in LISP? |
|
Definition
|
|
Term
What is an anonymous function? |
|
Definition
Lambda, which returns an unnamed function |
|
|
Term
What is the difference between reference counts and garbage collection? What are the benefits and drawbacks? |
|
Definition
Both are automatic memory reclamation |
|
|
Term
What is meant by the term currying? |
|
Definition
anonymous/higher-order functions |
|
|