Since its inception, Microsoft Excel has changed how people organize, analyze, and visualize their data, providing a basis for decision-making for the flying billionaires heads up in the clouds who don’t give a fuck for life offtheline

      • Aceticon@lemmy.world
        link
        fedilink
        English
        arrow-up
        7
        arrow-down
        2
        ·
        edit-2
        1 year ago

        I used to make high performance distributed computing server-systems for Investment banks.

        Since the advent of Just In Time compiling, Java isn’t slow if properly used.

        It can however be stupidly slow if you don’t know what you’re doing (so can something like Assembly: if you’re using a simple algorithm with a O(n) = n^2 execution time instead of something with O(n) = n*log(n) time, it’s going to be slow for anything but a quantum computer, which is, for example, most libraries with sorting algorithms use something more complex than the silly simple method of examining every value against every other value).

        • Milady@lemmy.world
          link
          fedilink
          English
          arrow-up
          14
          arrow-down
          1
          ·
          1 year ago

          I mean, whatever speed java has or doesn’t have, what the other person said was emulate, you’ll have your os then on top of that the JVM then on top of that your python implementation, then finally the python code. If that’s faster than os->python imp…

          • Aceticon@lemmy.world
            link
            fedilink
            English
            arrow-up
            2
            ·
            1 year ago

            Just like Python doesn’t run from the source code through the interpreter all the time (instead, if I’m not mistaken, the interpreter pass converts the code to a binary runtime form, so interpretation of the source is done only once), so does “modern” Java (I put modern between quotes because it’s been like that for almost 20 years) convert the code in VM format to binary assembly code in the local system (the technology is called JIT, for Just-In-Time compiler).

              • Phrodo_00@lemmy.world
                link
                fedilink
                English
                arrow-up
                9
                arrow-down
                1
                ·
                edit-2
                1 year ago

                If you go that detailed, then the jvm is JIT compiler, not an interpreter, so Java code still mostly runs natively on the processor. Java is quite fast achieving pretty close performance to C++, the only noticeable problems are on desktop because of the slow jvm startup and slow GUI libraries compared to native ones.

                  • wolf@lemmy.zip
                    link
                    fedilink
                    English
                    arrow-up
                    6
                    ·
                    1 year ago

                    Factual errors:

                    • Interpreters neither need nor usually have a compilation step
                    • Even processors are nowadays virtual machines, modern hardware only understands microcode AFAIK

                    Words which have a common understanding in the current compiler construction world, which you define in IMHO a non standard way

                    • Compiler is commonly used to refer to tools which translate higher level languages (e.g. Java, C, Python, JavaScript) to a machine representation (e.g. JVM, Arm64, x86_64, MIPS…)
                    • Even in academia Java is referred to as compiled/interpreted language (at the same time)

                    Factual errors about Java:

                    • We have ahead of time compilers for a very long time now (GraalVM etc)
                    • There are chips which implement the JVM in hardware
                  • Aceticon@lemmy.world
                    link
                    fedilink
                    English
                    arrow-up
                    1
                    arrow-down
                    1
                    ·
                    edit-2
                    1 year ago

                    I think you’re used to modern interpreted languages and are unaware of how the runtimes of interpreted languages used to work.

                    Something like Basic (to use a properly old example) was constantly interpreting source code during the entire run.

                    If I’m not mistaken Python was the first major interpreted language which by default interpreted the code into a binary format and then just ran the binary (and, if I remember it correctly, that wasn’t the case in its first version). By this point Java already JIT compilation in its VM for a while.

                    I think you’re committing the error of comparing modern interpreted languages with how Java worked 2 decades ago.

                  • Phrodo_00@lemmy.world
                    link
                    fedilink
                    English
                    arrow-up
                    1
                    arrow-down
                    1
                    ·
                    1 year ago

                    all interpreters have a compilation step that produces machine code

                    Very much not a thing. JIT interpreters are actually not that common. Most interpreters parse code to an AST in memory and then run execute said AST, without any compilation to machine code.

                    the output of the standard javac compiler is not machine code that a processor understands. This is what makes Java not a compiled language.

                    Listen to yourself the output of the compiler makes it not a compiled language. Java is a compiled language, and jvm bytecode can be compiled (see graalvm), or interpreted (and when interpreted it can be JITd)

              • Aceticon@lemmy.world
                link
                fedilink
                English
                arrow-up
                5
                ·
                1 year ago

                There is another compilation step inside the Java Virtual Machine which “compiles” the VM Assembly code to native code at runtime.

                This is what’s called JIT compilation and has been part of the standard Java Virtual Machine for about 2 decades and the default - at least server side - for almost as long (i.e. you have to explicitly pass a parameter to disable it at startup if you want the old runtime interpreted VM opcode behaviour).

                Source: I used to design and develop mission critical high performance distributed server systems in Java for banks since before 2008 and it definitelly is capable of handling it (the bottleneck tended to be the TB-size database, not the Java application).

            • Captain Aggravated@sh.itjust.works
              link
              fedilink
              English
              arrow-up
              5
              arrow-down
              4
              ·
              1 year ago

              Eh…Java source code compiles into bytecode which runs in a virtual machine. Compare this to a language like C which compiles to native machine code. Java still gets interpreted.

              • qaz@lemmy.world
                link
                fedilink
                English
                arrow-up
                5
                arrow-down
                2
                ·
                1 year ago

                The bytecode is turned into native code before execution

                • Aatube@kbin.socialOP
                  link
                  fedilink
                  arrow-up
                  1
                  arrow-down
                  2
                  ·
                  edit-2
                  1 year ago

                  That’s not how it works. If that really was how it worked there’d be no point even having bytecode; you’d just straight up get the native code. Unless you’re talking about JIT, but your wording seems to be implying that all the bytecode turns into native code at once.

                  • qaz@lemmy.world
                    link
                    fedilink
                    English
                    arrow-up
                    4
                    ·
                    edit-2
                    1 year ago

                    I was referring to JIT but there are also other options like GraalVM for AOT compilation.