Hello all, I have a rather different sort of question to ask about from my usual fare. A month or two ago, I read an essay written by Richard P. Gabriel and published at Onward! 2012 called “The Structure of a Programming Language Revolution”. The essay itself is available here to those interested in reading it:
http://dreamsongs.com/Files/Incommensurability.pdf The essay covers a number of things, from CLOS and Smalltalk to the concept of incommensurability, but one of the things I found most intriguing was this thesis: > The real paradigm shift? Systems versus languages. Before 1990, a > person interested in programming could work comfortably both in > programming languages and in programming systems, but not so easily > after. To tell the truth, I never even noticed the different words — > language versus system — never attached any significance to the word > choice until this exploration. I used the phrases interchangeably for > many years: Programming System / Programming Language. Gabriel goes onto elaborate on the difference between so-called “systems thinking” and “language thinking”. From his perspective, Common Lisp sits squarely in the “systems” camp, and Scheme in the “language” camp. He makes the claim that the amount of effort Common Lisp dedicates to things like redefinition to support a running system are the effect of systems thinking, which has more or less fallen out of favor in the academic community in recent decades. This got me thinking about Racket, since much of Racket sits firmly in the language thinking camp. Racket focuses on the language being a single source of truth, on soundness, on syntactic properties and formal semantics. It discourages things like long-running systems and dynamic reflection. On the other hand, Racket is clearly made up of many systems in addition to its many languages: the macro system, the chaperone/impersonator system, and the namespace system all come to mind. (On the other hand, perhaps the line is much blurrier than Gabriel would have one believe: do contracts really belong cleanly to either philosophy?) Since then, I’ve wondered what thoughts other Racketeers would have in response to Gabriel’s essay. The ability to have a live, dynamic system akin to Common Lisp’s images is a useful feature, but it certainly requires “systems thinking”, and it is unsatisfying from a “language thinking” point of view. To pose a question to those who have been doing this longer than me, do you think this proposed philosophical binary really makes sense? Does Racket really fit in more closely with one or the other? Philosophically, does Racket reject things like CLOS and redefinition/long-running images just because they don’t work in the edge cases, or is there some bigger picture here that I’m not seeing? Thanks in advance for your thoughts, Alexis -- You received this message because you are subscribed to the Google Groups "Racket Users" group. To unsubscribe from this group and stop receiving emails from it, send an email to racket-users+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.