[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