В моем опыте использования как высокопроизводительного программного обеспечения (например, игр, обработки чисел), так и программного обеспечения, не зависящего от производительности (веб-сайты, большинство всего остального), было одно огромное преимущество позднего связывания: гибкость / ремонтопригодность / расширяемость вы упомянули.
У раннего связывания было два основных преимущества. Первый:
- Производительность во время выполнения
является общепринятым, но, как правило, не имеет значения, потому что в большинстве случаев возможно бросить аппаратное обеспечение на проблему, которая дешевле. Конечно, есть исключения (например, если у вас нет оборудования, на котором вы работаете).
Второе преимущество раннего связывания:
кажется недооцененным. В больших проектах, где разработчики работают с компонентами других людей, IDE могут читать ранние привязки и использовать их для информирования разработчика (с автозаполнением, документами и т. Д.). Это менее практично с поздним связыванием, потому что привязки создаются во время выполнения. С языками позднего связывания все еще возможно, если IDE может выводить определения структуры из кода, но поскольку структура всегда может быть изменена во время выполнения, она не столь надежна.
Простота разработки это большое дело. Это сводит к минимуму дорогостоящее время программиста - и чем больше ваша команда разработчиков, тем значительнее она становится. Вы должны сбалансировать это с гибкостью, которую вы получаете с языками позднего связывания.