Один из способов взглянуть на историю разработки языков программирования - это революция с введением подпрограммы. Двадцать или тридцать лет спустя всерьез рассматривались два усовершенствования вызова подпрограмм:
Я только что программировал на Prolog после 20-летнего перерыва и понял, насколько невероятно мощными являются объединение и отслеживание с возвратом. Однако победил полиморфизм. Почему?