Mostrando postagens com marcador programação. Mostrar todas as postagens
Mostrando postagens com marcador programação. Mostrar todas as postagens

sábado, 3 de abril de 2010

Jogando Quake 2 em HTML5


Três engenheiros da Google, aparentemente sem muito o que fazer, rodaram o jogo Quake 2 em um browser de internet, usando os recursos fornecidos pelo novo modelo de HTML, o HTML5.


O HTML5 ainda não chegou de verdade, apenas alguns navegadores fornecem suporte a ele (e somente versões bem recentes), mas ele promete ser compatível com a WEB 2.0 (que nada mais é do que usuários de um site como produtores de conteúdo, por exemplo você colocar um comentário nesse post :) ). Talvez fique como assunto para mais um post.
Para quem tiver mais interesse o site do projeto é esse. Lá tem mais detalhes e instruções de como se jogar o jogo e etc.

quinta-feira, 26 de março de 2009

Aprendendo matemática e computação com Mangá

É isso mesmo que você leu no título. Digo, a proposta é essa, o problema é saber se funciona mesmo. Quer entender que ideia insana é essa?



Na página http://www.edumanga.me você poderá encontrar uma série de livros chamada Maga Guides. São eles:
Essencialmente, são livros didáticos sobre ciências exatas. Até aí, tudo bem, mas como o nome já sugere, eles são escritos de uma maneira bem inusitada, em formato mangá. Isso mesmo. Pra quem não sabe, mangá são aqueles quadrinhos japoneses que sofreram uma popularização enorme nos últimos anos aqui no Brasil.

A página da editora permite a visualização de um pedaço do livro para vermos como ele é feito: confiram clicando aqui.

Segundo um escritor de um blog americano, os livros estão sempre divididos na forma:

1. Quadrinhos
2. Texto suplementar dos quadrinhos
3. Exercícios
4. Sumário

Legal, mas tudo isso nos remete àquelas questões inevitáveis: dá pra aprender mesmo? Alguém realmente usa isso? Qual é a vantagem em relação a um livro de verdade?

Quanto à primeira pergunta, eu não duvido que dê para aprender. Obviamente, não podemos esperar do livro algo como um Guidorizzi (no caso do Cálculo) em mangá. Isso seria impossível. Mas provavelmente essa série cumpre o que promete: ensinar as matérias (pelo menos o essencial delas) de uma forma menos entediante.

O cerne do problema então, está em responder se isso realmente constitui uma vantagem com relação aos livros-texto tradicionais. E a resposta dessa questão eu deixo com vocês.

Até.

domingo, 15 de março de 2009

Boa Maneiras na hora de programar.

O grande problema em programação é que cada um faz de um jeito. A bem da verdade, entre um POG e outro, o programador deia sua marca no código fonte. E isso as vezes pode ser um problema para seus companheiros. Códigos desorganizados, variáveis com nomes estranhos, seqüencias em uma única linha, e um verdadeira confusão em algorítimos que ninguém, as vezes nem mesmo o criador, sabe explicar para que aquilo serve.



Em virtude disso, sem nenhum local centralizador, um código de boa conduta, passado de boca em boca, com a experiência dos Seniores surgiu, completamente desorganizado, assim como o código fonte de seus criadores, mas ele não passa se um apanhado de regras simples e intuitivas sobre como deixar seu código fonte um broto:

#1 – Comente meu Rapaz.

Comentar é uma maravilha moderna! Algo que as mulheres fazem muito bem! Comentar o código é o que devemos fazer, quanto mais melhor! Criou uma Procedure nova? Explica o milagre que ela faz! Aquele trecho meio satânico do código então. Use 20 linhas para descrever a lógica dele! Faça do seu POG um manual. Assim, até mesmo você saberá o que ele faz.

#2 – Mantenha as coisas bonitas.

Quanto mais bonito, mais organizado, mais fácil de entender. A não ser que você tenha ótimos motivos para criar um código confuso, trabalhoso, duro, penoso, e chato de ler, entender e acompanhar. Mantenha seu código limpo.

#3 – Identação.

Você sabe usar a tecla TAB? Então use-a! Identar um código fonte é ótimo para não se perder, não esquecer de fechar condicionais, loops e até mesmo o próprio código fonte, e para variar, deixa tudo mais organizado, mais limpo, mais agradável aos olhos. Simplesmente faça, alinhe os códigos com espaçamento de acordo com o início de uma função, condicional, loop, contador, ou seja lá o que você for fazer! Alinhe e respeite sempre a hierarquia da coisa!

