Classes: suggestions for improvement

Brendan Eich brendan at mozilla.com
Mon Jun 13 12:26:42 PDT 2011


+1. Very nicely put.

/be

On Jun 13, 2011, at 11:51 AM, Bob Nystrom wrote:

> On Sun, Jun 12, 2011 at 2:38 PM, Brendan Eich <brendan at mozilla.com> wrote:
> Something about classes in JS makes me sad, an emotional effect I can't explain fully.
> 
> <philosophical>
> 
> I'm one of the biggest fans of this class proposal, and I feel a twinge of that sadness too. I look at it as JS taking a step away from Scheme and towards Common Lisp.
> 
> I think one of the big reasons people love Javascript is that it has the same appeal of old school LEGOs: it gives you just a few kinds of pieces but you can combine them in a huge variety of fashions to make all sorts of novel things. Adding class syntax feels a bit like how LEGO pieces started to get more specialized.
> 
> As a creative-at-play, specialization like that sucks. You're taking away my ability to invent something new and replacing it with some ready-made thing that I can't modify. However, as a pragmatic person trying to get work done, this a win. If it's my job to make LEGO cars, a prebuilt chassis makes my job easier and faster.
> 
> Since JS is used by working programmers who just want to ship solid code, I think it's helpful to have features like this that encode common patterns and make them easier to express. I look at class syntax as a pre-built kit for the kinds of things we find ourselves having to make from scratch over and over again. That's great because, honestly, I'm not innovating on "how to define reusable kinds of entities" in JS everyday. I mostly follow the same constructor+prototype pattern that many of us do. So if I can have an ready-to-use syntax for that, it means less time typing that boilerplate over and over, and more of my time spent on the things I am innovating on: user experience, libraries, etc.
> 
> At the same time, it's worth remembering that class syntax doesn't take any toys away from you. You still have all of the JS primitives you know and love to play with, and if classes aren't a good fit for you, you're always free to go your own path. In that sense, they're more like classes in C++ than Java: they enshrine a common pattern but don't rebuild the entire language around them. Like C++, you can use them where they make sense and not where they don't.
> 
> </philosophical>
> 
> In part I think class is the wrong word, as cowboyd tweeted (see below).
> 
> Agreed. "class" isn't ideal, but it's probably the best we have. It carries a lot of baggage, some of which is helpful and some of which isn't. I think most of the pragmatic baggage is helpful (things you make with this class proposal behave pretty similarly to classes in other languages) but the conceptual baggage isn't: people hear "class" and think we're trying to turn JS into Java, which for many is a short hop away from COBOL and having to wear a suit to work. No one wants that to happen to JS.
> 
> - bob

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.mozilla.org/pipermail/es-discuss/attachments/20110613/eb068a20/attachment.html>


More information about the es-discuss mailing list