DojoRio@Centro 03/04/2013 – Go!! Counting Boolean Parent… o que?

quarta-feira, 17 abril 2013

goleftSalve Jogadores!

Para os que não foram e ainda não sabem. Neste dojo de (03/04/2013) tivemos duas
novidades:
1 – Go: Liguagem de programação open source criada pela Google. http://golang.org/
2 – Rodolfo: Que veio da china comemorar o dia 1 de abril no Brasil. OBS – “Não foi só por isso
que o cara veio, mas é divertido pensar desta forma”.

A casa estava cheia, um tremendo de um carnaval, mas como de costume não faltou muita
codificação, diversão e papo NERD.
Neste dia o problema selecionado foi o Counting Boolean Parenthesizations, mas é claro que
esse não foi o nome do projeto no GIT, pois sempre que alguém chegava e perguntava qual era
o problema só lembrávamos a sigla “CBP” rsrsr.
O objetivo deste problema é Contar o número de formas possíveis de se organizar o código
alterando os parênteses de maneira que os mesmos retornassem verdadeiro, lembrando que a
entrada é uma sequencia de booleanos em forma de uma String.
Porem já que eu sei que não expliquei muito bem… segue o link do problema com um vídeo
explicativo: http://people.csail.mit.edu/bdean/6.046/dp/ . no item 9.
O código esta no git do DojoCentro.
Para os mais curiosos segue um link do tour do Go lang, um tutorial em forma de handsOn :
http://tour.golang.org/#1

Jogadores do Dia:

gofala

Flávio Amieiro
Aleksandra Kwoka
Israel Teixeira
Rodolfo Henrique Carvalho
Eduardo Stalinho
Otávio Cardoso
Carlos Cunha
Juan Lopes
Jonatas Emidio

Caras Felizes:

beanfeliz

Mate
Voltei após muito tempo+
GO+++++
Niteroi
Muita gente+++
Rodolfo 1º de Abril / Rodolfo in Rio+++
Chineses
Poloneses
Problema++++
Morango+
Presenças Ilustres
Cubo mágico
Frutas++
Berrondo voltou a ser praticante regular
Pessoas+

Tentativa de mudança de linguagem
Discussão sobre árvores++
Caqui
Ola
Retornos+
Aprendi como funciona um cubo mágico
Não caiu nenhum prédio ate agora

Caras Tristes:

mr_bean_mobile_wallpaper-other

Problema
Conversa no vermelho+
Frutas
Go++
Go legal mas não cabe no dojo
Demora para começar++++
Quadro pequeno+
Ambiente não preparado previamente+
Sintaxe do map
Faltou brigadeiro
Discussão
Porta fechada
Não programei+
Alguns não programaram
Demorei a entender
Fui atropelado
Galera dispersa++++++
Problema mal definido++
Pouca comida+
Pessoas saindo no meio+
Biscoito de castanha?
Niterói
Fome
Go test

Sempre terá dojo nas 4º feiras, começando entre 18:30 – 19:00 e se você gostou, é só chegar na  Íparos – Av Treze de Maio, 13 – 6° andar – Cinelândia. Qualquer dúvida, é só mandar email para a lista do dojo google groups, que sempre tem alguém para responder, por isso, não se acanhe, pode vir que a casa é totalmente livre para quem quiser ensinar e aprender conosco :D

Até a próxima o/

 
Anúncios

DojoRio@Centro 27/03/2013 – No Brasil, é esquibunda na areia

quinta-feira, 11 abril 2013

No dia 27 de março foi véspera do feriado mais doce do ano, a Páscoa e não fizemos problema temático desta vez. No lugar disso, fizemos um problema que rendeu boas risadas com as alterações que fizemos para que ele tivesse mais a cara do nosso país com calor das profundezas <insira o inferno da sua fé aqui>.

Queríamos resolver o seguinte: existe um carinha (no problema é o Michael)  que gosta muito de snowboard e também temos uma montanha, com suas altitudes  representadas por uma matriz. Sabendo que só podemos ir do ponto mais alto até o mais baixo da montanha, qual é a maior distância percorrida na montanha informada ?

