because moving away from the native compiler would be a good step for software development. would be a good improvement to switch from physical machines completely to the internet
For further actions, you may consider blocking this person and/or reporting abuse
Top comments (10)
Excellent question! I'll try to provide some details (apologies if you know some of this already!):
Before the creation of WASM, there were hacky (in the best sense of the term) ways to run traditional software (such as compiler tools) in a browser - typically by emulation of an entire computer system, or kernel ABI in Javascript, then loading & executing the target executable (very slowly) in this emulated environment. Some determined people even managed to boot a full operating system (Linux usually) in such an emulator!
This answer has been very informative. and I learned a lot. what I'm aiming for is codes that don't need to convert to 0 and 1 :). because I think right now the whole software ecosystem is still in the formation phase, I asked this question because I think that there may be a eugenics in the software ecosystem in the future, for example, a language can be very good in more than one field, such as the fact that a language that is not like this will fall into the dusty shelves of history. In this world we have built, similar things happen without us realizing it, and in my opinion, we are going to the eugenics phase. I read an article called the features that a perfect programming language should have. A triangle had 1st side: performance 2nd side: safety
3rd edge: save time (easy to write)
He said that since there is no programming language that has these 3 features at the same time, there is no perfect language, and therefore there cannot be a perfect application and the best developer. Library and framework development by communities is actually like a help for languages to be perfect languages. so: having a language open source and community support means a lot to the future of the language. And this competition between languages (there is a big competition even if we don't see it) takes the software ecosystem to the stage of eugenics. That's why I don't think that current technologies will survive in the future, for example php, c, c#, ruby
but there will definitely be these languages
javascript, python, go, rust
and this phase will definitely be on the ecosystem running entirely on the cloud (totally my opinion)
I think the short answer is that all languages need some kind of runtime. For js this ships with all browsers, for dotnet it ships with windows, for C, C++ this ships with all operating systems.
C doesn't really need a runtime.
It does have a runtime called crt which will initialize the argv and argc and call the main function , however it is extremely lightweight
You don't need a separate runtime environment though. Depending on what system you're compiling for, your compiler could easily just turn
argc
andargv
into two globals, one being 0 and the other an empty array, or add some boilerplate code that reads them from somewhere else, like some external sensor. One could get creative with that.That's not how it morks most of the time
But that's not what we're talking about; it doesn't need a runtime, regardless of whether it usually has one.
Because js is a scripting language and also the official language for writing clint side code. This is why js is supported directly by browser but other languages are not. Also javascript is an interpreted language and not
compiled. It is true that most js engine provide jit but it not necessary+it is not aot compiled like c/c++ so you don't have to compile it before hand
Why would it be good to get away from native compiler? The browser is native compiled too. All interpreter are native compiled.
In the end you need one part natively compiled.