Это очень старая идея, впервые реализованная в начале 1980-х годов. Тогда это было известно терминами «программирование конфигурации», «программные интегральные схемы» или «языки описания архитектуры». «Внедрение зависимостей» - это неологизм, придуманный, когда корпоративные разработчики недавно заново открыли для себя идеи.
Для примера посмотрите системы Conic [1] и Regis / Darwin [2]. Эти системы использовались для написания программного обеспечения для промышленного управления и оказали непосредственное влияние на то, как программное обеспечение ** написано для телевизоров Phillips. Интересной особенностью Darwin является то, что язык имеет как текстовое, так и графическое представление [3] и формальную семантику .
Conic и Regis / Darwin сделали намного больше, чем существующие структуры DI, потому что они использовались для построения распределенных систем: язык конфигурации скомпилирован в программу, которая развернула систему параллельно через сеть машин (формальная семантика определяет, как это действует процесс "разработки"). Для сравнения, Spring, Guice и т. Д. Только конфигурируют объекты в одном адресном пространстве и оставляют гораздо большие трудности с подключением распределенных компонентов к программисту.
Еще одним открытием этой идеи является операционная система TinyOS для приложений сенсорных сетей, хотя она не имеет столь же чистой концептуальной модели компонентов и конфигурации.
- Kramer, J., Magee, J., Sloman, M.S., и Lister, A., CONIC: интегрированный подход к распределенным компьютерным системам управления, IEE Proceedings., 130, Pt. E, (1983), 1-10.
- Magee, J., Dulay, N. и Kramer, J., Regis: конструктивная среда разработки для распределенных программ, Distributed Systems Engineering Journal, Vol. 1, № 5., сентябрь 1994 г., 304-312
- Крамер Дж., Маги Дж. И Нг К., Программирование графической конфигурации, IEEE Computer, 22 (10), (1989), 53-65.
** Может быть, "был" сейчас.