A critique of Common Lisp

Free download. Book file PDF easily for everyone and every device. You can download and read online A critique of Common Lisp file PDF Book only if you are registered here. And also you can download or read online all Book PDF file that related with A critique of Common Lisp book. Happy reading A critique of Common Lisp Bookeveryone. Download file Free Book PDF A critique of Common Lisp at Complete PDF Library. This Book have some digital formats such us :paperbook, ebook, kindle, epub, fb2 and another formats. Here is The CompletePDF Book Library. It's free to register here to get Book file PDF A critique of Common Lisp Pocket Guide.

It's just that sweet. I have a long list of things that will hopefully make things way better and now that I'm almost done with my dissertation I hope to start addressing them soon. This is just a heads up for context that someone published a link to Mark's post in HN here: news. I completely agree - I think that classes and let as ways to standardise the best practice way of something most people are already doing.

This is a noble and very important thing that really helps. By letting wisdom of the masses show us what people need and letting user-land solutions spearhead progress and then specifying the parts that work is an excellent approach - having a TC in charge is really nice and ensures vision and order.

A critique of common LISP | / | DeepDyve

The reason I'm trying to get more involved in the process is because I like the way things are heading and the discussions held and I'm learning a lot. If people are unable to internalize the whole language, then surely we need a way to remove cruft and idiosyncracies in it, lest the language stagnate beyond repair.

While I don't personally see a need for the proposed let syntax, I think that concerns about the language growing uncontrollably should be directed at its apparent lack of deprecation strategy, rather than shutting down discussion of new ideas that might help us write better programs. I don't think anyone is "frightened" about removing these things.

Common LISP: a gentle introduction to symbolic computation

The TC has a commitment not to "break the internet", by removing something like var or typeof you're disabling billions of people who are using the internet - it would very much literally "break the internet". Even if the TC unanimously votes on removing 'var' - this is not something browser vendors would do anyway. This issue has been discussed on the list several times before and even the modest attempt to fix typeof null failed when it was attempted.

Here is some discussion about it esdiscuss. The way forward is pretty much to avoid features like with for the most part, understand older code but gradually write newer code. Any breaking changes to the language require extensive research which will likely conclude in not making the change like var anyway. Note that strict mode already fixes a lot of things quirkiness of arguments, with, non-lexical scope, globals, etc. Classes have safe defaults non enumerability of properties , for I think the difference between your list and mine exemplifies the tragedy of the commons as so well described by Mark.

Although we both share a liking for modules and imports, my favorite ES6 feature is the arrow functions, with destructuring near the top. The very bottom of my list, the only one I really, really wish n not been included is class. Covering the desires of both users like you and users like me is what can so easily leaf to bloat. While I agree that the impossibility of deprecating features is a problem without a solution in JS , it's also fair to say that deprecation doesn't really work or help.

They do deprecate occasionally, with difficulties.

Your Answer

Yet the language had already blown complexity out of any sane proportion 25 years ago. Let alone today. Not a chance that there is a single person who even remotely understands the full language, and there probably hasn't been one for 3 decades at least. Deprecation doesn't solve the problem because new cruft typically gets added orders of magnitude faster than old cruft can ever be removed.

That is true for almost all production languages. Because it's so much easier to add stuff. Thus, the only way to keep a language small if at all is being extra careful about adding features. Just about any terrible feature can be justified by "use cases", but that's insufficient reason to add it.

Especially "convenience" features are a slippery slope. I could make a list of ES6 additions that already violate this principle. An interesting wrinkle in language design has been the rise of sophisticated linting and style tools like jscs. If you wish to deprecate var for instance, it is straightforward to write a jscs module to enforce that.

Further, several large communities node, wikipedia, etc have published jscs "presets" that effectively define the subset of the language they use.

Invited Talk - Guy Steele

So in a meaningful way we are getting the tools to voluntarily deprecate features in a community-driven way. Certain quirks may always exist in the spec although perhaps more and more they will migrate to compatibility appendixes , but can be effectively ignored for communities opting in to jscs presets.


  • Guy L Steele.
  • The lisp-critic Reference Manual.
  • Welcome to our Hillbrow : a novel of postapartheid South Africa!
  • Abduction in Context: The Conjectural Dynamics of Scientific Reasoning!
  • Retirement Portfolios Workbook: Theory, Construction, and Management (Wiley Finance)!

