Posts de July, 2011

[Andrews Medina] haskell para pythonistas

Wednesday, July 27th, 2011

No FISL 12 que aconteceu nos dias 29 de junho a 02 de julho de 2011 eu apresentei uma palestra relâmpago cujo o tema foi: “haskell para pythonistas”. A palestra ficou legal, mas 5 minutos é bem pouco para um assunto como esse, então resolvi começar a fazer um “guia” de haskell para desenvolvedores python e esse post é o primeiro dessa série.

Primeiramente, eu não sou um programador haskell fluente, eu apenas utilizei haskell para pequenas brincadeiras, entre elas, resolver algum problemas do projecteuler.net. Mas, já consegui ver várias semelhanças e diferenças entre haskell e python.

paradigma funcional

Diferente de python que é multiparadigma, haskell é puramente funcional. Em linguagens imperativas você passa para o computador uma sequência de tarefas para serem executadas, em uma linguagem puramente funcional você não diz o que fazer mas sim como fazer.

Por exemplo, o fatorial de um número é o produto de todos os números de 1 até esse número. Em haskell a implementação do fatorial seria:


fatorial numero = product [1..numero]

Outro exemplo, seria a sequência de fibonacci. O valor do item de fibonacci com posição 0, deve retornar 0. A posição 1 deve retornar 1 e da posição 2 em diante deve retornar a soma dos valores dos dois itens anteriores na sequência. A implementação em python que é uma linguagem imperativa seria:


def fibonacci(numero):
   if numero == 0:
       return 0
   elif numero == 1:
       return 1
   else:
       return fibonacci(numero - 1) + fibonacci(numero - 2)

Já em haskell:


fibonacci 0 = 0
fibonacci 1 = 1
fibonacci numero = fibonacci(numero - 1) + fibonacci(numero - 2)

lazy evaluation

Haskell só executará o resultado e os parâmetros de uma função quando eles forem necessários. Com esse recurso é possível criar funções que retornem sequências infinitas como a de fibonacci onde é executado apenas os valores necessários:


fibs = 0 : 1 : zipWith (+) fibs (tail fibs)

tipagem estática

Uma das características que haskell tem que difere de python é ter tipagem estática, mas ela tem inferência de tipos, ou seja, o compilador associa implicitamente o tipo da variável conforme o valor dela, assim, não é preciso declarar o tipo de uma váriavel. Por exemplo:


Prelude> let numero  = 10
Prelude> :t numero
numero :: Integer

list comprehensions

List comprehensions é a capacidade de gerar uma lista a partir de outra lista, assim como python, haskell também tem list comprehensions. Por exemplo em python, se eu quiser gerar uma lista com apenas os números ímpares contidos em outra lista:


>>> [numero for numero in [1, 2, 3, 4, 5, 6] if numero % 2]
[1, 3, 5]

A mesma solução usando list comprehensions em haskell:


Prelude> [numero | numero <- [1, 2, 3, 4, 5, 6], odd numero]
[1,3,5]

A diferença de list comprehension em haskell é que é possivel fazer list comprehensions compostas:


Prelude> [numero1 * numero2 | numero1 <- [1, 2, 3, 4], numero2 <- [1, 2, 3, 4]]
[1,2,3,4,2,4,6,8,3,6,9,12,4,8,12,16]

como começar

Para quem está interessado em começar uma aventura no mundo das linguagens funcionais com haskell, eu indico a instalação do ghc (http://hackage.haskell.org/platform/) que é um compilador para haskell e a leitura do learn you a haskell (http://learnyouahaskell.com), que na minha opinião é um dos melhores livros para quem quer começar a programar em haskell.

[Flávio Ribeiro] Time to move on

Friday, July 22nd, 2011

Hey there, here I am, after one year without posting anything. During this time away from here, a lot of things have happened in my life.

To summarize, I’ve finished my bachelor degree at IFPB in João Pessoa and changed city twice. The first move was to Campina Grande, to start a masters degree in Computer Science at UFCG, but i’ve completely failed. It seems that I cannot stand more time in classrooms, at least this year.

Then, I’ve moved to Rio de Janeiro, where I’ve started working at Globo.com. I’m here for about 20 days and I’m really enjoying :) . I’m still looking for a place to live, getting used to (strange, not saying ugly) cariocas accent and workin’ a lot. I hope to spend a good time here.

Wish me luck!

[Rafael Carício] Implementando uma Toy Programming Language

Sunday, July 17th, 2011

Tudo que uma linguagem de programação precisa é de uma estrutura de loop, expressões, listas e funções. Concordam?

[update] - algumas linguagens não tem nenhuma estrutura de loop. Como Haskell que usa pattern matching pra resolver o problema de estruturas de controle e recursão para loops.

