segunda-feira, 2 de janeiro de 2006

Resumão do ano passado

Estava lendo o resumo do ano passado e percebi o quanto o tempo passa rápido. Este ano que passou não deu pra fazer muito coisa. Mais uma vez aquela fala do professor Márcio (Eletrônica) se concretiza: "Passa rápido porque observamos muito pouco o que acontece ao nosso redor".

Mas não dá pra mudar muito né?! Pra quem trabalha fechado numa sala olhando pra um monitor o dia todo há muito pouca coisa pra observar. Dá vontade é que chegue logo a hora de ir embora :) .

Mas mesmo assim, alguma coisa aconteceu. Mais uma vez vou fazer o resumão do ano na faculdade:

Começando com minha lingua afiada, no primeiro semestre Economia e Custos foi muito sem futuro, nenhum conteúdo muito útil, mas pelo menos a professora não pegava no pé. Média 10.

Se tem uma matéria que achei legal foi Linguagens formais. O Pelágio sabia muito bem o que falava. É meu estilo de professor também, bastante metódico.

Sistemas operacionais foi legal, bastante coisa nova. Se precisar fazer um SO qualquer dia desses já tenho por onde começar. Pena que o Fabian atropela os alunos com a matéria.

Em arquitetura até que houve alguma coisa nova, mas não sou muito chegado no esquemão do Miguel de dar aula. Ele vai muito na conversa dos alunos e esquece da aula. Também não gosto de copiar este tipo de matéria do quadro porque enrola demais.

Banco de dados II foi um pouco complicado. A professora não tinha muito domínio do assunto e a matéria é bastante complicada de abordar da forma que ela queria. Na minha opnião valeria mais aprender a trabalhar com otimização de SGBD's, já que a base de criar tabelas nós já conheciamos. Uma parte legal foi o projeto que ela pediu pra fazer. Se alguem necessitar, pode pedir que disponibilizo. É um catalogador de periódicos em geral (revistas, etc).

No segundo semestre a batalha começou. Ô semetre complicado, sinceramente foi o semestre "nada".

Em sistemas operacionais II o bicho pegou. Sinceramente, aprender VALE4 foi horrível. Sem falar que não vou utilizar vale4 no dia a dia a não ser se resolver ser professor de SO. Poderia explicar como fazer aquilo tudo em um framework real como ele tentou no final com MPI. Mas não adianta falar "façam!" e ficar esperando. Professor tem que ensinar, não dizer o que você tem que aprender.

Em redes não houve muita novidade. Apenas algumas formalidades a mais e a definição correta de cada coisa (protocolos, camadas, etc).

Em compiladores e complexidade de algoritmos o bichou pegou novamente. O professor podia ter seguido algum livro. A materia que ele explicou ficou sem sequencia, sem relacionamentos. O cérebro só aprende relacionando problema com solução, novidade com conhecimento pré-adquirido.

Gostei de pesquisa operacional. Matemática é minha praia e a professora sabia o que falava. A matéria foca-se em "como resolver problemas do dia a dia" e isso é muito útil.

Em resumo na faculdade não foi muito legal, mas dos males o menor pois agora só faltam TRÊS períodos!

Agora, se houve algo que gostei de ter começado a fazer foi estudar violão clássico. Vocês puderam ver algumas gravações aqui. Em breve disponibilizarei outras. Gosto muito de fazer isso. Este foi o primeiro ano de estudo, acredito que vários outros estão por vir!

Comecei a namorar novamente e estou apreciando muito, quem sabe não dá festa de doces daqui algum tempo? :D

Também troquei de moto e viajei pra São Paulo, na Borcon. Foi muito legal e proveitoso. Bastante novidade, gente nova que só conhecia por nome em revista. São estes eventos e este conhecimento que soma na vida.

Devo estar esquecendo de muita coisa, mas em resumo é isso. Desejo a todos um novo ano repleto de realizações! Mas não fique esperando acontecer, faça algo se realizar!

quinta-feira, 3 de novembro de 2005

Apresentação RTOS - Sistema Operacional de Tempo Real