I note that certain ES6 features have also been written specifically to allow opt-in to sane behavior. For example, a SaneArray subclass of Array is often discussed here. Use of SaneArray instead of stock Array could also be enforced by jscs-like tools. Although this means giving up Array literal syntax? So there's still a bit of awkwardness. And API boundaries are tricky. Future work! Anyway, I look forward to a continued process of community-driven feature deprecation, and hope that we will continue to look for ways in ES7 to allow further opt-in fixes to our warts.

I also look forward to continued development of interesting rule sets and analyses in jscs and similar tools to shave off warts. I do not share Mark's view. Contra his sentiment, I was using the "small" version of JS for many years and noted that most non-trivial uses required finding or building a library.

References

That choice of library which exist to fill in platform and language deficiencies leads to a a split in common use that's just as pernicious as "choosing a subset". It sounds like you are advocating for a larger standard library in JS. I think many on this thread are focusing on whether more syntax features should be added. I'd even argue that the an unwilling or inability to grow was one of the reasons that Pascal and Smalltalk both sputtered out after some initial success. Pragmatic growth is probably essential for achieving and maintaining broad adoption. On the other hand, curation of language growth is really important.

Not every good idea can be fit into a language and not evert seemingly valuable features has long term utility or durability. ES needs to evolve more rapidly than once every years. The yearly update plan is good, but that doesn't mean we should be rushing proposals particularly complex ones through the process in order to catch the next yearly release. Bake time is good. There are numerous ES6 features that are much better because their design had a chance to evolve over a a two or three year period. This isn't a contest to see who can or can't get their favorite feature into the language.

Nobody should take it personally if their good idea doesn't make it. I've probably had dozens of of really good ;- ideas for making ES better that haven't made it into the language. First, from many arguments with Alex, I am indeed confident that Alex and I have different views about these matters.

Greenspun's tenth rule

In my post, I definitely meant more than syntax, but I also agree that the force of my point gets weaker as we move from core language to standardizing libraries. The overall standard language can be seen as consisting of these major parts:. I have listed these in order, according to my sense of the costs of growth and the urgency for minimalism. For all of these we still need to exercise discipline. But it is only for the last one that we should consider growth of absolute size to be unbounded; restricting ourselves only to the rate of growth as we wait for candidates to prove themselves first by the de facto process.

Ideally, TC39 should stop being the bottleneck on the last bullet anyway, as external de facto and de jure processes should be perfectly capable of independently arguing about and evolving standard convenience modules.


  1. Passionate;
  2. The Judas kiss.
  3. The Complete Guide to Sharpening.
  4. Lung Biology in Health & Disease Volume 150 Severe Asthma: Pathogenesis and Clinical Management 2nd Edition?
  5. In all of the examples I mentioned there are other, more predictable alternatives already in the language. Do we really expect JavaScript programmers in to remember to use Number. I really don't understand why people think "use strict" was OK to pull off, but further breaking-change evolutions of the language are not.

    In all of the web, we have not run across a single incident of this happening accidentally. For the record, not only have we successfully deprecated one feature, we have even wounded it sufficiently that I expect most of us will outlive it:. Insofar as breaking changes, "use strict" in E5 was basically hitting the low-hanging fruit. Now things get much more tricky. As has been endlessly stated, you can't break the web. Therefore, I would anticipate future versions of this spec to continue to be what they have been in the past: mostly additive, except where clarifications are required.

    Anything else is incredibly disruptive - much more so than the switch from IPv4 to IPv6 and we see how long that has taken - and only under the threat of running out of addresses. JS faces no such threat. It can and we are probably already seeing some signs of that. But it doesn't have too, if we are disciplined within TC39 collectively develop the understanding that yearly release is more about opening doors and closing them. Regardless, I think that long term thinking is really important for TC39 participants.

    A language standards body is usually not the place to get immediate solutions to immediate problems. This could make a big difference, out here in user land, to alleviate the pain of waiting for simpler language features like Template Strings. From: es-discuss [mailto:es-discuss-bounces at mozilla. I would state it somewhat differently.


    1. Dinosaurs. The fact files.
    2. Symphony No. 2, Movement 1?
    3. Greenhouse Gas Emissions Fluxes and Processes A Tremblay et al.
    4. I think it encourages too much "feature marketing". That is, there are a number of complicated proposals which are often presented at conferences as "ES7" or named as such by Babel.

      People are marketing their feature as something that is racing toward the finish line, even though in reality it is far from it.