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 ...
Mon, 14 Jul 2003
Dan Sugalski on high end language features
Dan Sugalski makes an excellent point about the inclusion of wacky high end features in programming languages:
[22:37] |
[computers/programming] |
# |
TB |
F |
G |
4 Comments |
That's the point people miss. You don't provide source filters, continuations, macros, or whatever because everyone will use them, you provide them so the two or three people who will use them can produce things that would otherwise be insanely difficult. What people do use is what those few folks made, and that is what makes the difficult stuff worth providing.The context here is a dinner after the Dynamic Langauges on the CLR BOF at OSCON last week.
While I respect Dan's point, I want to quibble with the use of the term 'high-end'. Coroutines, continuations and the like are 'advanced' and 'low-level', but I don't think they deserve 'high-end'.
What Dan doesn't address is the risk involved in exposing those features and making them available to normal folks. As he's a Perl guy, I'm not surprised. </wink>.
BTW, hi again Ted, nice to have hooked up again after close to fifteen years.
Posted by David Ascher at Wed Jul 16 17:24:30 2003
What Dan doesn't address is the risk involved in exposing those features and making them available to normal folks. As he's a Perl guy, I'm not surprised. </wink>.
BTW, hi again Ted, nice to have hooked up again after close to fifteen years.
Posted by David Ascher at Wed Jul 16 17:24:30 2003
David,
Glad you found the blog. I wouldn't quibble with you over advanced vs high-end. I was being a little sloppy. Actually, I'm surprised you didn't get me for wacky ;-). As a recovering Lisp head, I consider all these features to be essential. If anything, I was trying to characterize how curly bracket people might describe them. Kind of like green eggs and ham...
Posted by Ted Leung at Wed Jul 16 22:56:53 2003
Glad you found the blog. I wouldn't quibble with you over advanced vs high-end. I was being a little sloppy. Actually, I'm surprised you didn't get me for wacky ;-). As a recovering Lisp head, I consider all these features to be essential. If anything, I was trying to characterize how curly bracket people might describe them. Kind of like green eggs and ham...
Posted by Ted Leung at Wed Jul 16 22:56:53 2003
Dave, Dave, Dave... I am not, and never have been a perl guy. (I am, for the record, a cynical, grumpy, practical, cranky, black-hearted sysadmin/engineer guy--perl's a tool in the language toolbox, along with C, Forth, FORTRAN, Basic, and, in dire emergencies, COBOL) Nor do I advocate exposing those features to the user, any more than I advocate hiding them. I don't personally give a damn whether they're hidden from the user. What I care about is whether they're hidden from me, because I'm going to use the things when they're needed. You'll note that all I said was they shouldn't be left out just because they're hard. I didn't in general address the reasons they should or shouldn't be exposed.
Also note that I'm an implementor. I don't do language design--I'm not good at it, and it's not my thing. I don't much care about the reasons, real, handwavey, or patronizing, that a feature's included or excluded. What I care about is whether I have the tools available to do what I need to make it work, because if the tools aren't there I'll just drop to C or assembly and do it anyway, designer reasons be damned.
The "high-end" label was Ted's, FWIW. I don't consider any of the features high end. Non-mainstream, perhaps, and for many people hard (though at this point I'm convinced things like closures and continuations are hard because the people teaching these concepts make them hard) but hardly high-end.
Posted by Dan at Thu Jul 17 09:37:39 2003
Also note that I'm an implementor. I don't do language design--I'm not good at it, and it's not my thing. I don't much care about the reasons, real, handwavey, or patronizing, that a feature's included or excluded. What I care about is whether I have the tools available to do what I need to make it work, because if the tools aren't there I'll just drop to C or assembly and do it anyway, designer reasons be damned.
The "high-end" label was Ted's, FWIW. I don't consider any of the features high end. Non-mainstream, perhaps, and for many people hard (though at this point I'm convinced things like closures and continuations are hard because the people teaching these concepts make them hard) but hardly high-end.
Posted by Dan at Thu Jul 17 09:37:39 2003
Dan sez:
Dan also sez:
But that aside. I understand the distinction between implementor and language designer. I also understand that some features which (I argue) are unwise in a high level language are awfully useful as an implementation tool for those languages. In the end it's JMP instructions all the way down.
Note that I'm not against continuations in principle. I think that they, like threads, can cause a great deal of pain if they aren't packaged properly. But that's a language design issue, not an implementation one.
Posted by David Ascher at Fri Jul 18 13:30:58 2003
I am not, and never have been a perl guy.
Dan also sez:
I also do perl 5 training, was, for a while, responsible for the VMS port of perl, did a lot with the original threading model that was built into perl 5.005, write modules, some consulting, and I know far more than any sane human being should about the internals of perl 5.
But that aside. I understand the distinction between implementor and language designer. I also understand that some features which (I argue) are unwise in a high level language are awfully useful as an implementation tool for those languages. In the end it's JMP instructions all the way down.
Note that I'm not against continuations in principle. I think that they, like threads, can cause a great deal of pain if they aren't packaged properly. But that's a language design issue, not an implementation one.
Posted by David Ascher at Fri Jul 18 13:30:58 2003
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