Path: utzoo!attcan!uunet!ncrlnk!ncrcae!ece-csc!mcnc!thorin!proline!coggins From: coggins@proline.cs.unc.edu (Dr. James Coggins) Newsgroups: comp.lang.c++ Subject: Arbitrary Complexity Message-ID: <5335@thorin.cs.unc.edu> Date: 15 Nov 88 15:14:37 GMT References: <5278@thorin.cs.unc.edu> <187@tityus.UUCP> Sender: news@thorin.cs.unc.edu Reply-To: coggins@cs.unc.edu (Dr. James Coggins) Organization: University Of North Carolina, Chapel Hill Lines: 84 In article <187@tityus.UUCP> jim@athsys.uucp (Jim Becker) writes: >From article <5278@thorin.cs.unc.edu>, by coggins@piglet.cs.unc.edu (Dr. James Coggins): >> The problem is not in ourselves, but in our software user interfaces. > > This is true. It is also part of the evolution that is >occurring with the "Information Age". There is an increasing amount of >material that needs to be digested if one is going to "keep up" with >the world. This needs to be presented to the user in as familiar and >understandable a format as possible. >> >> I can agree that learning to use C++ effectively is challenging right >> now, but this is not the fault of the language and not an indication of >> a C++ Programmer Master Race. The problem is that we lack educational >> materials right now. [clipped] > > Again we are in agreement. The wrench that I would like to >throw into the works is the changes that are taking place around us. >It would >be wonderful if we had the educational materials and the effort and >money and energy to do this. >Here in California we are spending more money than ever on >education, but the average kid sure isn't the Einstein you would >expect. North Carolina can't understand why their kids' SAT scores are still 49th highest in the nation in spite of increased spending. (South Carolina - where I grew up- is 50th) > Therefore, until the time when we create new kids that are >really bright, part of the solution may be to make the tools that are >used in all forms of development more easily understandable to >"average" level users. Hence my argument toward making higher level >toolkits for users. > >-Jim Becker >[attach your own name..] I sympathize with your political stance. I'm not as sure about the extrapolation to the technical domain. We software engineers have a hard job because we must deal with arbitrary complexity. We are the only discipline that faces arbitrary complexity daily. Mathematical methods can't handle complexity; Physics falls apart in the face of arbitrariness. Software engineers need all the tools we can get to manage arbitrary complexity. Sometimes we can find an effective metaphor like the "Desktop" that lets us use what we know from other domains to understand what our computer systems can do and are doing. We face applications that are not easily captured by such metaphors. Therefore, we need tools that are sophisticated enough to help us deal with arbitrary complexity. Sophisticated tools are going to be complex until an appropriate metaphor or model can be found. The Object-Oriented Design paradigm is a metaphor that leads us in what appears to be a productive direction. Its implementation in C++ achieves some things at the expense of others. In particular, the decision to keep C++ compatible with C has far-reaching consequences, some clearly good, some clearly bad. We are developing tools that allow us to express the required precision in a form that is highly abstracted and therefore easier to understand and manipulate. I think we are moving in a reasonable direction but we have far to go. Newton said he was able to see farther because he stood on the shoulders of giants. Computer scientists don't see very far because they are always standing on each others toes. We don't have mechanisms that allow us to use each other's results effectively. We can produce simpler languages for educational purposes that can develop good thinking patterns and some useful experience. But we still need the power tools for the difficult and complex problems we face. They will always be there. I'm impressed at how C++ imposes a structure with conceptual integrity on top of a structure that has none (well, little). I call that progress. --------------------------------------------------------------------- Dr. James M. Coggins coggins@cs.unc.edu Computer Science Department UNC-Chapel Hill Not a member of the putative Chapel Hill, NC 27514-3175 C++ Programmer Master Race. ---------------------------------------------------------------------