Sei sulla pagina 1di 40

18/05/2019 Blogues de Stevey: Matemática para programadores

mais Criar um blog Login

Blog de Stevey
A L E AT Ó R I O C H O R A M I N G A R E O U T R A S C O I S A S .

Sobre mim
Minha foto STEVE YEGGE
KIRKLAND,

Sexta-feira, 17 de março de 2006 WASHINGTON,


ESTADOS UNIDOS

Matemática para programadores VISUALIZAR MEU


PERFIL COMPLETO

Eu tenho trabalhado nos últimos 15 meses em consertar minhas habilidades de


matemática enferrujada, desde que eu li uma biografia de Johnny von Neumann . Li uma
enorme pilha de livros de matemática e tenho uma pilha ainda maior de livros de
matemática não lidos. E está começando a se unir.
Mensagens
anteriores
Deixe-me contar sobre isso. Blog ou saia do pote

A Sabedoria Convencional não se Adiciona

Primeiro: os programadores não acham que precisam saber matemática. Eu ouço isso
com tanta frequência; Eu mal conheço alguém que discorde. Até mesmo programadores
que eram matemáticos me disseram que não usam muito matemática! Eles dizem que é
melhor saber sobre padrões de projeto, metodologias orientadas a objeto, ferramentas de
software, design de interface, coisas assim.

E sabe de uma coisa? Eles estão absolutamente certos. Você pode ser um programador
bom, sólido e profissional sem saber muita matemática.

Mas você também não precisa saber como programar. Vamos enfrentá-lo: há muitos
programadores profissionais por aí que percebem que não são muito bons nisso e ainda
encontram maneiras de contribuir.

Se de repente você está se sentindo fora de sua profundidade, e todo mundo parece estar
correndo círculos ao seu redor, quais são suas opções? Bem, você pode descobrir que é
bom em gerenciamento de projetos, gerenciamento de pessoas, design de interface do
usuário, redação técnica ou administração de sistemas, qualquer número de outras
coisas importantes que os "programadores" não são necessariamente bons. Você
começará a preencher esses nichos (porque há sempre mais trabalho a fazer) e, assim
que encontrar algo bom, provavelmente migrará para o trabalho em tempo integral.

De fato, eu não acho que você precise saber de nada , contanto que você possa se manter
vivo de alguma forma.

Então eles estão certos: você não precisa saber de matemática, e você pode se dar bem a
vida inteira sem ela.

Mas algumas coisas que aprendi recentemente podem surpreendê-lo:

1. A matemática é muito mais fácil de aprender depois de saber como programar.


Na verdade, se você for um programador decente, você verá que é quase um
piscar de olhos.

2. Eles ensinam matemática errado na escola. Maneira, errado. Se você se ensina


matemática da maneira correta, aprenderá mais rápido, lembrará disso mais
tempo e será muito mais valioso para você como programador.

3. Saber até mesmo um pouco dos tipos certos de matemática pode permitir que
você escreva alguns programas bem interessantes que, de outra forma, seriam
muito difíceis. Em outras palavras, matemática é algo que você pode pegar um
pouco de cada vez, sempre que tiver tempo livre.

4. Ninguém sabe tudo de matemática, nem mesmo os melhores matemáticos. O


campo está em constante expansão, à medida que as pessoas inventam novos
formalismos para resolver seus próprios problemas. E com qualquer problema de
matemática, assim como na programação, há mais de uma maneira de fazer isso.
Você pode escolher o que mais gosta.

5. Matemática é ... hummm, por favor, não conte a ninguém que eu disse isso; Eu
nunca serei convidada para outra festa enquanto eu viver. Mas matemática, bem
... é melhor eu sussurrar isso, então ouça: (na verdade é meio divertido).

steve-yegge.blogspot.com/2006/03/math-for-programmers.html 1/40
18/05/2019 Blogues de Stevey: Matemática para programadores

A matemática que você aprendeu (e esqueci)

Aqui está a matemática que aprendi na escola, tanto quanto me lembro:

Grade : Números, Contagem, Aritmética, Pré-Álgebra ("problemas de história")

Ensino Médio : Álgebra, Geometria, Álgebra Avançada , Trigonometria, Pré-Cálculo


(cônicas e limites)

Faculdade : Cálculo Diferencial e Integral, Equações Diferenciais, Álgebra Linear,


Probabilidade e Estatística, Matemática Discreta

Como eles chegaram a essa lista específica para o ensino médio, afinal? É mais ou menos
os mesmos cursos na maioria das escolas americanas. Eu acho que é muito semelhante
em outros países, exceto que seus alunos terminaram a lista quando tinham nove anos
de idade. (Os americanos realmente chutam as competições de caminhões-monstro,
portanto, não é uma perda total.)

Álgebra? Certo. Sem dúvida. Você precisa disso. E uma compreensão básica da
geometria cartesiana também. Eles são úteis e você pode aprender tudo o que precisa
saber daqui a alguns meses, dar ou receber. Mas o resto deles? Acho que uma introdução
ao básico pode ser útil, mas passar um semestre inteiro ou um ano neles parece ridículo.

Eu suponho que a lista foi criada para preparar os estudantes para as profissões de
ciência e engenharia. Os cursos de matemática que eles ensinam no ensino médio não
ajudam você a se preparar para uma carreira em programação, e o simples fato é que o
número de trabalhos de programação está superando rapidamente a demanda por todas
as outras funções de engenharia.

E mesmo que você esteja planejando ser um cientista ou um engenheiro, descobri que é
muito mais fácil aprender e apreciar geometria e trigonometria depois de entender
exatamente o que é matemática - de onde veio, para onde está indo, para que serve. Não
há necessidade de mergulhar diretamente na memorização de provas geométricas e
identidades trigonométricas. Mas é exatamente isso que as escolas de ensino médio
fazem.

Então a lista não é mais boa. As escolas estão nos ensinando a matemática errada e estão
ensinando da maneira errada. Não é de admirar que os programadores achem que não
precisam de matemática: a maior parte da matemática que aprendemos não está nos
ajudando.

A Matemática que Eles Não Ensinaram

A matemática que os cientistas da computação usam regularmente, na vida real, tem


muito pouca sobreposição com a lista acima. Por um lado, a maior parte da matemática
que você aprende na escola primária e secundária é contínua: isto é, matemática nos
números reais. Para os cientistas da computação, 95% ou mais da matemática
interessante é discreta: isto é, matemática nos inteiros.

Eu vou falar em um futuro blog sobre algumas diferenças fundamentais entre ciência da
computação, engenharia de software, programação, hacking e outras disciplinas
confusas. Eu tenho a estrutura básica para esses insights (em breve), em grande parte,
do Patterns Of Software , de Richard Gabriel , então se você não pode esperar, leia isso. É
um bom livro.

Por enquanto, porém, não deixe que o termo "cientista da computação" o preocupe.
Parece intimidante, mas a matemática não é a competência exclusiva dos cientistas da
computação; você pode aprender sozinho como um hacker de armário e ser tão bom (ou
melhor) nisso do que é. Sua experiência como programador ajudará a manter você
focado no lado prático das coisas.

A matemática que usamos para modelar problemas computacionais é, em geral,


matemática em inteiros discretos. Isso é uma generalização. Se você está comigo no blog
de hoje, estará estudando um pouco mais de matemática a partir de agora, do que
planejava até hoje, e descobrirá lugares onde a generalização não é verdadeira. Mas até
lá, daqui a pouco, você estará confiante o suficiente para ignorar tudo isso e ensinar a si
mesmo a matemática do jeito que você quer aprender.

Para programadores, o ramo mais útil da matemática discreta é a teoria da


probabilidade. É a primeira coisa que eles devem ensinar depois da aritmética, na escola
primária. O que é teoria da probabilidade, você pergunta? Por que, está contando.
Quantas maneiras existem para fazer uma Full House no poker? Ou um Royal Flush?
Sempre que você pensa em uma pergunta que começa com "quantas maneiras ..." ou
"quais são as chances ...", é uma questão de probabilidade. E como acontece (quais são as
probabilidades?), Tudo acaba por ser uma contagem "simples". Começa com uma moeda
e vai a partir daí. É definitivamente a primeira coisa que eles devem ensinar na escola

steve-yegge.blogspot.com/2006/03/math-for-programmers.html 2/40
18/05/2019 Blogues de Stevey: Matemática para programadores
depois que você aprender o Uso Básico da Calculadora.

Eu ainda tenho meu livro didático de matemática da faculdade. É um pouco pesado para
um aluno da terceira série (talvez), mas ele cobre boa parte da matemática que usamos
na computação cotidiana e na engenharia da computação.

Por incrível que pareça, meu professor não me disse para que serve. Ou eu não ouvi. Ou
alguma coisa. Então eu não prestei muita atenção: apenas o suficiente para passar no
curso e esquecer esse tema odioso para sempre, porque eu não achei que tivesse algo a
ver com programação. Isso aconteceu em muitos dos meus cursos na faculdade, talvez
até 25% deles. Pobre eu! Eu tive que descobrir o que era importante sozinha, depois, da
maneira mais difícil.

Eu acho que seria bom se todos os cursos de matemática passassem uma semana inteira
apenas apresentando você ao assunto, da maneira mais divertida possível, então você
sabe por que diabos você está aprendendo. Heck, isso é provavelmente verdade para
cada curso.

Além da probabilidade e da matemática discreta, existem alguns outros ramos da


matemática que são potencialmente bastante úteis para os programadores, e eles
geralmente não os ensinam na escola, a menos que você seja um matemático menor.
Esta lista inclui:

Estatísticas , algumas das quais são cobertas no meu livro de matemática


discreta, mas é realmente uma disciplina própria. Um muito importante também,
mas espero que não precise de introdução.

Álgebra e Álgebra Linear (ou seja, matrizes). Eles devem ensinar Álgebra
Linear imediatamente após a álgebra. É muito fácil e é incrivelmente útil em
todos os tipos de domínios, incluindo aprendizado de máquina.

Lógica matemática . Eu tenho um livro muito legal, totalmente ilegível sobre o


assunto, de Stephen Kleene, o inventor do fechamento de Kleene e, até onde eu
sei, Kleenex. Não leia esse. Eu juro que tentei 20 vezes, e nunca passei do capítulo
2. Se alguém tiver uma recomendação para uma melhor introdução a este campo,
por favor poste um comentário. É obviamente uma coisa importante, no entanto.

Teoria da Informação e Complexidade de Kolmogorov . Estranho, hein?


Aposto que nenhuma de suas escolas ensinou nenhuma delas. Ambos são bem
novos. A teoria da informação é (mais ou menos aproximadamente) sobre
compressão de dados, e a Complexidade de Kolmogorov é (também
aproximadamente) sobre complexidade algorítmica. Isto é, quão pequeno você
pode fazer, quanto tempo levará, quão elegante pode ser o programa ou estrutura
de dados, coisas assim. Eles são divertidos, interessantes e úteis.

Há outros, é claro, e alguns dos campos se sobrepõem. Mas isso só serve para mostrar: a
matemática que você acha útil é bem diferente da matemática que sua escola acha que
seria útil.

E quanto ao cálculo? Todo mundo ensina isso, então deve ser importante, certo?

Bem, o cálculo é realmente muito fácil. Antes de aprender, parecia uma das coisas mais
difíceis do universo, com a mecânica quântica. A mecânica quântica ainda está além de
mim, mas o cálculo não é nada. Depois que percebi que os programadores podem
aprender matemática rapidamente, peguei meu livro de cálculo e passei a coisa toda em
cerca de um mês, lendo por uma hora à noite.

Cálculo é tudo sobre continuums - taxas de mudança, áreas sob curvas, volumes de
sólidos. Coisas úteis, mas os detalhes exatos envolvem muita memorização e muito tédio
que você normalmente não precisa como programador. É melhor conhecer os conceitos e
técnicas gerais e procurar os detalhes quando precisar deles.

Geometria, trigonometria, diferenciação, integração, seções cônicas, equações


diferenciais e suas versões multidimensional e multivariada - todas elas têm aplicações
importantes. É só que você não precisa conhecê-los neste exato segundo. Então
provavelmente não foi uma ótima idéia fazer você passar anos e anos fazendo provas e
exercícios com eles, foi? Se você vai gastar tanto tempo estudando matemática,

O caminho certo para aprender matemática

O caminho certo para aprender matemática é a amplitude, não profundidade primeiro.


Você precisa pesquisar o espaço, aprender os nomes das coisas, descobrir o que é o quê.

Para colocar isso em perspectiva, pense em divisão longa. Levante sua mão se você puder
fazer uma longa divisão no papel, agora mesmo. Mãos? Qualquer um? Eu não penso
assim.

steve-yegge.blogspot.com/2006/03/math-for-programmers.html 3/40
18/05/2019 Blogues de Stevey: Matemática para programadores
Voltei e olhei para o algoritmo de divisão longa que eles ensinam no ensino fundamental
e, se não for irritantemente complicado. É determinístico, com certeza, mas você nunca
precisa fazer isso manualmente, porque é mais fácil encontrar uma calculadora, mesmo
se estiver preso em uma ilha deserta sem eletricidade. Você ainda terá uma calculadora
no seu relógio, ou seu preenchimento dentário, ou algo assim.

Por que eles ainda ensinam para você? Por que nos sentimos vagamente culpados se não
conseguimos lembrar como fazer isso? Não é como se precisássemos de saber mais. E,
além disso, se sua vida estivesse em jogo, você saberia que poderia realizar uma longa
divisão de qualquer número arbitrariamente grande. Imagine que você está preso em
alguma masmorra do terceiro mundo, e o ditador não vai deixar você sair até que você
tenha computado 219308862/103503391. Como você faria? Bem fácil. Você começaria a
subtrair o denominador do numerador, mantendo um contador, até que você não
pudesse mais subtraí-lo, e esse seria o restante. Se pressionado, você pode descobrir uma
maneira de continuar usando a subtração repetida para estimar o restante como um
número decimal (neste caso, 0,1185678219, ou mais ou menos o meu Emacs) M-x calc.

Você poderia descobrir porque você sabe que a divisão é apenas subtração repetida. A
noção intuitiva de divisão está profundamente arraigada agora.

O jeito certo de aprender matemática é ignorar os algoritmos e provas reais, na maior


parte, e começar aprendendo um pouco sobre todas as técnicas: seus nomes, para que
servem, aproximadamente como são computados, há quanto tempo eles estão por perto,
(às vezes) quem os inventou, quais são suas limitações e com o que estão relacionados.
Pense nisso como um diploma de Artes Liberais em matemática.

Por quê? Porque o primeiro passo para aplicar a matemática é a identificação de


problemas. Se você tiver um problema para resolver e não tiver ideia de por onde
começar, pode levar muito tempo para descobri-lo. Mas se você sabe que é um problema
de diferenciação, ou um problema de otimização convexa, ou um problema de lógica
booleana, então, pelo menos, você sabe por onde começar a procurar a solução.

Existem muitas e muitas técnicas matemáticas e sub-disciplinas inteiras lá fora agora. Se


você não sabe o que é combinatória, nem mesmo a primeira pista, então você não é
capaz de reconhecer problemas para os quais a solução é encontrada na combinatória,
você está?

Mas isso é realmente uma ótima notícia, porque é mais fácil de ler sobre o campo e
aprender os nomes de tudo do que aprender os algoritmos e métodos reais para modelar
e computar os resultados. Na escola, eles ensinam a Regra da Cadeia, e você pode
memorizar a fórmula e aplicá-la nos exames, mas quantos alunos realmente sabem o que
"significa"? Então eles não serão capazes de saber aplicar a fórmula quando se
depararem com um problema de regra de cadeia em estado selvagem. Ironicamente, é
mais fácil saber o que é do que memorizar e aplicar a fórmula. A regra da cadeia é como
pegar a derivada das funções "encadeadas" - ou seja, a função x () chama a função g () e
você quer a derivada de x (g ()). Bem, programadores sabem tudo sobre funções; nós os
usamos todos os dias, então é

É por isso que acho que eles estão ensinando matemática errado. Eles estão fazendo
errado de várias maneiras. Eles estão se concentrando em especializações que não estão
provando empiricamente para ser útil para a maioria dos graduados do ensino médio, e
eles estão ensinando essas especializações para trás. Você deve aprender como contar e
como programar antes de aprender como obter derivativos e realizar a integração.

Acho que a melhor maneira de começar a aprender matemática é passar de 15 a 30


minutos por dia navegando na Wikipédia. Está cheio de artigos sobre milhares de
pequenos ramos da matemática. Você começa com praticamente qualquer artigo que
pareça interessante (por exemplo , teoria das cordas , digamos, ou a transformada de
Fourier , ou Tensores, qualquer coisa que lhe agrade.) Comece a ler. Se houver algo que
você não entende, clique no link e leia sobre isso. Faça isso de forma recursiva até ficar
entediado ou cansado.

Fazendo isso, você terá uma perspectiva incrível da matemática, depois de alguns meses.
Você começará a ver padrões - por exemplo, parece que quase todos os ramos da
matemática que envolvem uma única variável têm uma versão multivariada mais
complicada, e a versão multivariada é quase sempre representada por matrizes de
equações lineares. Pelo menos para matemática aplicada. Assim, a Álgebra Linear
aumentará gradualmente a sua lista até você se sentir compelido a aprender como ela
realmente funciona, e você fará o download de um PDF ou comprará um livro, e
descobrirá o suficiente para deixá-lo feliz por um tempo.

Com a abordagem da Wikipédia, você também encontrará rapidamente o caminho para


os Fundamentos da Matemática , a Roma para a qual todas as estradas de matemática
levam. Matemática é quase sempre sobre a formalização do nosso "senso comum" sobre
algum domínio, para que possamos deduzir e / ou provar coisas novas sobre esse
domínio. Metamatemática é o fascinante estudo de quais são os limites da própria
matemática: as capacidades intrínsecas de nossos modelos formais, provas, sistemas
axiomáticos e representações de regras, informações e computação.

steve-yegge.blogspot.com/2006/03/math-for-programmers.html 4/40
18/05/2019 Blogues de Stevey: Matemática para programadores

Uma grande coisa que logo cai no esquecimento é a notação. A notação matemática é o
maior turn-off para pessoas de fora. Mesmo se você estiver familiarizado com
summações, integrais, polinômios, expoentes, etc., se você ver um ninho espesso deles,
sua inclinação é provavelmente pular sobre aquele sugador como uma operação atômica.

No entanto, pesquisando matemática, tentando descobrir quais problemas as pessoas


estão tentando resolver (e quais delas podem realmente ser úteis para você algum dia),
você começará a ver padrões na notação, e deixará de ser tão alienígena. -olhando. Por
exemplo, um sinal de soma (capital-sigma) ou sinal de produto (capital-pi) parecerá
assustador no início, mesmo que você conheça o básico. Mas se você for um
programador, logo perceberá que é apenas um loop: um que soma valores, um que os
multiplica. Integração é apenas um somatório sobre uma seção contínua de uma curva,
de modo que não fique assustador por muito tempo também.

Uma vez que você está confortável com os muitos ramos da matemática, e as muitas
formas diferentes de notação, você está bem no seu caminho para saber muita
matemática útil. Porque não será mais assustador, e da próxima vez que você vir um
problema de matemática, ele vai pular direto para você. "Ei", você vai pensar: "Eu
reconheço isso. Isso é um sinal de multiplicação!"

E então você deve retirar a calculadora. Pode ser uma calculadora muito sofisticada
como R, Matlab, Mathematica ou uma biblioteca C para máquinas de vetores de suporte.
Mas quase toda a matemática útil é altamente automatizável, então você pode também
obter alguns servidores automatizados para ajudá-lo.

Quando os exercícios são úteis?

Depois de um ano de matemática em tempo parcial, você poderá fazer muito mais
matemática em sua cabeça, mesmo que nunca toque um lápis em um papel. Por
exemplo, você verá polinômios o tempo todo, então, eventualmente, você aprenderá a
aritmética de polinômios por osmose. O mesmo acontece com logaritmos, raízes,
transcendentais e outras representações matemáticas fundamentais que aparecem em
quase toda parte.

