Qual é o paradigma de programação da R?
Pergunta
Qual é o paradigma de programação de R (R, como no GNU S)?
Acredito que sou familiarizado com as linguagens de programação de diferentes paradigmas conceituais (ter programmend em C++, Java, Prolog e algumas outras línguas), mas apesar de eu já escrevo a minha própria pequena R scripts, eu não tenho certeza de qual paradigma R é suposto representar.
Solução
R suporta uma mistura de orientada a objetos e programação funcional paradigmas.
No aspecto funcional é:
- tem funções de primeira classe
- tem preguiça de avaliação de argumentos
- incentiva puro, livre de efeitos secundários funções
Mas
- ele não implementa a chamada de cauda recursão
- e é fácil criar não-pura funções
Sobre a orientação a objetos lado:
ele tem três construído em OO paradigmas:S3 e S4, que são imutáveis e apoio função genérica estilo OO, e classes de referência (aka R5), que são mutáveis, e suporte a mais comum de transmissão de mensagens estilo OO.
S4 é fortemente influenciada pelo OO estilo de common lisp (CLOS) e dylan.
Há também um número de contribuíram os pacotes que fornecem outros tipos de OO:
proto
,mutatr
,R.oo
,OOP
.
Mas
- A built-in OO ferramentas fornecem pouco na forma de um açúcar sintático.
Outras dicas
De acordo com Wikipedia (ênfase adicionada),
.r suporta Programação processual com funções e programação orientada a objetos com funções genéricas.Uma função genérica atua de maneira diferente, dependendo do tipo de argumentos que é passado.Em outras palavras, a função genérica reconhece o tipo de objeto e seleciona (despachos) a função (método) específica para esse tipo de objeto.Por exemplo, R tem uma função de impressão genérica () que pode imprimir quase todos os tipos de objeto em r com uma sintaxe simples "Imprimir (ObjectName)".