Language Evaluation Criteria
give the definition of orthogonality
A relatively small number of primitives constructs can be combined in a small # of ways to build the central and data structures of a lang
From the criteria that we can use to assess programming languages, which of the following characteristics influences reliability: Orthogonality Syntax design Expressivity Restricted aliasing Simplicity Data types Support for abstraction Type checking Exception handling
All of them
what is expressivitity
Convenient ways of specifying computations for instance count = count + 1 count +=1 count++ ++count
T/F imperative langs don't work well with von neumann arch
F, imperative languages work very well with von neumann arch
T/F it is better to have a large number of primitive constructs and a large number of ways to combine them
F, it is better to have a small number of constructs and a small constitent set of rules for combining them (orthognality)
T/F orthogonality is not closely related to simplicity in that the more orthogonal the design of the language the fewer exceptions the language rules require
F, it is closely related to simplicity
T/F the von neuman machine is good for parallel computation
F, it is good for serial computation
T/F serial languages are mainly used for parallel computation
F, serial computation
t/f when it comes to wrtiteability a large number of primitives is always better than a small set of primitives and a consistent set of rules for combining them
F, the opposite is true here
T/F before 1970 software fdevelopment was mainly thought of in terms of maintaniblity
F: Writing code
T/F readability is not considered in terms of the problem domain? Give an example to support your answer
F: it should be considered in the context of the problem domain An example would be someone writing a program and using language that was not suited for the program. The code will look contorted and mangled, very difficult to read.
what is readability
How easily a lang can be read
what are the 4 categories prog langs are often put in
Imperative functional Logic object oriented
What is the von Neumann bottleneck?
It is a limitation on throughput caused by standard computer arch
DESCRIBE MICROSOFT .NET
Microsoft .NET - A large and elaborate collection of software development tools (C++, C#, J#, Jscript, Visual BASIC).
which of the following are true about true interpretation No translation necessary, interprets on the fly fast execution requires more space becoming popular lisp
No translation necessary, interprets on the fly slow execution**** requires more space becoming rare**** lisp
Describe in greater detail what orthogonality in a programming language means
Orthogonality in a programming language means that a relatively small set of primitive constructs can be combined in a relatively small number of ways to build the control and data structures of the language. Furthermore, every possible combination of primitives is legal and meaningful.
Give two examples of syntax design that can effect readability
Special words: for example being able to close a group with different special words such as end loop or end if can help with readability vs just closing with a brace form and meaning: when you write a statement so that its appearance correlates with its purpose you greatly increase readability. An example of where this is perhaps broken is static in C, it has two different meanings depending on whether it appears inside of a function vs outside of it. one of the biggest complaints about shell command is that there appearance doesn't always suggest their purpose, for instance what does the command grep do?
T/F feature multiplicity can negatively affect readability
T
T/F maintainability is influenced largely by readability
T
T/F maintancence is correlated with cost
T
T/F multi-core computer and symmetric multiprocessing is good for serial and parallel computation
T
T/F object oriented languages are closely related to imperative ones
T
T/F the computer Hardware/Software is very influential in determining what lang should be used
T
T/F with the von neumann arch data and instructions must be sent from memory to cpu and back to memory
T
T/F: A language with a large number of basic constructs is more difficult to learn than one with a smaller number
T
T/F: to much orthoganlality can be bad for wrtieablity
T
T/F writeabliity must be considered in terms of the problem domain
T, Thins about using C vs VB to create a UI
T/F in function languages should work well with with parallel arch
T, but in reality little progress has been made
T/F functional languages such as lisp are considered to be the most simplistic. If so why?
T, it is because that can accomplish everything with a single construct, the function call, which can then be combined with other function calls.
T/F: readability problems occur whenever the program's author has learned a different subset from that subset with which the reader is familiar
T: When dealing with large programming languages the user often learns a subset of the language, this often times used to excuse the large number of constructs the language may be using, but this is not a valid excuse.
how would you draw the Hybrid skeleton
Test yourself on this!!!!!!!
can you draw the complete skeleton of the compiler
Test yourself on this!!!!!!!! It will be asked on the test
what is the solution to the von neumann bottleneck
The solution to this bottleneck is often given to be the change in computer arch. Some proposed solutions include caching and multi threading
Give an example of why data types help with readability
Think about if there was no Boolean data type
what is operator overloading
This is when a single operator symbol has more than one meaning, for example we could overload the + operator in a class like string so that we can concatenate two strings by just using +
what is feature multiplicity
This is when there is more than one way to accomplish an operation in a program, for example in java a user can increment a simple integer variable in 4 different ways count = count + 1 count += 1 count++ ++count
Concerning programming what does orthognality mean
This simply means that I can change A without affecting B, like a radio changing the station does affect the volume and vice verssa
what is hybrid implementation here
a combination of compiler type and interpreter type implementations
what is a procedural programming lang vs a non procedural one
a procedural programming lang specifies the order of execution whereas a non procedural one does not
what is a multi-core computer
a processor with multiple execution units on the same chips
what is a symmetric multiprocessing unit
a symetric
Which lang. uses hybrid approach
ask the professor
can you build a language directly on top of machine language?
ask the proff
Why does iteration work well on von Newmann machine
because it doesn't have the same overhead as recursion
GIve a reason why we use imperative lalnguages
because we use von neumann machines
can you draw the basics of the von neumann arch
draw the picture
Why is C++ dangerous
exposes pointers no bounds checking
what is abstraction
hiding away of the complexities so that whats left is the most simplistic form of the object
programming languages are often categorized into what 4 bins
imperative logic functional object oriented
which of the programming categories are process oriented
imperative, functional, logic
what 3 of the 4 programming language catagories fall under procedural
imperative, functional, object oriented
what is a what is von Neumann machine
it is a computer architecture design that consists of the ALU, memory unit, registers and inputs. with the von neuman arch programs and data are held in memory
after drawing the skeleton of the compiler test yourself on wehter you know each part
lexical analyzer gathers the characters of the source program into lexical units lexical unit identifier, special words, operators, and punctuation symbols symbol table a database containing type and attribute info of each user defined name in the prog syntax analyzer takes the lexical units from lexical analyzer and use them to construct parse trees parse tree represents the syntatic structure of the program sematntics analyzer produces a program in a diffrnt langauge ata n intermediate level between source prog . and machine lang. optimization makes the program smaller, faster, or both code generator translates the intermediate code into machine language
what programming category falls under non procedural
logic
in the late 1970's the software life cycle was developed and codding was given a smaller rode whereas ________ was recognized as a large part of the cycle particularly in terms of cost
maintainability
what are the main features of a functional lang (LISP)
no variables symbolic data: atom and list recursion
which of the programming categories are data oriented
object oriented
what are primitives in programming languages
primitives are basic operations that are supported by the programming language. A programmer can combine primitives to make to make more complex operations like functions or procedures.
which is probably the best lang out write now for write-ability
python
what are the 4 criteria most computer scientist agree are important
readability, write ability, reliability, and cost
name a design trade off when it comes to programming languages
reliability vs cost write ability vs readability flexibility vs safety
tell me 4 things about a logic based programming language
rule based rules are specified in no particular order it has data which consists of a fact and rule control: inferencing engine
von neumann arch supports what type of computation
serial computation
multi core computers and symmetric multiprocessing support what types of computation
serial computation and parallel computation
From the criteria that we can use to assess programming languages, what 4 o the following charactersitics influences readability: Orthogonality Syntax design Expressivity Restricted aliasing Simplicity Data types Support for abstraction Type checking Exception handling
simplicity Orthognality data types syntax design
From the criteria that we can use to assess programming languages, what 6 of the following characteristics influences write-ability: Orthogonality Syntax design Expressivity Restricted aliasing Simplicity Data types Support for abstraction Type checking Exception handling
simplicity Orthogonality Data types syntax design support for abstraction expressivity
what is smp
smp stands for symmetric multiprocessing and is a computer system with multiple identical processes that share memory and connect via a bus
what is throughput
the amount of information a system can process in a given amount of time
how does execution of machine code occur with von neumann arch
this occurs in a fetch and execute cycle
what does compilation do
translates high level programs to machine code
give 3 essential features of imperative languages
variables, model memory cells assignment statements iteration works well with von neumann arch
what is reliability
when a program performs correctly under all conditions
whats the difference from processes oriented and data oriented
with process oriented the language revolves around processes and with data oriented the lang revolves around data
What is writablilty
writeablity is how easily a language can be written to create programs for a chosen problem domain