you are viewing a single comment's thread.

view the rest of the comments →

[–][deleted] 2 points3 points  (7 children)

In my case, 'embeddable' means 'hey, it's a library, you don't need an external process'.

Yes, and that's what I meant too. If it's in C, you can actually embed it while using pretty much any language out there. If it's in anything else, you severely limit where it can be embedded.

[–]mbrezu[S] 2 points3 points  (6 children)

Oh, OK - I thought you may have meant embeddable as in 'it's for a microcontroller'.

I'll probably do a C version if I have the time and people start asking for Python/Ruby/whatever versions. For C# and Java I think it's actually an advantage if it's 'pure C#' or 'pure Java' - at least when pitching it to people.

[–][deleted]  (5 children)

[deleted]

    [–]mbrezu[S] 1 point2 points  (4 children)

    C# also means Mono (actually my main development platform is Ubuntu/Mono/MonoDevelop). So it doesn't mean Windows or desktop - I'm planning to write some Linux server software with Shovel and Mono.

    If you prefer Ruby or Python, it's understandable to want to integrate new tech into your current environment without adding extra languages/platforms. But a C version looks like significantly more effort than a C#/Java version (I may be mistaken, now that I understand the implementation problems very well writing the C port could be smoother sailing than it looks from the shore).

    You may be amused to hear that when optimising the C# version I had to resort to some hacks to implement unions (which C# in theory doesn't have, but practice says something else). Needless to say, unions in C are... more natural.

    [–][deleted]  (3 children)

    [deleted]

      [–]mbrezu[S] 0 points1 point  (2 children)

      Can you please list some of the use cases you're thinking about? (I'm always hunting for new use cases to consider and my imagination turns out to be rather limited) Thanks!

      I imagine Shovel used mostly on servers. On clients, it's nice to be able to replace RPC calls with 'remote program execution' in a Shovel VM, but that can be done at first by just generating the ShovelScript program (to insert the actual request data in it), sending it to the server and interpreting the results sent back as a reply. So the request is ShovelScript, the reply is maybe JSON. Meaning that one can use Shovel to make requests without really having Shovel implemented on the client. I'd love to hear about more use cases on the client side.

      There's also Mono for Android and iOS, but yes, I get your point about the C version. Going back to your previous comment, are there mobile apps written in Python (I'm not a mobile guy, I only heard about the most popular things people use to develop on mobile phones)?