#4 – Espaçamento entre os objetos.

Assim como o TAB, a barra de espaço é uma grande amiga! Use-a para separar as coisas, fórtumas matemáticas, virgulas, variáveis, e o que vc estiver com vontade de separar. Escrever tudo grudado em uma única linha é algo que vai deixar qualquer um puto por ter que futuramente efetuar a manutenção do seu código.

#5 – Quebra de Linha.

Isso mesmo, nada de escrever linhas extensas, compridas e cheia de coisas, use o ENTER!
Quebra de linhas tornam a leitura mais rápida e eficiente! Acredite, é realmente ruim ter que deslizar a barra de rolagem inferior. Evite ao máximo isso! Use quebra de linha

#6 – Nomeie Corretamente

Variável, constante, procedure, módulo, função, seja lá o que você for criar, apenas nomeie de um jeito que seja possível ter uma noção do que aquilo faz, ou até mesmo você vai se esquecer,
#7 – Funções “Faz Tudo”

Okay, se você fez alguma função desse tipo... Pare de ler agora e abandone a vida de programador.
Nenhuma função faz de tudo. Isso só serve para deixar seu código confuso, pesado e cheio de coisa inútil. Crie funções específicas, que resolver um tipo de problema. O resto você pensa depois, cria outra função. E não esqueça de comenta-las.

#8 – Siga uma convenção de nomenclaturas, ou crie a sua

De nomes de acordo com o objetivo da função, variável, constante, etc... se for um inteiro inicie o nome com “int”, se for do tipo double “dbl” de depois de o nome padrão para a coisa em sí. Isso auxilia a saber de que classe aquele objeto pertence. Outros Exemplos são “btn” para botões, “lbl” para Label e assim por diante.

#9 – Go To( )

Nunca, nunca em toda a sua vida use essa função ou algo similar! Mantenha seu código linear, estruturado, caso esteja usando uma linguagem estruturada, não tente criar orientação em linguagens que não foram criadas para isso! O contrário também é valido. Se você está programando de maneira orientada a objetos, ou seja lá o que for. Siga isso a risca! Jamais misture as coisas!


Referências :

http://www.ibm.com/developerworks/aix/library/au-hook_duttaC.html
http://www2.eletronica.org/artigos/eletronica-digital/programando-em-c-boas-praticas
http://javafree.uol.com.br/artigo/871700/Aprendese-a-programar-bem-sabendo-o-que-nao-se-deve-fazer.html
http://msdn.microsoft.com/pt-br/library/cc580565.aspx

quinta-feira, 12 de março de 2009

Fortran >> Double free or corruption erroremp

Um erro identificado como Double or Free Corruption em um programa de Fortran significa que de alguma forma a função Free() (C Runtime) foi invocada com um ponteiro inválido. Neste caso, o compilador gfortran joga na tela a seguinte mensagem:
*** glibc detected *** ./exemplo: double free or corruption (out): 0x0000000000607590 *** (...)

O erro foi obtido com o seguinte programa:
program free
integer, allocatable :: data
integer :: i

allocate(data(5)) ! aloca o vetor data
do i = 1, 5
data(i-1) = i ! medida proibida!
end do
deallocate(data) ! desaloca para fechar o programa.
end program free


Uma causa muito comum deste erro é o exemplo que acabmos de mostrar: tentar sobrescrever parte da memória que está fora do alcance do programa, tal como tentar alcançar um índice inexistente de algum vetor.

Versões mais recentes do Fortran (90, por exemplo) permitem que o usuário utilize alocação dinâmica de vetores, isto é, pode-se declarar um vetor sem necessariamente ter que definir o número de componentes (nem rank). Para facilitar, pode ser de grande valia, ao compilar seus programas, utilizar a seguinte opção:

-fbounds-check

Se compilarmos o programa exemplo usando

gfortran -fbounds-check exemplo.f90 -o exemplo

então o compilador jogará uma mensagem acusando erros desse tipo:

$ ./free
At line 6 of file free.f90
Fortran runtime error: Array reference out of bounds for array 'data', lower bound of dimension 1 exceeded (0 < 1)

Menos dor de cabeça pra nós, assim...