Pelo fato de que moramos no Rio de Janeiro (com 42º a sombra, não tem nem 1 mês atrás) , num estado dentro de um país tropical, também conhecido como Brasil, durante as trocas de piloto e co-piloto com os presentes foi falado que snowboard não tem nada a ver com onde moramos e que o mais próximo de montanha para deslizar que temos são as dunas de Natal e lá se faz é esquibunda. Neste momento de bastante risadas, nós rebatizamos o esporte e o problema passou a ser tupiniquim 🙂

Este dojo manteve a sequência de problemas com Programação Dinâmica, mas no lugar de focarmos em programação dinâmica somente, este problema nos levou a um contexto que aplicava programação dinâmica na sua resolução.  O contexto do desafio temos vários pontos a serem visitados, sendo que temos que sempre ir da altitude maior para a altitude menor, ou seja, não tem como voltar. Isso nos permite observar o todo como um DAG – Grafo Acíclico Dirigido. Nosso objetivo é achar o maior caminho possível no grafo (montanha) dado e Programação Dinâmica é indicada para resolver este tipo de problema, inserindo as altitudes visitadas num array e manipulando-o conforme a implementação escolhida para Programação Dinâmica.

A solução deste dojo divertido foi esta.

E os pontos positivos que conseguiram chegar até o final da duna sem rolar no meio:

  • Problema ++++
  • Pessoas
  • Comida variada
  • sensação de que as pessoas entenderam mesmo o problema
  • Lucas Martins, Otávio Cardoso e Thiago Bel[e]m voltaram
  • Comida suficiente
  • Python +
  • A solução foi obscura no início, mas durante o dojo consegui entender
  • A troca do esporte do problema de esqui para esquibunda ++
  • Participação
  • Evolução da solução
  • PD e Grafos
  • Pessoal veio mesmo com chuva e véspera de feriado
  • Solução (parcial)

Os pontos negativos que nem deu o friozinho na barriga da adrenalina:

  • Cadê os novatos? +
  • A troca dos termos para a retrospectiva de “Carinha Feliz/Carinha Triste” para “O que quero mais/ O que não quero mais” não deu certo
  • Não avançamos muito na solução ++
  • Falatório no vermelho ++
  • O dojo começou tarde ++
  • Armadilha da coca cola – alguém agitou a coca cola e quando esta coca cola foi aberta, praticamente estourou.
  • Pessoas não programaram
  • Demorei para entender o problema
  • Testes com nomes ruins
  • Python
  • “Roubamos ” muito e poderíamos ter evoluído mais depressa se partissemos para a solução mais correta um pouco antes
  • O ex novato (Júlio Marins) não veio.

Sempre terá dojo nas 4º feiras, começando entre 18:30 – 19:00 e se você gostou, é só chegar na  Íparos – Av Treze de Maio, 13 – 6° andar – Cinelândia. Qualquer dúvida, é só mandar email para a lista do dojo google groups, que sempre tem alguém para responder, por isso, não se acanhe, pode vir que a casa é totalmente livre para quem quiser ensinar e aprender conosco 😀

Até a próxima o/


DojoRio@Centro 20/03/2013 – Amigos, amigos, bagagens à parte

quarta-feira, 10 abril 2013

Olá, pessoas queridas. Tudo bem com vocês?

No dia 20 de março, fizemos um problema com características clássicas. Um grupo de amigos está planejando uma viagem e precisam decidir como dividirão as malas. Dado um conjunto de malas com um determinado peso e 2 carros, é possível dividir as malas para que todos os carros sempre carreguem o mesmo peso?

Um ponto que deve ser atentar  é que por mais que o peso possa ser divisível por 2 (temos 2 carros), nem sempre será possível dividir as malas por 2, já que as malas são inteiras. Por exemplo, 4 malas com pesos de 1, 2, 5, 4 – O peso total é 12, este peso é divisível por 2 carros e conseguimos arrumar as malas de forma que as malas de peso 2 e 4 fiquem num carro e as malas de peso 1 e 5 fiquem em outro. Agora suponha as mesmas 4 malas para serem divididas pelos mesmos 2 carros, só que com pesos diferentes de 1, 1, 1, 9 – por mais que 1 + 1 + 1 + 9 = 12 e 12 seja divisível por 2, a distribuição do peso não é possível, pois 3 < 9 e não podemos dividir a mala de peso 9 para que seu excedente em relação a metade do peso total das malas seja carregado em outro carro.

O desafio abordado é uma variação de um problema famoso, conhecido como Problema de Partição. Programação dinâmica é bastante utilizada para resolver problemas deste tipo.