Antes de mais nada, a receptividade em sala na terça foi muito legal. Obrigado a todos que se fizeram presentes.

Estou publicando o material para referencia futura. Talvez nem tão futura assim, a prova é semana que vem! :D

Abaixo também estão as matérias na istoé e no globo reporter sobre os carros "sem piloto". Não deixe de ler, é bastante interessante.

Artigo
Apresentação
O piloto sumiu!
Japão, 60 anos depois

quarta-feira, 19 de outubro de 2005

Criando máquinas virtuais com Qemu

Muitos alunos ficaram interessados na apresentação de trabalho sobre Qemu da Cristiane ontem. Ela resolveu publicar o artigo para quem quiser ter uma noção completa do tema.

Clique sobre os links para baixar os arquivos em formato pdf da apresentação e do artigo:

Artigo
Apresentação

segunda-feira, 19 de setembro de 2005

Uma nova gravação

Isso aqui já está quase se tornando blog de música clássica mesmo, então aqui está mais uma gravação pra quem curte um som de violão clássico!

É uma composição de Francisco Tárrega, conhecida como "Mazurka". Mazurka é um rítmo polonês de dança popular de roda. (veja na wikipedia)

Mazurka - Tárrega

Espero que gostem!

segunda-feira, 12 de setembro de 2005

Ensino sequencial, é tão difícil assim?

Quando estudei linguagens formais com o professor Marcelo Pelágio fiquei muito entusiasmado e ancioso pra colocar logo a mão na massa e utilizar ferramentas construídas com base nos problemas já conhecidos na contrução de compiladores (lex, yacc). A maior vontade era ver um autômato daquele virar código fonte de compilador. A maioria da turma aprendeu a matéria muito bem.

Existe algo chocante na troca de professor. Seria muito interessante se houvesse uma continuação. Pra que vai servir aquela matéria agora? Você se esforça, pergunta, tenta compreender, enfim, pra que? Você podia estar muito bem testando seu compilador, na linguagem que você inventou, ao invés de ficar lendo este artigo aqui agora ou pior ainda, estar aprendendo a programar na aula de compiladores.

Nada contra aprender programar, pelo contrário. Só acredito que a aula de compiladores não seja o lugar ideal. Na verdade penso que deviamos estar implementando um compilador de linguagem, usando autômatos, follow, first, e tudo mais. Porém, esta questão é polêmica e vou deixar de lado.

Bom, vou fazer uso daquele conteúdo neste artigo, mais precisamente da parte de recursão à esquerda, embora de uma forma pouco usual.

O último exercício pedido na disciplina de Compiladores foi o reconhecimento de uma expressão algébrica. Minha dúvida tentava fazer o professor perceber que aquela regra de produção está com recursão a esquerda, e por isso está tão difícil perceber como validar a sintaxe.

O "livro do dragão" explica muito bem isso. Bater o olho e perceber o que é reconhecido pela regra de produção fica bem mais fácil se eliminarmos a recursão. Lembra-se que o professor Pelágio dizia que não é possível implementar uma regra com recursão à esquerda?

Veja a regra com recursão:

<soma> -> <soma> <sinal> <termo> | <termo>
<sinal> -> + | -
<termo> -> 0|1|2|3|4|5|6|7|8|9

Agora sem recursão (alfa e beta, se lembra?):

<soma> -> <termo> <soma2>
<soma2> -> <sinal> <termo> <soma2> | E
<sinal> -> + | -
<termo> -> 0|1|2|3|4|5|6|7|8|9

Ou mais simples ainda:

<soma> -> <termo> <soma> | + <termo> <soma> | - <termo> <soma> | E
<termo> -> 0|1|2|3|4|5|6|7|8|9

Derivando isso, observamos que sempre teremos as seguintes combinações:

<termo>
<termo> + <termo>
<termo> + <termo> - <termo> ...
<termo> - <termo>
<termo> - <termo> - <termo> + <termo> ...

Ou seja, "um só termo" ou "um termo e sequências de sinal seguido de termo".

Desta forma fica mais fácil desenvolver o algorítimo.

