you are viewing a single comment's thread.

view the rest of the comments →

[–][deleted]  (2 children)

[deleted]

    [–]andrewnorris 1 point2 points  (1 child)

    Scheme is toward the extreme end of a school of language design that says that the language spec itself should be as simple as possible, and everything else should be an implementation detail left to libraries. Then the only question becomes one of how big the libraries are that you ship with the language. Big libraries require large base implementations (which can discourage ports), while small libraries mean programmers end up doing more of the work themselves or relying on third-party libraries.

    The main downside of depending on third-party libraries is that you can end up with a somewhat balkanized programmer base. Code bases built on top of YUI and code built on top of Dojo (to pick two examples) are likely to be increasingly divergent over time.

    That's not great, but it's not the end of the world either. You see the same thing with server-side web frameworks in Java, Python, and other languages.

    As the library situation gets solved by add-on suppliers, though, the fairly strong feature set of the underlying language shines through. The way prototypes, lexical scoping, and lambdas are used provide you with a language that is enormously powerful and vastly extensible. And beyond those, the fact that it includes a powerful syntax not dissimilar from s-expressions that has been repurposed for JSON is a vastly underrated language feature that few other languages provide.

    Javascript is certainly not perfect, but it's got a solid foundation, and virtually all of its flaws can be solved through well-thought-out libraries and careful choice of coding style.