What do you think about compiling to wasm, for these logical inter-exchanges?
Programming Languages
Hello!
This is the current Lemmy equivalent of https://www.reddit.com/r/ProgrammingLanguages/.
The content and rules are the same here as they are over there. Taken directly from the /r/ProgrammingLanguages overview:
This community is dedicated to the theory, design and implementation of programming languages.
Be nice to each other. Flame wars and rants are not welcomed. Please also put some effort into your post.
This isn't the right place to ask questions such as "What language should I use for X", "what language should I learn", and "what's your favorite language". Such questions should be posted in /c/learn_programming or /c/programming.
This is the right place for posts like the following:
- "Check out this new language I've been working on!"
- "Here's a blog post on how I implemented static type checking into this compiler"
- "I want to write a compiler, where do I start?"
- "How does the Java compiler work? How does it handle forward declarations/imports/targeting multiple platforms/?"
- "How should I test my compiler? How are other compilers and interpreters like gcc, Java, and python tested?"
- "What are the pros/cons of ?"
- "Compare and contrast vs. "
- "Confused about the semantics of this language"
- "Proceedings from PLDI / OOPSLA / ICFP / "
See /r/ProgrammingLanguages for specific examples
Related online communities
- ProgLangDesign.net
- /r/ProgrammingLanguages Discord
- Lamdda the Ultimate
- Language Design Stack Exchange
I think that's actually a pretty good idea.
I could, right now, create the function in wasm, put it in yaml with a !wasm
tag (or maybe a more specific tag) then the deserializer could detect it, load it, and wrap it in a function.
Check out the ABI concept, if you haven't found it yet:
https://www.webassembly.guide/webassembly-guide/webassembly/wasm-abis
I would actually intentionally not want any ABI like wasi or emscriptem. I'd like the serialization format to not care about the platform at all (e.g. the function should run the same on any operating system, browser, embedded device, etc).
Wouldn't this serialization format need to be implemented in every language that that needed interoperation? How does that differ from an ABI?
I think S-expresions are an often overlooked encoding and when used on code it results in a lisp dialect.
The main advantages are no ambiguity, easy parsing/interpretation and lisp being an established language family, the main disadvantage is a lot of parentheses.
Now for some barely relevant rambling: By implementing your own simple lisp dialect you can tailor it to your own needs by simply not implementing IO or even limiting computational complexity by limiting recursion and not allowing first class functions.
I would just transmit the program as source (literally send y = mx + b
) instead of trying to serialize it into JSON or anything. You'll have to write a parser anyways, printing is very easy, and sending as source minimizes the points of failure.
Your idea isn't uncommon, but there's no standard set of operations because it varies depending on what you code needs to achieve. For instance, your code needs to make plots, other programs send code for plugins, deployment steps, or video game enemies.
There is a type of language for what you're trying to achieve, the embedded scripting language ("embedded" in that it's easy to interpret and add constants/hooks from a larger program). And the most well-known and well-supported embedded scripting language is Lua. Alternatively, assuming you're only using basic math operators, I recommend you just make your own tiny language, it may actually be easier to do so than integrate Lua.