DOD vs OOP. Часть первая.
Давным давно, когда деревья были низкими и зелёными, а вычислительные машины — большими и ламповыми, компьютерные программы выполняли простую и понятную задачу: преобразование данных. Прочитать байт из памяти в регистр процессора, выполнить математическую операцию, записать результат обратно.
Однако по мере уменьшения размеров вычислительных машин, роста их производительности и объёма памяти возникла новая проблема — эффективное управление сложностью программ.
В период с конца 1950-х по 1966 год разнородные попытки натянуть процессы внутри ЭВМ на образ человеческой мысли породили то, что сейчас называется объектно-ориентированным программированием — ООП.
Определённо, в тот период человечество где-то свернуло не туда, и ООП породило целый пантеон лавкрафтовских чудовищ: COM, COM+, OLE, ActiveX, SOM, CORBA и даже всем известный DirectX. Попытки стандартизировать порождали ещё большее количество стандартов.
Кроссплатформенность, распределённые вычисления и обилие языков программирования постепенно превратили разработку ПО в изучение бесчисленного множества протоколов, интерфейсов и соглашений.
По мере роста производительности аппаратного обеспечения игровые движки, базы данных, CAD-системы и даже браузеры начали оперировать миллионами объектов, внезапно выяснилась неприятная деталь.
Интуитивно понятная модель, в которой образ реального объекта транслируется языком программирования в область памяти и набор функций, работающих с этой областью памяти, плохо соответствует устройству современного железа.
Многоуровневый кэш процессора, многопоточность, многоядерность и видеокарты требуют совершенно иной организации данных и программ.
Продолжение следует.
Post #70
455

- 👨💻 12
- 🔥 7
- ❤ 5