3 ms·
No it's not. OOP is regularly used for new projects by experienced programmers. Julia doesn't have interfaces for example. I know that I can set indexing to be
by RivieraKid 6y ago
No it's not. OOP is regularly used for new projects by experienced programmers. Julia doesn't have interfaces for example.
I know that I can set indexing to be 0-based. Not a good solution.
- cbkeller 6y agoRegardless of what is a subset of what, I certainly agree with the OP that OOP feels "anemic" in comparison to the dispatch-based paradigm of Julia. I can't tell you how many times I've seen disparate packages written by different authors with no explicit effort towards interoperability "just work" together in Julia (e.g., [1]), something I have never seen to a comparable degree in any other language. [1] https://www.youtube.com/watch?v=kc9HwsxE1OY https://www.youtube.com/watch?v=kc9HwsxE1OY
- socialdemocrat 6y agoMost dynamic OOP languages don't have interfaces either, so that is kind of a poor argument. You cannot compare Julia to something like Java. You got to compare it to Ruby, Python etc. Also I have no idea what an interface definition would look like in Julia. A function in Julia isn't bound to one specific type like in an OOP language.
- newen 6y agoI think interfaces in Julia might go something like interface AnimalActions function walk(x::Animal) end function call(x::Animal, y::Animal) end function eat(x::Animal, z::Food) end end struct Dog <: Animal name::String end AnimalActions.walk(x::Dog) = true AnimalActions.call(x::Dog, y::Animal) = true AnimalActions.eat(x::Dog, z::Food) = true setinterface Dog AnimalActions end and then I guess using it like using AnimalActions d = Dog("rufus") walk(d)
- dklend122 6y agoThe below package implements something like that, but better imo: https://tk3369.github.io/BinaryTraits.jl/dev/ https://tk3369.github.io/BinaryTraits.jl/dev/