Eu ainda estou tendo uma idéia de quantos exercícios eu quero trabalhar com a mão. Eu
estou achando que eu gosto de poder seguir explicações (provas) usando um tipo de
"teste de plausibilidade" - por exemplo, se eu vejo alguém dividindo dois polinômios, eu
meio que sei qual forma o resultado deve tomar, e se o resultado deles parece mais ou
menos certo, então eu vou tomar sua palavra para isso. Mas se eu vejo a explicação
fazendo algo que eu nunca ouvi falar, ou que parece errado ou impossível, então eu vou
cavar um pouco mais.

Isso é muito parecido com a leitura de código-fonte em linguagem de programação, não


é? Você não precisa simular manualmente todo o estado do programa enquanto lê o
código de alguém; Se você souber qual a forma aproximada que a computação levará,
você pode simplesmente verificar se o resultado deles faz sentido. Por exemplo, se o
resultado deve ser uma lista, e eles estão retornando um escalar, talvez você deva cavar
um pouco mais. Mas normalmente você pode escanear o código-fonte quase na
velocidade em que leu o texto em inglês (às vezes com a mesma rapidez), e se sentirá
confiante de que compreende a forma geral e que provavelmente encontrará erros
realmente notórios.

Eu acho que é assim que pessoas com inclinação matemática (matemáticos e amadores)
lêem artigos de matemática, ou qualquer artigo antigo contendo muita matemática. Eles
fazem o mesmo tipo de verificação de sanidade que você faria ao ler o código, mas não
mais, a menos que eles tenham a intenção de derrubar o autor.

Com isso dito, eu ainda faço ocasionalmente exercícios de matemática. Se algo aparecer
de novo e de novo (como álgebra e álgebra linear), então eu vou começar a fazer alguns
exercícios para ter certeza que eu realmente entendo isso.

Mas eu enfatizo isso: não deixe que os exercícios deixem você de lado. Se um exercício
(ou mesmo um artigo ou capítulo em particular) começar a incomodar você, siga em
frente.. Ir ao redor tanto quanto você precisa. Deixe sua intuição guiá-lo. Você aprenderá
muito, muito mais rápido, e sua confiança aumentará quase todos os dias.

Como isso vai me ajudar?

Bem, talvez não - não imediatamente. Certamente, isso irá melhorar sua capacidade de
raciocínio lógico; é um pouco como fazer exercício no ginásio, e sua aptidão mental geral
ficará melhor se você estiver se esforçando um pouco a cada dia.

Para mim, notei que alguns domínios nos quais sempre me interessei (incluindo
inteligência artificial, aprendizado de máquina, processamento de linguagem natural e
reconhecimento de padrões) usam muita matemática. E como eu investiguei mais
profundamente, descobri que a matemática que eles usam não é mais difícil do que a
soma total da matemática que aprendi no ensino médio; isto'matemática, na sua maior

steve-yegge.blogspot.com/2006/03/math-for-programmers.html 5/40
18/05/2019 Blogues de Stevey: Matemática para programadores
parte. Não é mais difícil. E aprender é me permitir codificar (ou usar em meu próprio
código) redes neurais, algoritmos genéticos, classificadores bayesianos, algoritmos de
agrupamento, correspondência de imagens e outras coisas bacanas que resultarão em
aplicativos bacanas que eu posso mostrar aos meus amigos.

E eu gradualmente cheguei ao ponto em que eu não começo mais a suar frio quando
alguém me apresenta um artigo contendo notação matemática: n-escolha-k, diferenciais,
matrizes, determinantes, séries infinitas, etc. A notação é na verdade, para facilitar, mas
(como a sintaxe da linguagem de programação), a notação é sempre um pouco
complicada e assustadora no primeiro contato. Hoje em dia eu posso seguir melhor, e
não me faz mais sentir como um plebeu quando eu não sei. Porque eu sei que posso
descobrir.

E isso é bom.

E eu vou continuar melhorando nisso. Eu tenho muitos anos e muitos livros e artigos. Às
vezes eu passo um final de semana inteiro lendo um livro de matemática, e às vezes vou
passar semanas sem pensar nisso nem uma vez. Mas, como qualquer passatempo, se
você simplesmente confiar que será interessante, e que ficará mais fácil com o tempo,
poderá aplicá-lo com a frequência ou o mínimo que quiser e, ainda assim, obter valor a
partir dele.

Matemática todos os dias . Que ótima ideia que acabou por ser!

POSTADO POR STEVE YEGGE EM 1:06 AM

152 COMENTÁRIOS:

Razvan disse ...


Teoria de probabilidade pode ser a área mais útil para os programadores, mas também é
um campo embaçado, difícil de aprender direito. Você pode verificar este livro para mais
detalhes, e há também uma versão de rascunho online gratuita disponível.

A lógica da ciência
03:26, 17 DE MARÇO DE 2006

Jules disse ...

Tenho 16 anos agora e moro na Holanda. Eu aprendi teoria da probabilidade este ano (o
básico, suponho). Estamos fazendo integrais + logaritmos agora. E vamos começar com
funções recursivas este mês (muito fácil se você puder programar).

O problema com a matemática é, pelo menos na Holanda, que você "não está autorizado"
a gostar dela. Mas a matemática é uma das poucas coisas que ainda serão importantes no
ano 4006.

E é realmente muito mais divertido provar que

fib (n) = ((1 + 5 ^ 0,5) / 2) ^ n - ((1 - 5 ^ 0.5) / 2) ^ n / 5 ^ 0.5

onde:

fib (n) = fib (n - 1) + fib (n - 2)


fib (0) = 0
fib (1) = 1

do que aprender 200 francês palavras.


07:28, 17 DE MARÇO DE 2006

Doug disse ...

Coisas boas, eu postei alguns comentários no meu blog, uma das coisas que eu
mencionei é que eu acho que prejudicamos os estudantes de programar de maneira
similar - ensinando-lhes profundidade (detalhes da mais recente sintaxe da linguagem
popular), ao invés de amplitude. primeiro.
8H38, 17 DE MARÇO DE 2006

hxa7241 disse ...


Eu mesmo segui um caminho muito semelhante e alcancei as mesmas opiniões e
conclusões.

A partir da leitura de artigos técnicos / pesquisas e referências a seguir, é possível


pesquisar o terreno e encontrar os tópicos importantes.

Minha base principal tem sido engenharia e matemática numérica: a orientação prática é
boa. Para os principais livros que eu gostava: 'Matemática de Engenharia' - Croft,
Davison, Hargreaves; e 'Receitas Numéricas em C' - Imprensa, Teukolsky, Vetterling,
Flannery.

steve-yegge.blogspot.com/2006/03/math-for-programmers.html 6/40
18/05/2019 Blogues de Stevey: Matemática para programadores
8:56, 17 DE MARÇO DE 2006

Anônimo disse ...

Fertheluvofgahd .. por favor, escreva um maldito livro! Leve-nos pela estrada com você
para que todos possamos consertar os danos cerebrais que recebemos durante a
educação matemática (nos EUA, de qualquer maneira).

E, aliás. Seu emacs deve estar quebrado causa, a menos que eu perdi alguma coisa,
219308862/103503391 = 2.1188567821898704748716880203471

-Vince
VincePlatt AT Yahoo
9H46, 17 DE MARÇO DE 2006

Anônimo disse ...

Eu acho que a "Matemática Concreta" de Knuth contém a maior parte da matemática


que precisamos como programadores, e é também o livro de matemática mais agradável
que eu já vi. Agora, se eu puder estudar isso ... :)

Vikas Gorur (vikas em 80x25 (ponto) org)


9:51 AM, 17 DE MARÇO DE 2006

Anônimo disse ...

Que tal mostrar livros à medida que os lê e publica os seus pensamentos enquanto
passa? Mantenha os comentários abertos.

Eu quero desesperadamente aprender matemática - e não me refiro apenas a memorizar


merda e saber como substituir esse número aqui ou ali para fazê-lo funcionar. Eu quero
verdadeira compreensão. Estou interessado em quaisquer sites, livros ou artigos que
possam me levar até lá. Por favor, mantenha seus posts sobre matemática chegando, mas
tenha em mente que nem todos nós somos tão avançados!
10H05, 17 DE MARÇO DE 2006

John Graham-Cumming disse ...

O livro que eu realmente gostei na faculdade por lógica é o Logic for Mathematicians da
AG Hamilton. Eu achei curto e claro.

http://www.amazon.com/gp/product/0521368650

Muito caro embora!

John.
10H58, 17 DE MARÇO DE 2006

Zhi disse ...

Concordo com a maior parte da sua opinião, mas há algumas coisas com as quais tenho
problemas.

A parte da contagem da teoria da probabilidade sobre a qual você está falando é, na


verdade, chamada combinatória. Esse é um campo inteiro da matemática na contagem.

Sua abordagem à matemática é certamente de um ponto de vista compsito, que depende


muito do lado discreto das coisas. Cálculo ... ou, mais geralmente, a Análise Matemática
lida mais com o material contínuo e é essencial para a ciência, se não para a outra
engenharia.

Meu caminho para a matemática foi através da teoria dos números (longa história). Não
é necessário qualquer assunto que você aprende na escola, mas é principalmente um
exercício em busca de padrões em número .. Matemática para mim é reconhecer padrão
no espaço abstrato e é uma questão de estratégias que ajudam na resolução de
problemas e programas de escrita
11H09, 17 DE MARÇO DE 2006

Dan Luu disse ...

Gostei do livro da EFT: é bastante rigoroso e é bom e curto. Ouvi dizer que Enderton é
menos rigoroso e mais legível, tornando-se uma melhor introdução à lógica, mas EFT foi
bom o suficiente para que eu não tivesse nenhum desejo de ler outro livro de lógica
introdutória.

EFT: http://www.amazon.com/gp/product/0387942580
Enderton: http://www.amazon.com/gp/product/0122384520
11:17 AM, 17 DE MARÇO DE 2006

jasperk disse ...

steve-yegge.blogspot.com/2006/03/math-for-programmers.html 7/40
18/05/2019 Blogues de Stevey: Matemática para programadores
Eu não poderia concordar mais. Por favor, escreva um livro. Eu era uma daquelas
faculdades de CS que faziam o suficiente para sobreviver e agora que estou na indústria,
estou realmente gostando e lendo livros de matemática e CS. Acho que as universidades
devem adaptar um tipo de classe de matemática aplicada a engenheiros de software e
ensiná-la usando os métodos / conteúdos que você sugere.
11:21, 17 DE MARÇO DE 2006

Prashant disse ...

Grande blog e aguardo com expectativa os artigos subseqüentes sobre este tópico.Eu
também não poderia concordar mais com o seu comentário para começar a aprender
matemática, gastando 15-30 minutos por dia na Wikipedia. Essa tem sido a minha
maneira preferida de revisitar e expandir os tópicos de Matemática. Eu sempre quis
aprender e absorver mais do Math por aí (segundo sua abordagem inicial) e agora esse
mundo (com o Firefox e sua lista de ferramentas de busca) está a alguns cliques de
distância.
11:41, 17 DE MARÇO DE 2006

Anônimo disse ...

Parece que você está defendendo a "nova matemática" que foi sensacionalista há cerca de
35 anos, quando eu comecei a estudar. Talvez seja hora de revisitar "nova matemática".
12:08, 17 DE MARÇO DE 2006

Anônimo disse ...

Na minha universidade, obtemos este curso em nosso primeiro semestre do nosso


primeiro ano, "Matemática Aplicável para Cientistas da Computação", praticamente
compreendendo o que você sugeriu.
12:20 PM, 17 DE MARÇO DE 2006

David Brunton disse ...

Introdução à Filosofia Matemática, embora não seja um livro de lógica em si, é muito
divertido. Estou fazendo um regime semelhante, e foi meu primeiro livro, que por sua
vez levou ao regime de leitura.
12:23 PM, 17 DE MARÇO DE 2006

Anônimo disse ...

WOW .. eu discordo totalmente de você.

Tudo depende do tipo de programação que você está fazendo. Se você gosta de fazer
programação de criptografia ou programação de jogos, você precisa de matemática ... e
muito disso. No entanto, muitos algoritmos já existem para o astuto
12:25 PM, 17 DE MARÇO DE 2006

Anônimo disse ...

Eu gostei
Discrete Matemática e seus aplicativos
http://www.amazon.com/gp/product/0072930330/sr=8-
1/qid=1142626982/ref=pd_bbs_1/102-8402190-1328907?%5Fencoding=UTF8

eu achei faz um bom trabalho de ensinar lógica.

-Scott
12:25 PM, 17 DE MARÇO DE 2006

Bryan disse ...

Atualmente estou fazendo um curso de Lógica Matemática e estamos usando o método A


Mathematical Introduction to Logic da HB Enderton. É muito bom, mas nada
comparado à maneira como o professor ensina. A coisa mais divertida é o material de
análise não padrão. Todos aqueles hiperreais e tudo mais. Na verdade, há um bom e-
book sobre Cálculo, mostrado por análise não padronizada. Está disponível aqui
http://www.math.wisc.edu/~keisler/calc.html
12:26 PM, 17 DE MARÇO DE 2006

Mike disse ...

Eu encontrei este livro incrivelmente útil como um primer de álgebra linear, para não
mencionar que se aplica a algo que eu tenho um grande interesse em (programação 3D).

http://www.amazon.ca/exec/obidos/ASIN/1556229119/qid=1142627528/sr=8-
3/ref=sr_8_xs_ap_i3_xgl14/702-1502168-0287234
12:34 PM, 17 DE MARÇO DE 2006

Anônimo disse ...

O "ponto" de todas as provas de Geometria parece ser negligenciado.

steve-yegge.blogspot.com/2006/03/math-for-programmers.html 8/40
18/05/2019 Blogues de Stevey: Matemática para programadores
Não é tanto aprender 1/2 * base * altura para a área de um triângulo. É muito mais ao
longo das linhas de demonstrar que "a matemática é determinista". Isso está de acordo
com a programação de aprendizado. Se eu sei, o que posso descobrir disso? OK, agora eu
sei B. A

geometria é apenas o lugar mais interessante para aprender provas. Escrevendo provas
formais de Trig, por exemplo - enquanto _learning_ trig -> eeeewww.
12:39 PM, 17 DE MARÇO DE 2006

Anônimo disse ...

Essa é a coisa mais idiota que eu li em muito tempo. Esse cara argumenta que ele não
usa vários tópicos que estão no currículo atual, portanto, eles não deveriam estar lá. Ele
então defende seu próprio currículo, que é significativo apenas para os programadores
de computador.

Aqui está um cara de flash de notícias: nem todo mundo passa a se tornar um
programador de computador. Pessoalmente, meu treinamento é como físico, e não uso
praticamente nenhum dos absurdos da matemática que está em seu currículo. Em vez
disso, eu uso a matemática sobre os números reais e complexos, aquelas fórmulas
trigormes irritantes que te deixam pra baixo, e uma série de técnicas de cálculo que nem
estão na sua lista.

Só porque você não usa a matemática não significa que é inútil, e com certeza não
significa que o currículo está errado.
12:41, 17 DE MARÇO DE 2006

Anônimo disse ...

E quanto ao cálculo lambda?


12:54 PM, 17 DE MARÇO DE 2006

o duvidoso disse ...

Nenhuma discussão sobre matemática seria completa sem mencionar


http://mathworld.wolfram.com. Você pode literalmente passar o dia todo lá.

Ótimo post pelo caminho!


12:55 PM, 17 DE MARÇO DE 2006

Jim M. disse ...

Portanto, a lição deste artigo é: "aprenda o que você precisa saber para fazer o que deseja
fazer".

Facilmente disse. Mais difícil saber aos 14 anos o que você quer fazer da sua vida.
12:57 PM, 17 DE MARÇO DE 2006

Anônimo disse ...

Dê uma olhada no "Probability and Computing" de Michael Mitzenmacher. Ele cobre


algoritmos aleatórios, limites de Chernoff, Lei de Shannon, processos ergódicos
estacionários e todas as coisas realmente interessantes de uma perspectiva
computacional. É algo desafiador, mas é um livro tremendamente bem escrito.

* Esse * é o livro que eu desejava que existisse quando eu estava aprendendo como
programar e como analisar a complexidade. Tudo o que faço hoje em dia é projetado
para arrastar problemas NP-completos para o domínio do tratável, por qualquer meio
possível. Ter uma compreensão firme da matemática subjacente a processos naturais e
computacionais é inestimável.

Alguém já mencionou isso, mas o Mathworld (mathworld.wolfram.com) e a Wikipedia


são ótimos para entender e conectar formalismos matemáticos com seus conceitos
relacionados.
13:03, 17 DE MARÇO DE 2006

Christian Anderson disse ...

Se você é um programador de computador, John von Neumann e as Origens da


Computação Moderna são um dos melhores livros de Matemática que eu poderia lhe
recomendar. Eu acho que a Amazon vende mais barato, mas verifique sua livraria da
faculdade. Eu tenho o meu usado por apenas US $ 38. Foi necessário ler para uma das
aulas de informática.
13:05, 17 DE MARÇO DE 2006

Mark H disse ...

Eu sou uma engenharia, e devo dizer que, embora eu use, matemática discreta para
modelar funções para lógica digital, de longe eu uso trigonométricas e cálculos
diferenciais muito mais, como modelar sistemas de mudança é muito mais importante
para mim, também o identidades trigonométricas gostaria de salientar são muito

steve-yegge.blogspot.com/2006/03/math-for-programmers.html 9/40
18/05/2019 Blogues de Stevey: Matemática para programadores
importantes, de que outra forma eu seria capaz de usar séries fouriers etc etc

Eu acho que se você fez alguma programação especialmente nas áreas de geomotria
como um motor de jogo que você provavelmente iria encontrar-se trabalhando com
essas funções muito mais .
13:10, 17 DE MARÇO DE 2006

Anônimo disse ...

Muito bem colocado! Eu costumava odiar a matemática, então comecei a tocar com o
Flash e me interessei em matemática como arte, é realmente lindo. Também ler os livros
de Bart Kosko foi muito intrigante, interligando, discutindo filosofia e arte ... pela
primeira vez eu finalmente entendi um pouco.

Eu gostaria que eles tivessem conversado sobre algumas dessas coisas quando eu estava
no colegial, eu teria prestado muito mais atenção. Quando você começa a entender a
história e os problemas reais que são resolvidos e mais importante que a matemática
tenta explicar ... oh meu ... eu teria sido um super geek na escola.
13:13, 17 DE MARÇO DE 2006

Anônimo disse ...

Acho que você pode ter dado a si mesmo uma imagem distorcida da matemática. Você
deixou de fora os dois campos mais ativos da matemática moderna, álgebra linear e
análise complexa. Estas, especialmente a álgebra linear, são vitais para qualquer
programação além do nível de utilidade. Álgebra Linear é a linguagem dos gráficos 3D, o
OpenGL é praticamente escrito como funções de álgebra linear. Álgebra linear e análise
complexa em conjunto são o que permitem compactação jpeg e compactação mp3, por
meio de sua análise wavelet infantil. Além disso, a probablilidade não é verdadeiramente
uma parte da matemática discreta. A introdução que recebemos em nossa primeira aula
de estatísticas é, na maioria das vezes, discreta. Isso porque até o ciclo tradicional de
cálculo (Calc 1: limites e derivativos, calc 2: métodos de integração, calc 3: multivariável,
calc 4, intro para diff. Eq. ) ou alguma variação, você não terá as ferramentas para
entender a parte contínua. A integração é o análogo contínuo da soma. Eu gosto do que
você tinha a dizer, acho que o ensino de matemática está errado na América. Eu acho que
as pessoas precisam aprender aritmética primeiro, simplesmente porque é um lugar fácil
para começar e é vital para sobreviver. O que vem a seguir é difícil.
13:16, 17 DE MARÇO DE 2006

awwaiid disse ...

Eu colocaria o ensino / aprendizagem de números primos como uma das primeiras


