Stefan is one of the co-creators of Julia and a co-founder of Julia Computing. Before Julia, he was a software engineer and data scientist at Akamai, Citrix Online, and Etsy. In addition to running Julia Computing, he holds a part-time appointment as a Research Engineer at New York University as part of the Moore-Sloan Data Science Environment.
If you're familiar with Julia and its ecosystem, you may have noticed something lovely but a bit puzzling: there seems to be an unusually large amount of code reuse between packages compared to other seemingly similar languages. This sharing of code comes in two forms:
- Sharing basic types among a wide variety of packages providing disparate functionality;
- Sharing generic algorithms that work on various implementations of common abstractions.
Why does generic code in Julia "just work"? Why do Julia packages seem to share types with so little friction? Both kinds of reuse are supposed to be natural benefits of class-based object-oriented languages. After all, inheritance and encapsulation are two of the four pillars of OOP. Even more puzzling is that Julia has no encapsulation and doesn't allow inheriting from concrete types at all. Yet both kinds of code reuse are rampant. What is going on? In this talk, I make the case that both of kinds sharing stem directly from Julia's multiple dispatch programming paradigm.
An address from one of our sponsors.
Everything Pkg: discussion of package management, version resolution, binary artifacts, registries, manifests, configuration, etc.