Erik Engheim
2 min readMar 8, 2021

--

Thanks for your feedback. I might have to study this more. Getting the taxonomy right is really hard as you can in principle ahead-of-time compile anything even a dynamic language.

But in my opinion that does not necessarily make it comparable to a progamming language designed for native compilation. You end up with something more akin to an image which lives in its own little world. E.g. I use Julia, which can be ahead-of-time compiled. But this is more like dumping code produced by a JIT in an image.

You got stuff like GraalVM on the Java side of things which allows ahead-of-time compilation. But this produces images with quite a lot of services inside as far as I understand. This isn't exactly something you could link into say a C/C++ application.

Now that may be why you talk about this being mainly about memory safety, but are Go, Swift, Rust, Julia, Python etc not memory safe?

Where do you draw the boundary? I guess what I am trying to say, is that the Microsoft concept of "managed languages" is quite unclear to me.

Would you call Rust a managed langauge e.g?

Yes I know docker containers don't provide memory safety, but Rust provides it and can run in a Docker container. You don't need a VM in the Java sense to do that.

Yes, I agree the C# case is more complicated. I honeslty don't know how to categorize it. Since the managed concept is mainly talked about in the Microsoft world, it is hard to say how other languages compare. Perhaps you could clarify?

--

--

Erik Engheim
Erik Engheim

Written by Erik Engheim

Geek dad, living in Oslo, Norway with passion for UX, Julia programming, science, teaching, reading and writing.

Responses (1)