[plt-scheme] Re: plt-scheme type of language
On Dec 11, 2009, at 1:06 PM, Artyom Shalkhakov wrote:
> Hello Matthias,
>
> 2009/12/11 Matthias Felleisen <matthias at ccs.neu.edu>:
>>
>> On Dec 11, 2009, at 11:47 AM, Artyom Shalkhakov wrote:
>>
>>> (To make it clear, having read PLAI and done the exercises, I have
>>> many
>>> questions of the "why"/"why not" sort -- and those you've raised,
>>> and
>>> I don't know which books to follow.)
>>
>> This is fair and I take half the blame as a non-co-author.
>> I voiced just this kind of complaint when I first studied
>> this kind of course (A Hitchhiker's Guide to the Meta-Universe)
>> and I could and should have fixed this consistently -- but alas,
>> after one or two courses that tried this, I went back to the old
>> mold. Just show them the right way, there are too many ways to
>> do things wrong, and too many silly arguments to take apart.
>
> I'm not sure I follow, sorry.
>
> Are you basically saying that a good way to teach students is to show
> them the way that is considered "right" (by majority, by authority,
> etc.)? Does "right" mean "established results" in this context?
Yes. Consider an example such as dynamic scope for variables.
I am pretty sure that very few people even discuss this idea
in their courses. It was a historic mistake, and it got buried
with Lisp. Even if you do throw in a lecture on dynamic scope
when you cover lexical scope, it's just a waste of time --
the disadvantages of dynamic scoping are so obvious that students
just shrug their shoulders and move on. And yet, there are a
few people left out in the world who every so often promote
the idea.
So the problem is this:
-- do we cover a lot of materials on what the community
has recognized as good ideas in PL and friends?
-- where do we cut some of this material so that we
can explain why these ideas have come to be
recognized as better than others?
-- if option 2, which material do you think we should cut:
-- lexical scope
-- parameter passing
-- types
-- direct interpreters
for state, functions/closures, the whole thing
-- cps and continuations
-- converting cps into register machines
-- macros
-- Matthias