Você está na página 1de 15

PROGRAMAÇÃO EM

BIG DATA COM R


Linguagens
multiparadigma: R
Mariana Araújo-Pereira

OBJETIVOS DE APRENDIZAGEM

>> Definir a linguagem R.


>> Descrever os fundamentos da linguagem R.
>> Reconhecer vantagens e desvantagens de R dentre outras linguagens
usadas para programação em big data.

Introdução
R é uma linguagem de programação inicialmente criada para o desenvolvimento
de análises estatísticas e visualização de dados. Foi criada com base em outra
linguagem estatística, chamada S, e hoje ocupa o sétimo lugar no ranking de
linguagens mais utilizadas do mundo.
Graças ao projeto internacional e colaborativo que a mantém, atrelado à sua
característica crucial de ser de código aberto, hoje é possível utilizar mais de 10
mil pacotes por meio dessa linguagem — podemos não só explorar diferentes
estratégias de análise, mas também manipular diferentes tipos de dados.
Neste capítulo, você vai conhecer a linguagem de programação R como um
todo, vendo aspectos da sua criação e utilização, assim como os fundamentos
nos quais a linguagem se baseia. Além disso, vai ser apresentado a um panorama
geral de vantagens e desvantagens do R no universo do big data.
2 Linguagens multiparadigma: R

O que é e de onde vem o R


Antes de começar a falar sobre “R”, precisamos falar sobre “S”. Embora pareça
estranho querer falar sobre letras, essas consoantes representam muito
mais do que um simples caractere que faz parte do nosso alfabeto. “S”, por
exemplo, é uma linguagem de programação altamente desenvolvida para
análises estatísticas que foi criada em 1976 por John Chambers no antigo
e conceituado Bells Lab. O que começou como um projeto de um ambiente
de análises restrito à empresa foi sendo aprimorado ao longo do tempo e,
12 anos depois, em 1988, já estava na versão quatro (CHAMBERS, 1998).
Cinco anos mais tarde, o Bells Labs disponibilizou a outra empresa (na
época StatisSci, atualmente Insightful Corp.) uma licença exclusiva para desen-
volver e comercializar a linguagem. Após diversas modificações coorporativas,
esse desenvolvimento deu origem a um produto chamado S-Plus, que nada
mais era que uma implementação do S com interface gráfica e ferramentas
bem desenvolvidas (VENABLES, 2014).
Esse novo ambiente mais próximo do usuário está de acordo com o que
Chambers idealizou como a ideia básica do S e, posteriormente, R: um ambiente
interativo no qual é possível analisar e visualizar dados sem um conhecimento
avançado de programação como pré-requisito. Com comandos básicos, já
seria possível realizar análises iniciais, e a complexidade do código seria
compatível com a complexidade analítica. O problema é que, por ser uma
versão comercial, o seu uso estava restrito aos assinantes daquele serviço.
Foi nesse contexto que o R foi criado. A sua primeira menção foi realizada
em 1993, por seus criadores Ross Ihaka e Robert Gentleman; em 1995, o pro-
jeto foi indexado ao GNU General Public License, que o tornou um software
gratuito; e apenas em 2000, já em posse do R Core Group (com pessoas que
inclusive também faziam parte do projeto S-PLUS), a primeira versão foi
publicamente lançada.
A linguagem R pode resumidamente ser definida como uma implementação
gratuita da linguagem S, ou, mais especificamente, uma linguagem orientada
a objetos, com programação funcional e dinâmica voltada a manipulação,
análise estatística e visualização de dados. A linguagem apresenta constante
evolução, tendo em vista que é mantida por um projeto colaborativo interna-
cional de desenvolvimento e pesquisa e compatível com diferentes sistemas
operacionais, como UNIX, Windows e MacOS (R PROJECT, [20--]).
Linguagens multiparadigma: R 3

Quanto aos seus recursos e funcionalidades, R é classificado como uma


linguagem multiparadigma — isso porque com uma única linguagem é pos-
sível utilizar paradigmas como conjuntos (ou arrays), orientado a objetos,
imperativo, funcional, estrutural e reflexivo. Além disso, R possui a melhor
combinação de atributos desejáveis na hora de escolher uma linguagem de
programação em algumas áreas como inteligência competitiva, incluindo alta
ciência de dados, baixo custo e uma curva de aprendizado razoável.

