[plt-scheme] The perfect teaching language--Is this too much to ask for?

From: hendrik at topoi.pooq.com (hendrik at topoi.pooq.com)
Date: Sun Jun 14 08:18:53 EDT 2009

On Sun, Jun 14, 2009 at 12:16:19PM +0200, Marek Kubica wrote:
> On Sat, 13 Jun 2009 23:50:19 -0400
> hendrik at topoi.pooq.com wrote:
> 
> > On Sat, Jun 13, 2009 at 11:22:03PM -0400, Todd O'Bryan wrote:
> > > On Sat, Jun 13, 2009 at 7:36 PM, Matthias
> > > Felleisen<matthias at ccs.neu.edu> wrote:
> > > >
> > > > On Jun 13, 2009, at 7:04 PM, Todd O'Bryan wrote:
> > > >
> > > >> or am I still not correctly verbalizing/understanding what I'm
> > > >> asking for?
> > > >
> > > > You are but like a typical consumer and many computer scientists,
> > > > you are proposing a solution instead of stating and describing
> > > > the problem.
> > > >
> > > 
> > > That's largely because the problem reduces to, "I think there's
> > > something wrong that could be improved and I have a vague sense of
> > > what's wrong and what might fix it." Thanks for bearing with me.
> > > 
> > > > 1. We made the decision to go without static types for good
> > > > reason. You don't want types (at the beginning).
> > > I really do (maybe wrongly). Because if I don't have types at the
> > > beginning, by the time types really count, students don't take them
> > > seriously.
> > 
> > Yeah... But if you have type from the start, students don't see the 
> > point.  Types are just something that gets in the way of getting thir 
> > code running....  This breeds a desire for typeless langauges.
> 
> The desire for dynamically typed languages is also caused by crappy
> static type systems which are not expressive enough to build some kind
> of data structures, throw type errors at runtime (!) and need to be
> circumvented to build anything more advanced.

I quite agree.  It shouldn't be all-or-nothing.  I like the static type 
REFANY in Modula 3.  Values of type REFANY can point to anything, but 
also contain a type tag to identify what is being pointed to.  It's 
rarely used, but when it is used, it's usually essential.  There's just 
enough syntactic overhead to it that you tend only to use it when 
needed.  The rest of the time static types on the usual ordinary types 
find bugs statically.

-- hendrik


Posted on the users mailing list.