A técnica da Programação Dinâmica possui algoritmos de resolução de alguns problemas, entre eles a Mochila. É possível visualizar esta variação do problema da partição como uma Mochila. Existem diversos tipos de mochilas e várias definições diferentes. Uma definição de um tipo de mochila (dada pela wikipedia) é:

“Dado um conjunto de artigos, cada um com um peso e um valor, determinar o número de cada item de incluir em um conjunto de modo que o peso total é inferior a ou igual a um determinado limite e o valor total é tão grande quanto possível. Ela deriva seu nome do problema enfrentado por alguém que está limitado por uma mochila de tamanho fixo e deve preenchê-la com os itens mais valiosos.”

A definição dada acima é para Mochilas  problemas de otimização: maximizar, minimizar, encontrar valores, etc. Outras Mochilas são aplicadas em problemas de decisão – retorna true ou false. Durante o dojo, este problema foi citado como pertencente à classe dos NP Completo.

A Mochila que estamos utilizando neste caso é de decisão, pois temos que decidir se é possível ou não dividir as malas de forma a igualar os pesos entre os carros.

As malas foram divididas por presenças ilustres e seus respectivos óculos. Um parabéns para o Luan e seus óculos gigantescos que roubaram a cena durante o dojo :). Decidimos bagagens com óculos dinâmicos com este código.

E as frases de efeito das bagagens que foram divididas com sucesso e foram para lugares maneiríssimos:

  • Problema ++++++
  • Novatos ++
  • Pessoas ++
  • Programação Dinâmica (PD) +++
  • Biscoito de castanhas (Padaria)
  • Explicação
  • Cissa Bel[é]m presente +
  • Retrospectiva
  • “Jac Abreu jornalista” (Jac anotando para o post do dojo)
  •  Ambiente legal
  • Recursão
  • Explicação bem detalhada (sobre o problema e sobre PD)
  • Não sou mias novato (desabafo do Júlio Marins 😛 )
  • Interatividade
  • Desenvolvimento de ideias
  • Retorno ao dojo +
  • Pessoas permanecendo no dojo
  • Problema acessível e ainda aplicando mochila (PD)
  • Pessoal empolgado 😀