Paradigmas de programação são uma forma de classificar as lin-


guagens de acordo com suas funcionalidades. Veja, a seguir, dois
exemplos de paradigmas.
„„ Imperativo estrutural — agrupa instruções em procedimentos ou orientado
a objetos, que agrupam instruções com a parte do estado em que operam.
„„ Declarativa funcional — o resultado desejado é declarado como o valor de
uma série de aplicações de função ou lógica na qual o resultado desejado
é declarado como a resposta a uma pergunta sobre um sistema de fatos
e regras ou matemática em que o resultado desejado é declarado como a
solução de um problema de otimização.
Uma linguagem é tida como multiparadigma quando permite que mais de um
paradigma seja utilizado. Dessa forma, é possível utilizar cada paradigma para
solucionar problemas de diferentes naturezas e objetivos, sem a necessidade
de utilizar outra linguagem. 

R nos trending topics


A linguagem R é largamente usada entre estatísticos e analistas de dados de
diferentes áreas, desde a área coorporativa até a análise de dados de pes-
quisas de saúde e meio ambiente. De acordo com o PopularitY Programming
Language (PYPL..., 2020), que monitora um ranking de utilização de linguagens
de programação mês a mês desde 2004, a popularidade do R aumentou subs-
tancialmente nos últimos 15 anos, passando de 0,5% de linguagem utilizada
no mundo em novembro de 2005 para 4% em novembro de 2020. Atualmente,
R é a 7ª linguagem mais utilizada em todo o planeta (Figura 1).
4 Linguagens multiparadigma: R

Figura 1. Aumento do uso de R nos últimos 15 anos.


Fonte: Adaptada de PYPL... (2020).

De acordo com coletas realizadas em portais como o blog da MicrosoftR,


RStudio e Quora, a linguagem R é amplamente utilizada por multinacionais de
conhecimento popular em diferentes segmentos, como automobilístico, mídias
sociais, transporte, turismo, tecnologia e saúde. O Facebook, por exemplo,
utiliza a linguagem para analisar padrões de comportamento relacionados
a atualizações de status e fotos de perfil. Inclusive, há um pacote no CRAN
chamado “Rfacebook” que permite que qualquer usuário colete informações
sobre usuários e postagens, além de poder coletar atualizações de status
públicas que mencionam palavras-chave específicas (BARBERA et al., 2017).
Outras empresas, como Google, Twitter, Microsoft, Uber, Airbnb, IBM, HP, Ford
e Novartis, também integram o time de usuários da linguagem.
De acordo com o fórum de profissionais e entusiastas na área de progra-
mação Stack Overflow (2020), as áreas que mais buscam informações sobre
análises utilizando a linguagem R são, em ordem decrescente: acadêmica,
saúde, governamental, consultoria, seguro, energia, finanças, varejo, mídias,
manufatura, tecnologia e eletrônica. Grande parte do sucesso se deve à alta
diversidade de pacotes (ultrapassa 10.000 unidades) que podem ser utilizados
e estão gratuitamente disponíveis na rede de distribuição do R — tudo isso
em um ambiente versátil e facilmente programável.
Linguagens multiparadigma: R 5

Fundamentos do R
Após escolher ambientes de desenvolvimento integrado (Integrated Develop-
ment Environment — IDE) com o qual o R será utilizado, é hora de “pôr a mão na
massa”. Entretanto, embora tenha sido pensada como uma linguagem de fácil
utilização, é necessário ter um conhecimento dos fundamentos básicos que
estão por trás da linguagem R para começar a manipulá-la. Os fundamentos de
linguagem de programação são conceitos básicos e elementares sobre objetos
e funcionalidades, além das características e paradigmas de linguagens de
programação. A partir da obtenção desse tipo de conhecimento, é possível
desenvolver operações básicas de programação de sistemas.
Os quatro fundamentos essenciais do R, de acordo com Chambers (2008),
são:

