3 ms·
> This means performance will fall further and further behind compiled languages. This is exactly as it should be: the nature of the interpreter is that it has
by indymike 5y ago
> This means performance will fall further and further behind compiled languages.
This is exactly as it should be: the nature of the interpreter is that it has to do a lot of the work a compiler does when it compiles whenever a new command is run (and in Python's case, that is before you cover the whole "everything is an object" part). Yes, some of it can be mitigated, but the expectation that an interpreter keep pace with compiled code is somewhat of a pipe dream. What I'd love is a language that can be compiled (and be highly optimized) and interpreted without changing it's behavior. The developer experience with an interpreter is fantastic, the performance of compiled code is... better.
- colejohnson66 5y ago> What I'd love is a language that can be compiled (and be highly optimized) and interpreted without changing it's behavior. The developer experience with an interpreter is fantastic, the performance of compiled code is... better. You mean something like a byte code like language with a JIT system? Like Java and C#? C# in particular now supports AOT compilation, but can still be run as “interpreted” CIL.
- indymike 5y agoHaving a VM / JIT in the middle is a way to get there, but ultimately, different. At least in Java's case, my code targets an abstraction instead of hardware, so I don't get the full benefit of compilation. Performance is part of the story... access to the OS and hardware is another.
- smallnamespace 5y agoEven native compilers like clang will use LLVM, and LLVM IR can look a lot like JVM bytecode. The VM abstraction is not a barrier to fully optimizing for your architecture, but rather how much time you can spend converting IR/bytecode into assembly, whether you do it at runtime, and whether runtime information lets you optimize even further.
- giovannibonetti 5y ago> The developer experience with an interpreter is fantastic, By the way, there are some (high-level) compiled languages with REPLs like Lisp, Haskell and Elixir.
- igouy 5y ago"GHC compiles Haskell code either directly to native code or using LLVM as a back-end." Does elixirc compile to "native code" ? Does the Haskell REPL use an interpreter not the GHC compiler? http://downloads.haskell.org/~ghc/latest/docs/html/users_guide/ghci.html http://downloads.haskell.org/~ghc/latest/docs/html/users_gui...
- ska 5y ago> hat I'd love is a language that can be compiled (and be highly optimized) and interpreted without changing it's behavior. This has been a great feature of many lisps for 4+ decades now. Not unique to them of course.