As malas que ficaram em casa também tem o que dizer:

  • Thiago Be[e]m não veio ++
  • Otávio Cardoso não veio +
  • Flávio Amieiro não veio +
  • O dojo começou tarde +
  • Teclado com mofo =(
  • Pouca comida +++
  • Chegar atrasado ao dojo
  • Patota
  • Cadê a cadeira do “cabuuumm” 😛

Não importa o que acontecer, sempre terá dojo nas 4º feiras, começando em torno das 18:30 – 19:00 em algum lugar do Rio de Janeiro.

Gostou da gente? O dojo@Centro é realizado na Íparos – Av Treze de Maio, 13 – 6° andar – Cinelândia, entre 18:30 e 19:00 de todas as quartas feiras (menos feriados) . Qualquer dúvida, é só mandar email para o  grupo (google groups) do dojo, alguém do grupo sempre responde as dúvidas conforme for possível. Você é muito bem vindo 😀

Até a próxima :D


Dojo@Centro 13/03/2013 – Dê 1 moeda e ganhe 3 moedas

domingo, 7 abril 2013

Olá, pessoal queridão.

Tudo bem com vocês?

No dojo do dia 13 de março, nós procuramos problemas numa fonte recente e bastante divertida, o dailyprogrammer do reddit. Estavamos procurando um problema com algo a mais e na indecisão, resolvemos inovar: tinham 3 problemas que a solução de um influenciava no início do seguinte e por quê não fazer os 3?

Com o apoio de todos, o problema do dia escolhido foi sobre as moedas de um país bizarro (e meio dado a estelionado XD). O contexto é o seguinte:

Em um país chamado Bytelandian, e existe uma moeda para cada número inteiro não negativo (incluindo 0 – sim, existe uma moeda de valor ZERO) e também existe uma máquina muito da estranha que se você inserir uma moeda nela ela te retornará seu dinheiro em 3 moedas – valor inserido/2 + valor inserido/3 + valor inserido/4. – Caso a divisão retorne um valor não inteiro, ele arredonda o valor para baixo.

Sabendo disso, temos os problemas:

Esse problema aplicamos uma técnica de resolução de problemas bastante conhecida, a Programação dinâmica. Uma definição utilizada para inicializar a explicação desta técnica no material da USP:

“A programação dinâmica é um nome fantasia para [recursão] com uma tabela. Vez de resolver subproblemas recursivamente, resolvê-los seqüencialmente e armazenar suas soluções em uma tabela. O truque é resolvê-los na ordem correta para que sempre que a solução de um subproblema é necessário, já se encontra disponível na tabela. Programação dinâmica é particularmente útil em problemas para os quais dividir para conquistar parece produzir um número exponencial de subproblemas, mas há realmente apenas um pequeno número de subproblemas repetida muitas vezes de forma exponencial. neste caso, faz sentido para calcular cada uma das soluções pela primeira vez, e guardá-la em uma tabela para uma utilização posterior, em vez de recomputar cada vez que é necessário”  Ian Parberry, Problems on Algorithms

Dentre as possibilidades que a programação dinâmica oferece, foi utilizado o memoization. Memoization utiliza fortemente a recursão. Não confundam com outra forma de implementar, conhecida como Botom-up, que utiliza programação de forma imperativa.  Enquanto memoization calcula valores conforme for necessário, a forma bottom-up calcula todas as possibilidades primeiro para depois retornar os valores.

Exemplo de memoization (C++) – Dada uma mochila(um termo que denota uma das abstrações de programação dinâmica), o código abaixo deverá informar se é possível formar uma mochila com os valores informados (1) ou não (0) :

Notem que a implementação acima é praticamente a aplicação direta da recorrência demostrada na wikipedia salvadora 0-1 knapsack problem:

  • m[i,\,w]=m[i-1,\,w] if w_i > w\,\! (the new item is more than the current weight limit)
  • m[i,\,w]=\max(m[i-1,\,w],\,m[i-1,w-w_i]+v_i) if w_i \leqslant w.

Exemplo da implementação do mesmo caso abordado acima utilizando bottom-up:

Uma referência de uma explicação muito simples para programação dinâmica é este post abordando um pouco sobre programação dinâmica com bottom-up

E a solução que obtivemos foi essa aqui. Uma outra referência abordada na solução foi o design pattern Decorator

E as moedas que renderam mais dinheiro ainda foi:

  • Python
  • Curto Café +++
  • Memoization (PD) ++
  • Novas estruturas sendo exploradas (memoization)
  • Muito bem impressionada com um problema que parecia ser muito bobo ++++
  • Discussão sobre a persistência/como fazer TDD quando não sabemos a resposta esperada – Se foi provado por indução, foi provado por indução – Seu Carlos Flores +
  • Volta do Carlos Flores Cunha/Cunha Flores
  • Presença do Claudio Berrondo
  • Ex novato voltou
  • Recursão
  • Decorator ++++
  • Reddit – boa fonte de problemas -> http://www.reddit.com/r/dailyprogrammer/
  • Bom número de pessoas
  • Indução
  • Salgados
  • Functools ++
  • Teen town ++

Moedas que só deram prejuízo:

  • Casal bel[eé]m não veio +++
  • Ligações
  • Pouca comida +
  • Atraso
  • Pouco tempo para a retrospectiva
  • Stalinho sumiu no meio do dojo
  • Pouca gente
  • Ex-novato (vulgo Júlio Marins) ainda não ficou a vontade para ir pilotar
  • Não fomos até o final do problema proposto – ou seja, fazer os 3 problemas.

E não importa o que acontecer, sempre terá dojo nas 4º feiras, começando em torno das 18:30 – 19:00 em algum lugar do Rio de Janeiro.

Gostou do problema? Gostou da ideia do dojo? Então venha estar conosco, pois todos são muito bem vindos :D. Qualquer dúvida, é só mandar email para o  grupo (google groups) do dojo, sempre terá alguém para responder qualquer pergunta. Nós estamos na  Íparos – Av Treze de Maio, 13 – 6° andar – Cinelândia. O dojo começa entre 18:30 – 19:00. É vir, ensinar e aprender em/com grupo o/

Até a próxima 😀


dojo@Centro 06/03/2013: Planejando visitas no acampamento dos outros :)

terça-feira, 26 março 2013

Olá, pessoas queridas. Tudo bem?? 😀

