Postagem em destaque

Código Limpo: Nomes Significativos

Imagem
Às vezes fico com um assunto na cabeça por semanas, até achar uma situação ou um exemplo que esclareça a situação. Explico: estava querendo já a algum tempo escrever sobre boas práticas de programação, e pensei em iniciar por "Nomes Significativos", para seguir a nomenclatura utilizada pelo ótimo livro Código Limpo , de Robert C. Martin.  Entretanto, ficava sempre amarrado em exemplos que pareciam ser bons, mas que ainda eu não tinha visto a utilidade prática.  Antes de continuar preciso explicar que tenho um hábito de anotar num bloco de papel todas as ideias que surgem, pois elas desaparecem com a mesma velocidade que aparecem. Para isso tenho um bloco e caneta na mesa de cabeceira (além de um no banheiro), pois esses são os lugares onde tenho mais ideias... Vai entender... Semana passada, estava com um problema bem complicado e tive uma ideia: "vou criar uma variável para indicar que quando um arquivo tiver um certo tamanho deve gravar algumas informações no log. Pois

O poder da mente sobre a matéria

Um GEA (Gerador de Eventos Aleatórios) ou REG (Random Event Generators) produz uma série de 0 (zeros) e 1 (uns), e por serem aleatórios deveriam ser gerados na mesma quantidade. Através do uso da mente, supostamente seria possível alterar a quantidade de 0s ou 1s geradas.

Como sou curioso e cético, resolvi verificar se isso é verdade. E para tanto, fiz um pequeno programa em Delphi (clique aqui para fazer o download do programa). O programa é simples: durante 5 segundos são gerados e contabilizados milhares (depende do seu computador) de números 0 e 1. Após isso o resultado (números de 0, números de 1 e relação entre eles) é impresso na tela e o processo é repetido indefinidamente.
program GEA;

uses
 Windows, SysUtils, Dialogs, forms;

var
 n0, n1: integer;
 i, t: longint;

begin
  Randomize;
  Repeat
    t := getTickCount();
    n0 := 0;
    n1 := 1;
    repeat
      for i := 1 to 100 do begin
       if int(random(2)) = 0 then
         inc(n0)
       else
         inc(n1);
      end;
      sleep(1);
    until (getTickCount() - t) > 5000;
    writeln(Format('%d;%d;%1.3f', [n0,n1,n1/n0]));
  until false;
end. 

Algumas considerações: utilizei o gerador de números aleatórios do próprio Delphi, ou seja, ele não é 100% aleatório. Falo isso, pois John von Neumann comentou certa vez:
"Qualquer um que considere métodos aritméticos para produzir dígitos está, certamente, cometendo um pecado".
Fiz alguns testes e não consegui nenhum efeito digno de nota. Até parece pesquisa eleitoral, pois a relação entre 0s e 1s sempre ficou dentro do limite de 3% para mais ou para menos, ou seja, praticamente o mesmo número de 0s e 1s foram gerados. Mas acho que a falha foi minha pois pensar na Sandy talvez não afete o GEA!

Comentários

Postagens mais visitadas deste blog

Netflix não mostra ícone de streaming

Google Hacking

FTP não funciona no PHP