Baixe o app para aproveitar ainda mais
Prévia do material em texto
09/09/2022 19:40 Ead.br https://student.ulife.com.br/ContentPlayer/Index?lc=0xQPdFxf08knK9GoFDY7fQ%3d%3d&l=w2abV45et6fp0PxedTtkFQ%3d%3d&cd=UbRGmX… 1/33 PROGRAMAÇÃO AVANÇADA EMPROGRAMAÇÃO AVANÇADA EM BIG DATABIG DATA LINGUAGENS DELINGUAGENS DE PROGRAMAÇÃO E BIGPROGRAMAÇÃO E BIG DATADATA Autor: Me. Ubiratan Roberte Cardoso Passos Revisor : Isabel S iqueira IN IC IAR 1.00 09/09/2022 19:40 Ead.br https://student.ulife.com.br/ContentPlayer/Index?lc=0xQPdFxf08knK9GoFDY7fQ%3d%3d&l=w2abV45et6fp0PxedTtkFQ%3d%3d&cd=UbRGmX… 2/33 introdução Introdução Mesmo que algumas empresas que mantêm Big Data forneçam ferramentas on-line para acesso e manipulação dos dados, para que a partir deles sejam geradas informações, muitas outras não oferecem as mesmas facilidades. Para que os interessados tenham acesso aos dados de um Big Data, é necessário que façam uso de algumas interfaces de comunicação com as detentoras dos Big Datas, para isso, precisarão utilizar alguma linguagem de programação. Diversas dessas interfaces, conhecidas como APIs, podem ser acessadas a partir de alguma linguagem de programação orientada a objetos ou até mesmo linguagem funcional. Uma vez que são recuperados, os dados, preferencialmente, devem ser armazenados em algum tipo de estrutura de dados para serem manipulados. Como acessar algumas dessas APIs, criar e utilizar algumas estruturas de dados utilizando linguagem orientadas a objetos? O que é a programação funcional? Esse será o tema de nosso estudo. 09/09/2022 19:40 Ead.br https://student.ulife.com.br/ContentPlayer/Index?lc=0xQPdFxf08knK9GoFDY7fQ%3d%3d&l=w2abV45et6fp0PxedTtkFQ%3d%3d&cd=UbRGmX… 3/33 A programação orientada a objetos não é algo tão novo quanto se pode imaginar, pode-se dizer que a preocupação em se desenvolver linguagens de programação mais efetivas teve início de fato em 1970, com a chamada “crise do software”. Desenvolver softwares na velocidade e na qualidade que eram demandados estava se tornando algo extremamente difícil. Apesar de existirem linguagens baseadas no paradigma estruturado, essa forma de programação não permitia que o código fosse reutilizado. Além da impossibilidade de se reutilizar o código escrito para outras aplicações, realizar a manutenção de aplicações escritas em linguagem estruturada poderia ser algo extremamente complicado e poderia causar erros indesejáveis (PRESSMAN; MAXIM, 2016). Atualmente, ainda que muitas linguagens de programação continuem sendo constantemente utilizadas, a maior parte das aplicações voltadas para o operacional das organizações é escrita utilizando alguma linguagem orientada a objetos, até mesmo websites, quando necessitam de recursos de ProgramaçãoProgramação Orientada aOrientada a ObjetosObjetos 09/09/2022 19:40 Ead.br https://student.ulife.com.br/ContentPlayer/Index?lc=0xQPdFxf08knK9GoFDY7fQ%3d%3d&l=w2abV45et6fp0PxedTtkFQ%3d%3d&cd=UbRGmX… 4/33 programação. Esses recursos são escritos em alguma linguagem orientada a objetos. Um dos requisitos para que seja possível realizar análise de dados, ou análise de Big Data, é conhecer algumas das tecnologias que são utilizadas para esse propósito. Uma dessas tecnologias está relacionada à programação e às linguagens de programação que são utilizadas para essa tarefa. Obviamente que não existe uma obrigação de se utilizar uma linguagem de programação orientada a objetos, ou estruturada ou mesmo um paradigma funcional, mas, quando o esforço é direcionado para uma linguagem que tem destaque, as possibilidades de se conseguir recursos para atuar com essas linguagens são maiores. De acordo com MCKinney (2018), a linguagem Python é considerada como uma das mais popularmente conhecidas e utilizadas. Essa linguagem admite os paradigmas orientado a objetos, estrutural e também funcional, e a linguagem R é uma linguagem funcional, e essas serão utilizadas nos exemplos que forem necessários. O Paradigma Orientado a Objetos De acordo com Pizzolato (2010), o paradigma orientado a objetos utiliza basicamente os mesmos princípios que são aplicados na construção dos hardwares. No desenvolvimento de hardwares, componentes já existentes (neste caso, componentes físicos) são utilizados na construção de novos dispositivos de hardware. Não se deve confundir a utilização de componentes existentes com a reutilização dos mesmos componentes. O que está sendo expressado é que o projeto original de cada componente e até mesmo do hardware completo já existe, e, a partir de um projeto já conhecido, é possível replicar tanto os componentes quanto o hardware. No paradigma orientado a objetos, ocorre o mesmo, os “objetos” que já existem podem ser utilizados para produzir novos “objetos”. 09/09/2022 19:40 Ead.br https://student.ulife.com.br/ContentPlayer/Index?lc=0xQPdFxf08knK9GoFDY7fQ%3d%3d&l=w2abV45et6fp0PxedTtkFQ%3d%3d&cd=UbRGmX… 5/33 Utilizando um conceito muito comum do mundo físico, os objetos, o que o paradigma orientado a objetos pretende fazer é mimetizar o que ocorre com os hardwares. Para que seja considerada orientada a objetos, é preciso que uma linguagem apresente ou implemente quatro conceitos básicos: 1. Abstração : que se refere à capacidade de se modelar alguma característica do mundo real; 2. Encapsulamento : trata da capacidade de proteção dos dados, permitindo que somente suas operações internas os acessem; 3. Herança : permite a criação de novos objetos a partir da modi�cação de alguma característica de um objeto já existente; e/ou criação de um vínculo entre o objeto criador e o objeto criado; e 4. Polimor�smo : refere-se à capacidade de uma unidade assumir várias formas. Essas características, apesar de parecerem bem simples, são o que garantem às linguagens orientadas a objetos grande parte de seu potencial para se adequarem às necessidades da produção de software de um ambiente totalmente dinâmico. Classes e Objetos Dois conceitos muito utilizados na programação orientada a objetos são classes e objetos . Assim sendo, para que possamos seguir com os estudos relacionados à programação orientada a objetos, é preciso compreender bem a diferença entre eles. Em computação, uma classe pode ser entendida como um modelo, um molde ou, até mesmo, em termos mais técnicos, uma especi�cação. O objeto pode ser entendido como a concretização desse modelo, desse molde, ou seja, o objeto é a instanciação da classe (PRESSMAN; MAXIM, 2016). 09/09/2022 19:40 Ead.br https://student.ulife.com.br/ContentPlayer/Index?lc=0xQPdFxf08knK9GoFDY7fQ%3d%3d&l=w2abV45et6fp0PxedTtkFQ%3d%3d&cd=UbRGmX… 6/33 Em termos mais didáticos, podemos comparar uma classe a um controle remoto. Ao falar em controle remoto, o que vem à mente é a abstração desse objeto. O cérebro visualiza uma “coisa” geralmente em formato retangular e com alguns botões e que controla algum dispositivo à distância, semelhante ao que é apresentado na Figura 2.1. Observe que os três modelos são controles, mas cada um tem um modelo próprio, não são iguais. Em nossa mente, a representação do controle é complexa, e aceita todos esses exemplos. O mesmo ocorre com as classes, uma classe prevê um conjunto de características que deverão estar presentes em um objeto de que será criado a partir da classe. Não somente as características, a classe deverá também descrever as possíveis ações que o objeto deverá ser capaz de realizar. A respeito das classes e dos objetos, é preciso saber também que um objeto pode interagir e mudar as características de outro objeto, aliás, um objeto pode, inclusive, estimular/iniciar ações em outro objeto. Veja que utilizamos controles remotos como exemplo. No mundo real, um objeto controle remoto pode ser utilizado, por exemplo, para sintonizar e mudar os canais de um objeto televisão. A de�nitiva compreensão do que são de fato objetos e classes, quando no âmbito da programação orientada a objetos, é fundamental para o Figura 2.1 - Representação da classe controle remoto Fonte: imagesource / 123RF.09/09/2022 19:40 Ead.br https://student.ulife.com.br/ContentPlayer/Index?lc=0xQPdFxf08knK9GoFDY7fQ%3d%3d&l=w2abV45et6fp0PxedTtkFQ%3d%3d&cd=UbRGmX… 7/33 desenvolvimento da capacidade de desenvolver qualquer aplicação de nível avançado. praticar Vamos Praticar Dois conceitos muito importantes da programação orientada a objetos – O.O., são, justamente, o conceito de classe e o conceito de objetos. Muitos programadores experientes não seriam capazes de distinguir os dois conceitos de forma clara, mesmo sendo capazes de utilizar os recursos de uma linguagem O.O. com certa maestria. Nesse sentido, sobre conceito de classe e o conceito de objetos, assinale a alternativa correta. a) Classes representam a descrição de alguma coisa, algo que, mesmo não sendo claramente de�nido, pode existir. O objeto representa uma ação, algo que pode ser feito com a descrição determinada na classe. Feedback: alternativa incorreta , pois uma classe é, de fato, uma descrição de algo, por isso, chamada de abstração. O objeto é a concretização disso, ou seja, é a transformação da classe em algo que possa ser utilizado. b) Objetos são abstrações de algo que existe no mundo real e que se deseja transferir para uma aplicação computacional. A classe, por sua vez, é sua concretização, é o que torna o objeto utilizável. Feedback: alternativa incorreta , pois classes, sim, são abstrações de algo que se tem ou não no mundo real. Classes também podem ser descritas para algo especí�co da aplicação. E os objetos, por sua vez, são a concretização da classe. c) Classes representam abstrações do mundo real, modelos, moldes que são utilizados para criação/instanciação dos objetos, que podem ser entendidos como a concretização da classe. 09/09/2022 19:40 Ead.br https://student.ulife.com.br/ContentPlayer/Index?lc=0xQPdFxf08knK9GoFDY7fQ%3d%3d&l=w2abV45et6fp0PxedTtkFQ%3d%3d&cd=UbRGmX… 8/33 Feedback: alternativa correta , pois, de fato, uma classe representa algo abstrato, especi�ca uma coisa, mas não se trata da “coisa” propriamente dita. O objeto é sua concretização, é o resultado da transformação de uma classe em algo “tátil”. d) Classes são códigos especí�cos que determinam as possíveis atividades que alguns trechos do aplicativo podem executar. Objetos representam as ações internas que a classe é capaz de realizar. e) Apesar de muitas vezes serem tratados como algo diferente, classes e objetos são na verdade a mesma coisa. Tanto as classes como os objetos representam abstrações de algo do mundo real. 09/09/2022 19:40 Ead.br https://student.ulife.com.br/ContentPlayer/Index?lc=0xQPdFxf08knK9GoFDY7fQ%3d%3d&l=w2abV45et6fp0PxedTtkFQ%3d%3d&cd=UbRGmX… 9/33 Apesar de estar ganhando destaque somente no cenário atual, a linguagem Python não é recente, muito pelo contrário, a linguagem Python é quase tão antiga quanto outras linguagens bem famosas como C e Pascal. A primeira versão da linguagem Python foi concebida no �m da década de 1980, sua implementação ocorreu somente em 1982. Já em 1987, percebendo a necessidade de se utilizar uma linguagem que pudesse ser uma intermediária entre o C e o Shell Script, Guido Van Rossum (p. 36, 2007) a�rmou que: Percebi que o desenvolvimento de utilitários para administração de sistema em C (do Amoeba) estava tomando muito tempo. Além disso, fazê-los em shell Bourne não funcionaria por diversas razões. O motivo mais importante foi que, sendo um sistema distribuído de microkernel com um design novo e radical, as operações primitivas do Amoeba diferiam muito (além de serem mais re�nadas) das operações primitivas disponíveis no shell Bourne. Portanto, havia necessidade de uma linguagem que “preencheria o vazio entre C e o shell”. Por um tempo longo, esse foi o principal objetivo do Python. Orientação aOrientação a Objetos comObjetos com PythonPython 09/09/2022 19:40 Ead.br https://student.ulife.com.br/ContentPlayer/Index?lc=0xQPdFxf08knK9GoFDY7fQ%3d%3d&l=w2abV45et6fp0PxedTtkFQ%3d%3d&cd=UbRGm… 10/33 O�cialmente, a linguagem Python foi lançada em 1990, e, desde então, vem sendo utilizada na produção de diversos tipos de softwares para desktop, aplicações web e também dispositivos embarcados. Ainda que em suas primeiras versões a linguagem Python não tenha sido desenvolvida para ser orientada a objetos (O.O.), com o passar dos anos, ela foi sofrendo adaptações e evoluindo, e hoje é capaz de implementar praticamente todos os recursos de orientação a objetos observados em outras linguagens mais recentes. Entender orientação a objetos em Python é fundamental para o desenvolvimento de aplicações que sejam capazes de realizar análise de dados. Apesar de diversas outras linguagens de programação fornecerem recursos que permitam essa atividade, para este estudo, escolheu-se Python por dois motivos: primeiro, Python é extremamente didática, robusta e de boa performance, tanto para análise de dados quanto para outras atividades; segundo, Python é popular e vem sendo adotada por grande parte das universidades norte-americanas. Classes em Python Como vimos anteriormente, na programação orientada a objetos, dois conceitos são de extrema importância, são eles o conceito de classes e o conceito de objetos. Cada linguagem de programação pode ter sua própria sintaxe, mas, geralmente, mesmo diferentes, todas têm a mesma �nalidade. Assim como nos alfabetos das linguagens naturais humanas, cada idioma pode apresentar sua própria estrutura e dialeto, mas todos têm o mesmo propósito. 09/09/2022 19:40 Ead.br https://student.ulife.com.br/ContentPlayer/Index?lc=0xQPdFxf08knK9GoFDY7fQ%3d%3d&l=w2abV45et6fp0PxedTtkFQ%3d%3d&cd=UbRGm… 11/33 Uma classe Python pode ser de�nida (especi�cada) da seguinte forma: saibamais Saiba mais Na lógica, sintaxe refere-se às regras de composição dos textos em uma linguagem formal, constituindo fórmulas bem-formadas de um sistema lógico. Na ciência da computação, sintaxe se refere às regras que são utilizadas para a composição de textos com signi�cado em alguma linguagem formal, tal como ocorre com as linguagens de programação. Para saber mais, acesse o texto a seguir. Fonte: Adaptado de Portella, Da Cunha e Bazotti (2017). ACESSAR http://editora.universidadedevassouras.edu.br/index.php/TECCEN/article/view/234 09/09/2022 19:40 Ead.br https://student.ulife.com.br/ContentPlayer/Index?lc=0xQPdFxf08knK9GoFDY7fQ%3d%3d&l=w2abV45et6fp0PxedTtkFQ%3d%3d&cd=UbRGm… 12/33 Esta é a sintaxe básica da de�nição (criação) de uma classe em Python, isso signi�ca que toda e qualquer classe Python será de�nida com um comando não igual, mas semelhante a este. Dizemos que não será igual simplesmente pelo fato de algumas das palavras utilizadas na sintaxe serem imutáveis, mas outras não. A cláusula class , por exemplo, sempre precederá o nome da classe, o nome da classe, por sua vez, será aquele que o programador considerar conveniente, mas sempre respeitando as determinações da linguagem, a cláusula object é opcional e permite autorreferenciar a classe como um objeto. Uma classe é um tipo abstrato de dado, ou seja, uma estrutura de dado, sendo assim, a de�nição de uma classe permite não somente que diversos dados sejam armazenados, como também prevê a realização de diversas operações que podem ser realizadas com o conjunto de dados existentes na classe, ou não. Para entender melhor a criação de classes em Python, veja o seguinte exemplo: suponha a necessidade de armazenar informações sobre pessoas, nome da pessoa, idade, sexo, número do CPF e região do país em que a pessoa vive. Uma classe pessoa pode ser de�nida para armazenar todas essas informações. Uma classe com esse objetivo pode ser de�nida da seguinte forma: Essa seria a estrutura básica de uma classe que armazena algumas informações de uma pessoa. A classe não representa uma pessoa, mas a abstração da entidade do mundo real pessoa. Obviamente, este é um exemplo bem simples. Note que, ao especi�car a classe pessoa, os dados da 09/09/2022 19:40 Ead.br https://student.ulife.com.br/ContentPlayer/Index?lc=0xQPdFxf08knK9GoFDY7fQ%3d%3d&l=w2abV45et6fp0PxedTtkFQ%3d%3d&cd=UbRGm…13/33 pessoa (os que foram descritos na classe) devem ser especi�cados na própria classe, esses dados são conhecidos como atributos de uma classe. Este é um dos poucos inconvenientes do Python, como a linguagem não exige que o tipo da variável seja especi�cado durante sua criação, obrigatoriamente, se deve adicionar valores a todas as variáveis que são criadas. Também é possível especi�car algumas ações para as classes, ou seja, operações que os objetos relacionados à classe poderão realizar. Como dito anteriormente, classes são abstrações e objetos são concretizações das classes. Suponha, agora, que a classe pessoa possua uma operação responsável por informar o nome, o sexo e a idade de uma pessoa. Então, sua de�nição seria como a apresentada a seguir: O comando def imprimeDados( self ) acrescenta uma funcionalidade à classe pessoa, com isso, quando a classe for transformada em um objeto, caso seja necessário, o desenvolvedor utiliza o método (ação) imprimeDados para imprimir nome, sexo e idade da pessoa. Certamente que essas operações parecem ser bem simples, e de fato são. A intenção aqui não é ensinar a programar ou até mesmo ensinar orientação a objetos, mas sim demonstrar de forma muito didática uma forma de criar classes em Python, e é importantíssimo que você, aluno, entenda e aprenda como fazer. Objetos em Python 09/09/2022 19:40 Ead.br https://student.ulife.com.br/ContentPlayer/Index?lc=0xQPdFxf08knK9GoFDY7fQ%3d%3d&l=w2abV45et6fp0PxedTtkFQ%3d%3d&cd=UbRGm… 14/33 A utilização de objetos na linguagem Python é tão simples quanto sua de�nição. Tome como base a classe pessoa, criada anteriormente. Para melhorar a utilização dessa classe, vamos rede�nir a classe e inserir um método construtor. Esse método é uma ação que é executada no momento em que o objeto da classe é criado. A de�nição de um método construtor segue a seguinte sintaxe: Na ocasião, caso a classe deva receber alguma informação extra para então ser criado o objeto, essas informações devem ser especi�cadas como parâmetros de entrada. Após rede�nir a classe, sua nova estrutura deve �car semelhante à que é apresentada a seguir: Observe que o código apresenta algumas diferenças em relação ao anterior. Nessa versão da classe, os atributos do cliente são de�nidos no momento em 09/09/2022 19:40 Ead.br https://student.ulife.com.br/ContentPlayer/Index?lc=0xQPdFxf08knK9GoFDY7fQ%3d%3d&l=w2abV45et6fp0PxedTtkFQ%3d%3d&cd=UbRGm… 15/33 que o objeto é criado, e não quando a classe é de�nida. Dessa forma, cada novo objeto pessoa pode ter suas próprias características. Na versão anterior, se objetos pessoa fossem criados, todos teriam as mesmas características, seriam como “clones” um dos outros. Para criar um objeto utilizando a linguagem Python, basta, após ter uma classe de�nida, utilizar a seguinte sintaxe : Com isso, um novo objeto é criado. Claro que a sintaxe pode variar de acordo com as características do objeto que será criado. Para o caso da classe pessoa de�nida acima, a sintaxe será: E, para poder utilizar o método que está armazenado no objeto, ou seja, executar a ação do objeto, basta somente escrever o seguinte comando: 09/09/2022 19:40 Ead.br https://student.ulife.com.br/ContentPlayer/Index?lc=0xQPdFxf08knK9GoFDY7fQ%3d%3d&l=w2abV45et6fp0PxedTtkFQ%3d%3d&cd=UbRGm… 16/33 Apesar de serem exemplos bem simples, o propósito é fornecer um entendimento (revisão) básica de como são a criação e utilização de classes e objetos na linguagem Python. A leitura de materiais especí�cos para programação em Python é altamente recomendada para aprimoramento do conhecimento sobre a linguagem. praticar Vamos Praticar Python é uma linguagem de programação que permite programar nos paradigmas estruturados, orientados a objetos e também funcionais. Trata-se de uma linguagem relativamente antiga, mas que vem evoluindo e se adaptando às novas exigências tecnológicas contemporâneas. A sintaxe para criação de objetos em Python é bem simples. Desse modo, assinale a alternativa que apresenta a sintaxe correta. a) A de�nição de uma classe é dada pela sintaxe object nome_classe(object) , e a criação do objeto nome_objeto = nome_classe() . 09/09/2022 19:40 Ead.br https://student.ulife.com.br/ContentPlayer/Index?lc=0xQPdFxf08knK9GoFDY7fQ%3d%3d&l=w2abV45et6fp0PxedTtkFQ%3d%3d&cd=UbRGm… 17/33 b) A de�nição de uma classe é dada pela sintaxe class nome_classe(object) , e a criação do objeto nome_objeto = class nome_classe() . c) A de�nição de uma classe é dada pela sintaxe class nome_classe(object) , e a criação do objeto nome_objeto = nome_classe(object) . d) A de�nição de uma classe é dada pela sintaxe class nome_classe(object) , e a criação do objeto object nome_objeto = nome_classe(class) . e) A de�nição de uma classe é dada pela sintaxe class nome_classe(object) , e a criação do objeto nome_objeto = nome_classe() . 09/09/2022 19:40 Ead.br https://student.ulife.com.br/ContentPlayer/Index?lc=0xQPdFxf08knK9GoFDY7fQ%3d%3d&l=w2abV45et6fp0PxedTtkFQ%3d%3d&cd=UbRGm… 18/33 paradigma funcional refere-se a uma estrutura que expressa um conjunto de suposições. Esse paradigma tem objetivos e abordagens bem diferentes dos demais paradigmas de programação. A principal diferença entre o paradigma funcional e os demais paradigmas é que os programas funcionais utilizam funções matemáticas no lugar de instruções para expressar ideias. Isso signi�ca dizer que, em vez de escrever um conjunto preciso de etapas para resolver um determinado problema, serão escritas funções matemáticas, sem qualquer preocupação com o modo de a linguagem realizar a tarefa. Em oposição a outros paradigmas de programação, a programação funcional não mantém estado. Estados permitem controlar valores entre as chamadas das funções. Alguns paradigmas utilizam esses estados para produzir resultados variáveis com base no ambiente, tal como determinar o número de objetos existentes ou fazer algo diferente quando o número de objetos é zero. LinguagensLinguagens FuncionaisFuncionais 09/09/2022 19:40 Ead.br https://student.ulife.com.br/ContentPlayer/Index?lc=0xQPdFxf08knK9GoFDY7fQ%3d%3d&l=w2abV45et6fp0PxedTtkFQ%3d%3d&cd=UbRGm… 19/33 Assim sendo, como os programas funcionais não apresentam estado, os dados com os quais essas linguagens trabalham também são imutáveis, isso signi�ca que o próprio desenvolvedor da aplicação pode mudá-los. É preciso saber, no entanto, que, para mudar o valor de uma variável em programação funcional, é preciso criar outra variável (JUNGTHO; GOULART, 2009). reflita Re�ita O paradigma funcional não é tão novo quanto se pode imaginar, a verdade é que esse paradigma foi um dos primeiros a serem de�nidos, pode-se a�rmar que seu surgimento e o surgimento do paradigma estruturado (procedural) foram quase simultâneos. Mesmo sendo tão antigo, e mesmo sendo a melhor opção para o desenvolvimento de aplicações voltadas para a análise de dados, o paradigma por anos permaneceu longe dos holofotes e desconhecido de muitos programadores. Por que motivo um paradigma tão poderoso permaneceu tanto tempo “às sombras” da orientação a objetos? 09/09/2022 19:40 Ead.br https://student.ulife.com.br/ContentPlayer/Index?lc=0xQPdFxf08knK9GoFDY7fQ%3d%3d&l=w2abV45et6fp0PxedTtkFQ%3d%3d&cd=UbRGm… 20/33 Objetivos e Características do Paradigma Funcional A maioria dos paradigmas de programação utiliza uma abordagem imperativa , essa abordagem é muito parecida com uma linha de montagem. Nessa abordagem os dados se movem através de uma série de etapas e em uma ordem especí�ca, levando a um determinado resultado. Essa abordagem é rígida e �xa, e o desenvolvedor deve criar uma linha de montagem sempre que a aplicação tiver necessidade de um novo resultado. No paradigma orientado a objetos, essas etapas são apenas ocultadas e modularizadas, mas seu paradigma subjacente é o mesmo. Em um paradigma orientado a objetos, não é possível a reorganização dos códigos dos objetos de modos não antecipados,isso se dá pela interdependência inerente ao código. Ao utilizar funções puras, um ambiente �exível é criado, e nele a ordem do código depende da matemática subjacente. Essa matemática, por sua vez, modela um ambiente real, e, quando o entendimento desse ambiente muda ou evolui, o modelo matemático e o código funcional podem mudar com ele. Em um paradigma imperativo , essas mudanças podem levar a falhas no código (JUNGTHO; GOULART, 2009). Uma importante característica do paradigma funcional é que ele utiliza abordagens únicas de codi�cação, isso permite que uma função seja passada como parâmetro de entrada para outra função. Assim como muda o comportamento do aplicativo de forma previsível, o que não é permitido em outros paradigmas de programação. Algumas Vantagens do Paradigma Funcional 09/09/2022 19:40 Ead.br https://student.ulife.com.br/ContentPlayer/Index?lc=0xQPdFxf08knK9GoFDY7fQ%3d%3d&l=w2abV45et6fp0PxedTtkFQ%3d%3d&cd=UbRGm… 21/33 Como já especi�cado, o paradigma funcional é baseado em funções matemáticas e vem sendo adotado por grandes nomes da internet, tal como LinkedIn, Pinterest, Twitter, NuBank etc., e isso é, em muitos casos, devido aos benefícios que este paradigma traz. Aplicar recursos como threads, concorrência e paralelismo se torna muito mais fácil quando são utilizados paradigmas funcionais, e isso representa um ganho elevadíssimo quando as aplicações que usam esses recursos são executadas em arquiteturas multicore e multithread. praticar Vamos Praticar Algumas linguagens de programação como Python, Java e até mesmo C#, que são linguagens orientadas a objeto, permitem e suportam a programação funcional, mesmo não tendo sido desenvolvidas com essa �nalidade. Entre esses paradigmas, funcional e orientado a objetos, existem diferenças importantes. Nesse sentido, assinale a alternativa que apresenta uma característica única do paradigma funcional. a) Paradigmas funcionais utilizam funções matemáticas no lugar de instruções para exprimir ideias. b) A abordagem funcional é rígida e �xa, e o programador deve desenvolver todo o código como se fosse uma linha de montagem. c) Diferente do que ocorre no paradigma funcional, nos paradigmas orientados a objetos, funções podem ser passadas como parâmetros para outras funções. d) No paradigma funcional, a utilização de funções puras, capazes de gerar um ambiente �exível quando adotado, pode levar a falhas no código. 09/09/2022 19:40 Ead.br https://student.ulife.com.br/ContentPlayer/Index?lc=0xQPdFxf08knK9GoFDY7fQ%3d%3d&l=w2abV45et6fp0PxedTtkFQ%3d%3d&cd=UbRGm… 22/33 e) Uma característica fundamental do paradigma funcional é de�nição de classes e criação de objetos. 09/09/2022 19:40 Ead.br https://student.ulife.com.br/ContentPlayer/Index?lc=0xQPdFxf08knK9GoFDY7fQ%3d%3d&l=w2abV45et6fp0PxedTtkFQ%3d%3d&cd=UbRGm… 23/33 Primeiramente, é preciso entender que a programação funcional refere-se a um paradigma, ou seja, não possui uma implementação especí�ca. A base da programação funcional é o cálculo lambda , que é uma abstração da matemática. A maioria das linguagens de programação permite programar utilizando o paradigma funcional. Sempre que, em um aplicativo, uma expressão lambda é utilizada ou criada, uma parcela de programação funcional está sendo realizada. Além das expressões lambda, linguagens que suportam programação funcional apresentam outras características em comum, são eles (JUNGTHO; GOULART, 2009): Funções de Primeira Classe e Primeira Ordem : permite que funções sejam utilizadas como parâmetros de entrada para outras funções; Funções puras : são funções que não apresentam “efeitos colaterais”; Realizando TarefasRealizando Tarefas com o Paradigmacom o Paradigma FuncionalFuncional 09/09/2022 19:40 Ead.br https://student.ulife.com.br/ContentPlayer/Index?lc=0xQPdFxf08knK9GoFDY7fQ%3d%3d&l=w2abV45et6fp0PxedTtkFQ%3d%3d&cd=UbRGm… 24/33 Recursão : programas funcionais utilizam a recursão para realização de loops ; e Transparência referencial : o valor de uma variável nunca muda. É comum também que várias implementações de linguagens funcionais utilizem diferentes sistemas, assim, a forma como o computador subjacente detecta os tipos de valores também pode mudar entre as linguagens. Outra questão que deve ser levada em consideração é que cada linguagem utiliza sua própria estrutura de dados, mesmo que muitas delas possam compartilhar as mesmas estruturas. Linguagens Funcionais Como visto nos tópicos anteriores, as linguagens funcionais são um paradigma, e não necessariamente um tipo de linguagem de programação. Ao nos referirmos ao termo paradigma, estamos nos referindo a uma forma de se realizar determinadas tarefas, ou seja, a forma como um programa é escrito. Entretanto, algumas linguagens de programação são mais suscetíveis à programação funcional do que outras, isso quer dizer que sua estrutura é mais adaptada para esse tipo de paradigma de programação. Entre as linguagens preparadas para a programação funcional, as mais conhecidas são (JUNGTHO; GOULART, 2009): Prolog : de uso geral, enquadra-se como uma linguagem de programação para lógica matemática. Está intimamente ligada à inteligência arti�cial e à linguística computacional; Lisp : apta a trabalhar com dados simbólicos, é capaz de criar diversas estruturas de dados através de funções matemáticas; Scheme : trata-se basicamente de uma simpli�cação da linguagem Lisp ; Haskell : trata-se de uma linguagem puramente funcional. Entre as linguagens de ou que permitem o paradigma funcional, é a mais robusta. 09/09/2022 19:40 Ead.br https://student.ulife.com.br/ContentPlayer/Index?lc=0xQPdFxf08knK9GoFDY7fQ%3d%3d&l=w2abV45et6fp0PxedTtkFQ%3d%3d&cd=UbRGm… 25/33 Também é possível, como já dito, utilizar a programação funcional utilizando outras linguagens de programação, uma delas é a Python, que, como visto, é uma das linguagens de programação mais populares da atualidade. Para permitir o uso do paradigma funcional oferecendo o maior número de funcionalidades possível, a linguagem Python utiliza uma biblioteca que lhe atribui muitas das características e capacidades da linguagem Haskell. Como também já foi dito, a linguagem Python é conhecida por evoluir e adaptar-se às novas exigências da tecnologia. Breves Exemplos de Expressões Lambda em Python Uma das principais características do Python não é somente seu riquíssimo conjunto de estruturas de dados, dentro da qual deve-se dar destaque às listas. Python também tem ganhado muitos adeptos por evoluir à medida que as necessidades tecnológicas mudam e exigem mais das linguagens de programação e do programador. Atendendo às novas necessidades do mercado, que voltou-se para o desenvolvimento de aplicações que fossem poderosas o su�ciente para realizar análise de dados, mas simples o bastante para que não oferecesse mais desa�os ao desenvolvedor, foi inserida na linguagem a capacidade de trabalhar com programação funcional e, nesse sentido, interpretar expressões lambda. Essas expressões não possuem qualquer semelhança com as instruções de programação utilizadas para o desenvolvimento de aplicações comuns, e sua sintaxe básica pode ser observada a seguir (JUNGTHO; GOULART, 2009): 09/09/2022 19:40 Ead.br https://student.ulife.com.br/ContentPlayer/Index?lc=0xQPdFxf08knK9GoFDY7fQ%3d%3d&l=w2abV45et6fp0PxedTtkFQ%3d%3d&cd=UbRGm… 26/33 Nesse exemplo, var1, var2, …, varN representam as variáveis que serão os argumentos da função expr_ret, que, por sua vez, pode ser qualquer argumento válido do Python. Um exemplo básico, mas capaz de demonstrar um pouco de como seria uma expressão lambda para retornar o dobro de um número qualquer. A sintaxe é apresentada a seguir: Nesse exemplo, ao escrever o código dobo = funcao_dob(2), de�nimos que o valor de n será 2. Em seguida, ao escrever o código dobro(11), então 11 será o valor de a, que foi de�nido como uma entrada para a função lambda. Para que o retorno fosse o triplo, entãobastaria criar a função triplo = funcao_lamb(3). 09/09/2022 19:40 Ead.br https://student.ulife.com.br/ContentPlayer/Index?lc=0xQPdFxf08knK9GoFDY7fQ%3d%3d&l=w2abV45et6fp0PxedTtkFQ%3d%3d&cd=UbRGm… 27/33 praticar Vamos Praticar Um dos pontos principais do desenvolvimento de aplicações que realizam a análise de dados é a programação funcional. Esse tipo de programação é caracterizado pela utilização de expressões lambda, e essas expressões são caracterizadas por serem uma abstração da matemática. Sobre as expressões lambda, assinale a alternativa correta. a) Expressões lambda representam abstrações de operações e funções matemáticas, diferente de instruções comuns. b) Expressões lambda são como quaisquer outras instruções de qualquer outro paradigma de programação. c) Toda as operações realizadas através de uma expressão lambda podem também ser realizada por uma instrução imperativa. d) Uma das principais características observadas nas expressões lambda que as diferenciam dos demais paradigmas é a possibilidade de usar funções como parâmetro para funções. e) Expressões lambda são instruções que representam o contexto imperativo do paradigma de programação funcional. 09/09/2022 19:40 Ead.br https://student.ulife.com.br/ContentPlayer/Index?lc=0xQPdFxf08knK9GoFDY7fQ%3d%3d&l=w2abV45et6fp0PxedTtkFQ%3d%3d&cd=UbRGm… 28/33 indicações Material Complementar LIVRO Python para Desenvolvedores Editora : Edição do Autor Ano : 2009 Luiz Eduardo Borges Comentário : Ótima leitura para quem está iniciando sua jornada ou até mesmo para quem já possui experiência em programação Python. O livro apresenta diversos fundamentos e exemplos da linguagem, além de ser muito didático e possuir uma linguagem simples. 09/09/2022 19:40 Ead.br https://student.ulife.com.br/ContentPlayer/Index?lc=0xQPdFxf08knK9GoFDY7fQ%3d%3d&l=w2abV45et6fp0PxedTtkFQ%3d%3d&cd=UbRGm… 29/33 WEB Programação Funcional com Marina Limeira Ano : 2017 Comentário : Neste vídeo você terá acesso a um bate- papo sobre programação funcional realizada no 19º Encontro Locaweb. O vídeo apresenta vários conceitos relacionados à programação funcional, a linguagem utilizada pelo palestrante é simples e muito fácil de entender. Certamente, ajudará a compreender melhor o paradigma funcional e seus conceitos. Para conhecer mais acesse o link a seguir. ACESSAR https://www.youtube.com/watch?v=X-hKc4FFhCM 09/09/2022 19:40 Ead.br https://student.ulife.com.br/ContentPlayer/Index?lc=0xQPdFxf08knK9GoFDY7fQ%3d%3d&l=w2abV45et6fp0PxedTtkFQ%3d%3d&cd=UbRGm… 30/33 conclusão Conclusão Para atuar no desenvolvimento de aplicações que realizam captura e análise de dados, não basta que o desenvolvedor conheça bem a estrutura de uma linguagem de programação ou que esteja habituado com sua sintaxe e seja capaz de escrever códigos complexos com o mínimo ou nenhuma ajuda. A análise de dados requer que as aplicações sejam escritas preferencialmente (se não obrigatoriamente) utilizando o paradigma funcional. Esse paradigma requer mais do que o conhecimento da sintaxe das linguagens, mas também bons conhecimentos de matemática e estatística, para que se possa de�nir funções matemáticas que retornem os dados desejados. A análise de dados é mais do que simplesmente capturar os dados, requer que os dados, além de capturados, sejam analisados e sofram inferências estatísticas para que possam gerar valor, ou seja, informação útil. referências Referências Bibliográ�cas BORGES, L. E. Python para Desenvolvedores . Edição do Autor, 2009. 09/09/2022 19:40 Ead.br https://student.ulife.com.br/ContentPlayer/Index?lc=0xQPdFxf08knK9GoFDY7fQ%3d%3d&l=w2abV45et6fp0PxedTtkFQ%3d%3d&cd=UbRGm… 31/33 JUNGTHON, G.; GOULART, C. M. Paradigmas de Programação . 2009. Monogra�a (Monogra�a) — Faculdade de Informática de Taquara, Rio Grande do Sul, 2009. MARTINS, N. P. et al . Comparativo de Linguagens de Programação. Anais do Salão Internacional de Ensino, Pesquisa e Extensão, v. 8, n. 2, 2017. In : PIZZOLATO, Ednaldo Brigante. Introdução à programação orientada a objetos com C++ e Java . EdufScar, 2010. MCKINNEY, W. Python para análise de dados : tratamento de dados com Pandas, NumPy e IPython. Rio de Janeiro: Novatec Editora, 2018. PORTELLA, S. G. S.; DA CUNHA, L. C.; BAZOTTI, J. P. L. Ensino de linguagem de programação Java a partir da Lógica Proposicional : compartilhamento cidadão de saberes entre estudantes do IFRS/Campus Osório e da Escola Estadual de Ensino Médio Albatroz. MoExP - Mostra de Ensino, Extensão e Pesquisa do Campus Osório, v. 1, n. 1, p. 1-1, 2017 PRESSMAN, R.; MAXIM, B. Engenharia de Software . 8. ed. McGraw Hill Brasil, 2016. VAN ROSSUM, G. et al. Python Programming Language. In : USENIX Annual Technical Conference . 2007. 09/09/2022 19:40 Ead.br https://student.ulife.com.br/ContentPlayer/Index?lc=0xQPdFxf08knK9GoFDY7fQ%3d%3d&l=w2abV45et6fp0PxedTtkFQ%3d%3d&cd=UbRGm… 32/33 09/09/2022 19:40 Ead.br https://student.ulife.com.br/ContentPlayer/Index?lc=0xQPdFxf08knK9GoFDY7fQ%3d%3d&l=w2abV45et6fp0PxedTtkFQ%3d%3d&cd=UbRGm… 33/33
Compartilhar