[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: peasant revolt against DrScheme!




   Sender: sperber@informatik.uni-tuebingen.de
   Cc: jja.koot@wolmail.nl, plt-scheme@fast.cs.utah.edu
   From: sperber@informatik.uni-tuebingen.de (Michael Sperber [Mr. Preprocessor])
   Date: 27 Jan 2001 10:53:40 +0100
   User-Agent: Gnus/5.0807 (Gnus v5.8.7) XEmacs/21.2 (Persephone)
   Content-Type: text/plain; charset=iso-8859-1

   >>>>> "Matthias" == Matthias Felleisen <matthias@cs.rice.edu> writes:

   Matthias> Mike, 

   Matthias> I also thought for a long time that showing kids how
   Matthias> closures are objects and that one can build objects with
   Matthias> closures is a good way to expose them to OOP and the whole
   Matthias> notion of objects.

   Matthias> In all honesty, I have come to doubt that the
   Matthias> message-dispatching style of Scheme is a good way for
   Matthias> novices to learn about OOP. For those who have already
   Matthias> studied C++/Java classes and objects, probably yes. For the
   Matthias> others, an explanation of how something works doesn't
   Matthias> explain how you're to use it.

   Sure, that's a whole different lecture.  On the other hand, this part
   takes about 1.5 hours, and just pretty much works.  You'll be glad to
   know that at the end of 1.2 of these hours, the *students* came up
   with the concept of mixins by themselves.

That's very nice. Great job!

   Matthias> In HtDP I have followed the strategy to swamp them with
   Matthias> functions that look similar in the first few sections. Then
   Matthias> we say: hey all these things look alike. They must look
   Matthias> alike because the design recipe takes you through similar
   Matthias> stages in the development. How can we do better? ABSTRACT!

   The real problem is that the design of Java/C++-style OOP is
   demonstrably arbitrary.  I have yet to find a convincing example that
   shows why OOP (especially the semantics of this) has to be the way it
   is.  In my own programs, it pretty much never shows up at all.


OOP is arbitrary for people who have never thought about FP (`a la Scheme
and ML) and the connection between FP and OOP. The very same inductive
style of programming that leads to well-formed FPs *is* the pure OOP
style. OOP requires just a lot more syntax. 

I have lectures on this that are partly on-line. They connect HtDP directly
to Java programming. (In C++ you have the lack of GC problem. So that's 
different.) I will clean them up and post them. 

-- Matthias