Qual é o nome do paradigma de programação caracterizado pelo Go?


8

Estou intrigado com o modo como Go abandona as hierarquias de classe e parece abandonar completamente a noção de classe no sentido típico de orientação a objetos. Além disso, estou impressionado com a maneira como as interfaces podem ser definidas sem o tipo que implementa a interface que precisa saber.

Existem termos que são / podem ser usados ​​para caracterizar esse tipo de metodologia de programação e paradigma de linguagem (ou talvez aspectos específicos)? O paradigma da linguagem Go é suficientemente novo e distinto do paradigma clássico de POO e suficientemente importante na história da programação de computadores para garantir um nome único?


2
Vou sugerir que se chame "Go-go coding"! : P
FrustratedWithFormsDesigner

4
O conceito "ter um tipo implementa uma interface sem que o próprio tipo saiba" não é novo; Haskell tem praticamente a mesma coisa (apenas eles chamam de classes de tipos em vez de interfaces) há um bom tempo.
tdammers

7
Eu penso do tipo-ignorantemente-implementação de interface como uma forma de pato-digitação, e Rob Pike diz explicitamente por isso nesta apresentação: golang.org/doc/ExpressivenessOfGo.pdf
Adam Crossland

Respostas:


10

A passagem de mensagens entre contextos de execução leves, juntamente com a capacidade de criar e destruir dinamicamente esses contextos, é basicamente o modelo do ator .

As linguagens de programação tendem a abordar o problema da expressão de uma das duas maneiras: as linguagens OO tendem a se concentrar em facilitar a implementação das mesmas operações usando tipos de dados diferentes (por exemplo, "objeto em que posso clicar com o mouse" pode ser uma barra de rolagem, uma janela, um menu, uma caixa de texto etc. - mesma operação, diferentes representações de dados), enquanto as linguagens funcionais tendem a se concentrar na implementação fácil de novas operações nos mesmos tipos de dados subjacentes. Ao abandonar as hierarquias de classe, o Go parece acabar mais no lado "funcional" dessa divisão.

Como Adam Crossland indicou em seu comentário, "interface de implementação de tipo ignorante" pode ser considerada uma forma de digitação de pato, que é altamente prevalente em linguagens dinâmicas. (É mais tecnicamente correto, no entanto, considerar isso como um sistema de tipo estrutural nos modelos Go. C ++ são provavelmente a implementação mais popular de um sistema de tipo estrutural atualmente.)

Go tem muitos antecedentes - não acho que nenhuma de suas idéias seja original para o idioma. Mas acho que geralmente é a medida errada para uma linguagem que se pretende prática. Go parece que combina idéias úteis de vários domínios diferentes de uma maneira elegante, que (eu acho) resultaria em programação mais produtiva do que C # ou Java poderia produzir. Espero que ganhe força.


1
+1, especialmente para "Go parece que combina idéias úteis de vários domínios diferentes de maneira elegante"
RCE

3

Primitivas de simultaneidade.

Communicating Sequential Processes ou CSP é um artigo de Charles Antony Richard Hoare, publicado pela primeira vez em 1985 por Prentice Hall International.

Erlang é uma linguagem funcional e o Go é estruturado, pode-se dizer que Erlang é o predicador do Go.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.