[plt-scheme] The perfect teaching language--Is this too much to ask for?
On Jun 14, 2009, at 1:54 PM, Luciano Ramalho wrote:
> Prof. Shriram, I never meant to convince you or anyone else here that
> the "usability cost" of parenthetical syntax outweights its benefits.
> Even a newbie like me understands the trade-off and appreciates the
> benefits.
>
> I just wanted to point out that the "simple" syntax of Scheme does not
> make it necessarily easier to read than other syntaxes that are not so
> regular.
(Luciano, you don't have to call us professors or anything. The fact
that we have academic titles is meaningless. Too many 'professors'
think the title is enough to intimidate people into believing them.
It's awful. The fact that we're older is meaningless, too. It just
means we're closer to death (on the average).)
What is meaningful is that we have demonstrated and keep
demonstrating a broad and deep grasp of the material.
As for syntax, I think you're onto something. It is also true that
even we're stumped when reading others' code. I bet that I could
stump Shriram with 1000s of snippets of code from our code basis and
I bet that the converse is true, too. While it is true that tools and
experience in reading lots of code help people like us a lot, a tool
solution is also unsatisfactory. Everyone claims that everything can
be solved with tools, and we kow from decades of experience that
linguistic solutions are almost always superior in the long run.
As for types, please do respect that we have tons of work behind us
with typed models of languages and meta-theorems concerning types.
When we actively choose not to program in an existing typed language
(but yes I have started to program in Typed Scheme) then there is a
reason.
As for type is a type, please do read the papers on loop holes in
languages, probably starting with Albert Meyer's papers and Luca's in
the 1980s. When Python makes something look trivial, it's probably
wrong.
As for run-time tags, please everyone do understand that types should
really be our terminology for things that are checked before the
program runs and whose purpose it is to help us enforce a discipline
of data (abstraction, as things are always called abstraction in CS)
onto our programs.
Tuning out -- Matthias