[GUFSC] [off-topic] Piadinha nerd.
Gleidson Echeli Leopoldo
gleidson em inf.ufsc.br
Quinta Setembro 14 21:42:54 BRT 2006
Segue piadinha para descontrair:
Quanto custa uma tag?
ou
Por que é importante se formar um cientista em "ciência da computação"?
------------------------------------------------------------------------
Qual a diferença entre as duas formatações a seguir?
exemplo 1:
<i><b>Hello World!</i></b>
exemplo 2:
<i><b>Hello World!</b></i>
Provavelmente se dirá que é apenas uma questão de ordem e que não fará
diferença nenhuma pois o resultado será o mesmo, a string "Hello World!"
aparecerá em negrito e itálico nos dois casos.
Mas será que é só?
Se você fosse um computador qual método utilizaria para processar as
tags afim de obter o resultado desejado?
Recomenda-se o aninhamento das tags de forma que você deve fechar os
elementos de marcação (tags) na ordem em que foram abertos.
Parando para pensar um pouco, a recomendação anterior nos faz crer que o
processamento das tags é feito via pilha(stack). Da seguinte forma:
No primeiro exemplo:
********************
Análise da tag <i>: tag de INÍCIO de formatação de texto
1° push/insiro 'i' na pilha
Análise da tag <b>: tag de INÍCIO de formatação de texto
2º push/insiro 'b' na pilha
Análise da tag </i>: tag de FIM de formatação de texto
3º pop/retiro 'b' da pilha
4º comparo o 'b' retirado da pilha com a tag atual,
por serem diferentes
5° salvo 'b' em algum lugar da memória pois ainda não se encontrou
sua tag de finalização
6° pop/retiro 'i' da pilha
7º comparo o 'i' retirado da pilha com a tag atual,
por serem iguais passo para a próxima tag do texto
Análise da tag </b>: tag de FIM de formatação de texto
8° comparo a tag atual com 'b' pois a pilha já está vazia
Fim do processamento do exemplo 1.
No segundo exemplo:
*******************
Análise da tag <i>: tag de INÍCIO de formatação de texto
1° push/insiro 'i' na pilha
Análise da tag <b>: tag de INÍCIO de formatação de texto
2º push/insiro 'b' na pilha
Análise da tag </b>: tag de FIM de formatação de texto
3º pop/retiro 'b' da pilha
4º comparo o 'b' retirado da pilha com a tag atual,
por serem iguais passo para a próxima tag do texto
Análise da tag </i>: tag de FIM de formatação de texto
5º pop/retiro 'i' da pilha
6º comparo o 'i' retirado da pilha com a tag atual,
por serem iguais passo para a próxima tag do texto
Fim do processamento do exemplo 2.
Como podemos notar o processamento realizado no exemplo 1 tem dois
passos a mais que o exemplo 2, o passo 4 e o passo 5, passos esses
desnecessários. No quarto compara-se valores diferentes, no quinto
salva-se dados.
E daí? Não funciona? Então tá bom!
Sim funciona. Mas a que custo? Esses dois passos a mais do exemplo
1 em termos computacionais significam o quê?
Mais processamento, na seguinte proporção:
6 (passos) --- 100%
8 (passos) --- x %
x = 800 / 6
x = 133,33%
Ou seja, um terço, ou 33%, a mais de custo de processamento.
E o que é custo de processamento? É custo de energia elétrica.
E o que é custo de energia elétrica? É custo de dinheiro.
Moral da história: 33% da conta de luz deve ser paga pelo
programador web.
-----
Fonte:
http://www.myfreebsd.com.br/modules.php?name=Forums&file=viewtopic&t=989
--
Gleidson Echeli Leopoldo
Ciências da Computação | UFSC
Mais detalhes sobre a lista de discussão GUFSC