4 ms·
There is a very clear difference between compilation and interpretation: in scripting languages, a statement does not depend on the following ones to be execute
by oreilles 3y ago
There is a very clear difference between compilation and interpretation: in scripting languages, a statement does not depend on the following ones to be executed, meaning that the code can just be read through. Compilation is different because the binary produced need to include the whole program, therefore the whole code has to be read and analyzed before the bytecode can be produced. Compile litterally means "group together".
So compilation time obviously only applies to compiled languages.
Saying that the compilation time is not a concern to you and shouldn't be to anyone is also very short sighted. I'm pretty confident that you would consider it to be a problem if a "Hello world" took a week to compile. Maybe you meant "Compilation is fast enough for me", which is fine, but there is no reason why your speed expectation should be more legitimate that anyone else's.
- naikrovek 3y agotook the words right out of my mouth. compilation speed matters. it matters to some more than others, obviously, but it absolutely matters, and to some it matters a great deal.
- rat87 3y agoThere is not a clear differentiation. For one thing just because the primary implementation is a compiler doesn't mean you can't also have an interpreter. There is no requirement that a compiler has to produce a binary. Compilers can also produce byte code or JavaScript or C code. Also very few languages are purely interpreted. Python, Ruby, and Pearl aren't (purely) interpreted. They're compiled to bytecode, then that bytecode is interpreted. At least for primary version there's also jvm/.net versions of python and ruby and pypy(jit). Compilation happens at import/run time. Emscripten uses llvm to compile c/c++/rust into JavaScript. Java and C# are recompiled into byte code which is then interpreted or jit compiled or both.
- mikebenfield 3y ago> in scripting languages, a statement does not depend on the following ones to be executed, meaning that the code can just be read through I'm pretty sure this is nonsense and is not a consistent way to distinguish languages that are considered scripting languages and languages considered compiled languages. > Compile litterally means "group together". Maybe so, but as a technical term in computer science, it means translate from one language to another. That said, I definitely agree that compile times matter.
- dragonwriter 3y ago> There is a very clear difference between compilation and interpretation: in scripting languages, a statement does not depend on the following ones to be executed, meaning that the code can just be read through. But most scripting languages are usually compiled (even if not to always AOT and not always to native code, but instead to bytecode of some kind), so how can a difference between compilation and interpretation, even if it was a valid one, be relevant here?
- Guvante 3y agoBytecode encoding an interpreted language is only superficially similar to compilation. After all you can't perform meaningful optimizations when the environment your code is running completely defines what the code does. Sure you don't know the details of how syscalls work but you do know the exact process necessary to call a function in compiled languages. Interpreted languages tend to just emit the original names in the bytecode because you don't know want the function `sin` when that is environment dependent.
- dragonwriter 3y ago> Bytecode encoding an interpreted language is only superficially similar to compilation. No, its literally compilation, not something superficially similar to it. > After all you can’t perform meaningful optimizations when the environment your code is running completely defines what the code does. The environment your code is running on completely defines what the code does in all cases, and yet, meaningful optimization is possible, and bytecode for abstract/virtual machines are common for both things both for things that are commonly called scripting languages and things that generally are not. (Sometimes, the implementation of an abstract/virtual machine may involve another, JIT, compiler to some other – maybe native, maybe not – target.) It’s true a lot of the languages called “scripting” languages have semantics that are structurally very difficult to optimize, but that has nothing to do with “interpreted vs. compiled”.
- Guvante 3y agoYou have come up with your own definition that conflicts with what everyone is saying and are wondering why there is uncertainty...
- yawaramin 3y ago> in scripting languages, a statement does not depend on the following ones to be executed I agree with most of your comment, but how do you explain languages with end-of-block markers? E.g. in Ruby, if you stop execution before the end you will surely get an error: def test puts "test" end