CS 228 meeting -*- Outline -*- * Why C++? ** a misconception -------------------- A MISCONCEPTION C++ is not the point. The point is data structures. ------------------- It's a misconception that Com S 228, or Com S 227, is a course about a language (a trade or skills in that langugage course) - Com S 228 is about data structures (C++ is a vehicle) Second task is to learn a framework for continued professional growth - specific skills will change over time even in 4 years ** our purpose to teach you about data structures to show you what larger scale (but still smallish) programming is like develop your programming skills for the future of programming this is best accomplished with C++ (in our experience, at the present time): -------------------------- SO WHY C++? support for ADTs you learn another paradigm -------------------------- so you have more tools so you learn how to abstract what you learn from a particular language ** how C++ helps Basically by exposing details and being different than Scheme ---------------------- HOW C++ HELPS low-level exposes more details support for ADTs (and object-oriented) in demand (currently) ---------------------- *** exposing semantic details lower-level execution model (the programming language does less of the boring details for you) you can "see the bits" pointers, type distinctions storage allocation, memory model, dangling refs, ... array bounds not checked, etc. *** object-oriented features classes, inheritance, virtual functions *** in demand currently in demand among employers, although they would often expect a level of experience beyond just what you'll get in this class (however, there seems to be a "C++ backlash" developing. companies switching from C++ to C or Smalltalk because C++ is too hard to use, unstable, not standardized...) ** problems of C++ -------------------------- PROBLEMS WITH C++ lots of detail unstable -------------------------- *** lots of detail details in: syntax semantics I'll sometimes oversimplify (lie) about the details, but we'll still have to describe a lot of the details see the reserve books for *all* the details of C++ *** unstable C++ is undergoing a standardization, growing in size (namespaces, ...) adding standard libraries none of which we'll discuss compilers aren't entirely satisfactory ** why not some other language? ------------------------- WHY NOT SOME OTHER LANGUAGE? Scheme no direct support for ADTs C no direct support for ADTs BASIC no direct support for ADTs Pascal no standard support for ADTs SML hides details, no text CLU hides details, little demand Modula-2 less demand (?), not OO Ada '83 less demand (?), not OO LISP hides details, not typed Modula-3 little demand, no text Eiffel little demand, not free Smalltalk hides details, not typed ------------------------- This hardly exhausts the thousands of programming languages available e.g., Objective-C: not typed, no text Sather: little demand, not standardized Dylan: little demand, no text, not typed ... Also because publishers tend to follow the crowd, there are some good data structure books written using C++ ** summary Again the language isn't the main point of Com S 228 C++ seems an appropriate vehicle for learning data structures and imperative and OO design/programming