racket-lang-org icon indicating copy to clipboard operation
racket-lang-org copied to clipboard

Racket is compiled is not on the homepage.

Open spdegabrielle opened this issue 2 years ago • 8 comments

I believe that ‘Racket is a compiled language’ is not included on the homepage is a problem.

spdegabrielle avatar Dec 16 '21 20:12 spdegabrielle

The concept of "compiled language" doesn't make sense. Do you think we should say something about Racket performance on the home page, or the ability to generate executables, or something different than those?

samth avatar Dec 16 '21 20:12 samth

To expand a bit more on what @samth said: a language can have both interpreter and compiler, so it doesn't make sense to say that a language is interpreted or compiled. What people colloquially mean by "interpreted language" or "compiled language" is that the most popular implementation for the language at that particular time is interpreter/compiler. But this, as you can see, is not a property of a language, and it can even change with time.

My two cents is that, even though I think people probably will understand what we mean if we write "compiled language", repeating this misconception will discredit us and do harm more than good.

FWIW, I have been editing the wiki to remove the phrase "compiled language" from it.

sorawee avatar Dec 16 '21 22:12 sorawee

Well, you could certainly say something like

“Racket comes with a compiler”

John

On Dec 16, 2021, at 17:21, sorawee @.***> wrote:

To expand a bit more on what @samth said: a language can have both interpreter and compiler, so it doesn't make sense to say that a language is interpreted or compiled. What people colloquially mean by "interpreted language" and "compiled language" is that the most popular implementation for the language at that particular time is interpreter/compiler. But this, as you can see, is not a property of a language, and it can even change with time.

My two cents is that, even though I think people probably will understand what we mean if we write "compiled language", repeating this misconception will discredit us and does harm more than good.

— Reply to this email directly, view it on GitHub, or unsubscribe. Triage notifications on the go with GitHub Mobile for iOS or Android. You are receiving this because you are subscribed to this thread.

jbclements avatar Dec 17 '21 03:12 jbclements

It should probably be clear that the implementation is compiled/is a compiler, though I would suggest that new users don't separate languages from their implementations. When people refer to a language they are referring to the implementation. That Racket is effectively defined by its implementations contributes to this.

If I go to the the sites for Go and Rust, it is clear that these language implementations are compiled. Even Python has a high profile compiler in the form of PyPy. C# clearly has a compiler. Java is compiled. It is the same for Haskell, Chez Scheme, Guile, Clojure and SBCL.

When users are deciding if they should click the download link they are choosing to download an implementation, not a language. You can't make your computer faster, so many choose a compiler to get more out of their purchase.

Not mentioning the implementation is a compiler is damaging the Racket project.

While we are at it we should probably mention why the compiler chosen for CS is really good. That it occurs "In interactive mode, this compilation occurs automatically and on-the-fly." is an important point that is buried in the documentation.

spdegabrielle avatar Dec 17 '21 10:12 spdegabrielle

[[ Very minor point. A separate Racket implementation also exists inside of Amazon. ]]

Even if there’s only one implementation — which isn’t the case for Racket (BC, CS) — it is still useful to distinguish the language from the implementation.

Mentioning that a compiler exists is fine, but the “on the fly” part isn’t particularly interesting given the prevalence of JIT compilers (which are superior). We may invoke false hope.

mfelleisen avatar Dec 17 '21 11:12 mfelleisen

People who download get CS by default, but that has never mattered as BC is compiled too.

I think it is useful to distinguish a language from its implementations, but I'd suggest that is not the purpose of the homepage. You are there to download an implementation.

I'd suggest the purpose of the homepage it to get people excited enough to hit download and see what all the fuss is about.

My point is programmers want to make programs they can share, and 'compiler' means make and distribute programs.

Having a compiler is wonderful. There is no need to be embarrassed!

@mfelleisen I'd love to hear more about the Amazon internal implementation?

spdegabrielle avatar Dec 17 '21 13:12 spdegabrielle

This goes back to @samth's point:

Do you think we should say something about Racket performance on the home page, or the ability to generate executables, or something different than those?

and from both of @spdegabrielle's replies, it looks like you are concerning with both "Racket performance" and "the ability to generate executables".

This is somewhat already addressed in the homepage under the "Mature" tab ("Standalone Binaries"). Perhaps a couple of sentences along the line "Racket programs can be compiled to optimized executable files for distribution" can be added.

A bit more technical stuff: compilation is a transformation of a program to another program, possibly in a different language. Executable file is one popular compilation target, but that doesn't need to be the case. Also, compiled program doesn't necessarily need to be more efficient. So besides the argument that I gave earlier, "compiled language" also doesn't convey what you are trying to say.

sorawee avatar Dec 17 '21 17:12 sorawee

Yes please.

I only raise this because it is an often repeated falsehood that Racket is interpreted. (I've seen it on Reddit and discord) This stops people who might otherwise try Racket. They instead choose some instead choose some other language that clearly indicate that a compiler is present.

So yes; some combination of Sam and John's comments on the website, ideally 'above the fold.

(Btw you are 'preaching to the converted' as all the points raised I learnt from the racket community some time ago - thanks to the people on this thread. I'm just trying to be pragmatic)

spdegabrielle avatar Dec 17 '21 18:12 spdegabrielle

I think we can close this. But if anyone disagrees, feel free to reopen.

sorawee avatar Jan 19 '24 02:01 sorawee

I've thought about this some more and had a look at some other language homepages. Performance shows up on many language homepages (below)- my claim is performance is important to programmers when selecting a language.

I don't think it is outrageous to claim the question 'does it have a compiler?' is a proxy.

I have cherry picked my examples. Some

image image image image image

How Python communicates the value of the language is an relevant exception: image

Ruby focuses on developer productivity.

Elixir takes a different approach and address the performance question with 'scalability & lightweight processes'.

image

spdegabrielle avatar Jan 19 '24 10:01 spdegabrielle

I agree that performance is something people want to see when they go to a page. I also think that swift, f#, and rust are all languages with a much stronger claim to overall performance than racket has. (Python doesn't!) So the status quo doesn't seem horribly wrong to me.

That said, it would be nice to improve things! Maybe a reasonable thing is to add a link to the language shootout in the text under "practical"? Not a new item in the list of four, but add something like "Racket has respectable performance" with "respectable performance" being a link to the shootout? (Or somewhere else?)

rfindler avatar Jan 19 '24 14:01 rfindler

Python doesn't claim that it is fast (because it isn't). It claims that it "lets you work more quickly ... and more effectively", which is about user productivity.

I agree with Robby that Racket can't really claim that it is fast in the same way that Rust, F#, and Swift can. Doing so would be misleading to users.

My opinion is that there's nothing that we can really do without putting a lot of asterisks (which seems like a bad idea anyway for the home page).

sorawee avatar Jan 19 '24 17:01 sorawee

Although I do generally agree with @sorawee I do think that, for the category it is in, racket has decent performance. So if there is a simple way to point people to more information then that seems worth doing. That said, if a pointer to something like the language shootout isn't desirable for some reason, then leaving it alone sounds right to me.

rfindler avatar Jan 19 '24 18:01 rfindler

Closing

spdegabrielle avatar Jan 27 '24 08:01 spdegabrielle