Minha apresentação…

Olá, geeks do meu Brasil varonil. Sejam bem vindos ao Bit is Myth! Fui convidado por meu amigo Marz para co-autorar artigos técnicos relacionados ao desenvolvimento de software por aqui, que espero, tenha uma boa aceitação. Dito isso, apresento-me a vocẽs:

Meu nome é Frederico (meus amigos me chamam de Fred) e tenho cerca de quase 30 anos de experiência na área (assim como Marz) – é que comecei a estudar essa “coisa” aos 13 anos de idade – tenho 42 agora! Acontece que prefiro certas disciplinas: Performance, desenvolvimento de aplicações relacionadas com computação gráfica (3D), aspectos relacionados ao hardware… Um monte de bare metal stuff. Não me considero um desenvolvedor “tradicional”. Por exemplo, aplicações que lidam com bancos de dados não são muito de meu agrado. Acho SQL um saco! Isso não significa que não tenha experiência com esses aspectos mais “mundanos” e que não esteja disposto a ajudá-los, em caso de dúvidas.

Nos anos 90 publiquei um conjunto de artigos que foram gentilmente chamados de “curso”, numa rede de BBSs nacionais conhecida como RBT (Marz até me ajudou a converter os textos, escritos no Wordstar — e mais tarde num editor chamado Boxer — no MS-DOS, para a codificação UTF-8, mais moderna). Grande parte deste texto está desatualizada, hoje. Mesmo assim, sempre tive vontade de publicá-lo, revisado. Nunca fiz isso… Hoje, tenho a oportunidade de colaborar com meu amigo, na tentativa de reviver aqueles bons tempos.

Não se preocupem: Não vou tentar enfiar “assembly” goela abaixo de vocês, embora algum conhecimento de assembly seja ideal para entender algumas coisas que pretendo postar por aqui.

Minha linguagem de programação de preferência é “C”. Nesta época de “orientação a objetos” e “cloud computing” isso pode parecer estranho, mas dêem uma olhada nas estatísticas a respeito do uso de linguagens de programação (veja aqui). “C” é a linguagem mais usada desde os anos 70 até hoje. Eventualmente mostraremos, eu e Marz, alguns aspectos de “C++” e outras linguagens mais atuais, como Perl, Python, PHP, C#, Java,… Mas, acredito que “C” é a que nos dá o melhor conjunto de ferramentas para o desenvolvimento de alta-performance.

Vou restringir o assembly no contexo das rotinas em “C”, ou seja, para entendermos o que o compilador está fazendo pode ser necessário ordená-lo a gerar o código em assembly correspondente e ver o que está acontecendo. Quando este for o caso, o sabor do assembly que usarei é o da Intel (já que estamos falando, essencialmente, da arquitetura x86 aqui), não o da AT&T (que é o “preferido” do compilador “gcc”, usado no Linux e no Windows — via MinGW32 ou Cygwin). As diferenças são mínimas:


Intel:  mov eax,0
AT&T:   movl 0,%eax

Acho o “estilo” da Intel mais enxuto e mais fácil de entender, já que atribuições são feitas da direita para a esquerda. As instruções em assembly acima poderiam ter vindo da seguinte linha, em “C”:

 
   int i = 0;

Como vocẽs podem ver, o zero é atribuído da direita para a esquerda. Pra mim, o “estilo” da AT&T é meio contra-intuitivo, neste sentido. Além disso, este mesmo estilo modifica o nome do mnemônico da instrução de acordo com os seus operadores (parâmetros). Parece óbvio que, se estamos usando um registrador de 32 bits, a instrução MOV movimentará 32 bits. Então, pra que modificar o nome da instrução para “movl” (move long)?

E, falando em estilos, note que o MEU estilo não deve ser seguido à risca. Aliás, o estilo de ninguém deve ser seguido dessa forma. Estilos são como opiniões: todo mundo tem a sua (a frase não é bem essa, mas estou tentando ser educado aqui. hehe). Marz e eu falaremos sobre estilos eventualmente. Vocês ainda perceberão que os nossos estilos diferem um cadinho…

Mais uma coisa: O compilador que usarei para todas as explicações e testes será o GCC, versão 4.4, disponível para Linux, mas os códigos também poderão (em teoria) serem compilados com uma versão mais antiga do GCC, disponivel para Windows nos pacotes do MinGW32 ou no Cygwin. Também, em teoria, vocês poderão usar o Compiler and Linker da Microsoft (cl.exe), disponível na versão express mais recente do Visual Studio (que pode ser baixado aqui). Só não posso garantir que tudo funcionará perfeitamente bem — pode ser que alguns ajustes no código sejam necessários.

Bem… reitero a posição de que seus comentários e dúvidas irão direcionar o conteúdo de minhas postagens.

Anúncios

Um comentário sobre “Minha apresentação…

  1. Welcome aboard!

    Cara, manda ver nos textos ou me autoriza a publicá-los já.
    To bordando um pouco na divisão das sections do blog e testando os links.

    Acho que vc ir revisando e publicando na sequência original será uma forma interessante de manter o blog aceso sem dar “muito trabalho” pois o material já existe e é bom ! Bom, não ótimo. Revisá-lo, vai ser uma boa para eu poder me inteirar mais.

    Well, vamo blogar.

    Vale colocar artigos antigos tb. Quanto ao visual, sinceramente gosto do estilo clean deste tema, é ótimo para começo pois ficamos atentos ao conteúdo em vez do visual. Depois a gente escolhe um mais maneiro.

Deixe um comentário

Faça o login usando um destes métodos para comentar:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s