„„ objetos: tudo o que existe no R é um objeto;


„„ funções: tudo o que acontece no R é uma chamada de função;
„„ interfaces/ambientes: outros software que podem ser integrados ao
R para facilitar a sua utilização.

Objetos do R
Os tipos de objetos mais usuais em R são:

„„ vetor (o mais elementar);


„„ matriz e conjuntos (generalizações multidimensionais de vetores);
„„ dataframe (conjunto retangular em que os casos correspondem às
linhas e as variáveis correspondem às colunas);
„„ listas (recipientes para elementos de tipos de dados de vários tipos).

Para cada um desses, os dados podem se apresentar como numéricos


(variáveis numéricas reais, complexas ou inteiras), fatores (representação
de variáveis categóricas), lógicos (verdadeiro/falso) ou caracteres (texto).
A partir dos objetos, é possível realizar operações matemáticas, como
soma, subtração, multiplicação, divisão, transformação em logaritmo, entre
outros. Para essas operações, são utilizados símbolos que são padrão em
outros software estatísticos, como “+, -, * e /”, respectivamente, que podem
ser incluídos em uma função.
6 Linguagens multiparadigma: R

Para saber mais sobre IDEs, suas vantagens e diferentes tipos para
além das IDEs voltadas para o R, acesse o site RedHat e leia a matéria
“O que é IDE”.

Funções do R
Uma função nada mais é que um conjunto de instruções (ou comandos) que
realiza uma tarefa específica a partir de um objeto em um módulo dependente
de código. A linguagem R possui muitas funções implementadas em sua base
(sem ser necessário instalar pacotes adicionais), a partir das quais é possível
realizar operações básicas ou complexas, como gerar números aleatórios
ímpares até o número 1003, por exemplo. As funções de base, na maioria das
vezes, possuem nomes intuitivos na língua inglesa, como sum(), colnames()
e mean(), que respectivamente devolvem a soma de valores, os nomes das
colunas ou as médias dos valores selecionados.
Além dessas, é possível que o usuário crie as suas próprias funções a
partir de uma função predefinida nomeada function(). Toda função precisa
de um nome da sua escolha, argumentos (que indicarão os objetos ou parte
deles que serão utilizados) e os comandos de função propriamente ditos.
Além disso, é possível utilizar condições (equivalentes a “se”, “se...então”, “se
e somente se”, etc.) e repetições (chamadas de loops).

Interfaces/ambientes do R
O termo “ambiente” tem como objetivo caracterizar um sistema totalmente
planejado e coerente. Apesar de o R já possuir como base uma interface com
uma versão pré-compilada desse ambiente, existem diversos IDEs disponíveis
para serem utilizados em conjunto com a linguagem, a fim de facilitar a ex-
periência do usuário. Essa facilitação se dá principalmente pela minimização
dos erros de sintaxe ou mesmo de lógica, além de apresentação rápida de
ajuda, possibilidade de autocompletar as funções e facilitar a visualização
dos gráficos gerados (RUSSI; CHARÃO, 2011).
Existem diversas IDEs para R disponíveis atualmente, como Rattle, R-brains,
Rkward, a brasileira TinnR e a mais popular de todas: Rstudio.
Linguagens multiparadigma: R 7

O RStudio está disponível nas opções Desktop e Server, gratuito ou pago


com funcionalidades comerciais. O IDE conta com console, editor de destaque
de sintaxe, ferramentas para plotagem, histórico, depuração e gerenciamento
de espaço de trabalho (RACINE, 2012).

Neste capítulo, são abordados os tipos básicos de objetos, mas, de


acordo com o pacote utilizado, é possível criar outros tipos, como
Tibbles e ExpressionSet, mais utilizado na análise de dados biológicos.

Bônus: R Markdown
Além dos fundamentos básicos do R, existem diversas estruturas e ferramentas
que foram criadas a fim de facilitar o dia a dia do analista/programador que
o está utilizando. Uma delas é o RMarkdown, uma estrutura para a criação
de relatórios com códigos reproduzíveis que pode, inclusive, ser utilizada
para a construção de blogs, apresentações, sites, livros, jornais e muito mais. 
A comunidade desenvolveu essa funcionalidade muito bem ao longo do tempo,
e atualmente é possível gerar relatórios HTML, Word e PDF, criar aplicativos
web, desenvolver documentos interativos e gerar relatórios automáticos
personalizados de acordo com geografia, horário e outras segmentações que
podem ser incluídas pelo usuário.