Neste dojo, fizemos um problema clássico e bastante divertido (fonte): Existem vários acampamentos e queremos visitar a todos, mas precisamos planejar para visitar a todos da melhor forma possível. Entre os acampamentos existe uma distancia e não podemos parar para dormir no caminho entre os acampamentos, só podemos parar dentro de um acampamento e os acampamentos devem ser visitados em ordem. Desta forma, qual é a melhor maneira que podemos visitar N acampamentos com X noites para dormir de forma que no dia em que tivermos que caminhar a maior distância entre os acampamentos, caminhemos a menor distancia possível?

Esse problema não é fazer uma simples média, pessoal e tivemos um trabalhinho para fazê-lo. A linguagem escolhida foi ruby como podemos ver no código da solução encontrada.

E quem dormiu ao redor da fogueira do acampamento foram:

  • Thiago Belem
  • Juan Lopes
  • Otávio Cardoso
  • Flávio Amieiro
  • Jacqueline Abreu
  • Cláudio Berrondo
  • Julio Marins

E apesar de alguns poderem imaginar, não este não é um problema de grafos, pessoal :). Segundo informaram no dojo do dia, este problema poderia ser resolvido com Programação Dinâmica (PD) ou com o Método da Bissecção na definição matemática, mas para facilitar a vida, pode se ver o Método da Bissecção para este caso como uma Pesquisa Binária. Infelizmente, não conseguimos implementar nenhuma das soluções indicadas anteriormente.

E os mashimellow assados foram:

  • Conhecer uma nova linguagem
  • Galera ajudando a entender a linguagem
  • Bolo da Cissa ++++
  • Ruby 2.0
  • Problema +++
  • Novatos ++++
  • Baby steps
  • Sublime se intrometendo menos durante o dojo – (o problema é que o sublime fazia coisas automáticas que atrapalhavam e precisava ser melhor configurado). Obrigada Thiago Belem.
  • “Menos pessoas”
  • Solução parcial
  • Biscoitos da Jac (Padaria)
  • Claudio Berrondo pilotando – fazia teeeeeeeeemmmpo
  • Recepção
  • Paciência para explicar o problema
  • Volta do Berrondo e do Flávio Amieiro
  • Ter dojo apesar da super chuva do dia anterior
  • Boa variedade de comidas
  • Variar a linguagem
  • A solução e o problema foi diferente das abordagens que estamos utilizando nos últimos dojos.

E os mosquitos que não deixaram ninguém dormir em paz foram:

  • Onde está o quadro novo? +
  • Atrapalhar o dojo
  • Chuva +
  • Teste V – a Revanche . Os nomes dados para os testes neste dojo foram horríveis
  • Range Inclusivo
  • Seu Carlos Flores Cunha / Carlos Cunha Flores não veio no dojo de hoje =/
  • Novos não ficaram à vontade para programar
  • Menos pessoas presentes +
  • Poucos salgados
  • Solução poulo legível
  • Atraso pessoal
  • Empacou na solução
  • Sum ??? +
  • Split

Com chuva ou com sol, se a Íparos abrir na quarta feira, então terá dojo, estejam certos disso.

E para quem quiser estar conosco no dojo@Centro é só vir e entrar na  Íparos – Av Treze de Maio, 13 – 6° andar – Cinelândia, a partir de 18:30. TODOS SÃO BEM VINDOS e qualquer dúvida, sugestão ou qualquer outra coisa, nós vemos os comentários e temos um grupo (google groups) – fiquem completamente a vontade para participar do dojo, da lista (vulgo grupo) e tudo mais \o/.

Esperamos vocês :D.


dojo@Centro 20/02/2013: Empilhar caixas – O retorno

quarta-feira, 20 março 2013

Olá pessoas queridas. Tudo bem com vocês?

No dia 20 de fevereiro, retorno do dojo de carnaval, refizemos um problema que já tinhamos abordado em novembro/2012 (mas não teve post, por isso pedimos desculpas). Para quem quiser ver o que fizemos no ano passado, o código é este aqui.

O problema é o bastante intuitivo: temos várias caixas e cada caixa tem um peso P e uma capacidade C. Para empilhar as caixas, devemos garantir que a caixa suporte  a caixa de cima, ou seja, que a capacidade C seja igual ou maior que o peso P. Sabendo disso, tendo um conjunto de caixas, qual é o número máximo de caixas que conseguimos empilhar?