Vamos desenvolver um protótipo. Para cada item da regra de produção defina uma função. Crie também uma função chamada "erro" que quando executada mostra a mensagem "erro de sintaxe" e sai do programa. Veja abaixo os exemplos. Observe os comentários antes de cada função.


void erro() {
printf("Erro de sintaxe!\n");
exit(1);
}

/* Sai do programa se a palavra recebida como argumento não for
* o sinal de adição ou o sinal de subtração
*/
void sinal(char *palavra) {
if (*palavra != '+' && *palavra != '-')
erro();
}
/* Sai do programa se a palavra recebida como argumento não for
* um número
*/
void termo(char *palavra) {
se (!isdigit(*palavra))
erro();
}

/* A regra de produção em si. "Um termo"
* ou "um termo e sequencias de sinal e termo"
*
* A função proxPalavra retorna a próxima palavra do
* arquivo que foi lido no inicio do programa, está em anexo no final.
*
*/
void soma(char *textoDoArquivo) {
char *palavra;
palavra = (char*)malloc(sizeof(char)256);

proxPalavra(palavra, &textoDoArquivo);
termo(palavra);
while(1) { /* infinitamente (a recursão da regra de produção é esta) */
proxPalavra(palavra, &textoDoArquivo);
sinal();
proxPalavra(palavra, &textoDoArquivo);
termo();
}
}

Depois que você abrir o arquivo e carregar seu conteúdo, chame a função soma passando a variável com o conteúdo do arquivo.

Em resumo, não mudou nada. Derivar a regra de produção é a forma mais fácil de saber por onde começar, como era em Linguagens Formais.

Baixe o arquivo com a função proxPalavra()

Tenho também a função que lê todo o arquivo e armazena em uma variável. Se estiver interessado é só me pedir por e-mail.

domingo, 17 de julho de 2005

Férias, um pouco de tempo sobrando e...

Bem, olha só o que aprontei. Nem todo mundo sabe, até porque não divulgo muito isto, mas tenho uma certa "paixão" por violão clássico.

Estava sem muito o que fazer e tinha comprado um fone de ouvido com microfone pra afinar o violão pelo computador (fica 100%) então pensei: porque não gravar algumas músicas? :D

Por enquanto são apenas cinco. Três de Bach, uma sonata de Handel e uma bem famosa de Francisco Tárrega, Lágrima.

Bourree em Em - Bach
Minueto em D - Bach
Jesus Alegria dos Homens - Bach
Sonatine - Handel
Lágrima - Tárrega

Meu violão não é uma maravilha, pra não dizer genérico. O que salva são as cordas da giannini de tensão alta, uma maravilha.

Não se asuste com a extensão do arquivo. Este formato (ogg) é bastante popular e livre. Qualquer player suporta, inclusive o winamp.

Por fim, pra quem achou que o post iria acabar sem informática, gravei tudo no Audacity que por sinal me surpreendeu bastante. Tem de tudo pra gravação e edição de som, é livre e ainda fala nosso idioma. Quer ver as screenshots?

quarta-feira, 11 de maio de 2005

Seminário Reiser4

Acadêmicos, fiquei surpreso e alegre com a receptividade em sala ontem, no seminário de Reiser4. Todo mundo me olhava com um rosto que só eu terei guardado na mente! Aparentemente era uma mistura de espanto com quero mais, que seria impossível explicar com palavras. Indiscutivelmente interessante.

Ficou faltando um detalhe importante. Seria a tal versão 1.0 da apresentação. Como disse, a figura da árvore foi substituída, porém esqueci de atualizar o maldito disquete :D

A figura adicionada foi esta aqui.
Nela você pode notar, no canto inferior esquerdo, os itens (azuis) detro das folhas da árvore. O detalhe nisto é a fragmentação. Da forma como foi implementado, o conteúdo de um arquivo é dividido em um ou mais itens em uma ou mais folhas. Isto reduz a fragmentação interna, elimina a fragmentação externa e faz com que o Reiser4 seja mais eficiente no aproveitamento de espaço que outros sistemas de arquivos.

Baixe aqui a apresentação.

Espero que tenha sido de bom proveito para todos.