Vantagens e desvantagens do R
Agora que você já tem uma visão geral do que é o R, é preciso compreender
quando e por que utilizá-lo no lugar de outras linguagens de programação
mais populares. No ranking em que o R aparece como a 7ª linguagem mais
utilizada do mundo, observa-se que as seis antecessoras são, em ordem
crescente: Python, Java, JavaScript, C#, C/C++ e PHP. Neste tópico, vamos ver
as vantagens e desvantagens do R, principalmente para a manipulação de
grandes volumes de dados, e compará-lo a essas outras famosas linguagens.
8 Linguagens multiparadigma: R

Vantagens
Como já citamos, a primeira vantagem do R é ser uma linguagem e programação
de código aberto; assim, não é necessário pagar nenhuma taxa ou licença, e
qualquer usuário pode desenvolver pacotes e ferramentas e disponibilizá-
-los à comunidade. Em relação aos pacotes, o número de possibilidades de
análises é absurdamente alto: são mais de 10.000 pacotes disponibilizados e
suas combinações. Alguns deles, como o famoso dplyr, operam verdadeiros
milagres na estruturação e visualização de dados inicialmente desordenados,
o que é uma vantagem importante da linguagem.
A partir dos pacotes, surgiram outras vantagens: a utilização da linguagem
para realizar operações de aprendizado de máquina, como classificação,
regressão e desenvolvimento de redes neurais artificiais; a elaboração e
relatórios altamente detalhados e reproduzíveis; e o cerne do desenvolvimento
dessa linguagem: a análise estatística de dados.
A qualidade de plotagem gráfica do R também é um atrativo frente a outras
linguagens. São inúmeras as possibilidades de manipular e visualizar os dados,
e bibliotecas populares como ggplot2 e plotly não só permitem gerar figuras
com uma estética impecável, mas também — em conjunto — possibilitam a
criação de gráficos interativos.
R ainda apresenta uma alta compatibilidade com outras linguagens de
programação e sistemas. É possível combiná-la com C#, C++, Java e Python
e integrá-la a tecnologias de big data, como Hadoop e outros sistemas de
gerenciamento de banco de dados. É também importante citar que a linguagem
está disponível para utilização em Windows, Linux e Mac. Como última van-
tagem, R é uma linguagem de programação em constante evolução: trata-se
de uma tecnologia de ponta que fornece atualizações sempre que um novo
recurso é adicionado.

Desvantagens
Como todas as outras linguagens, R também apresenta algumas limitações e
desvantagens de utilização. A primeira é que, utilizando as configurações de
base, essa linguagem consome muita memória, e todos os dados precisam
estar na memória física. Assim, mesmo que alguns pacotes permitam o acesso
de bancos de dados on-line, esses bancos são baixados na máquina local
para que possam ser utilizados. Apesar de isso limitar a análise de grandes
volumes de dados, existem pacotes de gerenciamento de dados e integração
com sistemas de gerenciamento que possibilitam contornar esse problema.
Linguagens multiparadigma: R 9

R também carece de segurança básica, restringindo o seu uso em apli-


cações web, e apresenta uma menor velocidade de execução frente a outras
linguagens, como Python e Matlab. Essa limitação na velocidade também é
um ponto extremante negativo quando se precisa trabalhar com big data.
Por fim, apesar de a curva de aprendizagem não ser tão acentuada, para um
programador iniciante, o número expressivo de pacotes e funções descen-
tralizadas pode aumentar a dificuldade de desenvolvimento.

Comparação com outras linguagens


As vantagens e desvantagens apresentadas mostram que R pode ser muito
útil ou limitado, a depender do seu conjunto de dados, nível de conhecimento
e objetivos analíticos. Por isso, é importante não só conhecer quais outras
linguagens podem suprir algumas demandas das quais o R não consegue dar
conta, como também identificar, de forma geral, qual linguagem pode ser mais
bem implementada para cada objetivo ou tipo de trabalho desempenhado.

