What does that triangle \triangleright mean?
It isnât just a story, it is an integral part of the language and makes the ecosystem of more or less independent packages fitting together nicely possible.
It means normal subgroup. I think for it to work though, Ralph should have used /
instead of \
Agreed, but you have to admit that there is also a story around it, compelling or otherwise, that is presented as the reason why Julia outperforms everything. The key I have learned from my brief dalliance with Scheme and LISP is that a huge number of libraries and flexibility in implementation makes a language useful. The vehicle for real power in LISP and Scheme is the âprogram is dataâ paradigm. And Julia manages to retain that strength, partly through strong macro capability and partly through multiple dispatch. The result is a higher level language than FORTRAN or C, and the programmer does not have to work too hard to express themselves.
The last point I would like to make is the division of labor between compilation and execution. In successful LISPs, including Julia, far more is attempted during compilation than during run-time â this allows high levels of optimization. FORTRAN is incredibly efficient as well, but that efficiency arises out of simplicity in the language and the restriction of flexibility, so the compilation does not have to do as much. Consequently, the programmer has a more tedious task.
I am willing to back down and give multiple dispatch more importance than my paragraph did. No religion here.
Still Julia programs cannot stand on their own and must rely on the Julia environment being installed on the system for JIT and other stuff, Fortran on the other hand can be compiled to light-weight programs and libraries that stand on their own with no need for external dependencies or environments installed, And as with technology these days, We may never know or predict where will it go or evolve, Currently there is an official Fortran LLVM Flang Compiler under active development, And when itâll get out it is a great possibility that it will support all the platforms that the C++ LLVM Clang Compiler supports even mobile platforms such as IOS, Android, And as they are both based on LLVM (as of course Julia too) that will enable also aggressive LLVM optimizations for Fortran code. Maybe from a Scientific or having a âjust calculate my stuffâ point of view you are right, But from a Software Engineering point of view where we have to ship stand alone programs it is better to have as many possibilities and options as possible that we can choose from. And for each single thing in that domain there are both positives and negatives. And as of Julia? It is a fantastic language, This is really cool what the guys making it have achieved, And I am currently experimenting with that language too and trying out some programs.
I thought this was available in Julia already, I must have misread somewhere. This is so important for larger code bases / group working
Arenât you forgetting the Fortran/C runtime libraries: all those hundreds of megabytes that need to be installed so that your light weight program can run?
What is the alternative? Compiling the same codes and libraries on every single userâs computer for hours? How much time and energy such an approach would waste? That should be easy math.
To which post does this pertain to?
What hundreds of MB? I distribute C compiled code that run more or less in any computer with Windows and I ship less then 0.5 MB of compiler dlls.
So why exactly does VS Fortran ship on a DVD? And those Windows computers must come with those libraries preinstalled, donât they? If they didnât, youâd have to ship them yourself.
Compilers are huge nowadays but for C compiled binaries I only have to ship vcruntime140.dll, vcruntime140_1.dll, msvcp140.dll, msvcp140_1.dll, msvcp140_2.dll, msvcp140_codecvt_ids.dll
and because it uses OMP (Iâm talking about GMT now) also vcomp140.dll
. Thatâs about 1 MB.
Intel Fortran 2019 redistributable libraries are 181MB.
How big is windows executable âhello worldâ in Julia, C, and Fortran?
I do not get the point of this discussion. There is no magic. There cannot be any magic. There is no redundancy in runtime libraries either. For decades many genius scientists have worked to create highly optimized libraries out of millions of lines of code. Now you can 1) take these mega-codes, compile them once to generate portable libraries and distribute them, or 2) pass the source codes around (only if it is open-source, which is not the case in many instances) and ask every single user to compile them by themselves, or 3) pass some software around to compile all the dependencies and codes for you just-in-time. There is no magic. You need to compile what you need to use. Case (1) causes dependency headaches. Case (2) and (3) cause long-compilation-times, and waste-of-energy on the scale of society. But in the end, there is no workaround. You need to compile what you need to use.
Yes, maybe. Except that Microsoft does it way better.
You can always use static linking.
Take a challenge, show me a statically (Single code path, release mode) linked binary file which is 180 [MB].
The reason Intelâs redistributable are so big is it includes many variants (10? 20?) of the same code path. I also think the redistributable package includes both the single threaded, multi threaded and debug (4 combinations) of each. Divide 180 / 40 or 180 / 80 and youâll get the real world picture.