coisas a fazer. Eu gostaria que fosse ensinado antes da simplificação de frações, por
exemplo - se você dividir o numerador e o denominador em sua fatoração primária,
simplificar a fração se torna uma questão trivial de remover o que está em ambos os
números.

O ponto é perceber que os números primos são os átomos de inteiros. Com essa ideia
fundamental, muitas áreas da matemática de números inteiros se tornam transparentes.
13H18 DE 17 DE MARÇO DE 2006

Anônimo disse ...

Só queria dizer uma grande visão. Eu não percebi, mas apesar de meus professores
tentarem me ensinar como os professores costumam fazer, eu fui em frente e aprendi a
maneira como você descreveu que deveríamos aprender. Eu acho que o único problema
está no teste de retenção de conhecimento. (especialmente com menos recursos para
fazer um em um teste) Eu costumava me sair muito bem na resolução de problemas e
qualquer coisa 'livro aberto'. Mas foi, e ainda sou notoriamente terrível na memorização.
Consequentemente, eu me apresentava baixo, e meus professores e professores
costumavam dizer que sabiam que eu sabia das coisas, mas não conseguiam provar.
Tanto quanto seria maravilhoso se as pessoas pudessem aprender por si mesmas,
infelizmente exigimos mais responsabilidade do que o aprendizado real que pareceria.
13:23, 17 DE MARÇO DE 2006

Anônimo disse ...

Eu estou no mesmo barco agora: voltando por textos antigos da faculdade para revisar
minha matemática, que ficou muito enferrujada.

Eu inicialmente bati uma parede em reaprender todas essas coisas, e agora vejo que é
porque estou tentando aprender do jeito que foi originalmente ensinado para mim na
faculdade.

Seu caminho soa muito melhor (e muito mais divertido).

Obrigado!
13:35, 17 DE MARÇO DE 2006

José disse ...

steve-yegge.blogspot.com/2006/03/math-for-programmers.html 10/40
18/05/2019 Blogues de Stevey: Matemática para programadores
Ótimo post.
13H36 DE 17 DE MARÇO DE 2006

Anônimo disse ...

o duvidoso: acho que a Wikipédia superou em muito o Mathworld em termos de


utilidade e quantidade de informações.

Eu me vejo (como estudante de doutorado em matemática) usando a Wikipedia muito


mais do que o Mathworld atualmente.
13:44, 17 DE MARÇO DE 2006

Anônimo disse ...

Você estava falando sério sobre Stephen Kleene inventando o Kleenex? Eu não acho que
ele tenha idade suficiente para isso. Kleenex foi originalmente desenvolvido durante a
Primeira Guerra Mundial como um filtro de máscara de gás durante a Primeira Guerra
Mundial (veja este PDF ).
13:48, 17 DE MARÇO DE 2006

Anônimo disse ...

Bela postagem.

Eu queria continuar com isso:

>> Se você se ensinar matemática do jeito certo, você aprenderá mais rápido, lembre-se
disso por mais tempo.

Ok, eu tenho uma filha de seis anos prestes a embarcar no longo julgamento da educação
matemática e queria perguntar se você poderia me indicar os recursos que você
considera ensinar matemática com mais eficiência. Eu concordo com você em relação ao
currículo formal e passei muito tempo desaprendendo meu material de aula de
matemática, então se há uma maneira melhor, eu definitivamente estou disposto a
tentar. Pelo menos para salvar meus filhos a mesma tortura.

Obrigado!
1:49 PM, 17 DE MARÇO DE 2006

Jon disse ...

Isto é brilhante.

Eu moro no Canadá, e nosso currículo de matemática está estragado.

Para começar, sempre penso em mim como bom em matemática. Eu tenho feito um
programa chamado Kumon (começou no Japão, resume-se a ser 25 minutos de
matemática por dia, todos os dias, 365 dias por ano) e eu tive um grande começo nele. É
bastante logicamente estruturado e torna tudo muito fácil de aprender. O único
argumento que eu faria sobre isso é que não permite calculadoras, no entanto, penso
que, para a aritmética básica, a pessoa deve ser capaz de fazê-lo mentalmente de
qualquer maneira. Para encurtar a história, posso fazer álgebra linear na cabeça
enquanto o professor começa a escrever o primeiro passo no quadro.
Eu fiz Kumon por 7 anos. Isso é aproximadamente 2500 dias. Eu trabalhei como
instrutor nos últimos 2 anos e meio.

hoje eu larguei a matemática C30 IB.

Para quem não conhece o programa, o Baccalauriete Internacional é um programa


mundial e avançado. não faça isso. avise amigos, crianças, pessoas na rua. NÃO ENTRE
NO IB.

Não vale a pena. Eu não vou entrar nisso aqui.

o que eu quero é:
Trig. trigonometria é nozes. a maneira como é ensinada faz com que ela viole todos os
outros ensinamentos até este ponto. Há tanta coisa que seria mais útil. Alguém precisa
refazer os currículos.
14:24, 17 DE MARÇO DE 2006

hacker não cracker disse ...

Eu concordo totalmente. A matemática não é um pré-requisito para a programação. A


programação é mais um pré-requisito da matemática. Eu fico melhor na minha escola e
matemática da faculdade porque eu podia ver semelhanças na programação.
14H37, 17 DE MARÇO DE 2006

Anônimo disse ...

POST IMPRESSIONANTE! Eu quase nunca deixo comentários em blogs ... mas este
realmente bateu em casa. Continuem o bom trabalho e eu vou estar de volta!

steve-yegge.blogspot.com/2006/03/math-for-programmers.html 11/40
18/05/2019 Blogues de Stevey: Matemática para programadores
14:44, 17 DE MARÇO DE 2006

Anônimo disse ...

Sim eu concordo. Por favor, nos dê links e recursos que tornem o aprendizado de
matemática, * divertido *. Eu amo a sugestão da Wikipedia. Eu vou começar a fazer isso
agora.

Não mais? Onde um novato começa?

Por favor, salve as crianças da tortura ->

>> Ok, eu tenho uma filha de seis anos prestes a embarcar no longo julgamento da
educação matemática e queria perguntar se você poderia me apontar para quaisquer
recursos que você considera ensinar matemática de forma mais eficaz. Eu concordo com
você em relação ao currículo formal e passei muito tempo desaprendendo meu material
de aula de matemática, então se há uma maneira melhor, eu definitivamente estou
disposto a tentar. Pelo menos para salvar meus filhos a mesma tortura.
14:53, 17 DE MARÇO DE 2006

Vicki disse ...

Artigo maravilhoso.

Eu tive alguns problemas com matemática até o 8º ano. Então, quando a maioria dos
meus colegas estava fazendo Álgebra 1, eu fiz "Aritmética II". E então eu "peguei" e as
coisas estavam melhores. E sim, em muitos aspectos, a matemática era divertida.

Mas antes disso havia muitas lágrimas. E eu não uso muito do que aprendi na minha
vida diária como escritor de programa / tecnologia. (Então, novamente, a maior parte do
que é ensinado no ensino médio, e na faculdade, não tem relação com a vida real depois
da escola)

A propósito, minha mão está levantada. Eu posso fazer uma longa divisão no papel,
agora
14:56, 17 DE MARÇO DE 2006

Anônimo disse ...

Goedel, Escher e Bach - Uma eterna trança dourada. Douglas Hofstadter, 1979.

Não tenho certeza se eu diria que é um livro didático ...


14H59, 17 DE MARÇO DE 2006

Vicki disse ...

Re: "Godel, Escher, Bach"


veja também
http://www.cabochon.com/~stevey/blog-rants/godel-escher-blog.html
15:05, 17 DE MARÇO DE 2006

Anônimo disse ...

Se você quer aprender Mecânica Quântica / Eletrodinâmica, escolha um livro muito fino
chamado "QED" de Richard Feynman. Foi feito a partir de uma série de quatro palestras
que definem todo o negócio - até explica os reflexos do arco-íris nos CDs.

Descobri que as melhores explicações geralmente vêm do inventor original. Os artigos de


"ano milagroso" de Einstein são curtos, claros e brilhantes.
15:13, 17 DE MARÇO DE 2006

Anônimo disse ...

Eu não conheço ninguém, nem mesmo o flunkout do colégio, que não pode fazer longas
divisões.

Alguém mais acha que esse cara está fora para almoçar neste tópico?
15:13, 17 DE MARÇO DE 2006

MathCogIdiocy disse ...

A resposta para a pergunta sobre quem determina o currículo de matemática nos EUA é
o NCTM (Conselho Nacional de Professores de Matemática). Eles têm um conjunto de
padrões para cada série. Os estados usam esses padrões no todo ou em parte ao
determinar o que o currículo do estado específico incluirá.

Você pode encontrar informações sobre os padrões NCTM aqui -


http://www.nctm.org/standards/overview.htm.
15H40, 17 DE MARÇO DE 2006

steve-yegge.blogspot.com/2006/03/math-for-programmers.html 12/40
18/05/2019 Blogues de Stevey: Matemática para programadores
Anônimo disse ...

Eu concordo e ainda discordo. Depende da programação sendo feita. Como uma pessoa
mencionou, os gráficos requerem muita matemática se você programar a partir do zero,
como as transformações entre os planos 3D e 2D.

Por outro lado, se a programação diz um programa de CRM, não é preciso muita
matemática para rastrear tabelas e informações de clientes dentro de um banco de
dados.

Então, novamente, depende do que está sendo programado. Eu programei em ambos os


campos e posso ver a enorme diferença em programação com relação às habilidades
matemáticas necessárias.
16:14, 17 DE MARÇO DE 2006

Jesse disse ...


Eu não tenho certeza sobre isso. Uma parte de mim concorda com a amplitude primeiro
(é como eu prefiro operar), mas outra parte de mim diz que dominar algumas coisas é
saudável e bom.

Basicamente, esse cara está nos dizendo para aprender por conta própria, como
deveríamos estar fazendo de qualquer maneira. A razão pela qual a matemática não é
interessante para as pessoas não é um fracasso dos professores, é uma falha das pessoas
em abrir os olhos e pensar em aprender como algo que fazem fora da sala de aula. Você
não precisa me dizer para usar a Wikipedia para encontrar coisas interessantes.

As pessoas respondem a este post com "oh ótimo! Escrever um livro porque eu concordo
com você e vou comprá-lo!" Quando todo o ponto do artigo é apenas ir encontrar e ler
algumas coisas que são interessantes e úteis para você.

Então, no geral, essa é uma sacola misturada.

Eu concordo: aprenda sobre as suas próprias coisas que lhe interessam


Eu discordo: o sistema escolar está nos ferindo
16H16, 17 DE MARÇO DE 2006

Devin disse ...

Não se esqueça de ler Godel, Escher, Bach.

http://www.amazon.com/gp/product/0465026567/qid=1142641394/sr=2-
1/ref=pd_bbs_b_2_1/102-7588289-3509704?s=books&v=glance&n=283155
16:25, 17 DE MARÇO DE 2006

disse freaka ...


ei ei. O fechamento de Kleene é simples, tudo que você está fazendo é escrever palavras
de um alfabeto.
16:45, 17 DE MARÇO DE 2006

Anônimo disse ...

É realmente absurdo ensinar um algoritmo de divisão aos alunos se eles o esquecerem


logo após o teste sobre o assunto. tem que haver uma página no livro que apenas liste as
etapas individuais do algoritmo, porque há pessoas que são boas em memorização
mecânica e que na verdade se lembrarão dela para sempre e poderão usá-la se a
necessidade surgir. mas quão provável é isso? Ainda é bacana ter pessoas que possam
fazer cálculos no papel, no caso de alguém lançar uma bomba em seu país, todas as
calculadoras eletrônicas são destruídas e você tem que lidar com a logística de distribuir
os suprimentos agora escassos.

mas é muito mais importante explicar por que e como o algoritmo funciona. em primeiro
lugar, porque existem outros "tipos de aprendizagem"; pessoas que não conseguem se
lembrar de uma lista de etapas computacionais aparentemente arbitrárias com
facilidade, mas que serão capazes de realizar o cálculo sem esforço uma vez que o
"consigam". e, em segundo lugar, e essa é a parte importante, porque isso fornece a você
uma percepção real do assunto e desenvolve habilidades de resolução de problemas que
você pode fazer bom uso de todos os dias da sua vida.

Não me lembro das lições na escola quando me disseram como fazer divisão longa, ou
quais funções trigonométricas para aplicar a quais triângulos, ou quais funções
combinatórias a serem aplicadas a quais problemas. mas se eu tivesse que fazer nada
disso agora, eu poderia facilmente descobrir, porque

talvez seja verdade que "matemática é muito mais fácil de aprender depois que você sabe
programar". (talvez, também é verdade que a programação é muito mais fácil de pegar
depois que você sabe sua matemática.), mas sugerindo no mesmo writeup de usar o mais
simples possível (e tediosamente tediosa) algoritmo para realizar uma divisão não muito
rígido que ponto em casa. Se você é um cientista da computação, ou mesmo apenas um

steve-yegge.blogspot.com/2006/03/math-for-programmers.html 13/40
18/05/2019 Blogues de Stevey: Matemática para programadores
aluno comp-sci no primeiro ano, fazer isso seria absolutamente idiota. você deveria ser
capaz de criar um algoritmo melhor no local.

Certamente há algumas coisas nessa entrada que são verdadeiras para mim. No entanto,
eu definitivamente não estou tomando alguém sério que rotula principalmaterial
escolar "irritantemente complicado". Espera-se que algo que cada criança de 10 anos de
idade compreenda não seja simplesmente "irritantemente complicado", mesmo que haja
melhores maneiras de ensiná-la.
16H54, 17 DE MARÇO DE 2006

Doug disse ...

Você pode querer ler nas áreas de ciências da aprendizagem, design instrucional,
psicologia cognitiva e áreas afins. Veja, por exemplo, o livro "Como as pessoas
aprendem" e um livro sobre design instrucional chamado "Compreensão pelo design".

Já houve uma quantidade tremenda escrita sobre aprendizagem baseada em problemas


(PBL), instrução ancorada, aprendizagem enativa e outras técnicas que foram aplicadas
à educação matemática. Veja por exemplo a série de CDROM de Jasper Woodbury.

Um tema semelhante em todos eles é que você aprende no contexto, enquanto resolve
um problema do mundo real. Chama-se cognição situada ou aprendizagem situada.
17:08, 17 DE MARÇO DE 2006

Anônimo disse ...

Se você quer uma lógica matemática divertida, não pode se irritar com Raymond
Smullyan. Seus livros normalmente começam com uma série de problemas lógicos
fascinantes, com uma história para uni-los e, em seguida, segue para um estudo extenso
e agradável de algum ramo da lógica e fundações que quase sempre termina em uma
discussão sobre alguns dos trabalhos de Godel. uma nova direção a cada vez. Eu
particularmente sugiro "A Dama ou o Tigre", "Satã, Cantor e Infinito", e meu favorito
"Mock a Mockingbird", no qual ele introduz uma grande quantidade de lógica
combinatória (aka lambda calculus aka Lisp) sob a forma de um expedição de
observação de aves em uma série de florestas estranhas. A propósito, isso é
especialmente apropriado porque os principais fundadores do assunto eram Moses
Schonfinkel - o nome significa "pássaro bonito". - e Haskell Curry, um ávido observador
de pássaros. Você também pode obter alguma quilometragem de "Infinity and the Mind"
e a ficção matemática "White Light", de Rudy Rucker. Há também um antigo livro de
Dover chamado "How to Calculate Rapidamente" que ensina maneiras realmente úteis
baseadas em senso numérico de fazer quatro aritmética de banger que, praticada bem, o
tornará altamente independente de uma calculadora e melhorará sua intuição
aritmética.
17H21, 17 DE MARÇO DE 2006

Anônimo disse ...

Parece mesmo que, no passado, as equações de cálculo e diferencial estavam no centro


de vários empreendimentos de engenharia. Agora, no entanto, parece que probabilidade
e matemática discreta estão se tornando mais importantes, especialmente dadas as
novas mascaras interdisciplinares como 'algoritmos genéticos / programação genética'
(combinando biologia evolutiva com design de algoritmo), vários métodos de busca
baseados em insetos sociais (ACO , PSO - outra biologia encontra o mashup de
engenharia), bioinformática, etc. A probabilidade e a estatística desempenham um
grande papel na genética e na biologia em geral e agora estamos vendo a biologia e a
engenharia combinadas.
17:59, 17 DE MARÇO DE 2006

Eric disse ...

A quantidade de comentários aqui é simplesmente staggaring! Só queria dizer que achei


seu artigo uma boa leitura e até mesmo inspirador; Eu sou um codificador no sentido
XHTML / CSS (eu faço isso profissionalmente), mas estou inscrito em uma classe de
programação onde fazemos JavaScript, PHP e ActionScript. Quando se trata de fazer
projetos para a aula, tenho grandes idéias, mas tenho muito pouco tempo para fazê-las, e
quando me aproximo de algo, fico frustrado. O material mais interessante que eu faço no
ActionScript envolve trig ("A única matemática útil", meu professor disse uma vez), e
quanto mais eu leio sobre programação de propriedades de molas e tal, mais eu queria
entender o que eu estava copiando e colando a rede. Me faz perceber o quanto eles
andam de mãos e mãos, e ouvir essas coisas de um adulto que ainda está aprendendo
habilidades de programação e matemática me faz sentir muito melhor. Obrigado!
18:14, 17 DE MARÇO DE 2006

Axl disse ...

http://www.amazon.com/gp/product/1558606793/sr=8-
1/qid=1142648877/ref=sr_1_1/104-2348453-7316769?%5Fencoding=UTF8
18H30, 17 DE MARÇO DE 2006

Mario De Roma disse ...

steve-yegge.blogspot.com/2006/03/math-for-programmers.html 14/40
18/05/2019 Blogues de Stevey: Matemática para programadores
Todo esse post é tão positivista que me faz tremer.

Quero dizer: sim, você está certo, os adultos aprendem coisas do outro lado (foi essa
"amplitude inicial" que você disse?) E isso é um fato que eu gosto de outra pessoa, mas
eu notei. Obrigado.

Então:
1) Um STILL não pode se safar dizendo "Eu li na Wikipédia" (pegue um endosso público
para isso e isso provavelmente irá mudar - então: obtê-lo e provavelmente a Wikipedia
perderá editores)
2) Haverá momentos em vida você realmente não tem nenhuma maldita calculadora à
mão ou você não pode confiar em uma, (ei, TCPA está vindo!)
3) A escola não está destinada a produzir programadores, e no caso, eu me pergunto.

Sobre isso, então, talvez em um certo ponto, o futuro será; e com todos os
programadores (advogados e médicos), os recém-formados acabarão sendo
subespecializados.
18:37, 17 DE MARÇO DE 2006

mfwic disse ...

Eu estava na pós-graduação em EE no final dos anos 90 e fiz um semestre de


processamento de sinais em tempo discreto. O prof mencionou um empurrão na
academia para ensinar "DSP primeiro". Gostei da ideia assim que a ouvi.

Em integrações matemáticas em tempo discreto, somas e diferenciais são problemas de


subtração. Isso torna a compreensão da mecânica do cálculo muito mais fácil. A
matemática em tempo discreto é uma ótima maneira de introduzir o cálculo a qualquer
pessoa. Depois de entender os fundamentos, você pode, se preferir, fazer cálculos de
tempo contínuo. Claro que qualquer um que queira, deve ser capaz de ir direto ao tempo
contínuo. Mas aqueles que não precisam de matemática avançada não devem ficar com
apenas uma escolha para o cálculo.

mfwic
18:42, 17 DE MARÇO DE 2006

Anônimo disse ...

Excelente artigo. É estranho que eu comecei a me ensinar matemática igual a você.


Começa com wikipedia, e geralmente começa com um assunto menos relacionado à
matemática, como máquinas de turing, teoria das cordas, teoria heim, computadores
quânticos, etc.

Acho que o que eu mais concordo em seu artigo é que matemática deveria ser ensinada
em um primeiro formato amplo. Seria muito mais fácil e mais agradável se os conceitos
fossem ensinados primeiro em vez de serem afogados em exercícios e memorizações
ROTE. Isso é o que as referências são para.
18:42, 17 DE MARÇO DE 2006

