Inversão de Controle (IoC)
Definição
A Inversão de Controle (Inversion of Control – IoC) é um princípio da arquitetura de software que propõe inverter a forma tradicional de controle de um sistema: em vez de um componente criar e coordenar os objetos de que precisa, ele delega essa responsabilidade para um mecanismo externo.
Na prática, isso significa que o fluxo de execução e a criação de dependências são controlados por um container, framework ou outra estrutura externa — não pelo código do componente em si.
Por que é importante
A IoC ajuda a construir sistemas mais modulares, testáveis e reutilizáveis. Ao remover a responsabilidade de controlar diretamente as dependências, os componentes ficam mais focados na lógica que realmente precisam executar.
Esse princípio é base para padrões como Injeção de Dependência e para a forma como muitos frameworks modernos funcionam, como Spring (Java), Angular (JavaScript), NestJS (TypeScript) e .NET.
Exemplo prático (em Python)
Sem IoC, um componente criaria todas as dependências de forma direta:
class Servico:
    def __init__(self):
        self.repositorio = Repositorio()  # controle interno
    def executar(self):
        self.repositorio.salvar()
Com IoC, o controle da criação da dependência é invertido: o Repositorio é fornecido de fora:
class Servico:
    def __init__(self, repositorio):
        self.repositorio = repositorio  # fornecido externamente
    def executar(self):
        self.repositorio.salvar()
Esse princípio pode ser implementado manualmente (como no exemplo acima) ou automatizado com frameworks que fazem a injeção de dependências automaticamente.
 ECOSSISTEMA PYTHON
 ECOSSISTEMA PYTHON  LINUX
 LINUX  ASSEMBLY NASM
 ASSEMBLY NASM  JAVA
 JAVA