I am designing a language with multiple dispatch and explicit interfaces. You can have both features in the same language. I think the weakness of Julia is that it lacks explicit interfaces, not that it has multiple dispatch.
Definitely seems worth exploring … but as with all things in language design: “I’ll believe it after it’s worked for 10 years” :) On maybe >100 programs and >1M lines of code.
I think Julia is doing pretty well and if this issue came up after 10 years of growth, well there could be worse outcomes (like 99% of languages not being useful at all). It does seem fixable, but requires a cultural change.
For example, I found that despite its obvious flaws, a lot of things in shell are actually very good and there’s a reason it’s still around. On the other hand I see many new shells that are worse along important dimensions than their predecessors:
It felt like everyone was concentrating on the downsides of certain decisions like multiple dispatch in the recent Julia thread.
And also it felt like not everyone was making a distinction between language design and insufficient testing on the part of library/app authors.
So here is the other side of the coin? Of course it might not help if you haven’t used Julia much
I am designing a language with multiple dispatch and explicit interfaces. You can have both features in the same language. I think the weakness of Julia is that it lacks explicit interfaces, not that it has multiple dispatch.
Definitely seems worth exploring … but as with all things in language design: “I’ll believe it after it’s worked for 10 years” :) On maybe >100 programs and >1M lines of code.
I think Julia is doing pretty well and if this issue came up after 10 years of growth, well there could be worse outcomes (like 99% of languages not being useful at all). It does seem fixable, but requires a cultural change.
For example, I found that despite its obvious flaws, a lot of things in shell are actually very good and there’s a reason it’s still around. On the other hand I see many new shells that are worse along important dimensions than their predecessors:
https://github.com/oilshell/oil/wiki/Alternative-Shells
I make this claim because I learned lots of things by reimplementing a widely used and useful language. https://lobste.rs/s/jdxhu9/sqlite_go_with_without_cgo#c_oxtepm