A fronteira entre um tipo fundamental e um objeto é borrada e frequentemente introduzida artificialmente. Por exemplo, em C, uma estrutura é apenas um monte de registros, apenas um tipo não-objeto derivado. Em C ++, uma estrutura é uma classe com todos os campos públicos, um objeto. Ainda assim, C ++ é quase totalmente compatível com C ... a borda é realmente suave aqui.
Para programação baseada em protótipo, você precisa ter objetos mutáveis em tempo de execução. Eles DEVEM ser digitados manualmente, porque cada um muda em tempo de execução, uma classe de um tipo muda para outra - seu tipo é alterado.
Você pode manter os tipos não-objetos fundamentais e derivados como estáticos. Mas isso introduz uma disparidade estranha, os objetos são de tipo suave, os não-objetos são de estática e um barier rígido deve ser estabelecido entre os dois. Você deve ser capaz de transformar uma estrutura? Uma linha? Number deve ser uma classe ou um tipo fundamental, ou um conjunto de tipos fundamentais, int / float / bignum / etc?
É apenas mais natural e fácil de aprender, usar e escrever para ter esse uniforme, todos os tipos são mutáveis ou nenhum tipo é mutável em tempo de execução. Se você declarar que apenas um tipo (Objeto) é mutável, você terá dores de cabeça e problemas nos dois mundos.
O tipo estático é:
- mais fácil de implementar
- mais rápido / mais eficiente
- mais segura
- mais fácil de manter / documentar grandes sistemas devido à abstração.
O tipo dinâmico é:
- mais rápido para escrever,
- mais conciso
- idioma mais fácil de aprender
- mais tolerante por erros de design.
Ao misturar os dois, você sacrifica muito.
- A implementação se torna mais difícil do que qualquer uma das duas anteriores.
- a velocidade depende se você usa os tipos flexíveis ou não ... Se você usa, é baixo, se não usa, por que escolher o idioma?
- A segurança de tipos está fora da janela para todos os tipos de objetos.
- seguir como um tipo se transforma em outro é uma tarefa bastante difícil. Documentando - muito difícil.
- Você ainda precisa fazer toda a contabilidade com tipos fundamentais, o que reduz a concisão e a velocidade de gravação
- A complexidade do idioma é maior (mais difícil de aprender) do que qualquer um dos "específicos",
- o "perdão" de um tipo dinâmico é substituído pela tendência a alguns erros muito complicados em tipos de atributos incompatíveis.