Anônimo disse ...

O melhor que pode ser dito sobre este artigo é que ele é um emaranhado de truísmos
falsos; o pior que se pode dizer é que estamos lidando com um papo furado.
Cálculo não é "fácil". Se você acha que não concorda, tente resolver algumas equações
integrais simples. Depois de se recuperar desse desastre, você pode se divertir com o
cálculo das variações; e quando você se levantar do chão sangrando e recuar, tente um
pequeno mapeamento conformacional. Integrais no plano Argand operam de maneira
diferente do que no domínio dos reais, como o teorema de Cauchy nos assegura. Mas é
claro que o autor deste artigo não conhece nem o Teorema de Cauchy, nem o
mapeamento conformacional, nem nenhum dos outros elementos básicos do cálculo que
ele deturpa de maneira falsa e distorcida como "fácil".
Na maioria das tarefas de programação do mundo real, a teoria da probabilidade é tão
inútil quanto inútil. A grande maioria da programação envolve a travessia de listas e a
realização de vários tipos de tipos. Para essas tarefas, a teoria dos grafos e a teoria das
filas continuam imprescindíveis. Naturalmente, essas áreas de matemática nunca
chegaram à lista de coisas supostamente "importantes para saber" do autor. A álgebra
linear essencialmente não tem nenhuma conexão com a programação real no mundo
real, a menos que você precise resolver sistemas de equações simultâneas e, na maioria
dos casos, há maneiras muito mais simples de chegar à solução que funciona no mundo
real do que resolver conjuntos lineares simultâneos. equações. O método Monte Carlo é
um exemplo (e você não precisa saber a probabilidade de implementar o Monte Carlo,
Tantas outras afirmações falsas e pronunciamentos extravagantes sujam este artigo
(como bosta num pote de bala) que, quando você já leu 2/3 do caminho, percebe que é
tudo tolice inacreditável.
A arrogância sempre foi o pecado dos programadores. Infelizmente, ao contrário dos
engenheiros que constroem pontes ou físicos que constroem foguetes, um programador
cujo design falha pode sempre culpar a máquina - "compilador ruim", "memória
insuficiente", e assim por diante.

steve-yegge.blogspot.com/2006/03/math-for-programmers.html 15/40
18/05/2019 Blogues de Stevey: Matemática para programadores
A matemática é realmente ensinada mal na América, mas 99% dela, você nunca precisa
saber. Eu ainda não conheci nenhum especialista em eletricidade que já precisou saber
como fazer uma Laplace Transform para fazer um circuito funcionar, eu ainda não
conheci um graduado de CS que já precisou conhecer os detalhes da prova de
completude de Cohen em 1964 para fazer um programa funcionar , e eu ainda não
encontrei um programador que alegou que [preencher o espaço em branco: matemática
avançada ou linguagem de programação exótica] é na verdade "simples e fácil de
aprender" que não era um idiota incompetente ignorante.
18:57, 17 DE MARÇO DE 2006

Anônimo disse ...

Coisas interessantes. Eu concordo plenamente com a aprendizagem auto dirigida de


qualquer assunto. Mas eu acho que sua distância de sua juventude o cegou para a real
complexidade da matemática, particularmente da perspectiva de um estudante
encontrar a teoria pela primeira vez. Sim, os alunos superdotados podem e irão avançar
mais rápido do que o professor ensinando. No entanto, você deve lembrar que eles estão
ensinando a TODOS os alunos da turma. Além disso, o ponto da profundidade do
primeiro ensino é fazer com que os alunos aprendam uma coisa antes de se depararem
com conceitos matemáticos mais difíceis e abstratos. É fácil dizer que a integração é a
soma de uma função contínua. Outra é ensinar as crianças a reconhecer que a velocidade
é a integral da aceleração e que todas essas funções podem ser relacionadas graficamente
e são fundamentalmente conectadas matematicamente.

Eu acho que é seguro dizer que sua habilidade de se mover facilmente de um assunto
para outro deve muito aos professores que gastaram incontáveis horas perfurando em
nossas cabeças os fundamentos da matemática. Você pode aprender álgebra sem cálculo,
mas não vice-versa.
19:42, 17 DE MARÇO DE 2006

Anônimo disse ...

O livro de lógica clássica é Boolos, Burgess e Jeffrey, Computabilidade e lógica

http://www.amazon.com/gp/product/0521007585/sr=8-
1/qid=1142654323/ref=pd_bbs_1/102-5472329-8864945 ?% 5Fencoding = UTF8
20:02, 17 DE MARÇO DE 2006

Anônimo disse ...

Eu acho que foi um ato divino que me levou a este blog. Recentemente, tive uma enorme
vontade de aprender matemática (sou muito ignorante em matemática), mas não fazia
ideia de onde deveria começar. Então, obrigado pelo ótimo blog. Estou adicionando aos
meus favoritos.
20:05, 17 DE MARÇO DE 2006

czar disse ...

Aqui estão alguns livros que eu recomendo para qualquer um que queira aprender
matemática no contexto de alguns problemas interessantes:

A arte e a arte da resolução de problemas por Paul Zeitz


Resolução de problemas através de problemas de Loren C Larson
por Titu Andreesu
21:41, 17 DE MARÇO DE 2006

Jerome disse ...

Olá. Só preciso estender um enorme obrigado a você. Apenas no meu primeiro semestre
de comp sci e tem sido um tempo desde ive feito qualquer matemática. Às vezes eu fico
sentado e ouço o tipo de coisas que algumas pessoas estão falando durante a aula e eu
sinto que não pertenço a elas. É apenas um grande impulso de confiança para alguém
como eu ler algo assim. No final, isso me faz sentir um pouco melhor. Só porque eles
podem fazer toda essa matemática extravagante eu ainda consigo notas mais altas em
programação.

Eu também estarei de olho no seu blog.

Jerome
21:49, 17 DE MARÇO DE 2006

Anônimo disse ...

Eu concordo com o teor geral deste post. Há muito tempo tenho criticado a maneira
como a matemática é ensinada; parece calculado para desligar a maioria das pessoas. Eu
também acho que ensinar às crianças que a matemática é o estudo de padrões - qualquer
padrão - e depois dar-lhes alguma compreensão das coisas que eles sentem
visceralmente (por exemplo, taxas de mudança: uma bola rápida dói mais do que uma
lenta etc.) fazer muito para remover o "mistério". Exatamente como abordar o ensino de
matemática dessa forma é algo em que venho trabalhando há alguns anos. Espero
ensinar aos meus filhos muita matemática antes que eles limitem suas visões à

steve-yegge.blogspot.com/2006/03/math-for-programmers.html 16/40
18/05/2019 Blogues de Stevey: Matemática para programadores
matemática como simples manipulação de símbolos abstratos.

No entanto, uma reserva: parece-me que a sua abordagem à matemática (o método just-
in-time?) Leva apenas à compreensão superficial que pode ser perigosa - literalmente
mortal. Probabilidade e estatística, é uma área, por exemplo, onde esses erros podem ser
especialmente chocantes, pois, para alguns, parece enganosamente simples para alguns.
Sutilezas que vêm do conhecimento mais profundo estão perdidas.

Descobri em minha experiência, meus colegas de trabalho e em minha contratação, que


prefiro programadores / desenvolvedores cujos diplomas de graduação não eram em
Ciência da Computação. A maioria dos cursos de graduação da Comp Sci parecem deixar
a graduação com conhecimento de algumas línguas, alguns algoritmos e muito pouco
mais. Nenhum conhecimento de domínio de qualquer tipo na resolução de problemas do
mundo real (até exercícios básicos de laboratório ajudariam); e pouca intuição para
quando um resultado não faz sentido.

Na verdade, acredito que a Ciência da Computação, como geralmente ensinada agora,


não deve ser um curso de graduação: deve ser um diploma de pós-graduação.
Matemática, Química, Engenharia, Física, Biologia e alguns outros campos parecem
fazer uma base melhor para programadores na minha experiência.

Isso confunde a ideia de que existem majores de CS por aí que não tiveram a Lógica
Abstrata, uma das fundações da disciplina. Eu não vou incomodar listando outras áreas
que estão faltando.

A título de divulgação completa, devo declarar que meus diplomas são em Matemática,
Engenharia Elétrica e Ciência Política. Eu tenho muitos anos de experiência em
diferentes indústrias e estou fazendo um trabalho de pós-graduação em Biologia
Molecular entre fazer um monte de contratação para uma startup.

E alguém apontou que a ciência da computação é matemática?


21:54, 17 DE MARÇO DE 2006

Anônimo disse ...

Ummmm, a razão pela qual os programadores podem não achar a matemática útil é
porque eles não sabem disso.

Comecei a estudar a probabilidade do nível de pós-graduação e, de repente, o respeito


começou a surgir do meu jeito.

É triste, mas é verdade, que as empresas americanas enviem trabalhos para outros países
porque a força de trabalho dos EUA não faz matemática.

Uma boa leitura é:

"Sobre a Cremação da Ciência da Computação Realmente Ensinada"

http://www.cs.utexas.edu/users/EWD/ewd10xx/EWD1036.PDF

por Dykstra.
21H56, 17 DE MARÇO DE 2006

Anônimo disse ...

opps, parece que o URL foi cortado:

/ewd10xx/EWD1036.PDF

é o final
21:59, 17 DE MARÇO DE 2006

Anônimo disse ...

A coisa mais importante para mim em matemática e programação de computadores é


fazer provas. Escrever uma prova é muito parecido com escrever um programa. A
principal diferença é que outras pessoas precisam entender sua prova - o mesmo não
pode ser dito sobre o seu programa.
22H24, 17 DE MARÇO DE 2006

Jason disse ...

Eu concordo totalmente que a matemática é ensinada de forma errada, especialmente no


ensino médio. Sou um neurocientista em um hospital e, embora raramente conheça
cálculos, estou no meu pescoço com estatísticas quase diariamente. Qualquer pessoa em
qualquer área relacionada à saúde sabe que a matemática usada na maioria das vezes é
estatística. Uma compreensão da estatística é essencial para entender qualquer tipo de
estudo científico, especialmente aqueles relacionados à saúde humana. A maioria das
pessoas nunca aprende estatísticas além da média, mediana e modo, mas espera-se que
tomem decisões sobre sua saúde que envolvam estatísticas e probabilidade de nível mais

steve-yegge.blogspot.com/2006/03/math-for-programmers.html 17/40
18/05/2019 Blogues de Stevey: Matemática para programadores
alto. E não é apenas medicina onde as estatísticas são importantes, mas negócios,
governo e muitas outras áreas.

Eu acho que seria muito mais benéfico para os alunos do ensino médio obterem uma boa
base em estatística, cálculo ou pré-cálculo.
22H58, 17 DE MARÇO DE 2006

spacenookie disse ...

O currículo moderno de matemática estava em vigor nos anos 1930. Naquela época, as
empresas empregavam salas cheias de "computadores", pessoas com treinamento em
matemática, para fazer todas as coisas que hoje seriam feitas com uma calculadora de
mesa ou uma planilha eletrônica. As firmas de engenharia empregavam um número de
graduados em engenharia que elaboravam projetos e resolviam equações de cálculo. A
educação matemática não mudou muito desde então.

Eu concordo com muito do que o artigo diz. Se você conseguir enquadrar seu problema
em termos matemáticos, poderá encontrar alguém que resolva o problema para você.

Eu às vezes observo que os matemáticos se tornam programadores (mathematica,


matlab) enquanto os programadores, em sua maior parte, esquecem a matemática.
12:27 AM, 18 DE MARÇO DE 2006

Anônimo disse ...

Perdoe-me pelo que parece ser um post duplo, mas me senti obrigado a corrigir (e
adicionar) o post inicial; foi escrito às pressas antes de eu sair. Talvez seja o matemático
em mim.

Concordo com o teor geral do artigo original no que diz respeito ao ensino de
matemática. Há muito tempo tenho criticado a maneira como a matemática é ensinada;
parece calculado para desligar a maioria das pessoas. Eu também acho que ensinar às
crianças que a matemática é o estudo de padrões - qualquer padrão - e depois dar-lhes
alguma compreensão das coisas que eles sentem visceralmente (por exemplo, taxas de
mudança: uma bola rápida dói mais do que uma lenta etc.) fazer muito para remover o
"mistério". Exatamente como abordar o ensino de matemática dessa forma é algo em que
venho trabalhando há alguns anos. Espero ensinar aos meus filhos (quando os tenho)
muita matemática antes de limitar suas visões à matemática como simples manipulação
de símbolos abstratos.

Algumas reservas, no entanto: parece-me que a sua abordagem à matemática (o método


just-in-time?) Leva apenas à compreensão superficial que pode ser perigosa -
literalmente mortal. Probabilidade e estatística, é uma vasta área que abrange a
termodinâmica e grande parte da mecânica quântica, por exemplo. Erros podem ser
especialmente notórios aqui, pois parece enganosamente simples para alguns. Ensaios
clínicos mal concebidos são apenas um exemplo. Sutilezas que vêm do conhecimento
mais profundo estão perdidas nessa "simplicidade".

Descobri em minha experiência - meus colegas de trabalho anteriores e em minha


contratação - que prefiro programadores / desenvolvedores cujos cursos de graduação
não eram em Ciência da Computação. A maioria dos cursos de graduação da Comp Sci
parecem deixar a graduação com conhecimento de algumas línguas, alguns algoritmos e
muito pouco mais. Nenhum conhecimento de domínio de qualquer tipo na resolução de
problemas do mundo real (até exercícios básicos de laboratório ajudariam); e pouca
sensação intuitiva para quando um resultado não faz sentido. Esses graduados são
frequentemente muito estreitos.

Na verdade, acredito que a Ciência da Computação, como geralmente ensinada agora,


não deve ser um curso de graduação - deve ser um grau avançado. Matemática, Química,
Engenharia, Física, Biologia e alguns outros campos parecem fazer uma base melhor
para programadores na minha experiência.

Isso confunde a ideia de que existem majores de CS por aí que não tiveram a Lógica
Abstrata, uma das fundações da disciplina. Eu não vou incomodar listando outras áreas
que estão faltando. "As maiores do CS pensam que não precisam de matemática?" Hã?!

Alguns posts anteriores a este explicam mais detalhadamente a falácia dessa abordagem
superficial: a filosofia do "aprendizado-apenas-enought-to-get-by". Infelizmente mostra
nos resultados dos programadores que vêm do fundo refletido no artigo. Algumas coisas
são difíceis de aprender e nenhuma simplificação alcançará a profundidade necessária.
Aviões reais irão colidir, os pacientes receberão uma overdose de raios X, seres humanos
reais podem realmente morrer.

A título de divulgação completa, devo declarar que meus diplomas são em Matemática,
Engenharia Elétrica e Ciência Política. Eu tenho muitos anos de experiência em
diferentes indústrias como engenheiro e programador, entre outras coisas; e estou
fazendo um trabalho de pós-graduação em Biologia Molecular entre fazer várias
contratações para uma startup. Embora, provavelmente, eu tenha algum preconceito,
acho que essas opiniões vêm de uma experiência duramente conquistada.

steve-yegge.blogspot.com/2006/03/math-for-programmers.html 18/40
18/05/2019 Blogues de Stevey: Matemática para programadores

E alguém apontou que a ciência da computação é matemática?


03:26, 18 DE MARÇO DE 2006

Anônimo disse ...

Perdoe-me pelo que parece ser um post duplo, mas me senti obrigado a corrigir (e
adicionar) o post inicial; foi escrito às pressas antes de eu sair. Talvez seja o matemático
em mim.

Concordo com o teor geral do artigo original no que diz respeito ao ensino de
matemática. Há muito tempo tenho criticado a maneira como a matemática é ensinada;
parece calculado para desligar a maioria das pessoas. Eu também acho que ensinar às
crianças que a matemática é o estudo de padrões - qualquer padrão - e depois dar-lhes
alguma compreensão das coisas que eles sentem visceralmente (por exemplo, taxas de
mudança: uma bola rápida dói mais do que uma lenta etc.) fazer muito para remover o
"mistério". Exatamente como abordar o ensino de matemática dessa forma é algo em que
venho trabalhando há alguns anos. Espero ensinar aos meus filhos (quando os tenho)
muita matemática antes de limitar suas visões à matemática como simples manipulação
de símbolos abstratos.

Algumas reservas, no entanto: parece-me que a sua abordagem à matemática (o método


just-in-time?) Leva apenas à compreensão superficial que pode ser perigosa -
literalmente mortal. Probabilidade e estatística, é uma vasta área que abrange a
termodinâmica e grande parte da mecânica quântica, por exemplo. Erros podem ser
especialmente notórios aqui, pois parece enganosamente simples para alguns. Ensaios
clínicos mal concebidos são apenas um exemplo. Sutilezas que vêm do conhecimento
mais profundo estão perdidas nessa "simplicidade".

Descobri em minha experiência - meus colegas de trabalho anteriores e em minha


contratação - que prefiro programadores / desenvolvedores cujos cursos de graduação
não eram em Ciência da Computação. A maioria dos cursos de graduação da Comp Sci
parecem deixar a graduação com conhecimento de algumas línguas, alguns algoritmos e
muito pouco mais. Nenhum conhecimento de domínio de qualquer tipo na resolução de
problemas do mundo real (até exercícios básicos de laboratório ajudariam); e pouca
sensação intuitiva para quando um resultado não faz sentido. Esses graduados são
frequentemente muito estreitos.

Na verdade, acredito que a Ciência da Computação, como geralmente ensinada agora,


não deve ser um curso de graduação - deve ser um grau avançado. Matemática, Química,
Engenharia, Física, Biologia e alguns outros campos parecem fazer uma base melhor
para programadores na minha experiência.

Isso confunde a ideia de que existem majores de CS por aí que não tiveram a Lógica
Abstrata, uma das fundações da disciplina. Eu não vou incomodar listando outras áreas
que estão faltando. "As maiores do CS pensam que não precisam de matemática?" Hã?!

Alguns posts anteriores a este explicam mais detalhadamente a falácia dessa abordagem
superficial: a filosofia do "aprendizado-apenas-enought-to-get-by". Infelizmente mostra
nos resultados dos programadores que vêm do fundo refletido no artigo. Algumas coisas
são difíceis de aprender e nenhuma simplificação alcançará a profundidade necessária.
Aviões reais irão colidir, os pacientes receberão uma overdose de raios X, seres humanos
reais podem realmente morrer.

A título de divulgação completa, devo declarar que meus diplomas são em Matemática,
Engenharia Elétrica e Ciência Política. Eu tenho muitos anos de experiência em
diferentes indústrias como engenheiro e programador, entre outras coisas; e estou
fazendo um trabalho de pós-graduação em Biologia Molecular entre fazer várias
contratações para uma startup. Embora, provavelmente, eu tenha algum preconceito,
acho que essas opiniões vêm de uma experiência duramente conquistada.

E alguém apontou que a ciência da computação é matemática?


3H28 DE 18 DE MARÇO DE 2006

lgatto disse ...

Obrigado por este artigo legal. Eu particularmente aprecio (i) a maneira desinteressada e
relaxada de abordar e estudar matemática que você descreve, (ii) suas dicas gerais e (iii)
a lista de livros que você mencionou.
Vou ficar de olho em mais de seus blogs.
3H33 DE 18 DE MARÇO DE 2006

Anônimo disse ...

Você pode seguir este link para obter um bom ebook gratuito sobre lógica matemática,
escrito por Stefan Bilaniuk:

http://euclid.trentu.ca/math/sb/pcml/pcml-16.pdf
4H05, 18 DE MARÇO DE 2006

steve-yegge.blogspot.com/2006/03/math-for-programmers.html 19/40
18/05/2019 Blogues de Stevey: Matemática para programadores
Dave Rosen disse ...

Você deveria escrever um livro de homem.

Gostei disso não apenas pelo ângulo Math, mas também por você aprender algo novo. Eu
acho que quando muitas pessoas deixam a escola, elas apenas continuam a se expandir
lá e lentamente você se torna um pouco estagnado.

Não importa qual seja o assunto, se você estiver alimentando seu cérebro, algum
combustível certamente lhe ajudará com a programação ou o que seja.

Realmente ótimo trabalho.


4H20, 18 DE MARÇO DE 2006

Kirk disse ...


Conte comigo, baby boomer, como alguém que sempre teve problemas com matemática
mais alta. Ah, e eu disse que eu era o produto da 'nova matemática' ensinada no início
dos anos sessenta? Por quase três anos recebi a 'nova matemática' na minha garganta e
nunca aprendi. Esse pequeno experimento em educação me custou muito tempo e
dinheiro.

Posso usar matemática? Sim, mas sem os fundamentos apropriados, foi cada vez mais
difícil, quanto mais eu estudava matemática. No mundo real, você tem livros de
referência facilmente acessíveis e, se souber de qual informação precisa, procure-a. No
mundo dos acadêmicos, você memoriza, memoriza e memoriza. Isso produz
matemáticos? Não, isso produz papagaios que grasnam de volta a resposta correta
quando fazem a pergunta certa. Fineman (SP) descobriu que quando ele foi ao Brasil e
viu suas faculdades.

Em suma, esta foi uma boa leitura.


6H12 DE 18 DE MARÇO DE 2006

Anônimo disse ...


Parei de ler quando cheguei ao ponto em que o autor afirma que acha que a
complexidade de Kolmogorov é mais importante que o cálculo. Este artigo é uma piada é
tantos pontos que nem sequer há nenhum ponto para separá-lo.

Eu não estou surpreso que as pessoas queiram acreditar nisso, no entanto.


6H29 DE 18 DE MARÇO DE 2006

Anônimo disse ...

Eu faço matemática para ganhar a vida e gosto de encontrar pessoas que percebem que a
matemática é útil fora da matemática que aprendem na escola.

Para um programador, o cálculo é quase inútil, a menos que você esteja fazendo
computação gráfica, mas acho que algumas das coisas mais discretas devem aparecer em
praticamente todos os programas já escritos. Não recomendo ignorar a divisão longa,
porque existem generalizações dessa ideia chamadas "domínios integrais". onde isso é
importante quando você precisa encontrar o maior divisor comum (importante em
aplicativos de criptografia).

Por lógica eu recomendo livro que usei em filosofia The Logic Book . A maioria dos
textos matemáticos discretos também cobre a lógica.
7H31 DE 18 DE MARÇO DE 2006

Ron Bannon disse ...


Eu escrevi um pequeno livro sobre modelagem estocástica que pode ser adequado para
programadores iniciantes. Email

ron .dot. bannon .at. gmail .dot. com

"modelos estocásticos" na linha de assunto, se você


quiser uma cópia de rascunho - estou basicamente procurando por comentários.
8H38, 18 DE MARÇO DE 2006

Anônimo disse ...


Eu estava tendo essa conversa com meu namorado hoje de manhã. Sou programador e
ele é advogado. Nenhum de nós é nem um pouco científico, e acabamos de passar
matemática suficiente para chegar à universidade. Mas nós não nos lembramos de nada
da matemática escolar além da idade de 9 anos. A coisa toda foi tão mal ensinada ... nós
dois estávamos apenas dizendo que conhecíamos termos como trigonomometria,
logaritmo, etc ... mas não fazemos ideia como eles se encaixavam ou como deveríamos
usá-los. Na verdade, acho que depois de passar tantos anos na escola não entendendo
matemática e nem mesmo ser informado em que circunstâncias práticas eu seria
capaz de usar qualquer peça de matemática em particular.Eu até tenho um tipo
de fobia de matemática ou dislexia agora, onde mal consigo pensar em símbolos

steve-yegge.blogspot.com/2006/03/math-for-programmers.html 20/40
18/05/2019 Blogues de Stevey: Matemática para programadores
matemáticos sem congelar ... Mas eu percebi anos atrás que a chave para as crianças
entenderem essas coisas era que elas aprendessem as aplicações práticas primeiro, para
que pudessem ver como os conhecimentos matemáticos poderiam salvá-los de ter que
"reinventar a roda" na solução de problemas reais. É incrível que eu tenha sido capaz de
trabalhar como técnico de informática e depois como programador, já que tenho um
bloqueio mental em matemática.

De fato, em meus momentos mais cínicos, vejo que, para a maioria das crianças, a escola
serve apenas como uma espécie de prisão diurna - projetada para mantê-los fora das
ruas e longe de problemas enquanto seus pais trabalham. Eu não consigo pensar em
nada de valor que eu aprendi na escola (e eu comecei a tirar 5 graus). Quanto de uma
perda de tempo é para todas as outras crianças.
9H32, 18 DE MARÇO DE 2006

Anônimo disse ...

Não sei como você conseguiu pular a Teoria dos Números. Um livro sólido de teoria dos
números básicos (Kochy vem à mente logo de cara) é incrivelmente útil para
programadores. Usando seu exemplo de dividir grandes números, algumas relações de
congruência básicas podem tornar isso trivial para se estender a situações muito mais
elaboradas, além de fornecer um conjunto muito forte de 'truques', como expulsar 9s
para verificar somas, verificações eficientes de paridade, etc etc.
10H20, 18 DE MARÇO DE 2006

Szili disse ...

Obrigado! Eu recuperei minha motivação para aprender para o meu exame abrangente.
Especialmente para essa complexidade de Kolmogorov…;)
11:29 AM, 18 DE MARÇO DE 2006

