Gobbedyret56 karma2020-07-27 17:17:09 UTC
Thank you for creating this great language, which I've been using regularly since your last AMA. My questions pertain to what I think are some of the major problems with Julia now:
Currently Julia does not support inheritance (of the regular kind). This means that, if I want to "wrap" some type, e.g. create a Dict-like object with only a few methods changed, it requires overriding all necessary methods, which is a huge amount of code. Even worse, there is no way of knowing which methods to overwrite! In contrast, in classical OOP, this is very easy to do. There is a very old GitHub issue called "abstract interfaces", but nothing has really been done in this area. Are you discusssion mechanisms for either supporting classical inheritance, or for formalizing interfaces, such that leaf types can be copied?
You've been making real progress on compile time latency recently (thank you for that). But while you work towards making compilation faster, we Julians are tirelessly working towards writing more and more Julia code and taller software stacks. For some applications the overall direction has been going the wrong way (try playing around with Turing or ApproxFun if you doubt me).
What can be done to mitigate this development of longer and longer compile times?
Thank you again for your work.
View HistoryShare Link
Gobbedyret22 karma2020-07-27 20:31:52 UTC
I would still give Julia a try. Inheritance is very importance in languages that rely on inheritance - Julia offers other methods to write generic, reusable code that is used instead. It's like how in Python you rarely feel the lack of multiple dispatch holds you back, but in Julia it's completely ingrained, and most codebases is built on it.
To be more precise, Julia allows you to define methods for supertypes, which can then be subtyped. All subtypes then inherit that method. But Julia does not allow supertypes to contain data or be instantiated, so only behavior can be inherited, not structure.
That's useful in most cases, but not all. Sometimes you really need inheritance, and then Julia becomes clumsy.
Gobbedyret10 karma2020-07-27 19:19:25 UTC
The Julia package manager is already so much ahead of e.g. Conda that it's not even comparable. These changes - in particular the ones for people with poor internet connections - all sound amazing.
Copyright © 2014 BestofAMA.com, All rights reserved.
reddit has not approved or endorsed BestofAMA, reddit design elements are trademarks of reddit inc.