On Oct 15, 2015, at 5:01 PM, Neil Van Dyke <n...@neilvandyke.org> wrote:

> BTW, in response to an earlier comment regarding fragmentation, I think that 
> `#lang foo-reader racket` and `#lang foo-replacing-racket-reader` are 
> equivalent in immediate fragmentation effect.  What's more significant to 
> fragmentation is when different people are using *incompatible source 
> dialects* in snippets of code in forum posts, documentation, etc. -- not what 
> the `#lang` line looks like in a complete module, if the code below that line 
> would be the same regardless, and the module still interoperates across 
> source dialects.


Neil and everyone else, 

Communities around extensible languages naturally fragment. The very moment you 
provide a mini-linguist, which is what a programmer really is, with the means 
to define nouns and verbs, the fragmentation starts. A common reason for 
fragmentation is the creation and use of function libraries. For example, a 
Fortran programmer in the field of physical simulations used different function 
libraries than one in commercial check processing. When the former read the 
code of the latter, he invariably experienced some form of alienation. [I am 
using past tense because I am sure Fortran is kind of dead now :-).]

When you allow programmers to define even more advanced aspects of a language 
-- with means such as macros -- you get even more fragmentation. People wish to 
conduct a discourse about a domain in the language of their domain, and the 
more we enable the creation of languages, the closer to the domain language(s) 
we get. 

In the end though, all of these linguistic disconnects can be bridged with a 
bit of reading code and documentation. 

In contrast to linguistic fragmentation, programming language communities may 
also experience social fragmentation. At the simplest level, they may disagree 
on the meaning of some feature. I think the order of evaluation in a function 
application is an example of the right kind here. They may disagree with the 
philosophy of language design in the standardization sense. The rollback of 
R6RS to the quasi-R5RS standard of R7RS is an example of this kind. This 
technical disagreements lead to forks in the tree of language development that 
are much more serious than the linguistic differentiation above. 

My take is that #lang colon-kw-mixn racket/base is a dialect in the way South 
German or Swiss German relates to High German (a normative language that nobody 
speaks except for some pretty-looking dumb TV announcers perhaps). The R6RS vs 
R7RS differentiation of Scheme vs Clojure separation is more like English and 
German. 

With this said, I am fine with North Germans. I just wished they learned to 
speak properly -- Matthias :-) 

p.s. Similar analogies could be drawn with American social dialects. But as a 
Man from Away, I'll stay away from this hot topic. 

-- 
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