A solução que obtivemos desta vez é esta aqui. Caso não entenda como chegamos a esta solução, este é o link do histórico dos commits (está no último botão da versão que aparece como solução final), assim é possível acompanhar tudo o que foi feito 🙂 (mas qualquer coisa, é só comentar ou mandar email para o grupo)

E os empilhadores foram:

  • Thiago Belem
  • Juan Lopes
  • Flávio Amieiro
  • Edson Pinages
  • Israel Teixeira
  • Jacqueline Abreu
  • Willian Oizumi
  • Otávio Cardoso
  • Leandro Thimóteo
  • Carlos Cunha
  • Jonathan Santos

E as pilhas com muitas caixas, vulgo carinhas felizes foram:

  • Problema ++++++++
  • Pessoas Novas +++++++
  • Pessoas novas pilotando
  • Evolução da solução de um problema já feito anteriormente ++
  • Foi divertido ^.^
  • Casa CHEIA +
  • Explicação de TDD feita pelo Israel e o Juan – explicação conhecida a partir dai como as “TDD com as Aeromoças do Dojo@Centro”
  • Biscoitos “da padaria da Jac” – Lá Panneteria da Tijuca – Rua Radmaker, 53 ++
  • Salgadinhos “do José” +
  • O dojo ocorreu direito, sem confusões, mesmo com bastante gente e isso é muito bom.
  • Python ++
  • Clima legal
  • Pessoal antigo
  • Volta do dojo após o carnaval
  • Jonatas Emídio e Leandro Thimoteo de volta e a vinda do José
  • “Eu…guento” – Perola do dojo de hoje
  • Discussão saudável e divertida
  • Dinâmica do dojo +++
  • Presença de novato de Maringá
  • Participação de todos
  • Key +
  • Ajuda dos presentes em dúvidas na linguagem caso o piloto precisar
  • As pessoas e o dojo aceitam sugestões
  • Dojotimer

As caixas espalhadas no chão e ninguém quer arrumar a bagunça, vulgo carinhas tristes foram:

  • Apesar de gente nova ter pilotado, ainda teve gente tímida
  • Tempo
  • Sublime atrapalhando na desenvolvimento
  • Muito barulho
  • Muitos “foras”
  • Constante “infinita”
  • Chegar atrasado
  • Não teve mate
  • Perda da aula de TDD com as aeromoças do dojo
  • Horário pessoal (e por isso chegar tarde no dojo)
  • O dojo começou tarde – demora para escolher o problema +
  • O quadro ainda não foi mudado e ainda está insuficiente
  • Carnaval – o dojo não deveria parar nunca (Apoiado)
  • Coca cola demais, outras bebidas de menos
  • Não poder ficar para o pós dojo (recomendamos fortemente que as pessoas fiquem para o pós dojo)
  • Aceleramos no final e aparentemente, algumas pessoas não acompanharam a solução
  • Não lembrar como é o infinito (em python)
  • Pouca comida
  • Pessoal foi um pouco grosseiro
  • No final, esquecemos dos novatos
  • Gente falando no vermelho
  • Não teve panificação Bel[eé]m hoje

Sugestão: Deveríamos filmar a retrospectiva

E para quem quiser estar conosco no dojo@Centro é só vir e entrar na  Íparos – Av Treze de Maio, 13 – 6° andar – Cinelândia, a partir de 18:30. TODOS SÃO BEM VINDOS e qualquer dúvida, sugestão ou qualquer outra coisa, nós vemos os comentários e temos um grupo (grupo do gmail) – fiquem completamente a vontade para participar do dojo, da lista (vulgo grupo) e tudo mais \o/.

Até a próxima quarta :D o/


dojo@Centro 06/02/2013 – Construindo um parser com os “Tolkiens”

quinta-feira, 14 março 2013

Olá, pessoal.

Tudo bem com vocês?

No dojo do dia 6 de fevereiro de 2013, foi o dojo de carnaval e para esta data, não houve problema temático, mas sim a continuação de um problema que envolveu bastante o pessoal do dojo. Para ajudar a explicar o problema, abaixo um diagrama bastante simplificado, representando as características de um compilador

partes_compilador

A parte verde do diagrama acima foi resolvido no dojo de “Tolkien” e partes de compiladores e neste dojo o objetivo foi continuar construindo o compilador através do parser (ou a parte lilás do diagrama acima).

