domingo, 1 de dezembro de 2013

Descobrindo que programar é muito fácil.


Um dia desses eu vi um comentário em um grupo do facebook falando sobre "como aprender a programar é fácil".

De fato, aprender a programar, na minha opnião, é muito fácil e são poucos os ingredientes:
-Querer aprender;
-Começar a aprender;
-Fazer;
-Fazer de novo;
-Fazer novamente;
-Fazer melhor;
...
-Continuar fazendo;

Pronto, em algum lugar dentro das reticências, talvez vc tenha "aprendido a programar em alguma linguagem".


Bem... agora uma pergunta: "Qual a disciplina/área cujo o aprendizado tais ingredientes não se encaixam ?"

(silêncio mórbido)

(quebrando o silêncio)

Falando sobre programação de computadores, o enfoque e a atração que nos últimos anos tal área vem recebendo, são diversas as pessoas que querem entrar pra esse ramo, ou querem pelo menos ter idéia do que é essa coisa estranha que dá ordem aos computadores e nos fez evoluir tanto.
Com essa curiosidade despertada em muitos, á fácil encontrar grupos de discussões de interessados em programar ou aprender uma determinada linguagem, ou alguma coisa que seja tangente a isso.
Não é a toa que é muito fácil encontrar vários vídeos, livros, blogs, e variadas outras fontes de informações com títulos apelativos do tipo: "Aprenda XXXX em N dias", "Aprenda XXXX em N licões" (troquem o XXXX pela linguagem de programação/método que você quiser e N pelo número que vier à cabeça).


Se pudéssemos comparar, aprender a programar, na minha opnião, é como aprender matemática.

A matemática vc começa muito cedinho a estudar, lá no pré, aprendendo os numeros e sua ordem. Depois, no primário vai evoluindo, aprendendo as operações básicas. Mais adiante no segundo primário (5a a 8a?) aprende algumas operações mais avançadas, e manipulações numéricas já um "cadinho" avançadas, complexas e aplicáveis, tais como equação do 2o grau, estudo dos triangulos, resolução de problemas do tipo que envolvam frutas. E no segundo grau (1o, 2o e 3o ano), vc aprende .... (bem, acho que deu pra entender a ideia.)

Veja que até esse ponto do estudo, você ainda não é um profissional de matemática, mas pode ser um cara muito bom. (conheci talentos que eram ótimos em matemática antes de entrarem pra faculdade.)

Para finalizar:
1- Sim, programar é muito fácil, tal qual aprender matemática, direito, medicina, letras, música, geografia, artes, política...

2-Claro, não sou referência pra quase nada (talvez sirva de exemplo de mau exemplo), então, posso subir em ombros de um gigante e apontar uma de suas obras: http://norvig.com/21-days.html ( Teach Yourself Programming in Ten Years - Peter Norvig)

