Highest Rated Comments


Gobbedyret56 karma

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:

  1. 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?

  2. 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.

Gobbedyret22 karma

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 karma

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.