4 ms·
One obvious point I'm missing here, and that I've been missing from Janet discussion in general: why Janet and not Scheme? Gauche for example implements the la
by nerdponx 4y ago
One obvious point I'm missing here, and that I've been missing from Janet discussion in general: why Janet and not Scheme?
Gauche for example implements the latest (and IMO greatest) R7RS, its standard library is huge and "batteries-included" including a wide array of RFCs to the point of rivaling Python, and has a package manager in the form of Akku. Chicken has a similar story. Racket is arguably more useful "out of the box", but its community seems so heavily focused on using it for PL research that it's harder to justify using it for day-to-day programming. And there's Clojure as well, which I know comparatively less about, but is well-loved by its users.
Heck, even Common Lisp has a lot going for it, but the Standard and the conventional Lisp dev tools are kind of chaotic and idiosyncratic enough that it's understandable if people don't want to use it.
To be clear, Janet seems like a great little language. But as someone with limited time and energy who is interested in using it, I want to know why I should spend the time learning it, compared to Scheme
- imwithstoopid 4y agoJanet users are not encumbered with the historical cruft of scheme like hiding libraries behind unmenorable srfi numbers, or the ancient an un-portable oop implementations etc etc
- agumonkey 4y agoThis should be studied a bit. At what point a partial reboot benefits the community/language before.
- giraffe_lady 4y agoJanet has close integration with C going both ways. It has built in C ffi and you can easily build and distribute a janet binary that uses C libraries. It's also easily embeddable in C programs the same way lua is, making it possible to use it as a config, extension, or scripting language in a larger program. Aside from that having used it a fair bit I think it's got a very "practical" orientation. It provides immutable structures, but doesn't enforce immutability semantics the way clojure does. It has a good concurrency system but is cleanly single-threaded and performant by default. And imo the standard lib is a really good balance, neither forcing you to build EVERYTHING yourself (lua) or having the whole last 50 years of CS research in it (racket).
- crabbone 4y ago> is cleanly single-threaded And here I immediately lost my interest. Anything that cannot do real concurrency is a toy in my book. There's no excuse for a language developed for practical computers in 21'st century to not be able to utilize concurrency which is practically built into every existing computer.
- giraffe_lady 4y agoMaybe you should reread that sentence bc I don't think it says what you think it says.
- crabbone 4y ago[flagged]
- tmtvl 4y agoThen it's a good thing those words were preceded by: > It has a good concurrency system
- crabbone 4y agoIt has none. When code isn't executed concurrently, that's not concurrency. There's idiotic fashion to call unrelated things "concurrency", but it's the same as calling various soy drinks "milk". It just adds confusion for no reason. This language has zero concurrency. It has some mechanism to randomly / unpredictably execute bits of different functions in succession: this is worthless, but has nothing to do with concurrency.
- shadytrees 4y agoI think you're using concurrency in a non-traditional sense https://stackoverflow.com/questions/1050222/what-is-the-difference-between-concurrency-and-parallelism https://stackoverflow.com/questions/1050222/what-is-the-diff... and I also think you're being a little bit uncharitable
- ianthehenry 4y agoI don't think Janet and Scheme have very much in common. If you're looking for a huge, batteries-included language, you will not have a good time with Janet :) Janet is much closer to Lua, in scope and applications, than it is to any Scheme or Common Lisp or Clojure implementations.
- headhasthoughts 4y agor5rs is significantly smaller than Janet.
- Koshkin 4y agoThis was the last good Scheme.
- medo-bear 4y agoit seems to me that gebril scheme fits janet's use cases https://cons.io/ https://cons.io/
- pull_my_finger 4y agoJanet has a lot in common with Lua: tables, coroutines, easy embedding, lots of API similarities. Compared to a language like Lua, Janet is bursting with "batteries". Almost to a Ruby level where whenever you think to do something, you check the docs and find yourself saying "of course there's a function for that". I have to disagree completely with your assessment.
- dri_ft 4y agoScheme feels really verbose to me. I get that it's 'minimal' and 'elegant' and everything, but then why are all the identifiers so long? I feel like I have to do a lot of typing to get anything done. Maybe it's better if you're using emacs and have good lispy autocomplete, I don't know. But broadly, it makes me feel like the people who developed scheme were working from a very specific definition of 'elegant', and it doesn't align with mine. Janet feels better for that.