Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update languages page #290

Draft
wants to merge 2 commits into
base: master
Choose a base branch
from

Conversation

countvajhula
Copy link
Contributor

@spdegabrielle pointed out that this page was out of date and suggested these additions.

This page is still unlinked from the homepage.

@sorawee
Copy link
Contributor

sorawee commented Nov 24, 2023

Please ask @mfelleisen to review this. I don't know if "unlinked from the homepage" is intentional or not, or if these entries are qualified, or if there are any other missing langs (Esterel?).

@spdegabrielle spdegabrielle requested review from mfelleisen and removed request for sorawee November 24, 2023 18:15
@rfindler
Copy link
Member

Esterel is okay not to be included (yet 😄)

@mfelleisen
Copy link
Contributor

@sorawee Other than Rhombus I wold not include any of these languages in our home page.

@sorawee
Copy link
Contributor

sorawee commented Nov 24, 2023

@mfelleisen note that this is not the homepage per se. It's a subpage that is currently orphaned: https://racket-lang.org/languages.html.

So there are two issues to think about.

  • Should we even have this subpage? If so, we should make it useful by linking it. Then the question becomes: where should we do that? But if not, we can simply delete it.
  • If we will maintain this page, what languages should be included?

@mfelleisen
Copy link
Contributor

mfelleisen commented Nov 24, 2023 via email

@countvajhula
Copy link
Contributor Author

I would empower community members like Stephen (with help from others, as in this case) to make such changes without needing to go through this kind of rigid approval process. It would be great for the website to be a dynamic portal serving the changing needs of an active community, and Stephen is very good at his job.

"The bamboo that bends is stronger than the oak that resists."

@spdegabrielle
Copy link
Member

@countvajhula you have clearly never had to work with me (insert laughing face emoji here)

I'll address the note from @mfelleisen because he has the historical context that I don't

The page was meant to show the variety of DSLs that people can write in Racket.
It was not meant to be “look ma, people made all these languages in Racket.”
So my preference would be to ‘freeze’ this page, with the side condition of adding
any language that it is truly exceptional in some ways. (Of course, this almost means
removing some things that have snuck in.)

I think this should be a page to showcase interesting languages with as much variety as possible. I dont have a clear definition of exceptional.

https://docs.racket-lang.org/search/index.html?q=H%3A currently returns docs for 237 #lang's but the presentation is an alphabetical list of (sometime poorly chosen) names with not description - that query by it's nature fails to include languages that are not implemented with the #lang mechanism.

Algol 60

  • If there is a Racket implementation of a language that has featured in HOPL it deserves to be included. - I think that is reason enough to add the Forth implementation

Asi64
An example of a Racket powered assembler targeting an microcontroller. I believe it is unique.

Datalog: Deductive Database Programming - I think I saw a paper on datalog at oopsla. Is datalog embedded in clojure?

The Hackett Programming Language - Haskell in Racket!

The Heresy Programming Language - Basic in lisp!

#lang lindenmayer, a language for L-Systems - a staple of computer art, recreational computing, it's great and it never goes away.

Parenlog - should be listed as Prolog in a historical important section.

Pie. - notable book

Pollen. - scribble too surely?

ProfessorJ: Java in Racket - fits two categories - another implementation of incremental languages for teaching - but also an implementation of a historically important language alongside

Racketscript - undeniably important and relevant. but the link is wrong it should be https://github.com/racketscript/racketscript

Rash: The Reckless Racket Shell - unique example of a shell language

Riposte - a working DSL relevant to modern web programmers. also an implantation of an external DSL IIRC.

Scratchy: A Scratch-like Toy - learning example

Syndicate - I believe this started on Racket and now has implementations on rust, java, type/javascript, python, squeak and Racket.

Video: A Language for Making Movies - I love this example but it is currently non-functional - I believe it is considerable work to update links to ffmpeg and other tools - I really want to keep it but being non functional is problematic.

Qi - the only example of a flow language and along with Rhombus is one of the most active 'Lang communities' within the racket family.

Forth - historically important and only example of a concatenative language

ActorBasic - is this too close to Syndicate? I'm inclined to think Syndicate is something different.

Rhombus - has to be included

Typed Racket - needs an entry - sadly only gets a passing mention on the homepage.

minikanren - another book lang - I think these should be a given.

https://racket-lang.org/languages.html

@mfelleisen
Copy link
Contributor

@spdegabrielle You write "I think this should be a page to showcase interesting languages with as much variety as possible" so you and I are on the same page here. You added much to my sentence and that's fine. In my experience though people tend to confused quantity with variety -- two rather different concepts. Let's not do that.

Your list also hits on a rather important point with "being non functional is problematic". I agree that languages listed on the Racket home page should run out of the box. How does it look when first-time visitors want to explore a listed sample language and it doesn't work?

In this spirit, I think we should keep the list reasonably short and illustrative of variety (syntax, computational model, semantics, targets, embedded/hosted, plus support via publications such as the miniKanren book). Why don't you make a Google spread sheet with these attributes as columns for all candidate languages for this page and then we judge?

Of course, I can also imagine that someone (else!) makes a linked-to web page to which any community members can contribute a language. I'd favor listing such a link at the bottom of this page w/ a sentence like "For additional example, peruse the list of languages on the community contribution page."

@spdegabrielle
Copy link
Member

Thanks @mfelleisen

languages listed on the Racket home page should run out of the box.

In addition to video, it looks like a few will need to be dropped at least for now;

  • Lindenmayer fails to build (due to pict3d failing afaict)
  • Hackett fails

In this spirit, I think we should keep the list reasonably short and illustrative of variety (syntax, computational model, semantics, targets, embedded/hosted, plus support via publications such as the miniKanren book). Why don't you make a Google spread sheet with these attributes as columns for all candidate languages for this page and then we judge?

It's a good idea but I'm under qualified.

I've decided to outsource this as much as possible.
https://racket.discourse.group/t/racket-languages-showcase-nominate-a-language/2536?u=spdegabrielle

s.

@rfindler
Copy link
Member

In addition to video, it looks like a few will need to be dropped at least for now;

* Lindenmayer fails to build (due to pict3d failing afaict)

Lindenmayer builds successfully for me. On the package server, lindenmayer just says "killed" after about 45 seconds so I'm not sure why; maybe it ran out of memory?. pict3d also seems to be killed but the pfds dependency has a test failure. Anyway, I don't think lindenmayer fails to build in general.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants