![]() Nevertheless, that only represents the state of systems today if someday the two grew closer together, many or all of us would rejoice. Ultimately, Racket’s #lang facilities, though designed to create new languages-and a great prototyping ground for Pyret-proved to not be quite enough to support a language creation process of the scale of Pyret and the need for a strong Web run-time system also meant that we did not get enough out of the Racket ecosystem. We felt we could more easily experiment if we had a clean-slate design than if we had to keep fitting our work into the constraints of Racket. Pyret embodies our educational philosophy. Though our pedagogy draws from and is very similar to that of the Racketeers, it also diverges in some ways, reflecting the somewhat different backgrounds and preferences of team. Over time, as technology changes, this could change. Building a native JavaScript implementation was the only option we could see. Going through Racket and Whalesong proved to be a non-starter in terms of performance, and Racket has many features that make an efficient implementation on today’s JavaScript very hard. We wanted to build a really great run-time system for the Web browser. But academics are far more hidebound than industrial programmers! We’re delighted to see the growing adoption in industry of languages like Racket and Clojure, and maybe the days of paren-phobia are over. Much as many of us love parentheses, we fear that Racket will always bump into an acceptance threshold due to its syntax. ![]() Nevertheless, Pyret represents a departure from Racket (for now and for the near future, at least) for several reasons: In fact, the first version of Pyret was merely a #lang in Racket. In that respect, the closest fellow travelers of us Pyreteers are the Racketeers (see how that works?). The journal paper for DrScheme (the old name for DrRacket) explains this in some detail. By the time a language grows to be useful for building large-scale systems, it tends to have accumulated too many warts, odd corners, and complex features, all of which trip up students. One of the enduring lessons from the Racket project is that no full-blown, general-purpose programming language is particularly appropriate for introductory education. Why not just use Java, Python, Racket, OCaml, or Haskell? Pyret is our evolving experiment in this space. ![]() A good introductory language makes good compromises between expressiveness and performance, and between simplicity and feature-richness. We need better languages for introductory computing. The Pyret Code or A Rationale for the Pyret Programming Language
0 Comments
Leave a Reply. |
AuthorWrite something about yourself. No need to be fancy, just an overview. ArchivesCategories |