Anônimo disse ...

Bem, Stevey, estou feliz por você estar aprendendo mais matemática e gostando, mas
acho que seu artigo foi bastante fraco.

Então você (uma pessoa) não aprendeu muita matemática no ensino médio ou na
universidade, porque * eles * ensinaram errado. Em primeiro lugar, sua experiência
recém-descoberta em estatística deve indicar que um tamanho de amostra de um não é
muito impressionante. Segundo, você pode estar aprendendo mais porque está muito
mais motivado, já que está escolhendo o que quer aprender. Você teria escolhido alguma
coisa quando adolescente?

Eu acho que o ponto mais importante (isto é, um dos que eu concordo, ha!) É que é
importante motivar os alunos a aprender algo e engajar sua intuição. Lembro-me de
aprender cálculo vetorial, e achar difícil, e depois aprender a física (eletromagnetismo)
que deu origem à matemática, e de repente entender tudo (ok, infelizmente nem todos,
mas muito mais!).

Talvez seja outra uma generalização ruim, mas acho que as pessoas aprendem muito
melhor quando podem imaginar o que está acontecendo e aplicar sua intuição, em vez de
apenas empurrar símbolos ao redor (o que também é interessante mais tarde, na ciência
da computação).

O que eu pessoalmente gosto de matemática funky é que isso parece esticar meu cérebro
de maneiras totalmente novas, e acabo saindo com uma melhor compreensão de como
todo o universo se encaixa. E quando você vê conceitos de diferentes áreas se juntando
(álgebra linear para cálculo multi-variável, tensores de inércia parecendo matrizes de
covariância a partir de estatísticas) é bem legal.

E sim, eu posso fazer uma longa divisão no papel. Inferno, eu posso ter uma raiz
quadrada, mas eu sou um geek que gosta de matemática (e usa diariamente, no meu
trabalho de programação - principalmente coisas 3D). Eu também sou sortudo porque
sou bom nisso e tive bons professores.

Então, sim, os alunos devem aprender mais álgebra linear e estatística, e sim, é possível
aprender matemática à medida que você envelhece, mas não para a maioria do resto do
seu post "Solucionei os problemas de aprendizado de matemática do mundo".
11:49 AM, 18 DE MARÇO DE 2006

Ewan disse ...

Eu discordo de você dizendo que o ensino de matemática está errado. A matemática


precisa ser ensinada primeiro, você pode lembrar quais foram as primeiras Matemáticas
que aprendeu na escola? Para contar ao lado de adicionar / subtrair, essa multiplicação é
adicionada várias vezes e a divisão é quantas vezes você pode subtrair um número do
outro. Até o momento você começa a nivelar a idéia é que você começa a se especializar,
aqui na Inglaterra para um nível de matemática padrão você pode especializar-se em
estatísticas, discretos, mecânica. O problema é que a maioria das crianças não vê como
certas peças básicas de matemática se encaixam mais tarde e aprendem com elas antes
de entrar na interessante / divertida Matemática (eu tenho 16 anos e eu estaria lá se não

steve-yegge.blogspot.com/2006/03/math-for-programmers.html 21/40
18/05/2019 Blogues de Stevey: Matemática para programadores
fosse por alguns dos meus professores de matemática).
A propósito, enquanto estou fazendo meus níveis A, pesquiso matemática no mundo da
matemática e na Wikipédia e compartilho com meus professores de matemática, isso faz
interessantes discussões sobre matemática que eu quero investigar. Eu também sou
ensinado certos elementos de matemática antes que alguém seja assim.
13:03, 18 DE MARÇO DE 2006

Patrick Hall disse ...

Gostei muito do seu post.

Aqui está um ótimo livro que vem me desafiando há alguns anos:

David MacKay: Teoria da Informação, Inferência e Algoritmos de Aprendizagem

A coisa toda também está online.


13:20, 18 DE MARÇO DE 2006

Amit Kulkarni disse ...

Estou feliz por ter encontrado o seu post através do osnews.com !! Estou pensando
seriamente em aplicar algumas das coisas em nosso campo.

Ansiosos para mais de suas divagações de matemática


14H40 DE 18 DE MARÇO DE 2006

Anônimo disse ...

Quantum é fácil.

Quantum I: Resolva INT (f ~ (x) * f (x) dx) = 1 onde f ~ (x) é o conjugado complexo de f
(x).

Quantum II: Solve H * Psi = E * Psi onde E é a energia, Psi é a equação espaço-tempo da
partícula (s), e H é o hamiltoniano (como você aprende na mecânica) escrito em termos
de operadores (p -> -i * hbar * d / dx).
14:52, 18 DE MARÇO DE 2006

- = DD32 = - disse ...

Ótimo blog.

Primeiro até o meu primeiro ano de universidade, E até os últimos 2 anos do ensino
médio eu realmente sabia que WTF eu estava fazendo em matemática, então veio os
últimos 2 anos em uma escola diferente e eu estava indo imediatamente WTH é isso?

Eu estava sendo ensinado a fazer quem sabe o que e não ser capaz de entender o que foi
usado, cavando equações na minha garganta e me dizendo que encontra x quando algo
mais é inútil de eu não posso reconhecer quando a equação seria realmente útil.

Então, agora vem a universidade, E eu estou fazendo matemática discreta como uma
primeira unidade, bastante fácil de entender diretamente fora do bastão ao contrário de
muitos outros que pensaram que eram excelentes em matemática nos últimos 2 anos ..
..Excepto, Long divisão é algo que eu nunca foi Tentado a fazer, isso é certo, eu nunca
pensei como fazer isso, eu realmente não poderia resolver isso .. foi assumido que todos
saberiam como fazê-lo quando o passado 7 anos eu tinha sido dito "Não, não se preocupe
com isso, basta usar a calculadora, você sempre terá uma alça, e se você não, há
subtração" Algo que eu concordo com ..
Então agora chegou o tempo que eu preciso sei divisão longa - Divisão Binária - Eu ainda
não tenho 100% de certeza sobre como fazer isso ... mas, supostamente, adivinha como
eu cheguei ao meu entendimento atual sobre isso?
Escrevi uma função PHP para fazer exatamente isso, de fato, sempre que tenho um
conceito de matemática que não consigo entender agora, escrevo uma função / programa
PHP para fazer isso manualmente sem depender de todas as funções matemáticas
incorporadas (Ok, FLOOR () e ROUNDUP () para arredondar para o próximo número
maior ou menor, mas isso é apenas porque os humanos podem fazer isso em um instante
em que os computadores precisam de muito mais etapas), mas você sabe o que? Na
verdade, ele está me ensinando como fazer isso na minha cabeça, eu posso ver a lógica
por trás dele, eu posso ver onde a estrada se divide e há uma escolha de executar duas
tarefas diferentes que fazem parte do mesmo conceito.

E mais uma vez eu posso realmente seguir e se destacar em matemática mais uma vez.
Pode não ser um curso de Ciência da Computação (na verdade, o seu Bach de Tecnologia
da Informação - mas ninguém comentar sobre isso), mas ainda requer um pouco de
conhecimento.

Outra coisa que eu notei? Aqueles que tentam fazer programação funcional e chamada
repeditiva de funções (termo técnico me escapa agora) geralmente não têm
absolutamente nenhuma idéia de como resolver uma função complexa .. Uma vez pensei
como fazer a função matemática correta, e ENTÃO ensinando a programação eles ficam

steve-yegge.blogspot.com/2006/03/math-for-programmers.html 22/40
18/05/2019 Blogues de Stevey: Matemática para programadores
toda vez ..

Há algumas matemáticas que precisam ser pensadas antes da Programação, mas há


muito mais matemática que deve ser feita depois das técnicas básicas de programação.
Isso pode soar estúpido para uma pessoa que não é um computador, mas com que
frequência você verá em uma escola alguém? Quem gosta de usar computadores - em
particular programar - consegue entender e entender o trabalho muito mais fácil?
Quantas vezes são aqueles que não têm absolutamente nenhum conhecimento de
matemática aqueles que olham para a programação e não podem absolutamente
entender uma palavra dela. Mesmo que seja simples o que ele faz, se alguém não conhece
matemática, eles não seriam capazes de escolher geralmente acima ...

Great Post, e se o blogueiro tiver um feed RSS, você acabou de conseguir outro leitor.

D
3:00 PM, 18 DE MARÇO DE 2006

Anônimo disse ...

Obrigado, bom artigo.


16H17, 18 DE MARÇO DE 2006

Anônimo disse ...

Foi bom encontrar este blog, pois até agora eu realmente não conhecia mais ninguém
que é um
amador de matemática. Pessoalmente, acredito que a matemática amplia minha
compreensão das coisas e eu sou capaz de
pensar de uma maneira muito mais lógica quando estou fazendo matemática
regularmente. E sim, Steve, eu uso SÓ
caneta e papel para fazer minha matemática - qualquer matemática, embora discreta.
Caneta e papel me dá a sensação que eu acho que
falta em ler de um site ou ter minhas somas feitas por uma calculadora - permite-me ter
uma visão de nível básico das
coisas no trabalho (e acredite, é assim que a maioria das pessoas faz Math na Índia Ou
talvez seja assim, quando
eu estava na escola). Quando fazia parte do meu currículo, nunca dei muita atenção a
isso. Mas anos depois, quando
Eu sou um engenheiro de software, mexendo em Java, Oracle, Unix, PERL, acho que é
algo que eu sinto falta daqueles dias .--- Abhishek Ghose
19:06, 18 DE MARÇO DE 2006

Anônimo disse ...

Nenhuma bebida envolvida?

Blasfêmia!
20:13, 18 DE MARÇO DE 2006

Dr. MindHacker disse ...

um idiota escreveu:

Anonymous disse ...

"Esta é a coisa mais estúpida que eu li em um longo tempo. Esse cara argumenta que ele
não usa vários tópicos que estão no currículo atual, portanto, eles não deveriam estar lá
Ele então defende seu próprio currículo, que é significativo apenas para os
programadores de computador ... "blá blá blá

Tente ler o título do artigo antes de saltar da selva de suas emoções para uma discussão
intelectual. Este cara está falando de matemática para * programadores *, então sim, ele
está recomendando um currículo de acordo, e eu acho isso muito bem pensado.
7H43 DE 19 DE MARÇO DE 2006

Anônimo disse ...

Você precisa de cálculo para aprender a probabilidade !! Probabilidade não está


contando, é muito mais, e você precisa de pelo menos cálculo.

Combinatória é um campo muito escorregadio, não tão fácil quanto parece estar
implicando.

Matrizes têm sido tradicionalmente ensinadas no ensino médio. Eu os aprendi lá, assim
como combinações básicas e permutações, o triângulo de Pascal, expansões binomiais,
eliminação gaussiana, regra de Kramer, etc. em uma escola secundária de classe
trabalhadora em Richmond, CA. (Conhecida por sua baixa escolaridade.)

Matrizes são um exemplo de um espaço vetorial, de modo algum equivalente à Álgebra


Linear.

steve-yegge.blogspot.com/2006/03/math-for-programmers.html 23/40
18/05/2019 Blogues de Stevey: Matemática para programadores

A Álgebra Linear é a disciplina matemática mais importante no ensino de graduação.


Você começa a fazer matemática real, abstração séria e é aplicável a tudo sob o sol.

Uma das razões pelas quais a ciência da computação progrediu no ritmo que tem é o uso
da abstração. Está em toda parte na ciência da computação. A abstração também está no
coração da aprendizagem da matemática. Você está se concentrando em aplicativos e
perdendo o ponto real: poder pensar. É isso que permite que você faça ótimos
aplicativos.

Você está fazendo a amplitude, mas ainda não chegou à profundidade, pelo menos não
neste artigo.
Continue trabalhando. Não importa o seu caminho para a matemática, vai pagar
generosamente no final, se você continuar.

Algumas das coisas que você está experimentando é prontidão matemática. Você está
pronto e você não estava mais cedo. Mas eu também mudaria o aprendizado da
matemática. Eu eliminaria calculadoras para que a experiência de "como as coisas vão"
esteja sendo aprendida o tempo todo. Os alunos que aprendem sem calculadoras
"entendem" de uma maneira que aqueles que os usam simplesmente não o fazem.

Eu enfatizaria a construção de coisas e geometria muito cedo. Faça isso tão importante
quanto a aritmética. Deve ser o mais físico possível.

Peça aos professores que amam matemática ensiná-lo! A maioria dos nossos professores
nem sabia matemática.

Mais uma coisa, a divisão longa é o primeiro algoritmo realmente interessante. Ele pára
e é fácil ver que isso acontece. O que lhe deu sua primeira compreensão de algoritmos?

Espero ver o que você tem a dizer em mais cinco anos, depois de ter feito isso por algum
tempo.
10H01, 19 DE MARÇO DE 2006

Paulo disse ...

Eu sou um professor de matemática em uma faculdade comunitária. Eu nunca ensinei


matemática no ensino médio. Espero que isso não soe muito definsivo ou muito cínico.

Você definitivamente tem muitos pontos válidos. Estatística e Probabilidade (incluindo


métodos de contagem) é muito útil e pode ser ensinado no nível do ensino médio. Eu
substituiria a geometria do ensino médio por estatísticas se eu estivesse no comando.

Eu tenho duas diferenças principais com o que você está dizendo com base no que eu
tento realizar como professor, e o que você quer de matemática como estudante e
profissional.

Primeiro, você está (você abertamente) olhando para ele do ponto de vista de um
programador. Eu vou reelaborar o que alguém postou. Cálculo (com trigonometria) é a
ferramenta matemática mais poderosa que existe, porque a maioria das situações é
modelada com funções que são contínuas. Assim, a matemática na escola pública é
unânime em sua abordagem para levar um aluno a um ponto em que ele possa suceder
em uma aula de cálculo. A única viagem lateral tradicionalmente feita é para Geometria.
Eu, pessoalmente, defendia tirar Geometry da lista da escola. A principal razão para essa
aula é ensinar um aluno a entender e ser capaz de produzir uma prova lógica. Uma
habilidade que a maioria dos alunos não precisa antes de dominar as habilidades básicas
da matemática, e estou incluindo o cálculo como uma "habilidade básica".

O segundo problema que tenho com a sua análise é que você, e a maioria de seus leitores,
está intelectualmente longe, muito acima da média do ensino médio e até do estudante
universitário. Você menciona que, por ser um programador, você sabe o que é uma
função e o que ela faz. Eu lhe direi que College Algebra é o primeiro curso de matemática
de nível universitário que um não-orientado a ciências (alguém que não tenha passado
pelo menos Álgebra II no ensino médio) terá. A Álgebra Universitária é
aproximadamente definida como o estudo de funções e seus gráficos. A maioria dos
meus alunos deixa minha aula de álgebra na faculdade, apesar dos meus melhores
esforços para falar continuamente sobre o conceito, sem realmente entender o conceito
de uma função contínua. Porque eles não são capazes de entender isso.

