Live data from Hacker News

Gerbil – An opinionated dialect of Scheme designed for systems programming

github.com

11–20 of 80 posts

Re: Gerbil – An opinionated dialect of Scheme designed for systems programming

#11
post #9

Already a handful of "how does this compare...?" postings but the standard for a systems-programming scheme is scsh, a find abstraction layer over POSIX dating from the nineties. https://scsh.net/

I think maybe there is a different interpretation of the words "systems programming"?

I took it to mean a scheme used for developing close to the hardware programs, where as maybe others are taking it to mean a language which can be used to write common scripts and tools used by Systems Engineers.

Re: Gerbil – An opinionated dialect of Scheme designed for systems programming

#12
post #3

Why do people keep thinking they can use a garbage-collected language for “systems programming”?

I always wonder exactly what kind of "systems" these people are programming, clearly not any with real-time constraints. It almost seems like "systems programming" got co-opted to mean "not interpreted". At least that's what I noticed with Go's marketing.

There are a few HFT firms, most notably Virtu, that use Java. But my understanding from having interviewed people that worked there is that it's so convoluted to avoid GC pauses that you might as well be using C++.

Re: Gerbil – An opinionated dialect of Scheme designed for systems programming

#13
post #3

Why do people keep thinking they can use a garbage-collected language for “systems programming”?

>Why do people keep thinking they can use a garbage-collected language for “systems programming”?

Why do you think it can't be done?

It was already used for systems-programming in the early 80s; whole machines were programmed in Lisp in low level: TI Explorer, Xerox workstations and others.

Re: Gerbil – An opinionated dialect of Scheme designed for systems programming

#14
post #2

For the uninitiated, how does this compare to guile?

Based on Gambit-C: A scheme to C (or javascript... and I think there may be other targets) compiler. Comes with a Scheme->target compiler, then compile that code, and deploy. So, you write in Scheme, and deliver in C...

Comes with an interpreter. Supports macros, etc. and Gambit supports easy C FFI, option for infix syntax, massive threading, full numeric tower

Easy to hack on (in my opinion), and performs very well. Gambit-C has been my "goto" Scheme for the past decade.

Could be used as an "extension language", but not its main purpose. Mostly, a way to deliver Scheme code that runs fast.

Racket has a better IDE -- but I like the simplicity of Gambit-C.

Re: Gerbil – An opinionated dialect of Scheme designed for systems programming

#15
post #3

Why do people keep thinking they can use a garbage-collected language for “systems programming”?

Because of lisp machines, Smalltalk/the Alto - the popularity of java and the popularity of golang? As well as a disagreement about what "systems programming" means?

But when you can do real-time video processing in an (at the time) young alternative implementation of python[1] - I'm not sure what we're arguing about anymore..?

[1] https://morepypy.blogspot.no/2011/07/realtime-image-processi...

Re: Gerbil – An opinionated dialect of Scheme designed for systems programming

#16
post #3

Why do people keep thinking they can use a garbage-collected language for “systems programming”?

I always wonder exactly what kind of "systems" these people are programming, clearly not any with real-time constraints. It almost seems like "systems programming" got co-opted to mean "not interpreted". At least that's what I noticed with Go's marketing. There are a few HFT firms, most notably Virtu, that use Java. But my understanding from having interviewed people that worked there is that it's so convoluted to av…

Real-time GCs with microsecond latencies do exist.

Re: Gerbil – An opinionated dialect of Scheme designed for systems programming

#17
post #8

Can anyone explain why there are so many implementations of Scheme written in Scheme? What is the point of doing that (apart from learning purposes)? I know, for example that people want Racket VM to be implemented in Chez Scheme because Chez is super fast. But what about all other implementations? Also, as I'm currently writing R5RS/Clojure hybrid in Kotlin, can anyone please share any _simple_ standard algorithm of…

I think it's usually to provide extra features. For example, Gerbil has a more advanced macro and module system than most Scheme implementations. It's also very easy to do because you're bascially given an AST for your new Scheme that you transform into the base Scheme.

Gerbil's docs have an example of this: https://github.com/vyzo/gerbil/blob/master/doc/tutorial/lang...

Re: Gerbil – An opinionated dialect of Scheme designed for systems programming

#18
post #17
post #8

Can anyone explain why there are so many implementations of Scheme written in Scheme? What is the point of doing that (apart from learning purposes)? I know, for example that people want Racket VM to be implemented in Chez Scheme because Chez is super fast. But what about all other implementations? Also, as I'm currently writing R5RS/Clojure hybrid in Kotlin, can anyone please share any _simple_ standard algorithm of…

I think it's usually to provide extra features. For example, Gerbil has a more advanced macro and module system than most Scheme implementations. It's also very easy to do because you're bascially given an AST for your new Scheme that you transform into the base Scheme. Gerbil's docs have an example of this: https://github.com/vyzo/gerbil/blob/master/doc/tutorial/lang...

Can these 'more advanced' features be implemented in, say, Racket/Guile/Chez?

Re: Gerbil – An opinionated dialect of Scheme designed for systems programming

#19
post #8

Can anyone explain why there are so many implementations of Scheme written in Scheme? What is the point of doing that (apart from learning purposes)? I know, for example that people want Racket VM to be implemented in Chez Scheme because Chez is super fast. But what about all other implementations? Also, as I'm currently writing R5RS/Clojure hybrid in Kotlin, can anyone please share any _simple_ standard algorithm of…

The well-known algorithm for macro expansion is mark-and-rename. Although the racket implementation was later changed to scope-sets(http://www.cs.utah.edu/plt/scope-sets/index.html).
Post reply on HN