Não sabem quem é Peter Norvig (http://en.wikipedia.org/wiki/Peter_Norvig) ? Hummmm... não sei se existe algum livro de "aprenda a programar XX dias" que fale sobre ele.



Até mais pessoal.


terça-feira, 15 de outubro de 2013

Lei de Bendford (também conhecida como "Lei do primeiro-digito")

A Lei de Benford, também conhecida como a "Lei dos Primeiros Dígitos", afirma que, em muitos grupos de dados da vida real (não todos), os primeiros dígitos não se distribuem aleatoriamente de 1 a 9. Essa distribuição segue uma certa "lei", na qual o primeiro digito dos números de um grupo de dados segue a seguinte distribuição (tabela obtida no Wikipédia):

dP(d)Tamanho relativo de P(d)
130.1%
217.6%
312.5%
49.7%
57.9%
66.7%
75.8%
85.1%
94.6%

Onde: d = primeiro digito, P(d) = probabilidade de ocorrência do digito d como sendo primeiro digito.

Mas pra que serve isso?

Bem, ela não precisaria servir pra nada, pois ela já é bela pela sua existência.

Tá, tá, tá, eu sei que vivemos em um mundo de aplicabilidades, e que por isso algumas técnicas matemáticas só são enxergadas quando resolvem problemas reais... afffsss... :P

Bem, essa técnica pode ser (creio que geralmente seja) utilizada como um primeiro passo na detecção de possíveis fraudes em algum grupo de dados, para isso "basta" comparar como se dá a distribuição dos primeiros dígitos do grupo de dados em relação à lei de Bendford, se a distribuição dos primeiros dígitos do grupo de dados escolhido estiverem muito divergentes da lei, então ou tem que ter uma boa explicação para essa distribuição mal formada, ou temos algumas coisas estranha ali.

Desta forma é possível direcionar maiores esforços na busca de fraudadores, sonegação de impostos, erros contábeis grosseiros, erros de digitação, dentre outros.

Olhem só que legal o trabalho que alguém fez aplicando essa técnica a números obtidos em dados governamentais Argentinos.

http://jsbin.com/okohid/3


JS Bin

Conseguem imaginar em quais dados que vocês conhece do governo brasileiro que poderíamos aplicar essa técnica?

Para saber mais vejam os seguintes links (podem ir lá ler, é simples mesmo, não é preciso ser matemático pra entender):

http://www.planetseed.com/pt-br/mathpuzzles/mais-sobre-lei-de-benford
http://en.wikipedia.org/wiki/Benford's_law


Até a próxima.


terça-feira, 28 de maio de 2013

Math Joke #1: Chopp limitado.


Um número infinito de matemáticos entram num bar. Um deles pede uma caneca de chopp. Um segundo pede a metade de uma caneca. Um terceiro pede um quarto de caneca, outro um oitavo...

De repente o garçom levanta duas canecas de chopp e diz:

-Vocês matemáticos não conhecem seus limites.

:D

sexta-feira, 24 de maio de 2013

MySql: Alterando "Case Sensitive" de nome de tabelas e schemas.


Alguns Sistemas Operacionais (S.O.) tratam os nomes de arquivos diferenciando as letras maiúsculas de minúsculas. No windows por exemplo uma pasta com nome "Pasta" pode ser referenciada como "pasta". No linux ambas são tratadas como pastas diferentes.

No MySql, os Banco de dados (ou Schemas em MySql) são pastas na estrutura de diretórios e cada tabela é um arquivo. Sendo assim, quando você cria tabelas usando os nomes com CamelCase  (ou qualquer outro motivo que te faça usar o mix de maiúsculas e minúsculas) você poderá ter problemas no MySql ao migrar (importar, backup, restore) os dados de um S.O. para outro.

Existe uma variável de sistema na configuração do servidor MySql que permite configurar o comportamento do MySql no que diz respeito ao "Case Sensitive", esta variável é:

lower_case_table_names


Mais informações em:

http://dev.mysql.com/doc/refman/5.0/en/identifier-case-sensitivity.html

http://stackoverflow.com/questions/6248735/how-to-force-mysql-to-use-case-sensitive-table-names-in-windows

http://enricogi.blogspot.com.br/2008/05/mysql-case-sensitive-in-linux.html

http://pt.wikipedia.org/wiki/CamelCase


terça-feira, 12 de março de 2013

Monsieur Le... ...Sophie?!?!?

Imagine que você é um matemático acadêmico e te chegam cartas de um tal aluno chamado "Monsieur Antoine-August Le Blanc". Fica impressionado com o súbito avanço dos estudos desse tal Le Blanc. Curioso, convida-o para uma conversa. E no dia da conversa, ao invés de um homem aparecer em sua frente,  quem  se apresenta é uma tal de Sophie Germain que se "passava" por um homem para conseguir estudar matemática.
Que boa surpresa não?
Ah essas mulheres!! 
Uma pena que naquela época elas precisassem se disfarçar pra conseguirem serem notadas sem preconceito. :(
Veja mais sobre ela na wikipedia.