Concordarei que isso deixa o ensino médio e a faculdade com um problema. Houve um
dia não muito tempo atrás que qualquer um que recebesse um diploma universitário
tinha que ter pelo menos um semestre de cálculo, mesmo que fosse um curso de arte. A
noção de que você irá usar isso na vida real só se aplica ao Calculus, Trig, e novamente
incluirei Stats. Álgebra, por si só, é quase inútil. Os chamados "aplicativos" que
supostamente imitam situações da vida real são ridículos. O único propósito para
aprender Álgebra é poder fazer Cálculo. E embora seja verdade que até certo ponto os
conceitos em Cálculo não são tão difíceis de entender, a álgebra envolvida em navegar
com sucesso qualquer outra coisa além de polinômios é geralmente o que mais

steve-yegge.blogspot.com/2006/03/math-for-programmers.html 24/40
18/05/2019 Blogues de Stevey: Matemática para programadores
inviabiliza os alunos de Cálculo. Meu ditado favorito nessa aula é "

Então começamos a tentar educar segmentos cada vez maiores da população. Pessoas
que nunca sonharam em obter um diploma há 30 anos estão agora dando uma chance.
Mas a maioria deles não é capaz de dominar o cálculo. Muitos deles não podem lutar
contra a álgebra básica. Eles não podem dominar as manipulações algébricas e / ou os
conceitos necessários para serem bem sucedidos. Mas, os educadores insistem que eles
se provam, pelo menos, um pouco dignos, forçando-os a ter alguma matemática.

Então, eu desisti de justificar a matemática além de afirmar que o que eles estão
realizando aqui é provar para alguém (as pessoas que administram o sistema
educacional) que eles podem executar procedimentos longos e tediosos sem cometer
erros pelo menos 70% do tempo. . É o melhor que você pode esperar em termos da
população em geral.

Eu sonhei com uma solução. Eu acho que o que deve ser feito é reestruturar a
matemática para que um aluno faça um curso de um semestre em álgebra polinomial,
onde eles dominam essas habilidades básicas. Sem raízes, sem expressões racionais
(expressões algébricas que parecem uma fração), apenas polinômios. Muitos mais
estudantes poderiam lidar com isso. Então eles pegariam "Polynomial Calculus". Os
polinômios lidam com a maioria das situações da vida real e você pode demonstrar o
poder do cálculo. As especializações em matemática e ciências precisariam, então, de
mais clases que as ensinassem a lidar com funções algébricas mais complicadas, e então
aplicariam os conceitos de Cálculo àquelas funções.
11:22, 19 DE MARÇO DE 2006

Anônimo disse ...

Um grande livro sobre lógica matemática, ou lógica simbólica moderna como a conheci,
é "Lógica: Técnicas de Raciocínio Formal" de Kalish, Montague e Mar. Gostei de seu
artigo, obrigado!
~ David.
12:32, 19 DE MARÇO DE 2006

Anônimo disse ...

Há muito neste blog com o qual eu concordo. Eu gosto da ideia de amplitude primeiro,
por exemplo. Mas há uma suposição subjacente sobre o papel da educação com que eu
discordo. A suposição é que a educação é principalmente sobre nos preparar para nossas
vocações.

A verdade é que nas democracias o principal objetivo da educação é produzir pessoas


instruídas. Duas propriedades parecem óbvias a esse respeito. Uma é que
compartilhamos idéias e origens comuns que nos unem culturalmente. Falando os
mesmos idiomas (Inglês, Álgebra, Geometria, Filosofia, Economia ..) e compreendendo
os mesmos fatos sobre a natureza do mundo e o papel humano nele (Física, Química,
História, Literatura, Biologia ...)

O segundo objetivo está intimamente relacionado; que as pessoas instruídas podem


conversar umas com as outras sobre questões importantes que estão fora de sua própria
área de especialização e ajudam a informar as decisões tomadas dentro do campo. Isso é
especialmente crucial no discurso político.

Com freqüência, descobre-se que o que se aprende na escola tem aplicação direta na
vocação de alguém. E quando isso é verdade, a educação fornece valor econômico. A
prosperidade ecomômica desempenha um papel significativo na garantia da liberdade.
Mas mesmo que isso não fosse verdade, a educação ainda seria a primeira e a última
linha de defesa de uma democracia. (O argumento é muito longo para apresentar aqui;
leia Montesquieu.http: //www.constitution.org/cm/sol-02.htm)

Vamos tomar a geometria como um exemplo de uma linguagem comum. Em um sentido


estrito, a geometria é quase inútil como treinamento vocacional - exceto para os
estudantes de matemática que passam a ensinar o assunto. Mas, em um sentido mais
amplo, a construção da geometria é um raciocínio dedutivo. E o tipo de raciocínio usado
aqui é crucial em uma série de disciplinas. Pode ser a lei do tribunal que se baseia nas
disciplinas e processos mentais inculcados pela geometria.

Fui educado como engenheiro e acredito que os modelos matemáticos contínuos


precisam de muito mais exposição, não menos. Pois esses modelos permeiam todas as
ciências físicas, medicina, economia e biologia. Frequentemente, vejo lugares em que
aplicações de modelos contínuos - até mesmo informais - podem melhorar as decisões
nos campos da sociologia e da política pública.

A ciência da computação é um campo de importância vital. Um dos cursos mais


interessantes que fiz no campo foi sobre algoritmos e computabilidade. Foi minha
primeira exposição ao conceito matemático de prova por contrapositivo. (Assuma o
oposto do que você está tentando provar e mostre que isso leva a uma contradição). Essa
é uma técnica poderosa em vários campos. Analistas de segurança de todos os tipos
usam uma adaptação que postula "Se eu estivesse projetando o sistema menos seguro, o

steve-yegge.blogspot.com/2006/03/math-for-programmers.html 25/40
18/05/2019 Blogues de Stevey: Matemática para programadores
que eu faria". Então, "como isso se parece com o sistema que eu projetei?" Acontece que
esse tipo de análise pode ser feito para a maioria dos serviços - o suporte técnico por
computador telefônico vem à mente primeiro - para muito benefício.

Então, na verdade, cada campo tem várias ferramentas e técnicas que podem ser
utilizadas em um problema. E cada solução é aprimorada quando o conjunto correto de
ferramentas é usado. Todo o propósito da amplitude é escapar do velho problema de que
"quando tudo o que você tem é um martelo, tudo parece um prego".
12:59 PM, 19 DE MARÇO DE 2006

Anônimo disse ...

1. Primeiro foi Arquimedes quem inventou a maior parte da matemática (aplicada)


...
Então houve Felix Klein e outros matematólogos alemães que inventaram o "ionismo (/)
do zen".
Então Hardy escreveu uma appologia e disse que a matemática deveria ensinar você a
Acho que assim ele se sente mais pura matemática é de fato mais aplicada
Então von Neumann novamente depois Arquimedes sabia ou talvez inventou toda a
matemática que chamamos aplicada agora
Então bourbakists franceses
Então eu mesmo tentei fazer a conexão certa ... e perdi muito mal .. . ;-)
com o tempo i Learnet para perdoar as pessoas que não querem ver ... um exercício
muito caro em Ethique cristão
Agora é a sua vez

Toda matemática - aqui é o ponto - escrita pela grande mente é boa, útil e ensina não
apenas como pensar, mas alguns grandes truques e a ética mais importante e fazer
diferença entre ciência e publicidade (a última se tornou um grande problema para TI, a
maioria das pessoas aqui prefiro esquecer que ele existe por causa do gênio da
matemática de von Neumann e que existem algumas promessas que o mundo digital
nunca mantém, então é melhor não dar a elas) .....
Outra experiência importante que eu penso é que é melhor começar com matemática
Você entende por mim que foi fácil entender o intuicionismo, forçando e não a análise
padrão do que dedekind corta diferente do couch (y / i?) reais se não o axioma da
escolha é válido ....
minha (incomparável) lista dos melhores Autores é:
Archimedes
Felix Klein
Hardy
von Neumann
Bourbaki
Abraham Robinson
Paul Cohen
Dana Scott, R. Karp, Rabin

e Feynman !!!! não exatamente uma matemática ... do ponto de vista da matemática, ler
por último ... vai ver como ele era bom. Comecei às 13 e foi o primeiro que li, então eu
tenho uma injustiça gigante vantagem depois ... e leia as palestras reais sobre física,
computação ... não QED
última palavra sobre lógica Kleene é um dos melhores e mais originais no campo, mas
bem sua visão é específica e ... eu prefiro ser Feynman escravo do que Kleene ... há bom
manual de edição lógica de Jon Barwise também

Tudo o que são livros antigos e cidadãos de lugares mais ricos do mundo pode e deve
tentar encontrar um caminho mais curto e melhor, mas isso faz parte do meu próprio
caminho há muito tempo e é o que você pode encontrar se você é um cidadão ex-
comunista ( em russo também) de qualquer forma todos esses autores são extremamente
bons e se não for pressionado muito para o tempo (se você pode encontrar para ler
Kleene você tem o suficiente ;-)
eu escrevo mal em Inglês, mas eu tento pensar em matemática (quando eu pensar em
tudo) e não é um problema muito grande para mim
15:48, 19 DE MARÇO DE 2006

Abhinav disse ...

Seria legal se você pudesse postar uma lista de livros que você está lendo / leu / leu
12H34, 20 DE MARÇO DE 2006

Chad disse ...

I appreciate what you are saying. I'm coming at this from the angle of, "how am I going
to teach my kids math?". My wife and I homeschool our kids, so we have the luxury of
teaching math in whatever manner we prefer. I've read some compelling arguments for
starting math relatively late, say 10 years old. Prior to 10, teach the "grammer" of math.
The vocabulary of it, if you will. This would be the "breadth" approach that you describe
so well. Then, when they are well versed in the "language" of math, teach the application
of a particular discipline.

steve-yegge.blogspot.com/2006/03/math-for-programmers.html 26/40
18/05/2019 Blogues de Stevey: Matemática para programadores
It's sort of akin to the old analogy of filling buckets vs. lighting fires. Much of state run
education today has become a process of filling "buckets". Fill each kid with these facts at
this age and by this age they'll now this, this, and this. The lighting fires approach
teaches a wide variety of subjects, developing a love of learning and discovery that lasts a
lifetime.

Rote memorization may make you an efficient programmer, but it won't make you
especially creative. Creativity is the birthplace of great software, products, art, etc.
6:12 AM, MARCH 20, 2006

trr said...

Someone mentioned that the name Schonfinkel means "pretty bird". That's not quite
right. It means pretty finches. Schoenvogel would be "pretty bird".

I enjoy reading the math articles on wikipedia and mathworld.wolfram.com and I've
always liked reading books about math (not math textbooks), but I don't feel that I really
know the math having read them. I read the Hofstadter book many years ago, and it
really captivated me. What remains after all the years is the interestingness of self-
referential and recursive things. More recently I've read books about Erdos
(biographical) and the story behind proving the Riemann hypothesis. It talks about the
importance of prime numbers, as someone else mentioned, but getting to the proof
required a lot of non-discrete math.
I do agree with the assertion that a lot of people are put off by the notation of math, but
how to get around that? You can't do without it, can you?
10:51 AM, MARCH 20, 2006

trr said...

I should mention: Math in school was usually not fun for me, except Geometry class.
That had a lot to do with the teacher. Of course I did well enough at it, but it could have
been a better experience.
Science was more interesting than math, but as an engineer, both are necessary.
I didn't know John von Neumann was a chemical engineer until I read it on Steve's page
titled "Math Every Day". Cool!

PS Steve, I lived in Kirkland, WA when I was in elementary school.


11:17 AM, MARCH 20, 2006

Vicki said...

Some comments in the following refer to maathematics and programming

http://www.cs.utexas.edu/users/EWD/transcriptions/EWD13xx/EWD1308.html

esp. the 2nd para from the end

"Looking back I cannot fail to observe my fear of formal mathematics at the time. In
1970 I had spent more than a decade hoping and then arguing that programming would
and should become a mathematical activity; I had (re)arranged the programming task so
as to make it better amenable to mathematical treatment, but carefully avoided creating
the required mathematics myself."

Prof.dr Edsger W. Dijkstra, June 2001


12:13 PM, MARCH 20, 2006

Anonymous said...

Steve, I've got a topic for you to write/rant/whatever on - how does one (e.g. @AMZN)
predict time for a project with great accuracy, so that 95% of the time you can actually
meet your deadlines? They're starting to treat programm{ing,ers} now as a factory
assembly worker/line rather than as art + science. What is all your knowledge of math
and what not worth, if you can't make your pointy haired boss look good by giving
something that can cut the mustard and nail the timeframe on the head every time? I
hope GOOG's treating you good (or better, I shud say, than where you were).
1:05 PM, MARCH 20, 2006

Anonymous said...

I think "The Art of Computer Programming" by Donald Knuth is a fine way to spend
some time. Most of programmers didn't read it, shame on them (I am such a
programmer ;-), I read only some small parts from it). The main worth of the multi-
volume book is its "interactiveness", it was written like a course with examples which are
like a bridge between theory and practice.
12:12 AM, MARCH 21, 2006

Anthony said...

the simple fact is that the number of programming jobs is rapidly outpacing the
demand for all other engineering roles.

steve-yegge.blogspot.com/2006/03/math-for-programmers.html 27/40
18/05/2019 Blogues de Stevey: Matemática para programadores
No, no, it isn't. The number of actual programming jobs isn't very large, and has always,
even in the height of the bubble, been lower than the number of real engineers. Most IT
jobs are not programming, even if some of them do some incidental programming for
automating routine tasks.

So your advice about which sorts of math ought to be taught isn't terribly useful, even
though your advice about how to teach math may be.

(There's an interesting article by Joel Spolsky on what makes for a good CS education
here.)
7:45 AM, MARCH 21, 2006

raf. said...

I studied Computers in Spain, University of Oviedo. We used to joke about the discrete
maths, calling them discreet maths.We didn't have the slighest idea of what they were,
altough we had a subject on them.

Lead by the joke, once I realised what they were, and how the math teachers were fooling
us the students teaching us continuous maths. I have felt relief reading your article.

There has also been brain damage for us computer engineers and programmers here in
Spain.

Something needs to be done (globally!) to finish the tiranny of the continuous math
teachers over the discrete science.
9:28 AM, MARCH 21, 2006

Anonymous said...

A nice place to learn linear algebra is a set of free video lectures of Gilbert Strang's MIT
class at:

http://ocw.mit.edu/OcwWeb/Mathematics/18-06Spring-
2005/VideoLectures/index.htm

It's a great resource for learning linear algebra, or for anyone who wants to learn how to
teach an abstract subject.

Actually, lots of the MIT OpenCourseWare stuff is a good resource.


9:29 AM, MARCH 21, 2006

Anonymous said...

In my experience (20 years, plus) more time is spent fiddling with money and time, than
any other subject. Whether it is hours worked, or compound interest, outside of pure
engineering, money is a part of most calculations.

Converting a million dollars into Yen will definitely take double precision, and maybe
more. Even "simple" calculations can get fouled up if you fail to take precision into
account.

The reason money is so important, is that Most of the people hiring programmers are
trying to get (or keep) more of it, and spend less of it.
10:33 AM, MARCH 21, 2006

j. said...

If you want to learn mathematical logic, I recommend you the book "The incompleteness
phenomenon". It is an excellent (and broad) introduction to the subject. That's the place
I learned it from. It is well written and has lots of nice exercises.
12:10 PM, MARCH 21, 2006

Anonymous said...

In your post, you asked for a good book on logic for computer scientists. I highly
recommend Logic in Computer Science by Michael Huth and Mark Ryan. And you might
like some stuff on logic I write at Mathematics and Computation Blog. Andrej.
1:29 PM, MARCH 21, 2006

cincin21 said...

Hey Stevey!!

Awesome Blog!!

I am a retired High School Math teacher ... now a private Math tutor ... an espert in
Algebra I and II ... Geometry ... Trig/Pre-Cal and Calculus ...

I loved what you had to say and I will be reading Wikipedia 30 minutes every day
because I love to learn new things .... and it might help me understand the TV show

steve-yegge.blogspot.com/2006/03/math-for-programmers.html 28/40
18/05/2019 Blogues de Stevey: Matemática para programadores
NUMB3RS better!

I have often used your "hostage" situation with my students whenever they asked me
"When will I ever need this?" my response ... "well ... you might be held hostage by
radical member of the Isoscelic group Al-Gebra ... and one of those memmbers might put
a gun to your head and say ... 'Solve this or die!!'" My students' responses were usually "I
choose death!"

But I taught the 3 time Geometry repeaters ... after they took Algebra I a couple of times
... and the ESL students ... and anyone else they could dump on me.

We are making kids hate Math ... and standardized testing is only making it worse (not
to mention severly watering down the math we do teach).

I do enjoy your blogs! Keep it up!!


2:07 PM, MARCH 22, 2006

Anonymous said...

How about floating point ? Most non-engineers write very little floating point code, and
understand little about precision and round-off.
6:26 AM, MARCH 24, 2006

ilya said...

hi,

i would say math education nearly everywhere sucks.

for example, numbers and figures are inherently connected so that you can study them
simultaneously - that's how mathematicians actually prove theorems about them (even
so "applied" as elliptic curves cryptography) - but unless for some reason you decided to
hide it you honestly have absolutely no idea what I mean. you just wasn't educated in
that (and you can't get that knowledge from the list of standard undergraduate subjects
of which your list is a subset)

the problem is they haven't taught neither you, nor all math majors in all except very few
departments what are mathematicians really doing about mathematics. those who are
really going to do math, of course, eventually figure by themselves (usually in grad
school)

if you'd like to do something about that, you can do a high-end mathematics web
meeting point, like web university or whatever.
7:48 AM, MARCH 28, 2006

Anonymous said...

Alright, I recommend an introductory ebook on mathematical Logic by Robert A.


Herrmann: Logic for Everyone.
4:01 PM, APRIL 03, 2006

Wilson (aka CuriousMind) said...

If you want to practise math skills and programming skills at the same time, check out
Project Euler at MathsChallenge.net.

Their own description:

Project Euler is a series of challenging mathematical/computer programming


problems that will require more than just mathematical insights to solve. Although
mathematics will help you arrive at elegant and efficient methods, the use of a
computer and programming skills will be required to solve most problems. Please be
warned that the problems are challenging and you are unlikely to make much progress
if you have no knowledge of programming. Having said that, this is both the perfect
environment and opportunity to learn new techniques and refine your programming
skills.

The problems range from the relatively trivial to quite challenging!

See you there.


10:44 AM, APRIL 12, 2006

Kay said...

Steve,

I cannot refrain from commenting. While I find it commendable that you approach
math, this definitely isn't it.
Sorry to be blunt. Math isn't easy. No part about it. As we used to say in uni: "Math is an
asshole".

