The efficiency vs flexibility trade-off is *the* fundamental ~~question~~ trade-off in [[Software Engineering]]. We see it over and over again throughout the disciplines history and development. So called "higher level" languages (such as the very high level [[C]]) meant to abstract over details about the hardware they run on and enable the development of [[Portable Code]]. Strict type systems such as those in the ML family of programming languages when compared to more flexible type systems such as those found in Lisps are another example of this trade-off. Lisps are well renown for their flexibility while ML languages are known for the opposite.