Aula inaugural de Sistemas de Informação da FA7 2015.2

Eduardo Mendes

Eduardo Mendes
da Equipe include[SI]

Na última terça-feira, dia 11 de agosto, o curso de Sistemas de Informação promoveu sua Aula Inaugural do semestre 2015.2 e tivemos a oportunidade de ter como convidado o Dr. Hildeberto Mendonça, da Université Catholique de Louvain (UCL), onde atua como Team Leader. Hildeberto é bastante conhecido entre os usuários da linguagem Java aqui no Ceará, pois liderou durante muitos anos o Grupos de Usuários Java do Ceará, o CEJUG.

Aula inaugural de Sistemas de Informação 2015.2

Platéia lotada na aula inaugural de Sistemas de Informação 2015.2

O evento lotou o Auditório da FA7 e aqui segue um breve relato dos principais tópicos abordados.

Programação Funcional

O tema central do evento foi Desenvolvendo APIs web com Clojure, sendo fortemente direcionado à programação funcional, mais especificamente sobre a linguagem Clojure, elencando as vantagens ao se utilizar destas duas.

Mas o que é Programação Funcional? Pode-se dizer que é um estilo de programação mais próximo da matemática com base no lambda calculus (1938), que trata a computação como um conjunto de funções matemáticas que vão sendo avaliadas, algo como se programar um f ( g (x) )  literalmente (e você aí pensava que Matemática Discreta não servia pra nada #sqn). Outra característica marcante é que, diferente de linguagens de programação imperativa, onde a mudança no estado do programa é uma constante, a programação funcional evita dados e estados mutáveis, evitando também a preocupação com tarefas de concorrência que podem dar muita dor de cabeça aos programadores ao criar códigos para ficar testando tudo (if if else else) a fim de garantir uma execução correta.

O grande benefício das linguagens funcionais apontado por Hildeberto é a possibilidade de criar aplicações com performances muito melhores e muito menores para nuvens – “cloud friendly” - , que exigem escalabilidade e elasticidade. Com o objetivo de ilustrar essas características, ele apresentou a linguagem de programação Clojure.

Linguagem de Programação Clojure

Clojure

Clojure é uma linguagem de programação dinâmica que tem sua sintaxe baseada na linguagem Lisp (1958), mas que é construída sobre Java, compilando pra bytecode, ou seja, é necessário uma Java Virtual Machine (que é o melhor do mundo Java) para executá-la e tudo que funciona em Java, funciona em Clojure.

Clojure é essencialmente uma linguagem de programação funcional, com um conjunto muito bacana de estruturas de dados persistentes e imutáveis, e além de tudo isso possui uma sintaxe bastante enxuta. E Hildeberto relacionou alguns exemplos, como os que seguem abaixo.

Hildeberto deixou claro que sair de linguagens imperativas para uma linguagem funcional existe um certo esforço, pois as coisas são feitas de maneiras bem diferentes. Por exemplo: no paradigma funcional desestimula-se a utilização dos laços como while e for; em substituição a isso pode-se utilizar funções como mapreduce filter que, entre outras coisas, simplificam o código. Os conceitos de map, filter e reduce, que já estão presentes em outras linguagens como JavaScript, Python e Ruby também estão em Clojure.

Doido pra conhecer melhor Clojure?
“Try Clojure” permite que você dê seus primeiros passos na linguagem através de um ambiente interativo ;)
Também é necessário aplicar formas recursivas de implementação, pois a recursividade é base de uma linguagem funcional. Entretanto pode ser uma desvantagem devido à possibilidade de tornar certos trechos do código ilegíveis.

Outro benefício é a característica lazy de processamento, que interrompe o trecho de programa em execução quando, por exemplo, um valor procurado é encontrado, antes mesmo de testar  todos os valores possíveis. O processamento só é realizado enquanto tem utilidade.

Apesar de ser uma forte quebra de paradigma, o benefício disso é que os programas acabam sendo muito menores que os de qualquer outra linguagem imperativa. Até mesmo estruturas complexas como padrões de projeto perdem a vez tal o poder e a simplicidade do paradigma funcional. Dando uma olhada na linguagem geral, vê-se que ela é bem mais simples que a maioria das linguagens mais usadas do mercado (liberte-se: escreva menos, faça mais!).

Hildeberto Mendonça

Hildeberto Mendonça

Frameworks, bibliotecas, gerenciamento de configuração e ferramentas

