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.

Reply via email to