De forma simplificada, um compilador é um programa que transforma um conjunto de instruções em outro conjunto de instruções. No nosso caso, estamos construindo um compilador que entende expressões numéricas. A parte verde – Scanner – recebe as instruções iniciais e separa essas instruções e em blocos  chamados de  tokens e a parte lilás verifica se os blocos fazem sentido para a linguagem que o compilador entende,  verificando se os tolkens formam instruções da linguagem que o compilador é responsável e testando se os resultados obtidos com essas instruções são pertinentes à linguagem.

O scanner recebia instruções da seguinte forma:

4 + 3 * 2

E retornava os tokens:

[('N', '4'),('+', '+'),('N', '2'),('*', '*'),('N', '3')]

Esse retorno é a entrada do parser. A forma como ele deveria entender que a expressão acima é :

('+', 4, ('*', 3, 2))

A linha acima é conhecida como uma árvore abstrata de sintaxe.

Nesta solução, só conseguimos avaliar os operadores de soma, subtração e multiplicação. Caso tenha alguma dificuldade em entender como chegamos neste ponto, por favor, veja os commits e principalmente este commit e os testes são EXTREMAMENTE úteis para entender o desenvolvimento do problema.

Este dojo foi bastante instrutivo e quem não foi perdeu a folia de nerd XD. E quem brincou foi:

  • Renan Cardoso
  • Israel Teixeira
  • Eduardo Stalinho
  • Juan Lopes
  • Flávio Amieiro
  • Carlos Cunha
  • Jacqueline Abreu
  • Orlando Seixas
  • Otávio Cardoso

E as mascaras de Colombina, digo carinhas felizes foram E o pessoal usou suas máscaras de Guy Fawkes e não foi nada anonimo, infelizmente coloquei os papeis com a retrospectiva na minha carteira e tenho os papeis de posts antigos, mas não tenho os desta data. PEÇO MUITAS DESCULPAS POR ESTE DESCUIDO e me comprometo a cuidar melhor do feedback de todos.

 

[UPDATE] Encontrei a retrospectiva, estava junto com a minha pasta de documentos ( O_o).

E as mascaras de Colombina, digo carinhas felizes foram:

  • Bolo (Panificação Bel[ée]m) +++
  • Wallace, novato e participando
  • Caminho para chegar até a solução
  • Discussões +
  • Cissa explicando como funciona o dojo para os novos +
  • Trabalho para a definição do problema
  • Diferença entre as implementações
  • O problema +++
  • Solução diferente (esta pessoa já tinha implementado antes um parser, mas o código feito durante o dojo agradou muito esta pessoa)
  • Os novatos trouxeram fantasia para o dojo 😀
  • A Cissa vir ao dojo mesmo sem o Thiago Belem.
  • Pessoas novas +++
  • Chegar cedo
  • Pessoal fantasiado +
  • Baby steps
  • Python
  • Pessoas
  • Os testes passando
  • Explicação do slice
  • Pessoas interessadas
  • Volta de pessoas antigas que estavam sumidas

E o pessoal usou suas máscaras de Guy Fawkes e não foi nada anonimo:

  • Não participar do dojo inteiro
  • Pessoas sem pilotar
  • Formulação do problema
  • A linguagem atrapalhou no final do problema
  • Não terminar de resolver o problema
  • Muita gente sem fantasia
  • Muito falatório
  • Discussões boas, mas muitas fizeram com que o grupo ficasse meio perdido
  • O Thiago Belem faltou >_<
  • Um problema como o do Parser pode assustar os novatos
  • Não usamos o problema que a Cissa tinha sugerido antes
  • Representação
  • Como o quadro é pequeno, nem todo mundo consegue ver o quadro todo e acompanhar a explicação =/
  • Falamos no vermelho +
  • Não trouxe nenhum possível problema temático (Carnaval)
  • Demora para começar
  • Levei 2 tiros …de NERF XD

E para quem quiser estar conosco no dojo@Centro é só vir e entrar na  Íparos – Av Treze de Maio, 13 – 6° andar – Cinelândia, a partir de 18:30. TODOS SÃO BEM VINDOS e qualquer dúvida, sugestão ou qualquer outra coisa, nós vemos os comentários e temos um grupo (grupo do gmail) – fiquem completamente a vontade para participar do dojo, da lista (vulgo grupo) e tudo mais \o/.

Até a próxima quarta 😀 o/