Python, a mais utilizada do mundo, é uma linguagem de programação de alto


nível, interpretada, imperativa, orientada a objetos e funcional. Python pode
fazer praticamente as mesmas tarefas que R com códigos mais robustos e
integração com diferentes plataformas. Entretanto, embora possua bibliote-
cas muito boas para a manipulação e para a análise de dados, o número de
funções e pacotes disponíveis é muito menor do que encontrado no CRAN,
assim como a visualização de dados não apresenta uma qualidade tão alta de
forma rápida e fácil como no R. Assim, Python é extremamente indicado para
integração e implantação de algoritmos como os de aprendizado de máquina,
enquanto R apresenta mais vantagens para acadêmicos e estatísticos quanto
a análise e comunicação gráfica (OZGUR et al., 2017).

Java é uma linguagem de programação de uso geral, simultânea, orientada


a objetos e baseada em classes. Isso possivelmente explica por que ocupa
o segundo lugar na lista de linguagens mais utilizadas mundialmente. Java
apresenta como uma grande vantagem a facilidade de lidar com grandes
volumes de dados com uma velocidade incrível, superando inclusive Python.
Entretanto, a sua capacidade de modelagem estatística é limitada, sendo
facilmente superada por outras linguagens, principalmente R (USCHIE, 2020).
10 Linguagens multiparadigma: R

JavaScript é uma linguagem multiparadigma e dinâmica, sendo a mais co-


nhecida e utilizada para páginas web. Apesar do nome similar, essa é uma
linguagem completamente diferente da linguagem Java, tanto em termos de
programação quanto em utilidade. É uma linguagem muito leve, rápida e com
uma pequena curva de aprendizado. Entretanto, não é recomendada para a
análise de dados e, portanto, não tem como ser comparada com R.

C# também é classificada como multiparadigma, com uma sintaxe similar


a Java. O principal objetivo do seu desenvolvimento foi criar uma lingua-
gem simples, moderna, de propósito geral e orientada a objetos. Apesar de
apresentar vantagens como gerenciamento de códigos, controle de versões,
flexibilidade e capacidade multiplataformas, essa linguagem apresenta algu-
mas limitações, como a necessidade de compilar o código a cada alteração,
defasagem no suporte e fugas de memória. Embora seja um clássico, utilizar
essa linguagem no desenvolvimento de scripts para a análise de dados pode
se mostrar um grande problema.

C/C++ é mais uma linguagem de programação multiparadigma com suporte a


linguagem imperativa, orientada a objetos e genérica, de uso geral. As suas
grandes vantagens diante da linguagem R seriam maior velocidade, menor
consumo de memória e alta escalabilidade. Por outro lado, necessita de um
código mais extenso para desempenhar as mesmas funções e maior tempo
para o desenvolvimento dos scripts. Assim, o ideal é utilizar R para explora-
ções, modelagem de dados e manipulação de pequenos projetos, e C ++ para
implementações de força industrial e de alto desempenho.

PHP é uma linguagem de script de uso geral popular, especialmente adequada


para desenvolvimento web. De forma rápida, flexível e pragmática, PHP abre
inúmeras possibilidades, desde a implementação de um simples blog até os
sites mais populares e acessados de todo o mundo. Por ser especializado em
linguagem de programação de desenvolvimento web, não há como compará-lo
com a linguagem R, tendo em vista que os propósitos de ambas são distintos.
Veja, no Quadro 1, um comparativo das linguagens descritas aqui.
Quadro 1. Comparação entre as linguagens mais utilizadas no mundo

Python Java JavaScript C# C/C++ PHP R

Integração e Implemen- Interatividade em Desenvol- Implemen- Desenvolvi- Análise


Objetivo implementação tação de páginas da web vimento de tação de mento web estatística
códigos ferramentas códigos

Código aberto, Velocidade, Programação Baixo custo Rápido e com Fácil utiliza- Código aberto,
implantação, disponi- simplificada e e multipla- desempenho ção e imple- comunicação
Vantagens aprendizado bilidade e eficiente taformas altamente mentação gráfica,
de máquina aprendizado escalável número de
facilitado pacotes

