I want expand on and make sure Maria's point doesn't get lost in that
firestorm over at [the case, and a proposal, for elegant syntax in
#lang racket2] . Maria is bang on the money imho (her email is copied
below mine)
JVM got popular because programmers didn't need to program C.
Javascript and BEAM on the other hand became popular for entirely
different reasons: content dissemination.
BEAM is a soft-realtime vm with concurrent light-weight language
threads suitable for high up-time systems. In other words switches.
Yes, Erlang runs the Internet. This deluge of high bandwidth and
up-time communication infrastructure opened up more than enough space
for kitten photos and porn videos, then later your banking and market
trading. A new niche has opened, to be filled by the HTTP browser.
Enter Javascript, it rode the coat tails of another beast. Content
dissemination over an Erlang point-to-point communication system. We
no longer use TCP/IP to primarily connect to other machines to do
resource sharing such as printing off a document, we use the internet
to do content dissemination en mass. The HTTP browser is the gateway
to getting pictures of our children, emails from our family and
friends. Javascript rode this wave, not because of language purity,
nor blind luck, it was created to solve a problem of enabling a fat
server thin client model.
In this light, one might see it as Javascript over Erlang. But
Javascript is warty and annoying and coming to an end, a new niche is
to open and be filled. Rust is quite likely going to take this cake.
If you want to get Racket2 popular target WASM beat Rust to the finish
line. Currently only C, C++ and Rust do a good job of this.
Currently the browser enables a user to point to a domain and the
application gets reproduced on their machines executing [a game, email
client, etc]. Programmers are looking to easily get their programs
into users hands. Users buy things which pay their salaries. I know,
quite likely you're having a knee jerk at anything to do with the web.
Nasty stuff that mishmash of JS, CSS and HTML. Some good engineers *in
advantageous positions* have looked at this problem and have designed
WASM. Advantageous, I say, because their code currently ships with
every major browser, on hundreds of millions of machines right now and
is begging for someone to target it.
Opening up Racket2 to the browser, an environment such that we 1) get
a good user interface via html 2) get dissemination of our application
to users who don't need to install yet-another-vm 3) can express damn
near any syntax via honu [0] 4) create fat clients in a decentralised
environment is a clear winner.
Sadly at the moment, WASM doesn't fit well with a dynamic language
like Racket. Things like continuations in WASM and a GC would go far.
Two things that Rust doesn't need.
If you want to Racket2 popular make it easy for users to get the
programmer's responsive applications and programmers will come in
droves. Drop Chez, reimplement the Racket interpreter in Rust and
target it at WASM. Easily said that done I know. Right, let's not
pretend Honu is going to bring users by the droves, it might bring a
few, but if you're really serious about bringing in new users aplenty
this is the path to mass adoption - if you're lucky.
Lastly, what I appreciate about this mailing list is the focus on the
individual. Groups cannot be held accountable, only individuals can. I
really and truly hope we can keep focusing on each and every
individual's technical ideas and questions. For example when we first
started using Racket, Matthias Felleisen made a pull request to our
project doing a simple code formatting. That's when I knew this
mailing list and programming language was the bee's knees. Hearts and
minds won, end of story.
[0]
https://groups.google.com/forum/?utm_medium=email_source=footer#!msg/racket-users/HiC7z3A5O-k/t3IRVgLTCQAJ
Maria Gabriela Guimarães
Thu, Jul 18, 7:52 AM (8 days ago)
to Racket
Hello, community!
Let me tell a few words about the idea of transitioning Racket to a
traditional syntax to gain popularity: I think this idea is a fallacy.
Racket is not popular due to its s-expression syntax, because Clojure
has such a syntax, and still, it seems popular. So I don't think such
step will raise the adoption of Racket.
There is nothing new in having a traditional syntax language with
Lisp-like macros. There is one, it's Elixir. Note that I have lots of
experience writing complex macros in Elixir, and I expect writing
macros in an s-expression language to be much easier, simply because
in such a language, its notation and its AST are isomorphic, i.e.,
they share the same syntax. Let me explain this: in Elixir, sometimes,
the way to verify if a macro generates the code we want, is to see
what this code's AST looks like, which in Elixir is a kind of
s-expression (yes!), and from this, infer how to build the AST inside
the macro using the Elixir notation; this effort is totally