steve-yegge.blogspot.com/2006/03/math-for-programmers.html 29/40
18/05/2019 Blogues de Stevey: Matemática para programadores
I cannot agree with the simplifications you, although I generally enjoy reading your blog.
Math in my opinion is about structure, not necessarily about content. That's why math is
important for all scientific/engineering trades.
It's not about to be able to calculate this or that probability, nor is it about evaluating an
integral or solving differential equations.
If you want to understand math, start with the number systems. The basic axioms
(Peano!) and go on from there. Learn the linear algebra involved (what is a group, what a
ring? How about a field? Does it have to be commutative? What happens if it isn't?) -
you'd be suprised how different linear algebra is from applying Gauss' algorithm...
I dare say that almost no programmer 'knows' what a function is.
Mathematical reasoning is a very important field to know. How could you prove
anything without it?
If you do not need pencil and paper you aren't doing math, you're doing calculations in
your head.
Regarding the allegedly bad math education: What's being taught isn't exactly math. It's
its application to the problem domain of children. You are exposed to math in AP
courses if you are lucky enough, but most are probably not.
Being able to recite Euler's formula to directly sum up the first n natural numbers is nice.
But how about a proof? Does it actually work? That's the thing that's changing your point
of view of problems. Is this solution I have in mind correct? Does it even exist? What are
the presumptions I am making?
All those nifty formulas I can look up, but the way of thinking about problems I cannot
find on wikipedia. But that's what mathematics is about.
Todas as coisas que você menciona são importantes, com certeza. Mas se você não tem o
conhecimento dos fundamentos (prova por indução, quais são meus números, que
propriedades básicas meus campos, anéis, grupos têm), você simplesmente não tem a
menor chance de ter a idéia do cálculo. Profundidade primeiro. Amplitude depois. Não
há nenhum atalho em torno disso. Pelo menos não se você é sério sobre matemática.
13:13, 17 DE ABRIL DE 2006

Anônimo disse ...

Alguns pontos:
você não precisa ter uma desculpa como ser um programador melhor ou escrever
programas ligeiramente diferentes para aprender matemática - a matemática é o alicerce
de toda a nossa compreensão do mundo físico, período - qualquer um que pondere a
onipresença da matemática em todas as tentativas entender a natureza do mundo físico
tem motivação suficiente para estudá-lo.
você fala sobre o jeito certo de aprender matemática - o caminho certo é certamente o
caminho que leva à compreensão real - (o que quer que seja - prepare-se para deslizar
pela ponta do iceberg) -
mas existe algo como modelagem matemática - identificando algo que você está
enfrentando como uma instância do BLAH, onde o BLAH é uma abordagem matemática
já feita para você por grandes mentes.
Se você não "conhece os nomes", como bem salienta, você não será capaz de categorizar
o problema que está enfrentando da maneira correta, e não terá esperança de encontrar
um indicador para a solução.

Há também o tipo de conhecimento de fundo que leva o mistério fora das escolhas de
design dentro de linguagens de programação dizer - ou pelo menos faz com que certas
coisas clique (cálculo lambda e lisp, teoria da categoria e Haskell etc)

Os programadores precisam de abstração do domínio do problema, principalmente - eles


não precisa de matemática como você diz, mas estudar matemática ou física tende a
ensinar abstração (o ato mental em si) melhor do que comp sci (apesar do foco na
criação de instalações de linguagem para abstração - é um problema de uso / menção)
para um físico, você modela a Terra COMO uma esfera - às vezes como um ponto; um
sistema com todos os seus parâmetros é apenas um espaço com muitas dimensões,
estados tornam-se pontos nele etc etc) - tudo isso é treinamento para abstrair (como em
abstrato) detalhes para chegar ao modelo.
os matemáticos identificam uma operação e depois perguntam se é comutativa,
associativa, ou o que quer que seja, ao fazê-lo, poderão então classificar e rotular
verdades sobre ela com base nas estruturas reveladas.

assim, a matemática lhe dará algumas estruturas para trabalhar, mas se você se
perguntar - existem mais estruturas do que as que se falaram? Ou existem conexões
entre esses aparentemente diferentes grupos de estruturas? - então você está entrando
em pesquisa matemática em si - e isso parece um jogo de bola diferente - este é o próprio
iceberg

finalmente, crianças aprendendo matemática -


- aqueles que têm mais compreensão (matemáticos!) devem considerar uma obrigação
para a sociedade publicar seus "caminho para o entendimento" - estes devem ser
amplamente disseminados e mastigados pelos educadores - o que eles tiveram a sorte de
encontrar, só podem trabalhar para os outros ... - um banco de dados compartilhado de
experiências perspicazes e fundamentais
21H25, 22 DE ABRIL DE 2006

steve-yegge.blogspot.com/2006/03/math-for-programmers.html 30/40
18/05/2019 Blogues de Stevey: Matemática para programadores
Anônimo disse ...

I read through the blog a while back, and like you I've had a spotty maths career to date.
Recently, I've been looking into ways to improve this, and come to realise that discrete
maths is the bees-knees when it comes to relevance to computer science. Have a look, for
example, at the table of contents of Rosen's book (Discrete Maths and its Applications)
and try and find one chapter that doesn't sound relevant! Recursive functions, trees,
graphs, Boolean algebra - it's all good, honest, useful math. Somehow, when my teachers
tried to force-feed me calculus, I just never wanted to eat my vegetables. Now, older and
wiser, discrete maths looks positively delicious (and calculus still isn't very appetising).

Anyway, the main point of this post is to introduce you all to a FREE set of VIDEO
LECTURES in discrete mathematics I've recently come across. These lectures are
released under a Creative Commons license so download and go nuts! The lecturer is
*excellent*, and has spurred an interest in mathematics in me I never knew I had. The
course roughly follows the contents of Rosen's book I mentioned earlier. There are other
video lectures on computer science available too. It's a shame the ArsDigita University
that they came from didn't survive past it's first year. Here's a link to the main site. From
there you should be able to navigate to the various courses and download the lecture
video and slides.

http://www.aduni.org/

-- Robert
7:58 AM, APRIL 25, 2006

Flux said...
Excellent post, as mentioned by the 121 people before me.

Wow! I can read numbers!

Just have to say.. you've given me hope.. lol..

I fancy myself as a fairly decent programmer. I graudated from DESIGN at UCLA and
have never touched a calculus class in my life, with the silly notion that I don't need math
to program.

Whoooooo boy. ....

Come one quater where I did a project with some physics simulation with springs. The
springs were exploding! I look up the cause. Ah. I need a Fourth Order Runge Kutta...

wtf..

I didn't even know what an --Integral-- is. And by looking it up, every definition I could
find is completely circular: they all defined these strange math words with more strange
math words! Sometimes, defined by the same word I'm looking up!

At this point I realize that I am seriously crippled in my math knowledge. Every single
formula I look up I demanded a programmatic or procedural approach to thinking
through the problem... and all I get is gibberish mathematical equations that might as
well be intercepted alien messages.

Rigid body dynamics? Nope. Can't do it. Need math.

Springs exploding? Nope. Can't fix it. Need math.

Want to draw a NURBS curve? Nope. Don't understand what the stupid symbols mean.

So yes. I will pick up a math book and must teach myself. Thank you for all the
recommendations.

There is hope!!!
3:41 AM, MAY 03, 2006

Amy said...
I love the way a friend of mine (double major, math & CS) said it: CS is math that does
stuff.
10:59 PM, JULY 30, 2006

Phil said...

You have some good points and some, in my humble opinion, not so good points. But
your opinion is skewed by the fact you're a programmer, just as my opinion is skewed by
the fact I'm a mathematician.

You're suggesting that Calculus and other maths in which the reals or complex numbers

steve-yegge.blogspot.com/2006/03/math-for-programmers.html 31/40
18/05/2019 Blogues de Stevey: Matemática para programadores
are used should not be focused on in relation to Discrete or Finite Mathematics.

I disagree. And reason why is that in terms of how much certain subjects encompass, the
fact is that the theory of continuous sets of numbers is simply more general than the
discrete counterparts. Think about it. Everything from Statistics, (Linear) Algebra, DEs,
Calculus, and so on require an understanding of the real/complex numbers -- this
understanding is provided by Pre-Calc and later on by Calculus classes.

I'm not going to comment any further, but someone wrote this:

> Your approach to math is certainly


> from a compsci point-of-view which
> heavily depends on the discrete
> side of things. Calculus..or more
> generally Mathetmatical Analysis
> deals more with the continous
> stuff and it is essential to
> science if not other engineering.

You're much too skewed by the requirements of programming. Discrete mathematics is


not as important a field as subjects concerning continuous sets -- students from
business, chemistry, physics, engineering, math, biology, and so forth, require indepth
knowledge of continuous systems.

This is in addition to the fact that a theory concerning continuous spaces are much more
general than one for discrete systems. Take the well known fourier transform.

A student needs to learn about the continous fourier transform, before he or she starts
implementing discrete fourier transforms in computer programs.

If you're concern is how to we prepare the general populace for computer-oriented


applications, then you have a point.

But if your concern is how we should present the most essential mathematics in order to
reach the most students, then I don't think your arguments hold much water.
8:15 PM, AUGUST 07, 2006

Steve Yegge said...

Fine. Let's keep calculus and pre-calculus. But I would suggest replacing trigonometry
with discrete math. I just can't see anyone arguing persuasively that trig is more widely
useful than probability and combinatorics. And trig isn't a prerequisite for calculus; it's
completely orthogonal. Trig should be rolled into geometry at the high-school level, or
even dropped.

I'm not saying trig isn't useful; that'd be silly. But I was never introduced to discrete
math until my first year in the CS department. I could have used it a lot sooner than that.

Of course, I haven't been to high school in 25 years, so maybe they offer discrete math
now.
9:31 PM, AUGUST 07, 2006

Jim said...

Bravo!

After playing with decision trees and some neural net libraries, I realized I need to dig
back into the math. The path you advocate was exactly what I was beginning to do.. Go
forth and spread the gospel.
4:08 PM, SEPTEMBER 18, 2006

Maciek said...

Take a look at OpenCourseWare at MIT. Some of their lectures have video versions
(Linear Algebra for example). Great stuff.
11:06 AM, OCTOBER 16, 2006

Danny said...

re. Kleenex, I've got a pile of similarly opaque books. Most readable stuff I've found on
logic has been buried in AI books. John Sowa's got a neat reference page for his
Knowledge Representation material at http://www.jfsowa.com/logic/math.htm

(His KR book is very good but hard work).


1:57 AM, NOVEMBER 06, 2006

critical said...

I have gotten good milage out of Mordechai Ben-Ari's book Mathematical Logic For
Computer Science

steve-yegge.blogspot.com/2006/03/math-for-programmers.html 32/40
18/05/2019 Blogues de Stevey: Matemática para programadores
5:38 AM, NOVEMBER 06, 2006

Nick said...

Oi!
Eu gostaria de adicionar mais um autor
que escreveu livros muito bons sobre
como a matemática e o matematician funcionam:
George Polya
Experimente o "Mathematics and Plausible Reasoning" e "Mathematical Discovery".

Também o seu "Problema em Análises" é incrível.


Espero que eles não estejam esgotados.

Experimente também Alfred Renyi. Eu não sei


se a sua "Trilogia na Matemática" foi traduzida para o inglês, eu a li na tradução russa.

Bom, eu queria ter lido quando tinha 13 ou 14 anos, tenho certeza que seria muito
melhor em matemática.
7:26, 6 DE NOVEMBRO DE 2006

Sammy disse ...

Asimov escreveu uma história sobre um futuro em que a matemática era uma habilidade
perdida. Wikipedia me diz que era "uma
sensação de poder".
http://en.wikipedia.org/wiki/The_Feeling_of_Power
15H12, 6 DE NOVEMBRO DE 2006

Owen disse ...

Um problema interessante com o qual tenho lutado é que a matemática é um cidadão de


segunda classe na computação!

O que eu quero dizer? Bem, em primeiro lugar, a notação matemática não está
facilmente disponível em páginas da web e e-mail. MathML é um bom começo, mas
ainda assim, é uma luta.

E isso faz a diferença. As formas funcionais típicas que as pessoas usam como o exemplo
fib () acima são apenas mais difíceis de ler do que a notação matemática padrão.

Uma variação que se ajusta bem a computadores é J, uma linguagem de computação


baseada em APL. Muito conciso e absolutamente inequívoco.

Isso leva ao segundo problema: ainda não há muitos softwares interessantes para
matemática, com algumas boas exceções. J vale a pena dar uma olhada. R é ótimo para
estatísticas. O GnuPlot e o Octave e pacotes de matrizes similares também são bons.

Mas não seria ótimo ter uma verdadeira notação matemática integrada na computação?

- Owen

Owen Densmore http://backspaces.net


Grupo Redfish: http://redfish.com http://friam.org/
9H47, 7 DE NOVEMBRO DE 2006

Peter Boothe disse ...

Naive Set Theory por Paul Halmos é fantasticamente legível e uma excelente introdução
ao assunto.

Tanto quanto sei, não existe um livro excelente e legível sobre lógica matemática.
12H47, 11 DE NOVEMBRO DE 2006

Alan disse ...

Steve: Obrigado pelo post interessante. Um ótimo livro sobre lógica matemática é a
Teoria Prática da Programação de ECR Hehner (disponível gratuitamente na web em
PDF). Eu fiz o curso com ele na Universidade de Toronto em 2003; foi provavelmente o
curso mais interessante em todo o meu curso de graduação em CS.
02:26, 19 DE NOVEMBRO DE 2006

logicnazi disse ...

Então eu sou um estudante de matemática (bem, na verdade eu sou um estudante de


lógica que é um programa de matemática / filosofia, mas minha tese está na teoria da
recursão) e apesar de eu ter grande simpatia pelo seu tom geral, o problema é que
simplesmente trabalhe na prática.

Primeiro, devo dizer que discordo totalmente da abordagem just in time de aprender

steve-yegge.blogspot.com/2006/03/math-for-programmers.html 33/40
18/05/2019 Blogues de Stevey: Matemática para programadores
matemática navegando na wikipedia. É como aprender apenas linguagens de
programação observando código de exemplo e nunca lendo sobre estruturas de dados ou
boas práticas. Admito que eu acho uma lição muito ruim para aprender matemática, mas
as aulas de matemática, não as coisas estúpidas de computação para pessoas que não são
de matemática, são muito úteis se não por outra razão do que obter feedback e ter um
livro escolhido para você. Assim que você for além do material mais fácil, precisará de
notação consistente e problemas práticos (até aprender a fazer o seu próprio) e a
wikipedia não funciona muito bem, embora seja excelente para uma definição rápida ou
uma prova que você esqueceu. Também não estou convencido por suas escolhas entre os
campos da matemática.

De qualquer forma, eu concordo que o tipo de matemática que as pessoas entram na


escola (até que você faça um curso de matemática de divisão superior na faculdade) é
projetado para ensinar algoritmos mecânicos em vez de compreensão real. Como TA,
sinto-me vagamente sujo ao saber que faço parte desse processo que desliga pessoas que
querem realmente saber o que está acontecendo e que podem realmente gostar de
matemática avançada. A matemática real é divertida e muito parecida com as partes
interessantes e desafiadoras da programação.

Como muitas outras pessoas que conheço na faculdade de matemática, eu realmente não
gostava de todas as aulas de matemática que fiz antes da faculdade, exceto a geometria
que tinha algumas provas. Não há nada tão desagradável e não esclarecedor do que
aprender regras rotineiras para resolver equações, calcular integrais ou fazer
trigonometria. Eu estava tão irritado com a falta de explicação convincente na minha
aula de cálculo que eu saí e comprei um livro de matemática real que realmente
explicava as coisas e, eventualmente, isso me levou a desistir da física e mudar para a
matemática.

É claro que comecei como um estudante de pós-graduação que eu tinha idéias muito
fortes sobre o ensino como muitas pessoas que entram em matemática. Eu queria fazer
melhor do que todas as pessoas que me ensinaram na faculdade e realmente explicar o
que estava acontecendo nas minhas aulas. Eu ainda tento fazer um pouco disso, e
aproveito todas as oportunidades que posso para explicar as coisas quando um aluno que
quer entender me pergunta, mas eu aprendi que essa abordagem simplesmente não
funciona para a maioria dos alunos.

Para colocá-lo em termos que devem fazer sentido para um programador, isso se resume
à diferença entre programadores e inimigos de computador. Se você quisesse explicar
como trabalhar em algum programa em um computador ou como alterar algumas
configurações, você precisaria usar táticas completamente diferentes ao conversar com
um programador e um inimigo de computador. Você pode dizer ao programador a idéia
por trás do que ele deve fazer e ele tem o conhecimento e, mais importante, o desejo de
descobrir as coisas que lhe permitirão preencher os detalhes. Se a sua mãe que odeia
computadores fizer a mesma pergunta, você precisará dar a ela uma sequência rotineira
de etapas para aplicar a cada uma delas detalhes excruciantes.

Não é isso que você diz a alguém para fazer ou quais explicações você dá se
alguém não está interessado em entender que nunca vai aprender a fazer
mais do que os problemas que você lhes dá. Realmente aprender matemática é
sobre juntar as peças para ver porque as coisas realmente funcionam. Se você quer
apenas fazer sua lição de casa e não se importar com o motivo de as coisas funcionarem,
você nem tem as peças certas em sua mente para que uma explicação se encaixe. Assim
como a indústria de computadores desistiu de fazer o usuário realmente entender o que
está acontecendo e ao invés disso tenta projetar a interface para acomodar alguém que
não quer aprender o sistema de educação matemática, teve que fazer o mesmo. Alguns
professores de matemática ainda tentam ensinar a seus alunos de cálculo o que
realmente está acontecendo, fazendo-os fazer provas e, de outra forma, realmente
requerendo compreensão, mas toda vez que isso falha horrivelmente. Os alunos desistem
porque não vêem nenhuma conexão entre o que o professor está dizendo e o que eles
vêem como o ponto do curso, resolver os problemas, e mesmo quando eles percebem que
precisam aprender algo mais para resolver esses problemas, eles simplesmente não
conseguem descobrir o que é importante ou como ele se encaixa e simplesmente se
atrapalha horrivelmente. Pior ainda, uma vez que os alunos não estão realmente
interessados em entender os fatos, eles não se encaixam em nenhum modelo mental, o
que significa que eles não conseguem se lembrar de tudo. Também a confiança é
essencial para a matemática, você precisa tatear no escuro com soluções potenciais até
que funcione. O maior problema que os estudantes têm é estarem convencidos de que
eles não podem fazer o problema e não tentar, mas se você tentar fazer com que os
alunos matem com verdade, eles se rebelam e desistem deles (ou eles são tão simples que
inventam um algoritmo rotineiro que quase sempre funciona e você não chegou em
nenhum lugar ou eles estão e mesmo quando eles percebem que precisam aprender algo
mais para resolver esses problemas, eles simplesmente não conseguem descobrir o que é
importante ou como ele se encaixa e simplesmente tropeça horrivelmente. Pior ainda,
uma vez que os alunos não estão realmente interessados em entender os fatos, eles não
se encaixam em nenhum modelo mental, o que significa que eles não conseguem se
lembrar de tudo. Também a confiança é essencial para a matemática, você precisa tatear
no escuro com soluções potenciais até que funcione. O maior problema que os
estudantes têm é estarem convencidos de que eles não podem fazer o problema e não

steve-yegge.blogspot.com/2006/03/math-for-programmers.html 34/40
18/05/2019 Blogues de Stevey: Matemática para programadores
tentar, mas se você tentar fazer com que os alunos matem com verdade, eles se rebelam e
desistem deles (ou eles são tão simples que inventam um algoritmo rotineiro que quase
sempre funciona e você não chegou em nenhum lugar ou eles estão e mesmo quando eles
percebem que precisam aprender algo mais para resolver esses problemas, eles
simplesmente não conseguem descobrir o que é importante ou como ele se encaixa e
simplesmente tropeça horrivelmente. Pior ainda, uma vez que os alunos não estão
realmente interessados em entender os fatos, eles não se encaixam em nenhum modelo
mental, o que significa que eles não conseguem se lembrar de tudo. Também a confiança
é essencial para a matemática, você precisa tatear no escuro com soluções potenciais até
que funcione. O maior problema que os estudantes têm é estarem convencidos de que
eles não podem fazer o problema e não tentar, mas se você tentar fazer com que os
alunos matem com verdade, eles se rebelam e desistem deles (ou eles são tão simples que
inventam um algoritmo rotineiro que quase sempre funciona e você não chegou em
nenhum lugar ou eles estão Descobrir o que é importante ou como se encaixa e apenas
tropeçar horrivelmente. Pior ainda, uma vez que os alunos não estão realmente
interessados em entender os fatos, eles não se encaixam em nenhum modelo mental, o
que significa que eles não conseguem se lembrar de tudo. Também a confiança é
essencial para a matemática, você precisa tatear no escuro com soluções potenciais até
que funcione. O maior problema que os estudantes têm é estarem convencidos de que
eles não podem fazer o problema e não tentar, mas se você tentar fazer com que os
alunos matem com verdade, eles se rebelam e desistem deles (ou eles são tão simples que
inventam um algoritmo rotineiro que quase sempre funciona e você não chegou em
nenhum lugar ou eles estão Descobrir o que é importante ou como se encaixa e apenas
tropeçar horrivelmente. Pior ainda, uma vez que os alunos não estão realmente
interessados em entender os fatos, eles não se encaixam em nenhum modelo mental, o
que significa que eles não conseguem se lembrar de tudo. Também a confiança é
essencial para a matemática, você precisa tatear no escuro com soluções potenciais até
que funcione. O maior problema que os estudantes têm é estarem convencidos de que
eles não podem fazer o problema e não tentar, mas se você tentar fazer com que os
alunos matem com verdade, eles se rebelam e desistem deles (ou eles são tão simples que
inventam um algoritmo rotineiro que quase sempre funciona e você não chegou em
nenhum lugar ou eles estão Se encaixa em qualquer modelo mental, o que significa que
eles não conseguem se lembrar de tudo isso. Também a confiança é essencial para a
matemática, você precisa tatear no escuro com soluções potenciais até que funcione. O
maior problema que os estudantes têm é estarem convencidos de que eles não podem
fazer o problema e não tentar, mas se você tentar fazer com que os alunos matem com
verdade, eles se rebelam e desistem deles (ou eles são tão simples que inventam um
algoritmo rotineiro que quase sempre funciona e você não chegou em nenhum lugar ou
eles estão Se encaixa em qualquer modelo mental, o que significa que eles não
conseguem se lembrar de tudo isso. Também a confiança é essencial para a matemática,
você precisa tatear no escuro com soluções potenciais até que funcione. O maior
problema que os estudantes têm é estarem convencidos de que eles não podem fazer o
problema e não tentar, mas se você tentar fazer com que os alunos matem com verdade,
eles se rebelam e desistem deles (ou eles são tão simples que inventam um algoritmo
rotineiro que quase sempre funciona e você não chegou em nenhum lugar ou eles estão
são suficientemente duros os alunos só se debatem).

Você pode pensar que deveria começar mais cedo e o problema é que, na faculdade, os
alunos já internalizaram a abordagem mecânica da matemática. Eu acho que pode haver
algo para isso, mas nós tentamos começar com a compreensão muito cedo e falhou
totalmente. Isto era o que a matemática nova era eo currículo era realmente muito bom
mas os professores realmente não entenderam isto (eles aprenderam por corrija) assim
eles não puderam implementar isto e pais e professores exigiram matemática de volta.
Mais amplamente, não está claro que todos são realmente capazes de entender
matemática. Diferentes pessoas têm diferentes habilidades e compreensão até mesmo a
matemática mais básica é realmente muito difícil para a maioria das pessoas.

De qualquer forma, o resultado disso é que você não pode ensinar matemática do jeito
que os tipos matemáticos e programadores gostariam, pois acabaria falhando com todos
os outros. Nós temos que ensinar a matemática do mesmo jeito que nós temos que
ensinar as pessoas procedimentos de rotina para usar palavra e excel porque eles
precisam usar as ferramentas. Eu apóio fortemente um sistema de rastreamento para
esse tipo de coisa, mas infelizmente, antes da faculdade, os professores não entendem a
matemática bem o suficiente para ensiná-la de qualquer maneira, a não ser do modo
rotineiro.

Concordo que muito da matemática utilitária que ensinamos é totalmente inútil. Eu


quero dizer que ninguém realmente precisa de toda essa prática integrando estranhas
funções trigonométricas, ou você precisa realmente entender isso e você pode então
descobrir ou você pode usar a matemática. Muitos estudantes universitários não
precisam de cálculo e as funções gráficas são superestimadas. No entanto, esses cursos
são necessários pela simples razão de que passá-los mostra um certo nível de habilidade
e dedicação e, como eles mantêm os matemáticos empregados, eu também me queixo.
Eu realmente preferiria que eles dessem nomes diferentes para as duas pessoas, então as
pessoas não achavam que eu apenas integrei funções realmente difíceis e quero cursos
fortemente monitorados na faculdade. Mas, além disso, não tenho certeza do que pode
ser feito.
5:42 PM, 2 DE DEZEMBR O DE 2006

steve-yegge.blogspot.com/2006/03/math-for-programmers.html 35/40
18/05/2019 Blogues de Stevey: Matemática para programadores
Sarajevo06 disse ...

A matemática não é fácil pela simples razão de que ela foi criada principalmente por
pessoas que podem ser chamadas de geniouses.

1. Mesmo para entender matemática avançada, é necessário um QI mais alto do que a


maioria da humanidade e é ridículo que o sistema educacional permita que a matemática
seja ensinada a tantas pessoas, enquanto a maioria delas não tem mente nem vontade de
estudá-lo. QI superior significa 110 e acima do qual apenas cerca de 40% das pessoas
têm. QI mais alto - menos tempo você precisa recuperar. A maioria das pessoas precisa
da eternidade (10 a 20 anos de aprendizado constante) para REALMENTE aprender
matemática. É possível - mas vale a pena para a maioria de nós?

2. A fim de aprender matemática + todos os outros assuntos na escola, o ser humano


deve sacrificar a juventude de 11 anos para ela e abandonar muitas coisas que a maioria
de nós considera importantes. O estilo de vida deve mudar para se adequar aos
exercícios diários de matemática, juntamente com a perfeita saúde mental e física, dieta
adequada, muitos esportes e vida social mínima para evitar tornar-se psicopata. Nos
países comunistas que foram organizados por estado e tais jovens foram considerados
heróis nacionais junto com esportistas, jogadores de xadrez e engenheiros militares /
espaciais. No oeste, pode-se facilmente deslizar para a pobreza, acabar com a mulher
infeliz, se é que com qualquer um, e ser um jogador marginal da vida baixa na sociedade.
A maioria dos matemáticos acabou assim na história. Poucos de nós estão prontos para
fazer isso. É melhor e mais fácil começar alguns negócios e aprender muito dinheiro e ter
uma vida sexual decente do que ser especialista em matemática.

3. O aprendizado de matemática começa com aritmética e, na maior parte, depois disso,


é preciso aprender um monte de termos e fatos básicos antes de começar a entender
qualquer coisa. Meu método era aprender o significado básico de cada termo, axioma ou
função em minha própria linguagem cotidiana, para expô-lo descritivamente, antes de ir
a provas formais e teorias. E do que se deve fazer zilhões de problemas para aprofundar
o conhecimento e assim por 20 anos. Boa sorte - média perdedores e parabéns
geniouses.
12:12, 14 DE JANEIRO DE 2007

Ndaru disse ...

Eu sou lauzy em matemática, portanto, sofrem de falta de bom algoritmo e otimização.


Eu acho que dependo muito das bibliotecas de rotina existentes.

De qualquer forma, há um bom lugar para a matemática do programador:

livros de matemática de texto completo

e pesquisa operacional, se você estiver na teoria das filas:

livros de pesquisa de operações de texto completo


20:09, 16 DE JANEIRO DE 2007

paulo disse ...


obrigado pelas dicas eu maneiras bastante em desordem tentando classificar o que devo
melhorar em primeiro lugar.

Eu só queria saber se algum de vocês pode me ajudar a encontrar um site que ensina
como ler a notação matemática.
15H32, 29 DE JANEIRO DE 2007

Sunita disse ...


Livro Lógico:
Veja Lógica para Ciência da Computação
por A.Singh, publicado pela PHI
22H04, 27 DE FEVEREIRO DE 2007

Jason disse ...


você é simplesmente brilhante !!
5H28, 6 DE MARÇO DE 2007

gorauskas disse ...


Grande apresentação sobre o design de linguagens de programação e como a matemática
desempenha um papel crucial: http://carcaddar.blogspot.com/2007/03/complete-
computing-system-in-20000.html
22H45, 2 DE ABRIL DE 2007

Anônimo disse ...


Eu completamente, 100% discordo. Eu levei 4 anos na graduação e mais na pós-
graduação. Eu faço programação hoje.

steve-yegge.blogspot.com/2006/03/math-for-programmers.html 36/40
18/05/2019 Blogues de Stevey: Matemática para programadores

Ainda resolvo equações ou faço provas como na aula? Quase não.

Eu uso o meu entendimento da matemática que aprendi para resolver problemas


regularmente? Absolutamente - quase diariamente.

Eu uso a matemática que aprendi para fazer cálculos no fundo do envelope?


Diariamente!

Eu poderia ter alguma vez entendido ou sido capaz de fazer os cálculos de back-of-the-
envelope sem muita matemática? Improvável.

Acho que preciso aprender mais matemática além do que aprendi? Sim - problemas de
programação de otimização significavam que eu precisava de mais. Entrando em
programação funcional eu precisava de mais. Etc etc.

Será que a matemática que aprendi foi ensinada melhor ou diferente? Sim, com
pouquíssimas exceções, da escola primária à pós-graduação. É por isso que eu sou para o
ensino em casa e acredito profundamente que o sistema escolar público dos EUA é
fatalmente falho apesar de ser de uma família de professores de escolas públicas.

Acredito que existem "níveis" de programadores, desde "técnicos vocacionais" até


"magos"? Sim - a alegação "sem matemática" só pode ser aplicada à primeira classe e, na
verdade, a ninguém acima dela.

Eu tive sorte de ter aprendido tudo que fiz? Sim. Pode ser que ele tenha passado por
cima dos retornos decrescentes para o território de retornos compostos. Eu sinto muito
por aqueles que nunca chegam tão longe. Eu acho que você nunca vai saber como é -
embora eu
8H37, 22 DE ABRIL DE 2007

Mark disse ...

"Para colocar isso em perspectiva, pense em divisão longa. Levante sua mão se você
pode fazer uma longa divisão no papel, agora mesmo. Mãos? Alguém? Eu não penso
assim."

Yikes Você mora na América, não é?


10:49, 22 DE ABRIL DE 2007

Ted disse ...

Eu sugeriria

uma Introdução ao Raciocínio Matemático: Números, Conjuntos e Funções (Paperback)


por Peter J. Eccles (Autor)
ISBN-10: 0521597188

É um bom livro e bastante barato para os padrões de livros de matemática. Não espere
que o material seja imediatamente utilizável na programação (embora possa ser usado).
O esboço geral do livro é:

1) Demonstração matemática e prova


Técnicas básicas e indução.
2) Conjuntos e Funções
Teoria dos Conjuntos Básicos. Depois disso, leia sobre a teoria dos bancos de dados
relacionais.
3) números e contagem
Se bem me lembro, é aqui que a incontabilidade dos reais é comprovada. Depois disso,
recomendo: "O que todo cientista da computação deve saber sobre aritmética de ponto
flutuante" (http://docs.sun.com/source/806-3568/ncg_goldberg.html)
4) Aritmética
Experimente uma divisão longa de polinômios depois isto.
5) Aritmética Modular
Ir implementar a troca de chaves Diffie-Helman. Fique atento ao pouco sobre certos
números que precisam ser primos. Se você fizer isso, poderá se interessar pela teoria dos
grupos.
6) Prime Numbers
Muita diversão.
10:52, 22 DE ABRIL DE 2007

Tyler disse ...

Muito obrigado por este post. Acontece que estou começando em uma nova empresa na
semana que vem e vou codificar seu sistema de recomendação. (Se você gosta de x
product, provavelmente vai gostar de y.) Bem, eu codifiquei algo rápido enquanto eu
tinha tempo para matar, mas era lento e lento.

Então, eu fiz um pouco de pesquisa e descobri que a álgebra linear está envolvida em

steve-yegge.blogspot.com/2006/03/math-for-programmers.html 37/40
18/05/2019 Blogues de Stevey: Matemática para programadores
fazer isso "certo". Então, eu tenho debatido sobre a melhor maneira de aprender o que
preciso saber e se eu quero ou não me incomodar.

Então obrigado.
11:33, 22 DE ABRIL DE 2007

Justin disse ...

Graças a Deus você mencionou a complexidade e a teoria da informação de Kolmogorov.


Estes são deixados de fora de muitas discussões sobre qualquer coisa. Aqui está uma
excelente palestra de Greg Chaitin que pode deixar alguém empolgado com
coisas tipo metamath

http://www.youtube.com/watch?v=Rr0fOGeS7DE
15:02, 22 DE ABRIL DE 2007

Bart disse ...

Se você quer aprender lógica matemática e reaprender sua matemática discreta, ao


mesmo tempo em que entende algumas das razões pelas quais se importa, eu recomendo
olhar para os "métodos formais" da ciência da computação.

Em particular, descobri que The Way of Z, de


John Jacky, é altamente legível e altamente prático. (O título é um trocadilho, BTW: a
notação Z é britânica e assim pronunciada "zed".) Existem várias ferramentas Z por aí
agora, e é realmente apenas lógica de primeira ordem em conjuntos (não diga).
15H35 DE 22 DE ABRIL DE 2007

Marc disse ...

Re: divisão longa


Você sabe que pode aplicar divisão longa a polinômios? O método do livro didático
funciona para (x ^ 6 - 1) / (x ^ -1) = x ^ 4 + x ^ 2 + 1. Não é legal? A divisão é mais
profunda que a "subtração repetida".

Re: sua escolha de assuntos


Não há melhor lista de assuntos . Os campos que você acha interessantes são fortemente
influenciados pelo tipo de problema em que você está trabalhando. Pergunte a um
programador trabalhando em finanças matemáticas, ou em modelagem de tempo, se o
cálculo é útil ou não.

Claro, seu objetivo não foi desenhar o sorteio da Lista Perfeita, mas explicar como
abordar o assunto. E eu concordo totalmente com você. A matemática deve ser útil e
divertida, e suas origens no “mundo real” devem ficar claras.

Alguma matemática será relevante para o que você faz; parecerá fácil de aprender,
animado e útil. Se for irrelevante, você terá dificuldades em criar um modelo mental do
que está acontecendo, e parecerá apenas uma masturbação mental.
18:51, 22 DE ABRIL DE 2007

Kalid disse ...

Há um post semelhante aqui sobre as dificuldades de ensinar matemática de uma


maneira excessivamente formal:

http://technocrat.net/d/2007/4/3/17225

Ensinar matemática (ou as dificuldades nela) tem sido uma paixão minha por um
enquanto. Aqui estão algumas coisas que eu percebi:

1) Entusiasmo é enorme. Divertir-se é importante. É difícil animar as pessoas sobre um