Foi apresentado também um sistema web, a utilização de templates, com demonstração ao vivo do código, servidor web executando (Compojure + Ring), acesso a banco de dados, tudo utilizando Clojure. Daí você pergunta: qual framework web Clojure ele utilizou para a programação? Resposta: Nenhum. Clojure não se utiliza de frameworks, que entre outras coisas gerenciam o controle sincronizado de memória e a complexidade full stack, (baseados em vários padrões de projeto para suprir as deficiências das linguagens), sendo totalmente funcional, só se faz necessário a utilização de bibliotecas.

Durante a apresentação Hildeberto utilizou, como ferramenta de build e configuração, Leiningen, o correlato do Maven para o Java. A apresentação dos arquivos relativo à configuração também geram alívio aos olhos de desenvolvedores cansados de XML: os arquivos de configuração também são escritos em Clojure e ficam em um formato muito próximo de arquivos JSON.

E a IDE? Nada de pesado, qualquer bom editor de texto já serve, afinal (como já dito) a linguagem é simples. O Hildeberto utilizou o Atom e LightTable durante as demonstrações.

Leia o post no site do Hildeberto sobre o Leinigen: http://www.hildeberto.com/2015/07/installing-leiningen-on-mac-os.html]

GIT

Falando em configuração, Hildeberto também demonstrou o modo como ele utiliza GIT, criando 03 branchs além do master: dev, para desenvolvimento pessoal, o test para seus testes, e o qa para consolidar, digamos, uma sprint, e caso bem sucedida, adicioná-la ao master.

Sobre o GIT, a mensagem importante foi: nunca desenvolva no master!

O povo pergunta: Scala x Clojure?

Uma das perguntas da platéia foi se Hildeberto já havia comparado Clojure com outras linguagens com características funcionais como Scala. Segundo ele, em comparação com Scala, que possui uma ampla gama de estruturas de dados, Clojure possui menos, em contrapartida oferece o melhor delas em algoritmos ótimos. Scala pode executar com mais agilidade, mas para isso depende do talento do desenvolvedor em fazer as melhores escolhas entre tantas estruturas disponíveis. Outra diferença apontada foi que em Clojure tudo já é funcional, enquanto Scala ainda permite a orientação a objetos.

VEJA MAIS

E no mercado?

Em conversa com o Hildeberto, ele nos falou que atualmente Clojure faz parte do dia-a-dia dele no trabalho na Universidade de Louvain (além de Python, não poderia ser diferente), e sobre a linguagem ainda não está presente fortemente no mercado, ele chamou a atenção sobre a questão da pouca quantidade de desenvolvedores ainda o que pode causar medo às empresas, pois uma vez iniciado um projeto em Clojure será que seria possível encontrar desenvolvedores tanto no processo inicial, quanto para eventos reposicionamentos?

Então, como para qualquer nova linguagem, haverá resistência inicial, ainda que os benefícios sejam notórios.

Finalizando…

Para mim ficaram algumas percepções:

  • a primeira que sempre é bom ver alguém compartilhando conhecimentos bacanas, com domínio e sobre uma coisa pela qual se é apaixonado, o Hildeberto segurou a atenção do público;
  • segundo, é importante ficar por dentro de programação funcional, que não é algo novo, mas de grande importância atual, sem ela seria impossível coisas como Big Data – para programar para múltiplos processadores o estilo funcional facilita em muito o tratamento de concorrência. A Google (ou seria Alphabet??) publica artigos falando sobre a sua importância, bem como Twitter, Facebook e muitos outros (basta perguntar ao Google);
  • terceiro, é muito interessante ver o que o contexto da computação tem feito a antigos “javanistas”; enquanto existem pessoas que justificam a valorização do complexo pelo complexo, aqueles têm se permitido se apaixonar por outras linguagens (entre eles eu), fazendo com que alguns abandonassem a antiga paixão em busca de algo diferente, com curvas de aprendizagem menores, conseguindo realizar muito mais com muito menos;
  • por fim: é difícil? não sei…, mas já tinha curiosidade e agora acho que é a oportunidade de aprender uma sintaxe nova e fazer as coisas de um maneira diferente e dar uma rejuvenescida nos neurônios. Bom mesmo é ser poliglota!

Alguém a fim de participar de um grupo de estudo?

Comentários

comentários

Atividade complementar: Emita agora seu certificado da Aula Inaugural
SIFA7.FUN 1.0 acontece neste sábado [EVENTO]

3 Comentários