SICE Curriculum Portal for Thomas Heffron
Contents

Home
UMKC Curriculum
   FS '96
      CS 101
   SS '01
      CS 201
   FS '01
      CS 191
      CS 281
   WS '02
      CS 291
      EN 304wi
   SS '02
      CS 352
      CS 481
   FS '02
      CS 431
      CS 441
   WS '03
      CS 423
      CS 451
SICE Survival Guide
Personal Experience

contact me @umkc:
tehqnf@umkc.edu

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.