assunto, se você não é. Quando penso no gradiente de uma função vetorial, penso na
maneira mais fácil de cozinhar o garoto da massa. Você precisa de algo melhor do que
"maximizar o valor dessa função abstrata".

2) Por que as pessoas não gostam de matemática? É cumulativo. Se você perder uma
lição (digamos álgebra), então a geometria se torna difícil. Então trig trigêmeo fica difícil.
Então o cálculo se torna difícil. A maioria dos assuntos como história, inglês ou mesmo
ciência (bio, química, física) são um pouco ortogonais, onde você pode aprender um
assunto sem os outros.

3) Precisamos saber "por que", não apenas "como". Há tantas maneiras de entender um
conceito como o teorema de Pitágoras. Eu sofri com muitos professores que ensinaram
provas rotineiras, excessivamente formais, sem dar uma ideia do quadro geral.

Um exemplo da vida real: fiz um discurso na semana passada, acrescentando os números


1-100, de todas as coisas. Eu usei uma explicação matemática (emparelhamento
números) e um físico (fazendo um retângulo de dois triângulos).

Foi arriscado, já que a matemática não é um assunto que as pessoas gostam, mas na

steve-yegge.blogspot.com/2006/03/math-for-programmers.html 38/40
18/05/2019 Blogues de Stevey: Matemática para programadores
verdade foi bem recebido! Eu falei sobre a história de Gauss, e há um post no blog
correspondente:

http://betterexplained.com/articles/techniques-for-adding-the-numbers-1-to-100/

A chave é que há muitas maneiras de entender um conceito, e obter uma sensação


intuitiva de um assunto é extremamente importante.

Apenas meus $ .02.


19:35, 22 DE ABRIL DE 2007

fauxscot disse ...

tniykqEstou com você, Stevey. Aprender matemática é uma atividade para a vida toda, e
você pode começar a qualquer momento.

Minha coleção favorita de artigos de matemática, que é útil para obter a "amplitude" de
que você fala, é "World of Mathematics", mas James R. Newmann. A versão de
reimpressão da Microsoft Press de 1988 é a melhor, embora os originais possam ser
encontrados com mais facilidade.

A série abrange 4.500 anos de matemática e são 133 artigos dos matemáticos originais.
(É realmente divertido ler algo de Arquimedes (The Sand Reckoner) ou Galileo.) O
comentário de Newmann é o equivalente matemático das intros de Masterpiece Theatre
de Alistair Cooke, e coloca o artigo em perspectiva.) Quatro volumes leva cerca de 2 anos
de leitura suave para completar , mas vale a pena para o aluno casual. Advertência:
Originalmente publicado em 1954, ele perde os últimos 50 anos, mas faz um bom
trabalho com os primeiros 4.500!)

Além disso, eu tenho que expor minha Hipótese da Igualdade de Ignorância: Dado o
tamanho do corpo do conhecimento, nós são essencialmente igualmente ignorantes. O
mais aprendido entre nós tem apenas um pouquinho de conteúdo.

O caminho para o aumento do conhecimento é um estudo constante e qualquer


abordagem que atenda às suas necessidades é válida.
3H49 DE 23 DE ABRIL DE 2007

D disse ...

Dois livros úteis na lógica matemática, que pode ser largamente lidos simultaneamente,
são:

1) Introdução à Lógica Matemática por Elliott Mendelson


2) Computability - funções computáveis, lógica e os fundamentos da matemática por
Richard L. Epstein e Walter A. Carnielli

A O ex é um bom livro didático sobre lógica matemática, fornecendo uma sólida


introdução ao assunto. A segunda é uma ótima introdução aos elos entre a lógica
matemática e a computabilidade e inclui uma abundância de conteúdo sobre os
principais conceitos da teoria computacional, como as Teses de Church e as máquinas de
Turing.
04:42, 26 DE ABRIL DE 2007

smr disse ...

Artigo muito bom. Fala sobre todas as coisas certas ... E a maior parte é deja vu para
mim, como quando você fala sobre o somatório e o forloop. Eu aprendi a entender
somatório como para loop, da maneira mais difícil.

Eu tropecei em outros posts de seus blogs também algumas vezes. Você tem muita coisa
boa para compartilhar. É triste que você não esteja mais escrevendo.
Considere escrever novamente.

- smr
6H33 DE 28 DE ABRIL DE 2007

Animesh Sharma disse ...

Obrigado por este blog, também entro no mergulho recursivo da wikipedia quando fico
preso a algum problema. Sobre o tema do blog, o meu favorito é "Probabilidade e
Estatística para Ciência da Computação"
[http://www.amazon.com/Probability-Statistics-Computer-Science-
Johnson/dp/0471326720] por James L. Johnson.

Animesh
http://computationalbiologynews.blogspot.com/
11H47 DE 10 DE JUNHO DE 2007

David disse ...

steve-yegge.blogspot.com/2006/03/math-for-programmers.html 39/40
18/05/2019 Blogues de Stevey: Matemática para programadores
Steve - ótimo post. Eu também estou na mesma situação em que você estava quando
começou, querendo se aprofundar nos trabalhos de pesquisa, mas encobrindo as partes
mais difíceis de matemática.

Este é o mais engraçado (e perspicaz) comentário que eu li sobre matemática em um


longo tempo:

Uma grande coisa que logo cai no esquecimento é a notação. A notação matemática é o
maior turn-off para pessoas de fora. Mesmo se você estiver familiarizado com
summações, integrais, polinômios, expoentes, etc., se você ver um ninho espesso deles,
sua inclinação é provavelmente pular sobre aquele sugador como uma operação atômica.

Eu me vejo fazendo isso o tempo todo. Talvez depois de pegar meu livro de matemática
para dar uma volta, eu possa mudar esse comportamento.
21:41, 27 DE JUNHO DE 2007

<< Home

steve-yegge.blogspot.com/2006/03/math-for-programmers.html 40/40

Potrebbero piacerti anche