História do Unix, Windows e Linguagens de programação

Pois bem… faz algum tempo que não publico nada por aqui e para (re)começar bem vou abordar uma questão de história.

Conversando com minha noiva sobre a história da computação, me lembrei de um site (na verdade um PDF) que possuia uma árvore genealógica do sistema Unics (que depois virou unix) desde sua origem em setembro de 1969. Como da última vez que o acessei este site ainda estávamos no Linux Kernel 2.4.5 (Junho 2001) não sabia se ele ainda existia e se ainda estava sendo atualizado. Pra variar utilizei o google e voialá! achei o bendito.

Fiquei feliz após análisa-lo e constatar que está extremamente atualizado, sendo que a última entrada é do Darwin 8.5 (junto com o MacOS X) de 15/02/2006. Não são todos os sistemas que se encontram neste gráfico, o próprio autor avisa que existem 96 “sabores” (que ele conhece) que não estão relacionados.

Ainda no mesmo site, achei dois outros links para árvores genealógicas do Windows e das linguagens de programação.
No caso das linguagens, são listadas apenas 50, porém existe uma listagem com 2500 linguagens em The Language List.
Segue abaixo os links:

Nos sites, encontram-se um preview do gráfico (para visualização no browser) e arquivos PDF e Postscript para impressão em A4, letter e Plotter dos diagrama. No caso do Unix existe também um índice das diversar versões com seus respectivos anos de “nascimento”.

Outros links interesantes que podem ser encontrados:

Recomendo que quem tem interesse em história da informática, dê uma navegada nesse site. Existem diversos outros links com muito mais informações.

A propósito falando de história, não sei quem havia me perguntado dia desses, qual era a primeira versão de kernel do Linux que “vi” o lançamento… era o 2.0.36 (em novembro de 1998). Nessa época eu usava o Minilinux, uma distro em 4 disquetes baseada em Slackware que era instalada sobre FAT32 e vinha até com X-Window (se alguém quiser, ainda tenho ela aqui :) ). Nesse ano também, foi quando fui para a fenasoft e adquiri da “Conectiva Internet Solutions” meu primeiro CD de instalação de Linux que era o “Conectiva Red Hat Linux versão Marumbi”. Foi a partir dai que me encantei com esse sistema e o utilizo até hoje, principalmente em servidores.

[update 08/05/06]

Achei outro link com um poster em pdf da O’Reilly com 50 linguagens de programação: The history of Programming Language.

[/update 08/05/06]

Pilha de tecnologias do W3C

Navegando pelo site do World Wide Web Consortium (W3C), encontrei um diagrama que sempre imaginei existir mas nunca tinha achado. trata-se de uma imagem que apresenta de forma simples e objetiva onde se encaixam e qual a utilidade de cada uma das tecnologias recomendadas pela W3C.


Clique sobre a imagem para visualizá-la em tamanho natural.

Para quem imaginava que os Web Standards resumiam-se apenas ao XHTML, CSS, DOM e XML pode ter se impressionado com a quantidade de padrões disponíveis para uso. Se você tem interesse em desenvolver sites/sistemas seguindo os Padrões Web, este poderá ser um bom ponto de partida. ;)

Para efeito de referência o link onde achei esta imagem é: About W3C: Technology.

Otimizando a compilação de aplicações no linux com Make em servidores multiprocessados

Se você possui um computador com suporte SMP (Symmetric MultiProcessor) é possível compilar os programas que utilizam o make (a grande maioria, se não todos) utilizando dois ou mais processadores. Para isso digamos que a aplicação em questão possui um arquivo Makefile, edite-o e procure pela linha:
MAKE=make

ao final da linha adicione a opção -jN, onde N é o número de jobs (ou processos de compilação) que serão executados simultaneamente.

?? aconselhável que N seja definido como o número de processadores da máquina +1, ou seja, digamos que você possui uma máquina com 2 processadores Dual Core, então você poderia alterar a linha para:
MAKE=make -j5

Caso o arquivo Makefile não possua a entrada MAKE, então você poderá adicionar a opção -j diretamente ao executar o make:
# ./configure
# make -j5

Se você possui muita memória RAM/Swap, pode testar a opção -j sem nenhum número, desta forma o make não irá limitar o número de atividades simultâneas.

?? possível também calcular a duração das compilações para avaliar qual o melhor valor para a opção -j, para isso utilize o comando time. Por exemplo:
# ./configure
# time make

Efetuei um teste compilando a aplicação RRDTools em um servidor Dual Xeon. A compilação normal durou (real) 1m38s. Já compilando com a opção -j5 a duração foi para 46s ou seja 54% mais rápido.