libera/#lisp - IRC Chatlog
Search
2:00:34
kiki_lamb
moon-child: heh, well ~i~ wouldn't do it in rust, and will probably continue to advise that this guy return to C or, better yet, to C++ where I will be able to offer him better advice.
2:04:17
kiki_lamb
So far, from what I've read about rust, implementing a lisp the obvious way seems like it means he's going to have to use all these weird escape hatches that you just wouldn't have to use in an 'unsafe' C-type language.
2:27:18
iisi
Shhhh, they don't know that alu oxide forms instantly and is a form of rus. It just never looks "rusty".
2:42:14
moon-child
kiki_lamb: anyway, if I were forced to write a lisp in rust, I would do it as jcowan suggests, reducing everything to a big array of integers
2:46:53
kiki_lamb
moon-child: well, sure, but it's in that weird 'mid-level language' category where you can see the underlying hardware at least a little while still being pretty portable, which is nice as an implementation language for languages you'd actually prefer to use... I would much prefer C++ though, where you can imagine the template system as being the ~real~ language and conceive of the C-like part at some
2:47:38
moon-child
why can't I use the languages I'd actually prefer to use to implement the languages I'd actually prefer to use?
2:51:57
kiki_lamb
I think it is nice, at least as an educational execise, to learn the some of the low-level stuff, about dealing with the hardware directly, writing directly to registers and all that fun stuff, and learn how to implement a higher level using the tools the hardware offers you... but writing assembler is just awful, and every other option is going to sacrifice some portability. Almost every chip at least
2:53:23
moon-child
so, sure, somebody else has come up with a c compiler for some relevant piece of hardware already
2:53:44
moon-child
that doesn't mean it's a _good_ think they implemented c instead of something else
2:54:58
kiki_lamb
Sure, some path dependance. It's a convenient fact of history that there's something above assembler (but not too far above) for which we can trust a compiler has already been written, but conceivably better options could exist than C.
2:57:51
kiki_lamb
Scrolling back a little, I'm not confident that Rust could be that better option. I've only glanced at a little Rust while trying to help this friend out, but so far the impression I get is that half of the text in the tutorials consists of explaining escape hatches from the safety mechanisms people seem to praise it for.
2:59:02
kiki_lamb
moon-child: Yeah, transpiling to C seems like a pretty good option for more serious languages (but maybe a bit much for a student who's just building a toy first language to educate themselves like my friend).
3:00:23
moon-child
no--the question here is what language your friend should use to build his interpreter
3:03:08
kiki_lamb
Heh, sadly he'd already chosen to try parallel efforts in Rust and plain C before he started askbing me questions. :/
3:05:50
kiki_lamb
C++ would be what I'd probably recommend if he wants to rely upon my advice, simply because I've myself done just the sort of thing he's trying to do in that language before and so would probably have better advice to offer that way.
13:05:36
jcowan
moon-child: SICL is a shining example of that: a CL compiler written entirely in CL. The compiler just has to be given about 40 assembly-language kernels (in the sense of graphics programming), all of them short enough to inline, as an extension to its opcode tables, and away it goes. No C anywhere.