Poucas Modelagem Não suporta a es- Sintaxe Código Recursos Menor veloci-
bibliotecas estatística crita de programas confusa e extenso limitados dade e desem-
Desvan- disponíveis limitada muito grandes e há alta curva para análise penho com big
tagens e maiores maior dificuldade de aprendi- data
códigos na reutilização de zagem
código
Linguagens multiparadigma: R
11
12 Linguagens multiparadigma: R

Por fim, a escolha da linguagem de programação sempre será guiada pela


necessidade (análise estatística ou implantação), pela disponibilidade de
tempo que pode ser investido para o aprendizado e para o desenvolvimento
e pela ferramenta mais utilizada pelo seu setor. De qualquer forma, é possível
utilizar R para fazer praticamente todo tipo de análise, com a possibilidade de
exportar belíssimos gráficos e relatórios interativos e reproduzíveis. Assim,
R pode ser uma excelente escolha.

Referências
BARBERA, P. et al. Package ‘Rfacebook’. 2017. Disponível em: https://cran.r-project.org/
web/packages/Rfacebook/Rfacebook.pdf. Acesso em: 28 dez. 2020.
BUSINESS-SCIENCE.IO. Six reasons to learn R. 2017. Disponível em: https://www.r-
-bloggers.com/2017/12/six-reasons-to-learn-r-for-business/. Acesso em: 28 dez. 2020.
CHAMBERS, J. M. Programming with data: a guide to the S language. New York: Springer,
1998.
CHAMBERS, J. Software for data analysis: programming with R. New York: Springer, 2008.
OZGUR, C. et al. MatLab vs. Python vs. R. Journal of Data Science, v. 15, n. 3, p. 355–372, 2017.
PYPL PopularitY of Programming Language. 2020. Disponível em: https://pypl.github.
io/PYPL.html?country=. Acesso em: 28 dez. 2020.
R PROJECT. What is R. [20--]. Disponível em: https://www.r-project.org/about.html.
Acesso em: 28 dez. 2020.
RACINE, J. S. RStudio: a platform-independent IDE for R and Sweave. Journal of Applied
Econometrics, v. 27, n. 1, p. 167–172, 2012.
RUSSI, D. F.; CHARÃO, A. S. Ambientes de desenvolvimento integrado no apoio ao ensino
da linguagem de programação Haskell. Renote: Novas Tecnologias em Educação, v. 9,
n. 2, 2011.
STACK OVERFLOW. Stack Overflow. 2020. Disponível em: https://pt.stackoverflow.com.
Acesso em: 28 dez. 2020.
USCHIE. Java vs Python vs R languages. [20--]. Disponível em: https://www.seasiain-
fotech.com/blog/java-vs-python-vs-r-language/#:~:text=Java%20programming%20
language%20is%20great%20for%20large%2Dscale%20systems.&text=Python%20
is%20faster%20than%20R,is%20very%20responsive%20and%20quick. Acesso em:
28 dez. 2020.
VENABLES, W. N. S-PLUS and S. In: WILEY StatsRef: statistics reference online. New
York: Wiley & Sons, 2014.
Linguagens multiparadigma: R 13

Leituras recomendadas
ECOVIRTUAL. R para Iniciantes. 2016. Disponível em: http://ecovirtual.ib.usp.br/doku.
php?id=ecovirt:roteiro:soft:rprincip. Acesso em: 28 dez. 2020.
RED HAT. O que é IDE? c2020. Disponível em: https://www.redhat.com/pt-br/topics/
middleware/what-is-ide. Acesso em: 28 dez. 2020.

Os links para sites da web fornecidos neste capítulo foram todos


testados, e seu funcionamento foi comprovado no momento da
publicação do material. No entanto, a rede é extremamente dinâmica; suas
páginas estão constantemente mudando de local e conteúdo. Assim, os edito-
res declaram não ter qualquer responsabilidade sobre qualidade, precisão ou
integralidade das informações referidas em tais links.

Você também pode gostar