CS441 - Homework #2
This
evaluation is based upon the criteria in Chapter 1 of the
text by
Robert Sabesta. My summary of these criteria can be found
here.
Much of the analysis
on the page is based on several sections in the course text.
Readability
C++ is readable by
most CS students due to the popularity of the UNIX/C/C++
environment in universities. However, it does fall a bit short
when compared to the evaluation criteria.
Since C++ has its
roots in C and incorporate C's constructs, it has a large number
of components that must be understood by the reader. It also
incorporates quite a bit of multiplicity and operator overloading.
All of which make it a more complicated language to read.
C++ is a relatively
orthogonal language. Primitive data types can be combined into
larger structures, but there are some limitations that keep it
from being completely orthogonal (arrays cannot be a return value
from a procedure - but pointers can).
It has a sufficient
set of control statements without using goto statements.
C++ has a large amount
of native data types and minimal restrictions on variable names -
the use of keywords are not allowed to be variable names. However,
C++ is case sensitive, so the reader must take care to notice
which variable is being used.
The syntax of C++ is
very easy to pickup since it has a top-down flow with jumps to
(and back from) predefined procedures. These procedures and control
statements are easily noticed by the block statement design.
Writability
C++ incorporates
almost all of the concepts of programming languages which makes it
a very writable language. However, the large component set can be
both a blessing and a curse.
This large component
set makes C++ a very expressive language and, thus allowing a
programmer to write compact code. However, the danger of have one
programmer learn one subset of a C++ while a different programmer
learns another means that there can be some stumbles during
development.
C++ has excellent
support for abstraction - both process and data.
Reliability
C++ is comparatively a
very reliable language. Its strong type checking and case
sensitivity allow for many errors to be found at compile time. And
its powerful exception handling can keep a process running even
after a run-time error.
However, C++ does
allow for aliasing with pointers - creating the possibility of
dangling pointers and memory leaks. A writer must take care to
collect these garbage memory allocations.