segunda-feira, 30 de janeiro de 2012

Linguagem C

A linguagem de programação C é mal compreendida por muita gente, inclusive por alguns que programam nela. Alguns pensam nela como uma linguagem de alto nível, como Pascal, Java, PHP, BASIC (Visual Basic não é BASIC), Visual Basic etc, mas ela não é bem assim. Ela nasceu na Bell Labs, criada por Dennis Ritchie quando migravam o Unix para o PDP 11. Atualmente pode-se dizer que é a linguagem de programação mais importante do mundo.

O C não tem tipos tão fortes e limitados quanto as linguagens de alto nível. O C tem dualidades, tal como a dualidade ponteiro/array, de string/ponteiro/array, caractere/inteiro, tal como a Física tem a dualidade onda/partícula para as radiações eletromagnéticas. Estas dualidades confundem muito quem aprendeu a programar com linguagens de alto nível e especialmente quem não aprendeu linguagens de baixo nível, como Assembler. Este é um dos motivos que acho que todo programador tem que aprender Assembler, para ter uma ideia de como o computador interpreta as instruções, como são as instruções, o que são, e como o compilador gera código e otimiza os programas em alto nível. O C tem várias das facilidades interessantes de manipulação de dados que se tem no Assembler, mas apresentada da forma de alto nível, o que torna muito mais fácil escrever um programa em C do que em Assembler. É por isto que muitos autores falam que o C é uma linguagem de médio nível.

Entre muitos artigos que pretendo publicar neste blog, Uma boa parte será sobre esta maravilhosa, mas muitas vezes incompreendida, linguagem de programação. Não assumam como um curso básico de C, mas como um complemento ao aprendizado e um convite a discussões e estudos mais profundos.

Por que Mikronomicon

Eu tenho um blog de principalmente fotografia, mas já coloquei algumas coisas de programação nele, porém achei que era off-toppic.  Agora que estou trabalhando com programação resolvi fazer um blog de "nerfices".

Aqui pretendo falar principalmente de informática, de cosias de nerd, de desenvolvimento de softwares. Pretendo ensinar alguns truques que beiram a magia negra, à antiga arte quase perdida da programação consciente. Pretendo ensinar por que fazer algumas coisas de uma forma, e por que não de outra. Pretendo ensinar truques mágicos que podem ser centenas de vezes mais rápidos de executar do que as formas que a maioria dos programadores fazem. Em suma, um dos temas será sobre a magia mais obscura da programação de computadores.

Em busca de um nome acabei fazendo a pergunta no meu Facebook. Um amigo de longa data, o Roberto Assis, me deu uma resposta muito interessante: Micronomicon. A ideia é fazer um trocadilho com o Necronomicon, o livro imaginário criado pelo escritor H.P.Lovecraft em seus livros (ver aqui em Português e aqui em Inglês).  Mas o nome já estava em uso por um blog vazio (na data atual, 29/01/2012), então tive que usar Mikronomicon.

Sei que usar um nome baseado no nome criado pelo Lovecraft sem conhecer a obra dele chega a ser quase desrespeitoso. Posso estar cometendo uma grande gafe, por não entender o que realmente o Necronomicon significa, por não ter lido as obras dele. Posso estar deturpando o sentido. O meu conhecimento sobre o Necronomicon vem de outras fontes, principalmente da Wikipedia. Mas acho que o sentido do livro, e a sua suposta raridade, foram o que mais me chamaram a atenção.

O Necronomicon seria, pelo que eu li, um livro praticamente perdido, com poucos exemplares sobreviventes, e ainda por cima proibido, ensinando uma arte perdida, muito pouco conhecida, chegando a ser muito perigosa. É neste sentido que uso como origem do nome deste blog.

Tal como dizem sobre o Necronomicon original, a leitura pode levar à loucura e à morte. Portanto, leiam o conteúdo deste blog por sua conta e risco, e não me responsabilizo pelas consequências.