In computer science, there is a stark contrast between how we think about mathematical structures and how we represent them inside a computer. In mathematics, our goal is to develop a framework that enables us to reason about the structure of data and its transformations effectively.
We want a language that is
expressive,
easy to speak,
and as compact as possible.
With this under our belt, we can turn expressions such as ax + b into the building blocks of state-of-the-art neural networks.
However, our goals change when we do computations instead of pure logical reasoning. We want implementations that are
easy to work with,
memory-efficient,
and fast to access, manipulate, and transform.
These are often contradictory requirements, and particular situations might prefer one over the other. For instance, if we have plenty of memory but want to perform heavy computations, we can sacrifice size for speed. Because of all the potential use cases, there are multiple formats to represent the same mathe…
Keep reading with a 7-day free trial
Subscribe to The Palindrome to keep reading this post and get 7 days of free access to the full post archives.