A linguagem gozada do Google aborda os problemas no post de Paul em Graham 'Por que o arco não é especialmente orientado para objetos'?

StackOverflow https://stackoverflow.com/questions/1714004

  •  19-09-2019
  •  | 
  •  

Pergunta

Faz do Google Golang abordar os problemas com os idiomas abordados no post de Paul's Graham 'Por que o arco não é especialmente orientado a objetos'?

Foi útil?

Solução

Meu sentimento inicial sobre isso é "é muito cedo para contar"

1) A programação orientada a objetos é emocionante se você tiver um idioma estaticamente tipado sem fechamentos lexicais ou macros. Até certo ponto, oferece uma maneira de contornar essas limitações. (Veja a décima regra de Greenspun.)

Go suporta funções literais (ver documentos) que, se estou lendo isso corretamente, permitirá que você passe funções como parâmetros, definidas em outro lugar ou criado ad-hoc.

2) A programação orientada a objetos é popular em grandes empresas, porque se adequa à maneira como eles escrevem software. Em grandes empresas, o software tende a ser escrito por equipes grandes (e frequentemente em mudança) de programadores medíocres. A programação orientada a objetos impõe uma disciplina a esses programadores que impede que qualquer um deles cause muito dano. O preço é que o código resultante é inchado com protocolos e cheio de duplicação. Isso não é um preço muito alto para grandes empresas, porque seu software provavelmente será inchado e cheio de duplicação de qualquer maneira.

Este ponto é muito subjetivo à resposta.

3) A programação orientada a objetos gera muito do que parece ser o trabalho. Nos dias de fãs, havia um tipo de programador que colocaria apenas cinco ou dez linhas de código em uma página, precedidas por vinte linhas de comentários elaboradamente formatados. A programação orientada a objetos é como crack para essas pessoas: permite que você incorpore todo esse andaime direto ao seu código-fonte. Algo que um hacker LISP pode suportar pressionando um símbolo para uma lista se torna um arquivo inteiro de classes e métodos. Portanto, é uma boa ferramenta se você quiser se convencer, ou outra pessoa, que você esteja fazendo muito trabalho.

Como Go não é uma linguagem verdadeiramente orientada a objetos, você provavelmente pode resolver o problema em qualquer Fashon com o qual se sinta confortável.

4) Se um idioma é um programa orientado a objetos, pode ser estendido pelos usuários. Bem, talvez. Ou talvez você possa se sair ainda melhor oferecendo os subconceitos da programação orientada a objetos à la carte. A sobrecarga, por exemplo, não está intrinsecamente ligada às aulas. Veremos.

GO parece ter uma abordagem interessante dos objetos, onde você não precisa se preocupar / desenvolver grandes árvores de objetos. Parece que as ferramentas estão presentes no idioma para estruturar seus dados de maneira orientada a objetos, sem travá -lo em um ambiente de objeto puro.

5) As abstrações orientadas a objetos são mapeadas perfeitamente nos domínios de certos tipos específicos de programas, como simulações e sistemas CAD.

...

Outras dicas

Paul tem alguns pontos interessantes, em geral, eu li muitas de suas reflexões. Nesse assunto, discordamos. Ele é uma porca lisp e um programa de baixa qualidade. Ele parece defender os programas difíceis de entender como o trabalho de grandes programadores. Sim, eu percebo que é mais sutil do que isso, mas realmente se resume a isso. No final do dia, seu código é fácil de trabalhar, ou não é. E alguns programadores, programadores que Paulo considerariam ótimos, poderão suportar mais porcaria do que outros e ainda poderão fazer cabeças ou caudas do que o código pretende. É uma habilidade, mas com certeza não é a única que um bom programador precisa.

Falando em arco, é péssimo e, a menos que eu esteja enganado, mesmo as pessoas na comunidade Lisp pensam assim - meu argumento aqui é que mesmo as pessoas inteligentes cometem erros.

Novamente, Paul é um cara inteligente, mas toda a sua abordagem nesta peça em particular está errada, ao que parece.

Espere, porém, é realmente orientado a objetos? Parece totalmente agnóstico nessa frente. Você pode usar OOP ou FP ou programação imperativa no Go. Quero dizer, a "programação" no estilo Prolog seria um alongamento, mas caso contrário ...

De fato, eu argumentaria que Go se assemelha a Scala a esse respeito: há alguns paradigmas de objetos por aí e, no entanto, também existem lambdas e digitadas por aí.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top