Programmers use programming languages to instruct computers to do things.
2
New cards
Syntax
The structure of programs (tokens
3
New cards
Semantics
The expected behavior of a given syntactical construct.
Meaning of a language - Describes the effects of executing the code - Difficult to provide a comprehensive description of meaning in al contexts
4
New cards
Programming language
a notation for communicating to a computer what we want it to do
5
New cards
What did John von Neumann propose?
proposed that computers should be permanently hardwired with a small et of general-purpose operations.
6
New cards
Opcode
the first 4 bits of a line of code
indicates the type of operation to be performed
Next 12 bits contain code for the instructions operands.
7
New cards
Assembly language
a set of mnemonic symbols for instruction codes and memory locations
8
New cards
Assembler
a program that translates the symbolic assembly language code to binary machine code
9
New cards
Loader
a program that loads the machine code into computer memory
10
New cards
FORTRAN
FORmula TRANslation language
- developed by John Backus in the early 1950s - Reflected the architecture of a particular type of machine - lacked the structured control statements and data structures of later high-level language
11
New cards
ALGOL
ALGOrighmic Language released in 1960.
- Provided a standard notation for computer scientists to publish algorithms in journals. - Included structured control statements for sequencing (begin-end blocks)
12
New cards
Compiler
Translates programming language statements into machine code
ALGOL was the first language to receive a formal specification or definition
13
New cards
Pascal
language for teaching programming in the 1970s
Descended form ALGOL
14
New cards
Ada
For embedded applications of U.S Dept of Defense
15
New cards
Lambda Calculus
Computational model developed by mathematician Alonzo Church
Based on the theory of recursive functions.
16
New cards
Lisp
Programming language that uses the functional model of computation
17
New cards
What are the two types of programming abstractions?
Data abstraction Control Abstraction
18
New cards
Data Abstractions
**Simplify the behavior and attributes of data for humans**
\ *Ex: numbers, character strings, search trees, standard mathematical operations*
simplify the behavior and attributes of data for humans
19
New cards
Control Abstractions
simplify properties of the transfer of control
Examples: loops
20
New cards
Basic Abstractions
Collect the most localized machine information
21
New cards
Structured Abstractions
Collect intermediate information about the structure of a program
22
New cards
Unit Abstractions
Collect large-scale information in a program
23
New cards
Basic data abstraction
Hides internal representation of common data values.
\ Values are also called "primitive' or "atomic" because the programmer cannot normally access the component parts or bits of the internal representation
24
New cards
Variables
Use of symbolic names to hide computer memory locations containing data values
25
New cards
Data types
names given to kinds of data values
26
New cards
Declaration
The process of giving a variable a name and a data type
27
New cards
Data Structure
collects related data values into a single unit
Hides component parts but can be constructed from parts
28
New cards
Array
a sequence of individually indexed items with the same data type
29
New cards
Information Hiding
defining new data types (data and operations) that hide information
30
New cards
Unit abstraction
often associated with the concept of an abstract data type
a set of data values and the operations on those values
31
New cards
Interface
a set of operations available to the user
32
New cards
Implementation
Internal representation of data values and operations
33
New cards
Unit abstraction also provides \___________________
Reusability
34
New cards
Typically \__________ are entered into a \__________ and become the basis for library mechanisms
components, library
35
New cards
Application programming interface (API)
gives information about the resource's components
36
New cards
Basic control abstractions
statements that combine a few machine instructions into an abstract statement that is easier to understand
37
New cards
Syntactic Sugar
A mechanism that allows you to replace a complex notation with a simpler shorthand notation
Ex: x +\= 10 instead of x \= x+10
38
New cards
Branch Instructions
Instructions that support selection and iteration to memory locations other than the next one
39
New cards
Iterator
an object associated with a collection (such as array
40
New cards
Procedure (or subprogram or subroutine)
groups a sequence of actions into a single action that can be called or invoked from other points in the program
41
New cards
Procedure Declaration
names a procedure and associates it with the actions to be performed
42
New cards
invocation (or procedure activation)
the act of calling the procedure
43
New cards
Parameters
values that can change from call to call
44
New cards
Arguments (or actual parameters)
values supplied by the caller for the parameters
45
New cards
Runtime environment
The system implementation of the program
- Stores information about the condition of the program and the way procedures operate
46
New cards
Function
closely related to a procedure
- returns a value or result to its caller - can be written to a correspond more closely to mathematical abstractions
47
New cards
Recursion
a mechanism that further exploits the abstraction mechanism.
48
New cards
Higher-order Functions
functions that can accept other functions as arguments and return functions as values
49
New cards
map functions
expects another function and a collection as arguments
applies the argument functions to each element in the argument collection and returns a list of results
50
New cards
Unit
a stand-alone collection of procedures providing logically related services to other parts of a program
Allows a program to be understood as a whole without needing to know the details of the services provided by the unit
51
New cards
Threads
other programs executing outside the Java system
52
New cards
Task
mechanism in Ada for parallel execution
53
New cards
Imperative Language
a language with three properties -Sequential execution of instructions -Use of variables representing memory locations -Use of assignment to change the values of variables
54
New cards
Paradigm
Pattern
55
New cards
von Neumann Bottleneck
requirement that a program be described as a sequence of instructions
56
New cards
Functional Paradigm
Based on the abstract notion of a function in lambda calculus
57
New cards
Logic Paradigm
Based on symbolic logic
58
New cards
Object-oriented paradigm
Reusable code that operates in a way to mimic behaviors of real-world objects
59
New cards
Language Syntax
similar to the grammar of a natural language
60
New cards
Grammar
formal definition of the language's syntax
61
New cards
Lexical structure
structure of the language's words
similar to spelling in natural languages
62
New cards
Tokens
the language's words
includes keywords
63
New cards
Are there any generally accepted formal methods for describing semantics
No.
64
New cards
Translator
a program that accepts other programs and either directly executes them or transforms them into a form suitable for execution
65
New cards
What are the two major types of translators
Interpreter and Compiler
66
New cards
Interpreter
Executes a program directly
67
New cards
Compiler
Produces an equivalent program in a form suitable for execution
68
New cards
Compilation requires at least two steps...
Source program - input to the compiler
Target program - output from the compiler
69
New cards
What must a target program be?
- Translated by an assembler into an object program - Linked with other object programs - Loaded into appropriate memory locations
70
New cards
Target language may be \____ \_____
byte code
71
New cards
Byte code
a form of low-level code
72
New cards
Virtual machine
written differently for different hardware architectures
73
New cards
Efficiency of execution
primary design criterion - Early FORTRAN code more or less directly mapped to machine code
74
New cards
Writability
the quality of a language that enables a programmer to use it to express computation clearly
75
New cards
Efficiency
usually thought of as efficiency of the target code
76
New cards
Programmer efficiency
how quickly and easily can a person read and write in the programming language?
77
New cards
Expressiveness
how easy is it to express complex processes and structures?
78
New cards
Regularity
refers to how well the features of a language are integrated
79
New cards
Languages that satisfy the criterion of regularity are said to adhere to the \_________________
principle of least astonishment
80
New cards
Regularity can be subdivided into three concepts
- Generality - Orthogonal design - Uniformity
81
New cards
Generality
achieved by avoiding special cases in the availability or use of constructs and by combining closely related constructs into a single more general one
82
New cards
Orthogonal design
constructs can be combined in any meaningful way
83
New cards
Uniformity
a design in which similar things look similar and have similar meanings while different things look different
Can classify a feature or construct as irregular if it lacks one of these three qualities
84
New cards
Value Semantics
Values are copied during assignment
85
New cards
Reference semantics
Two references to the same object
86
New cards
Security
is the program going to make the computer crash?
87
New cards
Semantically safe
languages that prevent a programmer from compiling or executing any statements or expressions that violate the language definition
88
New cards
Extensible language
a language that allows the user to add features to it
89
New cards
Macro
specifies the syntax of a piece of code that expands to other standard code when compiled