jeffmc@tekecs.UUCP (01/22/87)
Some thoughts on the learning of OOP. Note, I am an advocate! I wanted to pass on some of our experience here at Tektronix with respect to the teaching of Smalltalk. We have been teaching beginning and advanced Smalltalk classes for nearly two years and have taught over 200 professionals the language. Please note that we emphasis the teaching of the use of the language, not the the why-it-is-so-great of Smalltalk altho we can't help ourselves, a lot of that comes out. We are also not very interested in all the theoretical points about completeness, ability to solve every problem, etc., since we teach to learn the language as it is and use it as it is. We find that three areas must be covered in the teaching of Smalltalk: 1) Object Oriented Programming; 2) Smalltalk syntax; and 3) Smalltalk environment. OOP as a design approach is not easy to learn for most professionals. There appears to be two classes of students: i) Makes great sense, obvious, just give me some practice; and ii) Why, why, why, I can do it better in C, Lisp, FORTRAN, etc. As someone mentioned, a religious issue. I do believe it is a paradigm shift since it creates such a strong response. The shift is that in OOP, especially as demonstrated by Smalltalk, the user (programmer) looks at the problem from the point of view of the problem not the point of view of the computer. Objects seem to be a way of viewing the world that is close to how a human thinks about things for a large class of problems. (Note that I will never claim that ST is the 'last' programming language. Such a beast does not exist!) We have found that the more experienced the professional is the stronger the reaction, one way or the other. We have also noted that beginners with little or no CS background may take longer to get started in the language but will almost always be 'better' OOP programmers after one week!? The ST syntax seems to be very straight-forward for folks to learn. It is really very simple and very consistant. The ST environment is second most difficult part of learning ST. Most of this is just because there is so much there. ST contains over 200 classes (data types) and over 5000 methods (procedures). Learning these is a long term project. Just learning how to handle a mouse and a multi-window (modeless) system also takes time. Most folks love the working environment. A common comment is that the programmer does not want to go back to the old way of doing things(edit-compile-link). Personally I have been programming for over 24 years and I won't go back unless forced to. People learning Smalltalk get frustrated by the magnitude of the changes in their thought processes. They also love it. People laugh, swear and do more is less time than they thought possible. The dangers of learning ST are primarily in the area of focus. Because the system is so open it is very easy to 'get lost' exploring. This helps the learning by exposure but it makes it easy to get sidetracked. There is also a tendency to start coding too early. This problem is less severe in ST than other languages since any work that is done can be modified with little effort. Another thing we have noticed is that after a reasonable amount of time programmers begin to recognize 'good' ST style. The environment allows for easy modification and we find people renaming methods/classes to closely reflect their intent. This fine tuning, usually a luxury in programming, is done early and makes for code that is much easier to understand and maintain. I am more than happy to talk to folks about our experience in more detail. Jeff McKenna (503) 685-2943 jeffmc.tekecs@tektronix.com