23 pontos por alstjr7375 2021-12-14 | 6 comentários | Compartilhar no WhatsApp
  • A maior diferença entre classes e protótipos é a forma de criação de objetos [classe -> instância vs objeto -> objeto copiado].

  • O maior ponto em comum é a orientação a objetos: dividir o programa em unidades chamadas objetos e fazê-las interagir entre si.

  • A maneira mais simples de fazer bem o encapsulamento, que é o núcleo da orientação a objetos, é fazer bem a abstração.

    • A abstração pode ser pensada em categorias como propriedades centradas em dados (OOP clássico), forma (tipo), estado (design orientado a dados), e também tempo (programação procedural), comportamento (funcional), definição (lógica) e situação (domain-driven design, AOP), que são centradas em relações.

    • Para classificar e projetar bem, é útil compreender várias categorias que nos façam reconhecer formas de pensamento [ex.: as 4 classes e 12 categorias de Kant].

  • Filosofia e paradigmas

    • Procedural: o tempo influencia a maior parte das abstrações, e sintaxes como Goto, que fazem contextos se misturarem, não são boas.

    • Funcional: como busca se expressar na forma de comportamento, tem relação profunda com tipo (forma).

    • Lógica: a lógica é composta por fatos e regras, e ao fazer consultas é possível obter resultados da lógica de predicados.

    • OOP tradicional: intuitivo. Mas é impossível descobrir atributos perfeitos de forma completa.

    • Design orientado a dados: ao contrário do funcional, que tenta lidar com o estado da lógica, tenta reduzir o estado no próprio computador. Isso melhora o desempenho ao aumentar os cache hits.

    • Domain-driven design: diferente do OOP tradicional, projeta de formas distintas conforme o domínio e o contexto (semelhante à teoria pictórica e à semântica do uso); usar AOP para fazer injeção de dependência de subdomínios facilita a implementação.

  • MVP

    • Criação de protótipo: deve incluir funções importantes, e pode variar conforme a perspectiva de designers, desenvolvedores, financeiro etc. Requisitos típicos de acordo com a semelhança com o produto que muitas pessoas consideram importante.

    • MVP: deve garantir um nível mínimo de acabamento que permita uso real, e ser projetado de forma semelhante ao produto pensado como etapa final.

  • Orientação a objetos e existência

    • Platão: defendia que propriedades universais são imutáveis e reais, e que existências individuais existem sem possuir plenamente essas características universais.

    • Aristóteles: defendia que apenas entidades individuais são substâncias fundamentais, e que os universais são representações que aparecem em relações hierárquicas/de inclusão.

    • Classe-instância é semelhante à teoria das Ideias de Platão, enquanto protótipo-objeto copiado é semelhante à teoria da substância de Aristóteles.

Os objetivos que eu pretendia escrever no início eram

  • O OOP tradicional é semelhante à teoria pictórica, e o domain-driven design é semelhante à semântica do uso.

  • Classe-instância é semelhante à teoria das Ideias de Platão, enquanto protótipo-objeto copiado é semelhante à teoria da substância de Aristóteles.

Esses dois, mas acabou ficando bem mais longo do que eu esperava.

Se a pessoa não tiver nenhum conhecimento prévio, pode achar um pouco difícil.

6 comentários

 
alstjr7375 2021-12-14

Por que o JavaScript escolheu protótipos?

https://pt.news.hada.io/topic?id=5532

É um texto que escrevi porque isso me veio à cabeça enquanto lia isso.

 
laeyoung 2021-12-14

Vamos ler fazendo uma comparação como neste artigo!

 
alstjr7375 2021-12-14

Obrigado!!

 
alstjr7375 2021-12-14

Hã? Parece que não dá para inserir vários espaços T_T

 
xguru 2021-12-14

Ah, em alguns casos isso ocupava espaço de propósito...

Configurei para reduzir linhas em branco e múltiplos espaços vazios T_T

 
alstjr7375 2021-12-14

Entendi.

Vou precisar considerar isso da próxima vez que eu postar.