Ted Leung on the air
Ted Leung on the air: Open Source, Java, Python, and ...
Ted Leung on the air: Open Source, Java, Python, and ...
Tue, 29 Apr 2003
Linearity, Code generation and object failure
A raft of language postings today: Carlos weighs in with
pointers to the "Objects have Failed" debate held at OOPSLA 2002, where
the opposing positions were represented by Guy Steele and Dick Gabriel.
The two essays are "the glass is half empty" and "the glass is half
full". Instead of looking a whether objects have succeeded or failed I
think we need to look at what is still unfinished. Regarding
this, Steele said
[13:04] |
[computers/programming] |
# |
TB |
F |
G |
1 Comments |
Now, objects don't solve all the problems of programming. For example, they don't provide polymorphic type abstraction (that is, generic types). They don't provide syntactic abstraction (that is, macros). Procedural programming still has its place in the coding of methods. But to say that objects have failed because they don't solve all possible problems is like saying carbohydrates have failed because you can't live on pure sugar.As I read Gabriel's essay, it seems that you could boil a lot of his argument down to more simplicity and more dynamism, particularly in the types domain. There were one or two other interesting points that were made:
Powerful concepts like encapsulation were supposed to save people from themselves while developing software, but encapsulation fails for global properties or when software evolution and wholesale changes are needed. Open Source handles this better. It’s likely that modularity—keeping things local so people can understand them—is what’s really important about encapsulation.I think that this an interesting observation as to where language constructs facilitate objectives vs when process facilitates those objectives.
Objects require programming by creating communicating entities, which means that programming is accomplished by building structures rather than by linguistic expression and description through form, and this often leads to a mismatch of language to problem domain.This sounds to me like a call for additional support for metalinguistic abstraction, which is what macros are all about. In the vein of what's left to do, as I was looking through Gabriel's notes I saw many quotes from William Cook, who preceded me both at Brown and at Newton, so I did a little googling and found his home page. And lo and behold, there's a presentation with his ideas on what's left to do. The things from his list that resonate with me:
- Postmodernism - a collage of paradigms (particularly things like persistence and XML). There was a paper from Erik Meijer and Wolfram Schute on this blog today.
- Descriptive Language - I see better support for metalinguistic abstraction as a key here.
- Linearity - "A change in requirements is proportional to the change in
implementation". Will claims this is more important than
encapsulation, modularity, and reuse. I'd say that linearity is
what those things are trying to enable. It doesn't hurt that he got this idea from Sussman.
- Domain-Specific modeling - macros is normally what I think of here. It was interesting to see his adidtions of generative programming, meta-programming, and staged-computation
You can subscribe to an RSS feed of the comments for this blog:
Add a comment here:
You can use some HTML tags in the comment text:
To insert a URI, just type it -- no need to write an anchor tag.
Allowable html tags are:
You can also use some Wiki style:
URI => [uri title]
<em> => _emphasized text_
<b> => *bold text*
Ordered list => consecutive lines starting spaces and an asterisk
To insert a URI, just type it -- no need to write an anchor tag.
Allowable html tags are:
<a href>
, <em>
, <i>
, <b>
, <blockquote>
, <br/>
, <p>
, <code>
, <pre>
, <cite>
, <sub>
and <sup>
.You can also use some Wiki style:
URI => [uri title]
<em> => _emphasized text_
<b> => *bold text*
Ordered list => consecutive lines starting spaces and an asterisk