Rendered at 19:36:21 GMT+0000 (Coordinated Universal Time) with Cloudflare Workers.
supriyo-biswas 2 days ago [-]
People should really put a few examples on their webpage when they introduce a language, like a hello world, making a http request, writing a ping/pong server, etc.
SA9G 1 days ago [-]
Yes! That is why the 3rd line says: "...or to see sample code (Intro 1)." You just had to click on "Intro 1".
SA9G 2 days ago [-]
I wanted to write a love note to C... and if you hate it, it is all my fault.
kreelman 2 days ago [-]
It looks interesting.
Isn't the same kind of thing available from LLVM?
clang -emit-llvm -c main.c -o - | lli
SA9G 2 days ago [-]
You could run C that way... but scScript is a scripting language using C-like syntax with features designed for scripting. For example, it provides dual variadic parameter/arg lists. Turns out having "in" (pass-by-val) and "out" (pass-by-ref) parameters are more pleasant (at least to me) than trying to return N values out of a function (especially since script languages run away from pointers). Perhaps it is a testament to my ignorance, but I am not aware of another language that does this.
The difficulty in designing a language is not so much implementing a compiler, but the iterative process of implementing and fine-tuning a given aesthetic... a given flavor as it were and it has to work well. Of course the other side is testing the damn thing... so my hats off to QA!
Nevertheless, I am sure good tool users could save a lot of time instead of hand implementing everything, as I would. So thumbs up to LLVM.
panzi 2 days ago [-]
No other language that does what? Have out parameters? Many have that, even Pascal.
SA9G 2 days ago [-]
No (scripting) language with 2 parameter lists, the second all Var (to use the Pascal syntax). I could have included a Var keyword instead to differentiate, but a) that would complicate the variadic nature of scScript parameter lists and b) didn't quite look C-like to my eyes. (Then again I also have two Map functions in there for arrays and dicts.... so I should not claim purity.) (Yes, I stole them from LISP :-)
billywhizz 2 days ago [-]
i haven't looked at the code yet but i love the website. just how open source project websites should be! ♥
SA9G 2 days ago [-]
May Odin smile upon you :-)
And thanks for not laughing at my art!!
sage981 1 days ago [-]
Combining mark-sweep with refcounting is bold. Most small VMs just pick one.
SA9G 1 days ago [-]
If by "bold" you mean daft, then you are right :-)
Mark/Sweep GC is easy, well contained, and simple to test. RefCounting affects everything, obviously does not work for circular refs, and is an incredible pain to test/debug. While RefCounting gives you generally continuous smooth performance, it can stop the world if a particularly large/complex data structure is being collected. So all in all, I would skip RefCounting next time. (scScript does have a compile option to turn it off.)
Sulfide6416 2 days ago [-]
The dual in/out parameter idea is interesting. Looking forward to trying it.
mofosyne 2 days ago [-]
Can this trans-compile to C? (And vice versa?)
SA9G 2 days ago [-]
So you want to generate C code instead of ByteCodes.... and then compile the C? I suppose, if you broke out the runtime memory management (and a few other things) into a library. But I am not sure why you would....
If you want pure speed, then you would rather have it generate machine instructions instead of higher-level ByteCode ops. But you would not be using a scripting language if you want pure speed.
Perhaps if you only want a double-arglist variant of C (you must call it scC!) then you could write a front end processor! And by you, I mean not me :-)
pmkary 1 days ago [-]
Honestly I didn't understand anything from the page, why C that is bytecode compiled, don't we suffer making C just to have the speed? Examples? What showing the bytecode means?
uwagar 1 days ago [-]
congrats, but Tcl is enough for me.
lkirkwood 12 hours ago [-]
Seeing a lot of mentions of Tcl over the past couple days. Why so much love? When do you reach for it?
Isn't the same kind of thing available from LLVM?
The difficulty in designing a language is not so much implementing a compiler, but the iterative process of implementing and fine-tuning a given aesthetic... a given flavor as it were and it has to work well. Of course the other side is testing the damn thing... so my hats off to QA!
Nevertheless, I am sure good tool users could save a lot of time instead of hand implementing everything, as I would. So thumbs up to LLVM.
Mark/Sweep GC is easy, well contained, and simple to test. RefCounting affects everything, obviously does not work for circular refs, and is an incredible pain to test/debug. While RefCounting gives you generally continuous smooth performance, it can stop the world if a particularly large/complex data structure is being collected. So all in all, I would skip RefCounting next time. (scScript does have a compile option to turn it off.)
If you want pure speed, then you would rather have it generate machine instructions instead of higher-level ByteCode ops. But you would not be using a scripting language if you want pure speed.
Perhaps if you only want a double-arglist variant of C (you must call it scC!) then you could write a front end processor! And by you, I mean not me :-)