Estou implementando uma linguagem sem nome (ainda usando um nome temporário), e estou pensando em implementar o básico que uma linguagem moderna precisa. Estou implementando para aprimorar meus próprios conhecimentos sobre programação e relembrar coisas que aprendi na época da faculdade. Aqui vai um exemplo da sintaxe da linguagem que estou implementando:

Tudo na linguagem é função, expressão, lista e valor. Inclusive o “if”. Que nela é uma função que é definida na propria linguagem:

E usado desta foma:

O “*” informa ao interpretador que estou querendo referenciar a variável “k” no escopo dinâmico (escopo onde a função está sendo executada) e não no escopo local interno da função, onde modificações a esta variável não fariam diferença para o escopo onde a função foi chamada (caso exista uma variável com o mesmo nome).
Na linguagem existe também apenas uma estrutura de loop que é o “while”. E funciona da seguinte forma:

Com o “while” eu posso definir como é minha estrutura de “for”. Assim:

E usar da seguinte forma:

Assim o valor de “a” é [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]. E outra coisa interessante que posso definir é a função “map”, que ficaria da seguinte forma:

Nesta linguagem o comportamento do “map” é o mesmo do “for each” pois uma função SEMPRE retorna um valor nem que ele seja “Null”.
Com o essas funções previamente definidas, podemos implementar uma função de “filter” e ficaria assim:

Os “_” underlines nestas funções servem para não conflitar com nome das variáveis do escopo onde o programador vai usar.

Quem quiser saber mais sobre este projeto pode acompanhar pelo github. Aceito reclamações, xingamentos, elogios e etc.

https://github.com/rafaelcaricio/unamed

[Emerson Macedo] Node.JS Knockout 2011

Thursday, July 14th, 2011

Foi anunciado nessa madrugada a abertura para registro dos times para o Node.JS Knockout 2011. Já é a segunda edição, já que em 2010 aconteceu a primeira. Pra quem não sabe, o esse evento é uma espécie de competição/maratona, onde as equipes tem 48 horas para desenvolver uma aplicação do zero que depois será julgada e rankeada. Os melhores recebem premiações. Esse evento é semelhante ao famoso Rails Rumble, que já acontece desde 2008.

Apesar da premiação, esse tipo de evento motiva mais pelo fato de criar uma aplicação em 48 horas, com total ownership do que está sendo feito. Outro ponto importante desse tipo de competição é que os membros do time precisam ser muito pragmáticos. Firulas desnecessárias de interface, como arredondar bordas em browsers que não dão suporte a isso (i.e Internet Explorer) não tem vez nesse tipo de projeto. Aprender a cortar escopo e gerênciar tempo são outros desafios que importantes.

Até o dia 20/08 estão abertas as inscrições e a competição acontece entre os dias 27 e 29, também de agosto.

Aproveite e veja se percebe alguma coisa legal na página do evento. Existe uma forma de interagir bem legal :)

Até lá !!!

Post Footer automatically generated by Add Post Footer Plugin for wordpress.

[Francisco Souza] QConSP 2011: eu vou, e vou palestrar!

Monday, July 11th, 2011

Em Setembro vai rolar a segunda edição da QConSP, versão brasileira do principal evento de arquitetos e desenvolvedores do mundo. O evento é organizado pelo InfoQ Brasil em parceria com a Caelum. No ano passado o evento bombou, e tenho certeza que este ano não será diferente.

Marcarei presença apresentando, junto ao Andrews Medina, a palestra “Os complicados testes de interfaces e componentes web”, na trilha “O browser como plataforma”. Na palestra, apresentaremos algumas técnicas para testar interfaces web, seja de forma integrada ou de forma unitária (componentes isolados), usando ferramentas como Splinter e Jasmine.

Além da nossa palestra, o evento também contará com apresentações de feras como Guilherme Silveira, Jim Webber, Evan Weaver e outros. A QConSP 2011 vai acontecer nos dias 10 e 11 de Setembro, no Centro Fecomercio de Eventos, em São Paulo. Ainda da tempo de se inscrever!

Nos vemos lá! :)

[Emerson Macedo] FISL12 – Slides da apresentação sobre Javascript

Wednesday, July 6th, 2011

No último sabado, estive no FISL12, fazendo uma apresentação sobre Javascript. O objetivo da minha apresentação foi ajudar a despertar na comunidade brasileira uma cultura de escrever um código Javascript melhor. Muitos desenvolvedores não tem idéia que Javascript é uma linguagem Orientada a Objetos além de Funcional. Nessa apresentação eu falo da parte O.O, fundamentando os conceitos e mostrando exemplos. Seguem os slides:

Javascript Orientado a Objetos – Fisl12

View more presentations from Emerson Macedo

Post Footer automatically generated by Add Post Footer Plugin for wordpress.

[Tarsis Azevedo] FISL 12 - A segunda vez é ainda melhor

Monday, July 4th, 2011

Na ultima semana rolou em Porto Alegre mais um FISL na PUC. Foram 4 dias conhecendo e conversando com muita gente, revendo amigos, comendo muito churrasco e sentindo muito frio!

Esse foi meu segundo FISL, e como dizem: a segunda vez é ainda melhor!

Fiquei grande parte do tempo no stand da globo.com, conversando com pessoas da comunidade python, conhecendo gente de todo brasil e fazendo novas amizades. Tive contato com muitos alunos e futuros programadores, uns mais interessados e outros só querendo brindes xD

No stand da globo.com apresentei uma lightning talk sobre Coding Dojo e convidei a galera para participar de um dojo no sabado a tarde!

Dojo_globocom

E apareceram mais pessoas que eu esperava.

Junto com o Israel Teixeira, do dojorio, guiamos um dojo em python colocando em pratica os conceitos de TDD aprensentados por ele na sua palestra. O codigo e o feeback estao no github.

Tambem nesse FISL tive a oportunidade de apresentar minha primeira palestra em um grande evento, e o resultado nao poderia ser melhor!

Sala cheia, muitas perguntas e elogios.

Palestra

Esse FISL foi inesquecivel, agora que venha a QCON Br e a Python Brasil! Nos vemos lá!

ps: veja o que o Henrique Bastos tem a dizer sobre o FISL 12!

 

Permalink

| Leave a comment  »

[Francisco Souza] FISL 12: eu fui, e foi foda!

Monday, July 4th, 2011

Certa vez li em algum lugar que o primeiro FISL nunca se esquece, e começo a acredita que seja verdade. Além da agradável temperatura abaixo de 10 graus em Porto Alegre, o evento foi uma oportunidade incrível de conhecer algumas figurinhas da comunidade e muito aprendizado.

Participei apenas de dois dias do evento. Na sexta-feira, apresentei junto com o Andrews Medina a palestra “Testando interfaces web com Splinter” e gastei um tempinho no stand da Globo.com, onde também apresentei o django-htmlmin, na sessão de lighting talks da comunidade Python Brasil (você pode ver os slides aqui).

Lighting talk da comunidade Python Brasil no stand da Globo.com

No sábado eu e o Andrews fomos convidados pelo Igor Macaubas para falar rapidamente sobre o Splinter na palestra “Por que amamos open source na Globo.com”. O Igor mandou muito bem na palestra, e a galera pode ver um pouco do que consumimos e produzimos de open source dentro e fora da Globo.com.

Andrews Medina, Francisco Souza e Igor Macaúbas no FISL 12

Como não deveria deixar de ser, o networking do evento foi excelente. Eu esperava bem menos do FISL, principalmente no quesito técnico, e fiquei totalmente impressionado com o evento. Após altos papos e um excelente churrasco na casa do Xiru, estou pensando seriamente em desistir de não ir à Python Brasil esse ano :) Aliás, se você pode ir ao evento, não perca!

No mais, é isso! Fica agora a vontade de querer estar no FISL no ano que vem, agitando a comunidade e comendo muito churrasco!

[Igor Macaubas] Globo.com: Por que amamos open-source?

Monday, July 4th, 2011

No último sábado, dia 02/07, palestrei no FISL12, em Porto Alegre. Na minha palestra, falei do movimento open-source na Globo.com, como isso mudou a empresa, e como a Globo.com têm participado e contribuído com o movimento. Editei o vídeo e disponibilizei no vimeo, e os slides no slideshare.

Globo.com – Porque amamos open-source?

View more presentations from Igor Macaubas

[Igor Macaubas] Globo.com no FISL12

Monday, July 4th, 2011

FISL12

A Globo.com marcou presença no FISL12 - além de patrocinar o evento, com uma cota silver, também enviou vários palestrantes. Eu tive a felicidade de ser um desses palestrantes, e a minha palestra vai aparecer aqui no blog em breve.

Quando estava lá pelo FISL, fiz dois vídeos curtos dando uma volta, primeiro pela área central do FISL, e depois conversando com a galera no stand da Globo.com. Dê uma olhada nos vídeos abaixo!

Dando uma volta pelo FISL

www.youtube.com/watch?v=yCyatu-HhX4

veja no youtube

Papo no stand da Globo.com

www.youtube.com/watch?v=G0SU9ACh2Pk

veja no youtube