325 karma · joined August 9, 2018
By comparison, the simd-optimized Julia code (especially the first version) is significantly more elegant and transparent.
Impressively, the ComplexSIMD Julia class was defined in a few simple lines, from scratch. I wonder what the, apparently built-in, complex simd functionality in Mojo looks like under the hood.
And Julia code is not Fortran/C/C++, not sure what you are asking.
And this is not an advantage to the designer exclusively, it is very much an advantage for the end user that the treatment is explicit, consistent and predictable, instead of 'magically' reinterpreting the meaning of literals based on guessing the intent of the user.
Basically, you seem to be saying that when passing x to BigFloat, x should not be treated as the value x, but as some nearby value that might be the one the caller intended (based on some rounding logic perhaps?) Or are you perhaps saying that
x = 1e-300
y = BigFloat(x)
should be different from y = BigFloat(1e-300)
? In other words, completely discarding referential transparency?> Building a physical model, on the other hand, merely requires 3D printing the desired shape, doing some sort of casting process to get that out of metal, putting it on a boat, and seeing if you get a noticeable performance impact.
I love how you sneak the word "merely" in there, when for people like me, and presumably the asker, this would be a Herculean task :D
And macro definition code looks quite different from 'regular' code since it works so much with expressions and symbols.
Building a model, on the other hand, could potentially involve a multi-year effort to re-educate yourself to learn how to build models, having to acquire hardware and materials, and setting up a lab for testing. And then building many different actual models.
The original purpose of GPUs were visualization, so that seems backwards to me. And, GLMakie is used, which makes it even more counter-intuitive, isn't that specifically built for GPU visualization?
For someone who writes both Julia and C++, the above comment comes across as an obscene joke.
Possibly, you object to the programming style in that library, the choice of identifiers or whatever? But that has nothing to do with language syntax.
In that sense, one can perhaps say it is a turning point.
Not that I like doing this in Matlab, but that's what everyone uses, though some are moving to python.
That's a pretty dubious attribution of intention, though, that I desire this. I want clean, maintainable code.
> You mention not taking all argument types, it’s just so stereotypically mathematician of an assumption that the code will just work with whatever garbage you send it.
But that's not what I said, and it's not what multiple dispatch means. You are talking about generic functions and duck typing -- essentially, code that has no type restrictions. Multiple dispatch means that types of all arguments are considered, and you are free to be as restrictive as you wish. You can specifically and concretely type every single input, and probably make the code much more predictable and to your liking.
The amount of genericity vs type safety is a trade-off between different advantages, and you have a lot of freedom to choose.
Don't you find those two statements contradictory? There's a pretty striking contrast between your claim to ignorance and your confidently sweeping generalization (sadly, those two often do come in pairs.)
> I've also read some dramatic (unverified) claims that I won't repeat here about one of them.
If this is what I think it is, the claims were not substantiated in any way (even though it would be easy), and seemed quite outlandish, frankly.
> I've been unfortunate enough to read some .jl code in '22, and it was dreadful. I truly don't understand how multiple dispatch makes anybody's life easier
It's really hard for me to understand this opinion, given that Julia code, to me, is far more appealing than all the most common alternatives. In particular, multiple dispatch is such an obviously natural paradigm, that it's just hard to fathom why everyone don't just 'get it' right away. I mean, not taking all input argument types into account now seems to me like a completely artificial, even perverse, restriction. Why?
I guess this is why people argue on in the internet.
What are the things where low-level code is required in Julia, but not in Python/R?
Generally, it looks like a function where Julia could have a significant performance advantage.
But if you are combining multiple operations on a vector, there could be opportunities for Julia, in-place operations, fusing, simd. Maybe even StaticArrays.
Any chance of sharing that little piece of code?
Who would contribute to a software library if they knew that the main dev could just mothball their efforts at any moment.
If you have donated a ball, you can no longer just pick it up and go home. If you don't want to donate work, don't do open source and invite others to join in.