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

Re: Rather, DSSLs increase modularity, productivity

From: "Matthias Felleisen" <matthias@ccs.neu.edu>
> -- Matthias, who advocates the use of types to LL1ers.


The programming language I have the most experience with is Smalltalk.

The biggest problem I have using Smalltalk is that I can't produce programs
encoding what I come to understand about desired functionalities at anywhere
near the speed that my understanding grows.

This is especially limiting since my understanding of desired
functionalities can't grow very far beyond what I have encoded in a program
without important aspects such as accuracy and relevance of my understanding
degrading rapidly.

Simply said: I can't correctly* program more than I understand, and I can't
understand very much more than I have already programmed correctly*. I am
guessing my predicament is not that unusual.

[*The kind of correctness involved is relative. Typically "mostly correct"
seems be good enough to keep making progress.]

In the activity of programming, I find types to be extremely important. They
are perhaps the most important concept in the activity of planning what to
program. That said, during execution of my programs, the types that I use
during planning, seem to have lost their importance.

Smalltalk offers very little support for encoding my understanding of the
types that are involved in the desired functionality. Indeed, the
compilation and runtime system that enables my programs to execute is
(blissfully?) unaware of the types that existed in my mind while I was
planning the functionality, yet succeeds in executing my instructions

If the program executes as I intended, I am happy and haven't missed the
lack of support for types in the programming language. However, if the
program doesn't do what I wanted, I need to rethink, and do some more
planning. Now the types are of the essence again, and it hurts that the
system isn't aware of them at all.

Given my predicament, given that I have an intuitive understanding of types
in solving programming problems, but onloy a very limited knowledge of type
theory and advanced type systems in programming, and given that you advocate
the use of types to LL1ers, could you say something about how someone in my
position might use types to get better results?

Thanks in advance,


P.S. To all those involved in organizing LL3 whom I did not thank in person,
thank you!