O que a matemática tem a ver com programação? [fechadas]

89

Acabei de começar um diploma em desenvolvimento de software. No momento, estamos começando com Java básico e coisas do tipo (então, de baixo para cima, você pode dizer) - o que é bom, não tenho experiência em programação além de saber como fazer o "Hello World" em Java.

Continuo ouvindo que a matemática é pertinente à codificação, mas como é que é? Que exemplos gerais mostrariam como matemática e programação andam juntas ou são dependentes uma da outra?

Peço desculpas pela minha pergunta ser vaga, mal estou começando a ter uma idéia aproximada do tipo de mundo em que estou entrando como estudante de código-macaco ...

Rory
fonte
49
Programar é matemática. pt.wikipedia.org/wiki/Discrete_mathematics
SK-logic
25
@ Dave, foi por isso que dei um link no comentário, não como resposta.
SK-logic,
7
@FiascoLabs, ainda mais que isso - estrutura e lógica da linguagem também são subdomínios da matemática. A programação nada mais é do que matemática aplicada.
SK-logic,
19
Em uma nota não relacionada, começar com Java não é "direto do fundo".
Matt H
5
@ CharlesE.Grant, muitos estudantes de matemática fazem o mesmo (e ainda passam nos testes).
SK-logic,

Respostas:

137

Primeiro: sou matemático - profissional (pois sou pago para fazer matemática). Eu não sou um programador. Eu faço alguma programação, mas definitivamente da variedade Cargo Cult (veja o primeiro comentário em https://tex.stackexchange.com/q/451/86 e minha resposta) e nada do tipo que normalmente me levaria a isso site (de fato, me registrei aqui para postar esta resposta depois de ver um link para ela na sala de bate-papo do TeX).

O resumo da minha resposta é: Matemática é Programação .

Recentemente, eu comecei a dar um curso de matemática para um grupo não-matemático de estudantes. Eles eram a seção de programação. Eu pensei que isso era fantástico! Por fim, eu seria capaz de ensinar matemática a pessoas que já entendiam as idéias básicas e que já tinham um conjunto de ferramentas rudimentares para fazer matemática. Fiquei incrivelmente desapontado quando perguntei quantos deles haviam realmente escrito um programa e obtive uma resposta entre 0 e 1.

Antes de prosseguir, devo esclarecer algumas coisas. Existem áreas da matemática que se preocupam diretamente com a programação e têm a ver com a avaliação de algoritmos e a classificação de linguagens e afins. Eu não estou falando sobre isso. Há também um programa que está tentando traduzir toda a matemática em uma linguagem formal que pode ser avaliada por um computador. Isso é um pouco mais próximo do que estou falando, mas, mesmo assim, focar nisso perderia a parte principal do que estou tentando dizer. A matemática que eu faço e a programação que eu faço não têm quase nenhuma relação com o tópico. A conexão entre eles está em um nível diferente.

Onde eu gostaria de começar é com o comentário sobre a questão principal:

Se isso é matemática, toda atividade humana é uma forma de matemática. Se for esse o caso, a palavra matemática não tem um significado útil, porque não pode ser usada para distinguir uma atividade de outra.

Sim, isso é matemática. Mas "matemática" ainda é uma palavra útil porque, como diz a música, "não é o que você faz, é o jeito que você faz". Eu diria que estou fazendo matemática quando estou abordando algo de uma maneira matemática . Às vezes, isso é matemática do "núcleo duro": formular definições, provar teoremas. Às vezes não é. Às vezes, está escrevendo pequenos programas tolos para que meus filhos aprendam suas palavras de ortografia.

É com isso que a matemática me ajuda quando programa:

  1. Abstração Esta é provavelmente a habilidade transferível mais importante da matemática. Com isso, quero dizer a capacidade de remover todas as coisas desnecessárias e focar nas propriedades importantes.

  2. Perspectiva Se eu pudesse escolher apenas uma coisa que todos os meus alunos deveriam aprender, seria isso: a capacidade de mudar o ponto de vista de acordo com o problema. Geralmente, tratamos isso em álgebra linear com fórmulas de mudança de base (que levam a matrizes horrendas e complicações horrendas), mas é muito mais aplicável do que isso. No fundo, é a ideia de que apenas porque algo lhe foi apresentado de uma maneira, não precisa ser a maneira como você trabalha com ele. Isso separa a visão da coisa em si da maneira como ela foi apresentada. Isso pode ser extremamente prático: trata-se de tornar algo útil ou eficiente. Se eu tiver uma lista de vetores e for mais eficiente armazená-los como uma lista de coordenadas xe uma lista de coordenadas y, que assim seja .

  3. Forma versus Função Liderando acima; se uma coisa pode ser apresentada de muitas maneiras diferentes, não é mais justo dizer que uma apresentação em particular é a coisa. Para citar essa música novamente: "Não é o que você é, é o que você faz " que importa.

Eu poderia continuar, mas esses são os que vêm à mente.

Agora, provavelmente há muitas reações (negativas) ao que escrevi até agora. Um deles será "Isso não é matemática, é apenas bom senso". (ou mau senso) a que me refiro à minha observação acima, concordando com o sentimento de que "toda atividade humana é uma forma de matemática". Outro será "Esse não é o tipo de matemática que se quer dizer na pergunta". Isso quase certamente é verdade e aqui eu realmente tenho muito mais simpatia com a pessoa que disse: "Pelo menos eu não toquei na matemática há dez anos". Ele ou ela está errado, é claro, eles fazem matemática há 10 anos, porque sempre que escreviam um programa estavam fazendo matemática . Eles simplesmente não perceberam.

Na verdade, eu uso algumas "matemáticas reais" em meus programas. Recentemente, codifiquei um divertido explorador de formas em 3D que envolvia o uso de matemática para descobrir as projeções e outras transformações que eu tinha que aplicar aos meus dados. Fiquei levemente divertido ao me ver realmente codificando quaternions! Mas é claro que a matemática envolvida era trivial em comparação com a matemática que eu faço quando estou trabalhando. Era coisa de "envelope". Esse tipo de matemática, então eu concordo com o sentimento de que você apanha quando precisa, e se precisar de algo mais complicado do que pode encontrar na Wikipedia, encontrará um matemático real para fazer isso por você. No entanto, para que você possa buscá-lo quando precisar, precisará aprender algo. Essa coisa pode não ser algo que você realmente usa, mas aprender que algo facilita ainda mais o que você realmente usa mais tarde na vida. Portanto, este é o lugar onde eu discordo com Coder: você precisa aprender algumas matemática, se você está indo cada vez para usar quaisquer matemática e você precisa aprender a partir do lado matemático (o que não significa teoremas provam, por sinal).

E, finalmente, para o "Mathematics is Programming". Você pode aprender todas essas coisas sendo um bom programador. E se você aprendeu essas coisas, encontrará a matemática muito mais fácil porque entenderá que quando falamos de um vetor em um espaço vetorial, é apenas uma instância da classe, o Vectorque significa que podemos fazer tudo o que Vectorfaz para nessa instância: adicione, subtraia, dimensione e assim por diante. É por isso que eu adoraria ensinar matemática aos programadores. Mas, falando como matemático, eu diria que o primeirodestes, "Abstração", é mais fácil aprender em matemática do que em programação, porque a matemática é a busca da abstração. Sempre que vemos algum comportamento, nosso treinamento é sempre perguntar: "O que há nessa coisa que faz com que ela se comporte dessa maneira? E se eu pegasse outra coisa que fosse semelhante, ela se comportaria da mesma maneira? Quanto do que essa coisa teria que perder para que parasse de se comportar assim? " (Levar isso ao extremo leva a "matemática centopéia" - procure o termo). Mas não fazemos isso com (apenas) objetos do "mundo real" (sejam eles quais forem), fazemos com coisas que já foram abstraídas.

Isso já durou o suficiente, então deixe-me concluir com uma das piadas matemáticas clássicas:

Um matemático e um físico participaram de um seminário sobre algum novo modelo envolvendo espaço 24 dimensional. Depois, eles discutiram e o físico observou: "Isso foi realmente difícil. Quero dizer, como alguém visualiza o espaço 24-dimensional?" ao qual o matemático respondeu: "Oh, é fácil. Apenas visualize o espaço n-dimensional e defina n = 24".


Adicionado 2012-03-2

Houve alguns comentários sobre esta resposta expressando uma variedade de pontos de vista. Agora, eles foram excluídos por um moderador, por entender que eu tentaria incorporá-los (ou responder a eles) na minha resposta.

No entanto, não tenho certeza de que posso. Lendo esses comentários e o restante do conteúdo desta página, só posso concluir que há um enorme mal-entendido sobre o que realmente é a matemática. Além disso, não me sinto competente o suficiente para explicar isso. Felizmente, alguém já se vinculou ao Lamento de Lockhart, por isso vou adiar a explicação para isso. Embora eu possa ter dito de outra maneira (como cresci em um ambiente científico, enfatizaria mais a natureza experimental da matemática), não acho que poderia colocá-lo melhor .

Ainda acho que posso adicionar algo. Assim como os mal-entendidos sobre o que é matemática , também existem mal-entendidos sobre o que significa "fazer matemática". Eu vejo duas posições quase contraditórias:

  1. Matemática é sobre equações e fórmulas. Portanto, não há necessidade de estudá-lo porque a Wikipedia existe (isso é quase o contrário do desafio apócrifo de Euler a Diderot ).

  2. A matemática trata de teoremas e definições. Portanto, não há necessidade de estudá-lo, pois os programas nunca provam nada (que é uma falácia tão completa quanto ... insira falácia favorita aqui).

Enquanto as duas posições se contradizem, elas terminam no mesmo lugar: não faz sentido um programador aprender matemática - e certamente não de um matemático! Afinal, o que eles sabem sobre alguma coisa? Qualquer coisa que um programador realmente precise saber pode ser encontrada na Wikipedia ou usada por outra pessoa.

Acima, eu me descrevi como um programador de cultos de carga. Aposto que a maioria de vocês deu uma risadinha particular e pensou: "Ah, sim, aposto que sei como são os seus programas então". Você provavelmente se sentiu um pouco convencido e superior (embora eu tenha certeza de que se sentiu mal por sentir-se convencido e superior).

O que eu descrevi logo acima é Cargo Cult Mathematics.

Então, quando digo que você deveria aprender um pouco de matemática para entender como ela funciona, estou dizendo exatamente pelo mesmo motivo que você faria se visse um pouco do código que eu havia escrito: "Quanto mais fácil sua vida seria se você parasse o código de recortar e colar do StackOverflow e aprendesse um pouco sobre como fazê-lo corretamente. ".

O mais importante, porém, é que você deve aprender com os matemáticos. Por quê então? Aqui está uma analogia. A linguagem que eu mais gosto é o TeX. (Diz tudo, sério!). Agora, suponha que eu queira aprender um pouco mais sobre o TeX e acontece que Don Knuth está na cidade e se ofereceu para dar alguns tutoriais sobre o TeX. Ou eu poderia apenas ler sobre isso na Wikipedia. Ou talvez seja Perl e Larry Wall, ou C # (esse é o correto?) E Jon Skeet. Pode ser que essas pessoas não sejam os melhores professores , mas certamente compensam isso na quantidade que sabem!

E é isso que os matemáticos são. Somos as pessoas que escrevem o idioma real e depois escrevemos as bibliotecas que você usa. Obviamente, você não precisa saber como provar um teorema - não vai escrever uma biblioteca! Mas se você souber um pouco sobre como pensamos, isso poderá ajudá-lo a entender por que escrevemos a biblioteca da maneira como escrevemos e se você entender que isso pode ajudá-lo a fazer melhor uso dela.

Há um meio termo entre procurar equações na Wikipedia e provar a conjectura de Poincaré, assim como - para se referir ao lamento de Lockhart - há um meio termo entre "eu não sei muito sobre arte, mas sei do que gosto" e sendo Monet, e entre "Onde está a chave 'QUALQUER'?" e sendo Don Knuth. Se você ainda está na universidade, tem uma oportunidade incrível de aprender com pessoas que são especialistas em sua área e que - por alguma razão - estão dispostas a gastar seu tempo explicando isso para você.


O outro ponto que eu queria expandir um pouco foi por que, como programador, você não deveria ter medo de aprender um pouco mais de matemática. Não são as conexões profundas, nem a utilidade. É que sua capacidade de programar um computador pode ajudá-lo diretamente a aprender matemática. Eu só quero mencionar alguns.

  1. Compreendendo variáveis. Muitas pessoas ficam confusas com declarações simples como "Seja n um número natural ...". Ou "Deixe epsilon> 0". Há lugares na matemática em que é importante lembrar o escopo de uma variável. Tudo isso é comum na programação. Aprenda a traduzir uma declaração matemática em um programa e você achará muito mais fácil acompanhar o que é o quê.

  2. A natureza da prova. Se você já escreveu um teste ou escreveu um programa para ser usado por outra pessoa, entende o núcleo das provas. Ao fazer isso, você deve saber que, independentemente do que o usuário colocar, poderá lidar com isso (insira a referência obrigatória do xkcd aqui). Isso é tudo que uma prova é! Uma demonstração de que, independentemente do que o "usuário / universo" coloque, a declaração será válida. Os experimentalistas se inclinam para o "Se funcionar em circunstâncias normais, é verdade", mas os programadores sabem que sempre existe aquele garoto que tentará Alt + G + Shift + ÅØÆ apenas para ver o que acontece.

  3. SECO. Desculpe quebrar isso para você, mas nós a inventamos, não você. Estamos "não nos repetindo" há milênios. É por isso que tenho uma cópia dos elementos de Euclides em minhas prateleiras e ainda é útil .

E tem mais. Se eu soubesse um pouco mais sobre programação, escreveria um livro chamado "Matemática para programadores", onde o objetivo não era ensinar "A matemática que os programadores devem saber", mas "matemática que todos deveriam saber, mas otimizada para programadores". . Mas provavelmente nunca saberei o suficiente sobre programação para escrevê-lo - a menos que alguém se ofereça para colaborar comigo!


Vou deixar lá. Provavelmente, se eu pensasse mais, mudaria o que escrevi; espero que eu explique melhor. Dentro de alguns meses, posso até discordar de algumas partes. Se alguém desejar discutir mais ou comentar de outra forma, provavelmente é melhor não fazer isso nos comentários aqui. Você sabe onde me encontrar .

Loop Space
fonte
19
Essa é uma das melhores respostas que eu já li no SE; BTW, não é um grande livro de "Matemática para programadores"; chama-se Concrete Mathematics e é co-escrito pelo autor do TeX, Donald Knuth. Acabei de receber uma cópia e é fantástico. Eu me sinto como seu inverso; Eu levei a sério a programação quando percebi que a melhor maneira (para mim) de entender conceitos na aula de matemática era escrever um programa para fazer isso por mim. Claro, então eu queria usar o programa em vez de fazer cálculos manuais manualmente, e meus professores de matemática não gostaram.
Jason Lewis
Cara, +100 por isso.
Barry Brown
2
Registrado apenas para votar este
leo
Exatamente. Você não pode programar bem sem o pensamento analítico que a matemática lhe ensina.
Fiasco Labs
1
Existe um bom livro sobre matemática de programação OF (olhando para programação matematicamente)?
Qd #
27

Eles não são que intimamente relacionados. Para a programação, é importante saber sobre matemática, especialmente os ramos relacionados, por exemplo, ao desempenho de algoritmos, mas o fato simples é que não há ramo da matemática que diga que os Singletons são uma péssima idéia, por exemplo, ou quando favorecer a herança sobre a composição, ou se você realmente precisará dessa flexibilidade e não se repita, além de dezenas de outras necessidades essenciais de programação.

A matemática pode ser capaz de expressar o que seu programa faz, mas certamente não pode lhe dizer a maneira mais sustentável, legível por humanos e viável de fazê-lo.

DeadMG
fonte
6
1) Não há nada errado com singletons em si, 2) a teoria algorítmica da informação, linguagens formais e semântica denotacional são diretamente relevantes para aquelas coisas simples com as quais você se preocupa por algum motivo (elas não são tão importantes para a programação em geral).
SK-logic
19
sua experiência deve ser um pouco limitada então. Singletons são necessários e inevitáveis, desde que façam parte de um modelo de domínio. E como construir um modelo de domínio é um problema matemático, nada mais. E sim, aqueles que são ignorantes na teoria das linguagens formais estão produzindo modelos horríveis e linguagens terríveis.
SK-logic,
10
@dave: o perigo desse método é que qualquer pessoa possa desviá-lo de uma posição sensata e bem fundamentada, afirmando uma posição totalmente diferente, por mais estúpida que seja. Tomar médias não é um substituto útil para avaliar argumentos.
Michael Borgwardt
4
@ SK-logic: É possível que vocês dois estejam simplesmente falando sobre diferentes noções do que exatamente é um "Singleton"? Parece-me que a SK-logic está falando sobre a idéia abstrata de ter apenas uma instância de uma determinada entidade em um sistema, que às vezes é exatamente o que é necessário. Infelizmente, esse conceito abstrato foi intimamente associado aos detalhes de implementação terrivelmente ruins de se ter um método público de fábrica estática, porque o livro do GoF deu isso como um exemplo de como um Singleton poderia ser acessado.
Michael Borgwardt
5
Por favor, não mais Off Topic discussion re Singtons
mattnz
20

Matemática e programação estão relacionadas de duas maneiras.

Uma é que a matemática pode ser usada para raciocinar sobre programas de computador. Ele pode ajudar a responder a perguntas como "Como o tempo de execução do meu programa muda à medida que os dados de entrada mudam?", "É garantido que meu programa encontra uma resposta para o meu problema?", "Meu programa é o mais eficiente possível? "," Como devo reorganizar meu programa para torná-lo mais rápido ou usar menos memória? ". Você normalmente aborda tópicos como esses nos cursos da divisão superior sobre teoria da computação, design de algoritmos e design de linguagem de computador.

A segunda maneira pela qual matemática e programa estão relacionados é que a programação é usada para resolver problemas matemáticos. Isso é importante porque muitos problemas da "vida comum" podem realmente ser reformulados como problemas matemáticos e depois resolvidos (talvez aproximadamente) em um computador. Esses tipos de tópicos aparecerão, em certa medida, em quase todos os seus cursos, mas particularmente em cursos sobre matemática discreta e modelagem matemática.

Charles E. Grant
fonte
O Math não pode ajudá-lo a garantir que seu programa encontre uma resposta. Isso resolveria o problema da parada, o que é impossível.
DeadMG
6
@DeadMG É impossível para programas arbitrários. Pode ser comprovadamente que um determinado programa termina ou não, em alguns casos.
Luc Danton
6
@DeadMG, esse é um mal-entendido comum sobre o problema da parada. O problema da interrupção não diz que você não pode provar se um programa em particular interrompe ou não, mas diz que não existe um algoritmo ou prova única que possa ser aplicada a todos os programas para decidir se eles devem ou não ser interrompidos. Veja, por exemplo, en.wikipedia.org/wiki/Halting_problem e programmers.stackexchange.com/questions/125882/… .
Charles E. Grant
Aaaah. Meu erro, então. Bloqueio estúpido de votos ... se você pudesse editar sua postagem para que eu pudesse cancelar a votação?
DeadMG
4
@DeadMG, você está ciente do fato da maioria das tarefas de programação típicos não precisa de uma linguagem Turing-completa em tudo ? E para o restante dos casos, quase sempre há uma prova de parada especializada.
SK-logic,
12

Dois exemplos específicos em que uma educação matemática é importante para a ciência da computação são:

1) Bancos de dados relacionais nos quais o cálculo relacional é usado.

O cálculo relacional consiste em dois cálculos, o cálculo relacional da tupla e o cálculo relacional do domínio, que fazem parte do modelo relacional para bancos de dados e fornecem uma maneira declarativa de especificar consultas ao banco de dados. Isso contrasta com a álgebra relacional, que também faz parte do modelo relacional, mas fornece uma maneira mais processual para especificar consultas.

A álgebra relacional pode sugerir estas etapas para recuperar os números de telefone e os nomes das livrarias que fornecem alguns livros de amostra:

Join book stores and titles over the BookstoreID.
Restrict the result of that join to tuples for the book Some Sample Book.
Project the result of that restriction over StoreName and StorePhone.

O cálculo relacional formularia uma maneira descritiva e declarativa:

Get StoreName and StorePhone for supplies such that there exists a title BK with the same BookstoreID value and with a BookTitle value of

Algum livro de amostra.

A álgebra relacional e o cálculo relacional são essencialmente logicamente equivalentes: para qualquer expressão algébrica, há uma expressão equivalente no cálculo e vice-versa. Este resultado é conhecido como teorema de Codd.

A próxima área é inteligência artificial (IA) e aprendizado de máquina .

Para um exemplo de como eles são usados, dê uma olhada na classe CS 373 da udacity: PROGRAMANDO UM CARRO ROBÓTICO .

Descrição: esta aula, ministrada por um dos principais especialistas em IA, ensinará métodos básicos de Inteligência Artificial, incluindo: inferência probabilística, visão computacional, aprendizado de máquina e planejamento, todos com foco em robótica. Exemplos e tarefas de programação abrangentes aplicarão esses métodos no contexto da construção de carros autônomos. Você terá a chance de visitar, por vídeo, os principais laboratórios de pesquisa em campo e conhecer os cientistas e engenheiros que estão construindo carros autônomos em Stanford e Google.

Pré-requisitos: O instrutor assumirá sólidos conhecimentos de programação, toda a programação será em Python. Conhecimento de probabilidade e álgebra linear será útil.

SEMANA 1:

Noções básicas de probabilidade Localização de carros com filtros de partículas

SEMANA 2:

Gaussianos e probabilidade contínua Rastreando outros carros com filtros Kalman

SEMANA 3:

Processamento de imagem e aprendizado de máquina Localização de objetos nos dados do sensor

SEMANA 4:

Planejando e pesquisando Determinando onde dirigir com a pesquisa A * Encontrando rotas ideais com programação dinâmica

SEMANA 5:

Controles Controle da direção e velocidades com PID

SEMANA 6:

Juntando tudo Programando um carro autônomo

SEMANA 7:

Exame final Exame testando seu conhecimento

JonnyBoats
fonte
Eu acho que isso se enquadra no domínio da IA, mas a maioria das pessoas tem essa torta na imagem do céu em mente quando esse termo é usado. De qualquer forma, quase qualquer programa que simule o mundo real quase sempre requer alguma forma de matemática mais avançada. Além disso, qualquer sistema com sensores quase sempre requer alguma forma de matemática avançada.
Dunk
11

Para o desenvolvimento de aplicativos científicos, programação de jogos, sistemas em tempo real, sistemas de simulação e outras aplicações, a matemática é realmente necessária. Afinal, a programação usa matemática e ciências para resolver problemas. Por outro lado, programar um aplicativo que captura informações de usuários para registrá-las em seu banco de dados, não requer nenhum alto nível de matemática. No entanto, todos os programadores se beneficiariam da Teoria Básica dos Números, Álgebra, Teoria Básica dos Conjuntos e Análise Numérica Elementar.

Do lado dos profissionais de matemática, diferentes tópicos em matemática (assim como em muitos outros ramos da ciência) poderiam se beneficiar significativamente da programação.

Emmad Kareem
fonte
Concordo. Desenvolvo muito o desenvolvimento empresarial e não precisei usar muita matemática avançada, embora seja definitivamente bom saber, pois pode ajudar. Eu diria que todo programador deveria ter feito pelo menos o Cálculo 1. Outros tipos de programas podem utilizar coisas como transformadas de Fourier, modelos estatísticos e programação 3D frequentemente usam matrizes.
27512 Makotosan
@ Makotosan, obrigado pelo seu comentário. Contudo, a matemática é muito interessante, dado o pouco tempo que um programador tem, é melhor gastar esforços no que realmente aumenta a produtividade. Informações extras tornam-se luxo para quem pode pagar.
NoChance
Eu acho que a matemática é apenas o conhecimento de domínio necessário para o seu programa, da mesma forma que entender finanças é importante para os desenvolvedores do Excel.
sixtyfootersdude
9

Acho que mais do que qualquer outra coisa, é a semelhança do processo de pensamento usado que faz os dois parecerem tão semelhantes.

Por exemplo, ambos são extremamente lógicos. Se você seguir o mesmo conjunto de etapas ou a mesma fórmula, sempre terá o mesmo resultado. Por exemplo, 1+1sempre será igual a 2, e as set a = 1médias asempre serão 1 (até você defini-lo para outra coisa)

Outro exemplo é a necessidade de pensar espacialmente. Em matemática, descobri que muitas vezes tinha que guardar números na cabeça e visualizar o que estava fazendo. Como um exemplo muito simples, eu decompunha os problemas de matemática para que algo como 13x13se tornasse 13x10 + 13x3, o que é muito mais fácil para o meu cérebro trabalhar, e preciso acompanhar 13x10=130 + 13x3=39isso 130+39 = 169. Essa mesma capacidade de visualizar algo não visível ou dividir um problema em problemas menores é frequentemente aplicada à programação.

Portanto, sinto que, embora você não precise ter um histórico matemático para programar, onde a matemática é definida como a realização de cálculos com números, você precisa ter um processo de pensamento e entendimento semelhantes ao que usaria para resolver problemas de matemática.

Rachel
fonte
E alguma matemática básica é o trampolim usual para obter esse processo sistemático e lógico de solução de problemas. Estrutura da linguagem, algo que não é mais ensinado na escola também é outro trampolim. Há uma razão para que um compilador tenha um analisador e quanto melhor você estiver analisando e prestando atenção à estrutura do seu código, maior será a probabilidade de programar bem.
Fiasco Labs
5

Suponho que, até o momento, você aprendeu elementos de cálculo e alguma trigonometria . E você chama isso de matemática. É como chamar um par de pernas de "ser humano".

O cálculo tem pouco a ver com programação e está mais fortemente relacionado à física e engenharia. Você precisará de física para motores de jogos e cálculo para análise estatística . (A análise estatística gera mais trabalhos que é confortável admitir)

Cálculo, para nós, é mais sobre relacionar a programação ao mundo real. O cálculo computacional é o ramo que estuda o quão ruim essa relação está indo até agora. (spoiler: está indo muito mal, mas podemos mantê-lo indefinidamente )

A trigonometria é uma loucura que surge quando você menos espera e, em seguida, a análise de sinais , a geração de áudio e muitas outras coisas dependem disso.

Vá através da Álgebra 101 e da Lógica 101 , estude a história de Pascal, Leibniz (sim, ele quase inventou o cálculo, entendeu errado, discutiu com Newton até que tudo começou a fazer quase sentido - e ainda concebeu a coisa da codificação binária) e Babbage e muitas de suas dúvidas diminuirão. (sua definição de matemática será alterada para sempre)

ZJR
fonte
4

A programação atravessa muitas disciplinas acadêmicas tradicionais.

A matemática, especialmente a matemática aplicada , é importante para a programação, porque muito do que pedimos aos computadores para fazer é triturar números. Compreender os métodos numéricos e como aplicar a computação de maneira eficiente e apropriada é uma das coisas que muitos programadores fazem diariamente.

Joel Brown
fonte
4

Aqui, vou explicar algumas coisas práticas onde encontrei a Matemática na solução de alguns problemas de computação (principalmente no domínio da Internet):

  1. Os Mecanismos de pesquisa usam o Cálculo vetorial para pesquisar dados.
  2. A fatoração matricial pode ser usada para várias coisas, como a análise de sentimentos.
  3. Você precisa conhecer Cálculo, Somaturas para descobrir a complexidade do código que você escreve.
  4. A probabilidade é muito usada na pesquisa / recuperação de informações probabilísticas
  5. O Teorema do Naive Bayes é usado no Analytics Preditivo.
  6. Você precisa conhecer coisas como hiperplano etc. para um conceito chamado SVM, que é novamente usado no Machine Learning para resolver problemas de categorização.
  7. Você precisa entender o Entropy para executar tarefas de Processamento de linguagem natural.
  8. A indexação semântica latente / análise de componentes principais usada pelos mecanismos de pesquisa depende muito da álgebra matricial. & em breve......
Yavar
fonte
3

Um problema com sua pergunta é que "matemática" e "programação" são assuntos muito amplos e profundos sobre os quais há mais a saber do que alguém poderia dominar na vida (sem exageros). Pessoalmente, tenho um diploma de mestrado em matemática. Durante meu tempo na universidade, parecia que quanto mais eu aprendia, menos eu sabia em comparação com meus colegas; parecia que, se eu me tornasse menos inteligente ao longo dos anos. Quando apresentei minha tese de mestrado a um grupo de professores, mesmo a maioria deles parecia pouco familiarizada com o que estudei.

Da mesma forma, agora sou desenvolvedor de aplicativos Web orientado a banco de dados. Se você me comparasse com alguém que faz programação em linguagem assembler incorporada, pode pensar em nós como dois profissionais muito talentosos, mas teríamos uma experiência muito diferente, embora sejamos "programadores".

À medida que você progride no estudo da matemática superior (além do cálculo para calouros), você descobrirá que a matemática instila uma disciplina para o raciocínio abstrato que o servirá bem quando você programar. Eu acho que essa disciplina é muito importante, porque você lida com preocupações abstratas ao programar.

Claro, na programação de calouros, você provavelmente aprenderá sobre aritmética de ponteiros. Você escreverá programas curtos para ilustrar esse conceito e sua compreensão de como ele dirige seu computador obedece à sua vontade. No entanto, aprender sobre como a aritmética dos ponteiros funciona em abstrato não o tornará bom em usar ponteiros em um programa real. Quando chegar a hora de enfrentar uma bagunça de 10 mil linhas de código e fazer algumas alterações na aritmética do ponteiro, você precisará raciocinar em um nível muito abstrato, tomando decisões estratégicas para equilibrar diferentes preocupações sobre como suas alterações afetarão o código.

Como programador, você deve equilibrar a "legibilidade" do seu código, o desempenho do seu código, a facilidade de uso dos programas resultantes, entre muitas outras preocupações. Você deve ser capaz de fazer comparações muito abstratas para equilibrar essas preocupações entre si. Você fará muitas dessas comparações todos os dias. Eu nem comecei a administrar o tempo. Você argumentará abstratamente sobre a probabilidade de que algo que você faça afetará sua capacidade de executar suas tarefas a tempo e, mais uma vez, tomará muitas decisões todos os dias que afetarão seu trabalho.

Finalmente, você deve manter sua disciplina filosófica para poder assimilar novas idéias e conceitos, a fim de poder continuar à medida que metodologias e práticas antigas caem em desuso. Mais uma vez, você terá que poder avaliar as idéias que surgirem e fazer uma comparação abstrata com o que você já conhece.

Em resumo, a programação, como a maioria de nós sabe, não tem muito a ver com matemática, como a maioria de nós sabe; mas quando você olha para um nível abstrato, eles têm muito em comum.

Bolinhos de farinha de arroz
fonte
Eu particularmente gosto da parte "como a maioria de nós conhece". Essa é a dificuldade que vejo ao ler a maioria das respostas aqui: a "mão esquerda" não sabe o que a "mão direita" está fazendo.
Loop Space
Eu acho que "a mão esquerda não sabe o que a mão direita está fazendo" resume tudo. O OP disse que ele está "começando de baixo" com Java. Programação em Java é uma espécie de como construir algo de parafusos e madeira da loja de ferragem, ao contrário de usinagem esses parafusos e fazer árvores vivas para madeira (que seria mais parecido com programação em Assembler)
Farinha de Arroz cookies
2

A matemática descreve (digamos) uma equação cúbica.

Um algoritmo descreve como resolver essa equação cúbica.

Construir esse (ou qualquer) algoritmo de uma maneira que possa ser executada por uma máquina está programando .

A ciência da computação é a análise do algoritmo - sua eficiência temporal / espacial teórica, limites de erro, etc. Isso pode ser considerado um ramo da matemática. Observe, no entanto, que ciência da computação e programação não são a mesma coisa. É importante ter uma base em ciência da computação se você quiser ser um bom programador, porque isso ajuda a projetar e raciocinar melhor sobre os algoritmos que você desenvolve. Mas isso não é um requisito.

Um bom programador pode não ser (de fato, muitas vezes não é) um bom matemático e vice-versa. São habilidades identificáveis ​​separadas.

mcmcc
fonte
3
Depende do seu domínio. Se você quer apenas ser programador, não precisa saber de matemática. Se você deseja se tornar uma parte essencial dos negócios (em muitos domínios), é essencial poder encontrar soluções para problemas de domínio. Com muita frequência, essas soluções só podem ser derivadas tendo uma sólida formação matemática. Você pode não precisar ser um especialista em qualquer área matemática específica, mas deve saber como aplicar uma grande variedade de matemáticas para descobrir o que a matemática pode resolver seu problema específico do momento.
Dunk
2

Eu já vi muitas perguntas sobre esses tipos de fóruns ao longo dos anos em que o problema real estava no fraco entendimento matemático do pôster. Por exemplo, quem tem uma boa base em álgebra entende que você não pode dividir por zero. Mas já vi muitas perguntas em que o pôster não entendeu isso e, posteriormente, não entendeu a mensagem de erro que dizia basicamente "você não pode dividir por zero". Eu já vi muitas perguntas em que ficou claro que o pôster não entendia a lógica básica. Já vi muitas perguntas em que os conceitos de álgebra booleana claramente não eram compreendidos.

Só porque você não está escrevendo provas matemáticas ou resolvendo diretamente equações, como no livro de matemática, não significa que você não precisa entender os conceitos por trás deles. Aliás, em muitos anos de experiência profissional, nunca encontrei um programador ruim que tivesse um sólido entendimento de matemática.

Em alguns campos, você usa muita matemática diretamente, como programação de jogos, programação estatística, programação financeira, alguns sistemas embarcados. Em alguns desses casos, você recebe as equações necessárias nos requisitos e às vezes não. No entanto, mesmo quando você recebe a equação, a tradução correta dessas equações em código de programação exige que você entenda a equação para começar.

Embora você possa se familiarizar com pouco mais do que a álgebra básica em seu aplicativo CRUD básico, a maioria dos problemas mais interessantes e o trabalho mais avançado envolvem compreensão matemática. Então, por que você quer se limitar desde o início, não aprendendo matemática em profundidade?

HLGEM
fonte
2

Dois exemplos que vêm imediatamente à mente são:

funções - A idéia de aplicar uma transformação às variáveis ​​de entrada para produzir uma variável de saída está fortemente enraizada na matemática. A noção de passar uma função como parâmetro para outra função ainda mais. Em geral, a noção de pensamento abstrato associada à programação é paralela à matemática.

bitMasks - Essa abordagem de programação comum para resolver problemas requer pelo menos um entendimento básico da álgebra booleana para entender o conceito.

JohnFx
fonte
1

Do ponto de vista dos programadores: a matemática é um subconjunto da programação.

Matemática aplicada na programação:

Ao trabalhar com coleções (matrizes, listas, mapas etc.) em programação, você está lidando com implementações do mundo real de abstrações matemáticas.

Programação sem matemática:

Se o fizer println("Hello World"), então o fato de que algumas contas são usadas para calcular a posição na tela, o comprimento da string etc. é realmente irrelevante.

Usando programação para matemática:

A implementação de matemática e física em uma linguagem de programação possibilita coisas como o design assistido por computador.

Jack
fonte
Há uma interseção de coisas relacionadas à matemática e à programação. Nem é um subconjunto adequado do outro. Se você soubesse mais MATH, saberia disso. Vamos desenhar um diagrama de Venn e ver se conseguimos encontrar um item em cada área. Álgebra é matemática e programação. Os princípios da programação orientada a objetos não são estritamente relacionados à matemática, mas são abstrações, pois a matemática é uma abstração. A matemática discreta é incrivelmente útil para os programadores, assim como as estatísticas. O cálculo raramente aparece para a maioria dos programadores, ainda não para mim em 30 anos.
Warren P
0

A programação geralmente é baseada em um modelo que geralmente é um modelo matemático.

Vamos dar um exemplo de criação de uma calculadora de hipoteca. Para isso, você precisa saber o que é interesse, o que é um interesse composto e assim por diante. Se você não tem o entendimento da matemática subjacente, alguém deve fornecer essas informações a você. Normalmente, o trabalho do programador é fazer tudo. Você sempre pode procurar ajuda, se necessário.

Existem conceitos simples em matemática que são amplamente utilizados em programação. Por exemplo, expressões, equação, variável, elas são profundamente usadas na programação. Se você não o obtiver no Math, pode não ser o melhor programador.

Tendo uma matemática forte, você terá mais coisas para modelar seu trabalho. Isso faz de você um programador melhor. Por exemplo, você pode desenhar uma equação quadrática em um de seus projetos, dessa maneira você aprende mais coisas só porque é forte em matemática. Ou você escreve um programa para encontrar a área de um círculo, para lhe dar mais experiência.

Em minha curta carreira de professor, descobri que, se os alunos não tinham formação em matemática, eles estão quase perdidos ao resolver um problema financeiro. Se eles estão perdidos com o modelo, aprender o próprio idioma se torna mais difícil e honestamente muito frustrante.

Noname
fonte
3
Se alguém pode ou não resolver um problema financeiro tem tudo a ver com se é ou não competente nesse domínio, quase nada a ver com a aptidão de programação. Eu trabalho com software de processamento de sinais que contém muita matemática que está além da minha cabeça. Meu trabalho não é fazer as contas, é transformar o que é produzido por matemáticos e engenheiros, para os quais a programação não está em seu domínio de especialização, em bom software. Porque esse é o meu domínio.
Blrfl
Na maioria dos campos práticos, os dois são separados: alguém tem o modelo e alguém tem que programá-lo. Então sim, você está certo. Mas para alguém aprender a programar desde o início, precisa conhecer a matemática. Caso contrário, será difícil. Eles precisam saber sobre variáveis, expressões e propriedades matemáticas diferentes. Eu trabalhei com a equipe de otimização. Eles estavam trabalhando em solucionadores. Se eles não tivessem conhecimento da matemática, nunca teriam trabalhado nela. Eu respondi com base no ponto de vista de aprendizado e sabendo que ele é apenas um novo aluno que está entrando na programação.
Noname
Do ponto de vista da aprendizagem, é imperativo ter uma formação matemática, caso contrário, outras não serão aprendidas.
Noname 27/02
Os solventes são muito um problema no domínio da matemática, o que levaria a pensar que seria necessário um entendimento da matemática envolvida para trabalhar neles. Não estou dizendo que não conceitos matemáticos envolvidos na programação, mas, como o @DeadMG apontou em sua resposta, há muitos aspectos muito práticos do processo em que a matemática não oferece absolutamente nenhuma ajuda.
Blrfl 27/02
1
@ Birfl, DeadMG é, bem, um pouco ignorante (e quase sempre errado). A matemática sempre ajudaria em todas as áreas "suaves". A psicologia é fortemente baseada em matemática. A sociologia é ainda mais matemática. E, no caso do design de sistemas, é melhor não tocá-lo sem uma experiência muito boa em semântica (que é de matemática discreta). Não há aspectos na programação que não sejam matemáticos. Design de GUI e codificação CRUD estão incluídos.
SK-logic
0

O fundamento teórico da Ciência da Computação (que é mais do que apenas programação) é de natureza matemática. Tudo, desde a própria definição de computabilidade até a análise e expressão de algoritmos e as especificações das linguagens de programação, são todos baseados em uma ampla variedade de matemáticas. Veja esta página da Wikipedia para obter uma amostra do tipo de matemática envolvida.

A maioria não é realmente necessária para saber se tudo o que você quer fazer é o código sling. No que diz respeito à matemática aplicada, a menos que você entre em um campo que exija habilidades sérias de processamento de números (simulações físicas detalhadas, análise de sinais, análise financeira e previsão, etc.), provavelmente não usará nada mais envolvido do que álgebra básica diariamente.

John Bode
fonte
0

Honestamente, depende do tipo de programação que você está fazendo.

Se você estiver criando aplicativos da Web leves com alguma lógica, provavelmente não precisará das aulas de matemática mais avançadas que muitos graus exigem. Se você estiver trabalhando com coisas que são um pouco mais pesadas do processador, precisará de mais matemática. Se você trabalha com qualquer tipo de campo científico, você realmente deseja manter suas referências de cálculo em mãos.

Outro lugar em que você precisará de matemática é se deseja escrever jogos. No segundo que você desejar mover na diagonal, precisará começar a fazer alguns cálculos cuidadosos para não acabar com caracteres que aceleram se forem movidos para um bloco para o NE.

Dito isto, você não precisa necessariamente aprender matemática e aprender a programação. É perfeitamente válido aprender a programar e depois aprender matemática avançada. Comecei a codificar antes de entrar em uma classe Calc ou Trig e me saí bem. Quando comecei a aprender matemática avançada, descobri que a codificação realmente me ajudou, pois pude explorar o tópico mais alterando variáveis ​​em um script rápido do que com caneta e papel.

kcunning
fonte
Você definitivamente precisará conhecer a matemática trigonométrica e vetorial para jogos.
Alan B
Absolutamente. Também descobri que escrever jogos pode ser uma maneira incrível de reaprender matemática que você pode ter esquecido do ensino médio, desde que não esteja dentro do prazo.
kcunning
0

Eu não sou de forma alguma um especialista em matemática! Eu me saí bem na HS Geometry, o que era tudo lógico para mim. Acho programação e geometria muito parecidas. A lógica booleana está muito bem na minha mente em provas geométricas.

Depois, há pequenas coisas como saber que você pode controlar quantas colunas estão seguidas usando o operador de módulo.

Sou a favor da ideia de ser um bom programador que tem um amigo (ou colega / consultor) que é um bom matemático.

Obviamente, se você é abençoado por ter as duas habilidades, corra com ela!

TecBrat
fonte
0

Resposta simples; A matemática faz você rápido . Claro, você pode pesquisar no Google / se / wikipedia seus problemas de codificação, mas faça bastante matemática e não precisará . Acredite ou não, o cérebro humano adequadamente treinado é mais rápido que o google . Além disso, quanto mais matemática você souber, mais rápido será capaz de entender os resultados que o google / se / wiki fornece e menos será necessário detalhar para entender o que as pessoas dizem. No processo de resolver seus problemas de programação, você acabará aprendendo matemática de qualquer maneira, mas se você se concentrar em matemática, será um processo muito mais eficiente.

Sua pergunta é como um músico de rock perguntando por que eles precisariam de treinamento musical formal. É possível ser bem sucedido sem ele? Certo. Isso o torna muito mais durão se você continuar com isso? Absolutamente.

Resposta um pouco mais complicada - Quando matemáticos e programadores usam a palavra "solução" (para problemas, isto é, não equações - ou seja, não "raízes") - eles significam praticamente a mesma coisa. Aprender a resolver problemas de matemática ajuda a aprender a resolver problemas de programação.

Aliás - e sem ofensas para ninguém - quem diz que é um bom programador, mas odeia a matemática, é um grande mentiroso. O que aconteceu foi que eles foram desligados da matemática formal por um professor de faculdade ou professor ruim e, desde então, sentem que "não são bons em matemática". Qualquer pessoa sem dificuldade de aprendizagem (ou seja, alguém capaz de aprender uma língua OO) é capaz de tudo, inclusive o segundo ano de cálculo.

jamesson
fonte
0

As ações de matemática e 99% de programação têm muito pouco em comum. A matemática não é necessária para ser um ótimo programador. Fiz vários cursos de nível universitário em matemática, incluindo, entre outros, elementos de cálculo I, II, III de álgebra linear e vários outros.

Sou engenheiro de software há mais de 10 anos e raramente precisava usar algo além da matemática básica. Existem algumas exceções em que a matemática é necessária: como gráficos e outras áreas. Mas 99% da programação e engenharia de software não exigem matemática. Requer pensamento lógico, algoritmos, POO, funções, problemas de decomposição, etc.

Pascal Aschwanden
fonte
0

1) À medida que aprende a programação, você se depara com jargões técnicos (ou seja, algoritmo). Para analisar o algoritmo, é necessário ter uma idéia sobre a natureza das funções polinomial, logarítmica e exponencial.

2) Com base em um aplicativo de ciência da computação, é preciso ter uma idéia sobre matemática discreta e matemática contínua para escrever uma solução significativa. Pode-se entender mais sobre isso fazendo cursos como:

---> Matemática para Ciência da Computação

---> Codificação da matriz: álgebra linear através de aplicativos de ciência da computação .

Para um iniciante, sinto que linguagens dinâmicas são como python/ schemesão as primeiras melhores linguagens de programação. Idiomas de tipo estático como Java/ C++não são os melhores para começar. O Opencourseware publicado no "MIT / UOC-Berkeley / Stanford" pode orientá-lo melhor do que um currículo regular da faculdade. Eu aposto que você !!!

5 rotações
fonte
-1

Eu diria pessoalmente que depende do nível de programação envolvido. Os modelos de dados e as correlações entre eles, os algoritmos de programação envolvidos. Por exemplo: para escrever um programa que produz "Hello World", não vejo necessidade de familiarizar alguém com Matemática Superior. O nível de envolvimento matemático dependeria do nível de complexidade do problema que precisa ser resolvido programaticamente.

Aubede
fonte
-2

Apenas minha experiência, nada mais:
eu não sou matemático. Eu não sou um gênio, apenas um autodidata.
... e depois de muitos anos, percebo que trabalho com intuição

Primeiro, aprendi Pick (sistema morto) do zero (sozinho com documentação e amostras em papel),
... depois de C, C ++ por diversão e Java por trabalho.

Como você falou sobre isso, posso dizer que aprender esse idioma não é um problema matemático (mesmo que a álgebra básica / minimalista o ajude), mas um problema lógico .

Agora, muitas ferramentas (como o Eclipse) ajudam e corrigem você: você precisa se concentrar no que deseja fazer , com apenas 52 palavras reservadas ... e em muitas bibliotecas que estão funcionando para você.

Portanto, se você gosta de linguagem, escolha um projeto Java, estude Design de Padrão, UML, entenda a JVM e como usá-lo com Bigloo e Scala, entenda várias vezes durante 10.000 horas.

A experiência em Java oferece a você empregos bem remunerados e, por muito tempo, em grandes projetos industriais, e você poderá mudar para outro ambiente porque é capaz de falar de informática , não de matemática .

Se a compreensão da linguagem (palavras, significado, conceito e outras ciências lógicas ocultas, como semântica, ontologia, etc.) é um bom objetivo para sua pessoa humana, para toda a sua vida, você pode começar agora .

Caso contrário, experimente de outra maneira.

Atenciosamente
Claude

cl-r
fonte
Mais uma vez, veja a publicação abaixo. Você está fazendo contas, apenas escolhe não admitir.
Jamesson
1
Eu vi, mas também encontrei outras postagens respondendo à primeira pergunta sobre interesse matemático para um aluno (que conhece base, não especialidades) com -1 ^ n quando falou sobre lógica em latim, filosofia, idioma ... real vida. A mente matemática é tão confinada que nem tudo está na equação é rejeitada, sem entender a vida ao redor e esquecendo que Newton começa com uma intuição dada por uma maçã? Talvez seja para o moderador abrir a mente para os outros mundos, quando possível, isso enriquecerá os dois lados da discussão. Não obstante, terei cuidado na minha escrita.
22412 cl-r #
-2

Alguém quase bateu na unha na cabeça acima. Programar é matemática. Mais especificamente, a programação é um ramo da lógica matemática chamada teoria da computabilidade ou teoria da recursão.

Outros ramos da matemática estão envolvidos diretamente, especificamente a linguagem formal e a teoria dos autômatos. Eles ajudam a descrever expressões regulares, usadas na correspondência de padrões e gramáticas formais, usadas para descrever e analisar linguagens de programação.

Qualquer um que diga que a programação não é matemática também não sabe do que está falando ou tem um motivo oculto, como um maximalist de "Propriedade Intelectual", que espera lucrar obtendo uma patente em um algoritmo ou em alguma outra matemática matemática fato ou descoberta.

Algumas referências para programação como matemática e o corolário sem saber do que você está falando:

Programa são provas: lógica do século XIX e computação do século XXI

Os programas são provas: modelos e tipos no cálculo Lambda

Artigo da Wikipedia sobre correspondência com Curry-Howard

Sobre a eficácia incomum da lógica na ciência da computação

A eficácia irracional da lógica

Sim, isso é pesado na parte "lógica" da lógica matemática, mas geralmente se reconhece que a matemática é alguns axiomas, e suas consequências lógicas são desenvolvidas através da lógica de primeira ordem.

Tanto quanto dizer o contrário e ser um maximalista de "IP" por dinheiro:

Como patentear um algoritmo nos EUA . Os algoritmos não são patenteáveis, mas as patentes são concedidas aos algoritmos por não se referirem a eles como algoritmos. Não é difícil encontrar muito material na Web que aponte ou tente explicar essa contradição.

Bruce Ediger
fonte
6
-1 para o ad hominem no final.
Charles E. Grant
@ charles ad hominem contra quem? O pôster original? Penso que o ponto das patentes é esclarecedor (mesmo que pudesse ter sido melhor formulado).
gcbenison
@gcbenison, "Quem diz que a programação não é matemática ... ou tem um motivo oculto" é um ataque ad hominem clássico: não preciso responder ao seu argumento porque você é uma pessoa má. Achei isso irritante porque não acho que programação seja matemática e acho que as patentes de software são uma abominação. Eu tenho um MS em Matemática Aplicada, embora se eu sei do que estou falando esteja certamente aberto a debate.
Charles E. Grant
@ comentadores: obrigado. Costumo ignorar esses comportamentos, porque eles são uma miséria auto-projetada imputada aos outros. --- para Bruce Ediger: Dúvida na reflexão dos sinais em andamento.
perfil completo de cl-r
@ cl-r: Eu estava pensando em exemplos muito específicos, como a campanha anti-Linux da SCO e nature.com/news/… Se nós, como programadores, permitirmos que os advogados definam a matemática para o benefício do advogado, então fazemos a toda a civilização um grande desserviço .
Bruce Ediger
-2

Matemática tem tudo a ver com programação. Por exemplo, na programação de jogos, você precisa usar matyhs para a física e fazer mais menos tudo. Para mover a posição x do player em Java, você faria int x = x + speed * deltaTimeou int x = x - speed * deltaTimeMas você pode dizer que isso é matemática básica, então vamos para coisas mais avançadas. Existe um algoritmo para classificar jogadores de xadrez chamado Algoritmo Elo.

Este é o algoritmo Elo explicado

Se você ainda acha que isso é básico, tente isso. Como você calcula a idade de alguém quando recebe um dia de nascimento, mês e ano. Subtraia o ano de nascimento deste ano e verifique se o mês é menor que este mês e se não é subtraído 1.

Não é mágica, é trabalho duro e boa matemática.

one2three
fonte
-4

Ok, provavelmente vou receber muitos votos negativos por isso, mas programação e matemática são duas coisas completamente independentes. Alguém pode ser um desenvolvedor incrível, conhecendo apenas o básico, como adição, multiplicação e operações lógicas básicas.

A maioria dos desenvolvedores não resolverá uma única equação durante sua carreira profissional, e coisas como grande notação O também podem ser entendidas de maneira não matemática. Você apenas pensa nas coisas, imagina pedaços virados na sua cabeça e, voilá, pode dizer que tipo de coisa é grande, se alguém explica o que é o log e a potência.

Às vezes, a matemática pode simplificá-lo ou fazer com que você se sinta orgulhoso por ter provado algo, pois você pode estender o significado da programação para um domínio matemático, nomeando-o como matemática discreta e assim por diante, mas aprendendo muitas equações e integrais diferenciais, e como provar isso, IMHO não é exatamente a melhor idéia do que fazer se você quiser ter sucesso como programador.

Pelo menos, eu não toquei em matemática há 10 anos, discutia com meus professores o tempo todo e, quando eu precisava de matemática para renderização em tempo real, aprendi tudo do ponto de vista dos programadores, sem provar nenhum teorema, e para mim, era simples e fácil de entender em comparação com todas as coisas que os professores de matemática colocavam em nossas cabeças com um comentário de "você não pode ser um bom programador se não conhece a matemática". Claro que você pode, fácil!

Agora eu sei o material matemático, para que eu possa conversar com os programadores de fundo matemático com todos os diferenciais e outras informações do log, mas apenas pelo motivo para que eles não desmaiem. Como esse material é inútil 99,9% do tempo, e quando é, pode ser aprendido 1000x com mais eficiência do ponto de vista dos programadores.

Heck, os programadores precisam de pelo menos 5 anos para dominar uma linguagem de programação + estruturas + práticas recomendadas. Por que diabos eles deveriam aprender a provar os teoremas? Os estudantes de matemática fazem as coisas de matemática, os programadores colocam essas coisas em funcionamento, é assim que deve funcionar.

Codificador
fonte
8
Um garoto diz à mãe que não vai precisar de matemática porque vai crescer e se tornar um jogador de beisebol milionário. A mãe dele diz a ele: "Você precisará de matemática para contar seus milhões".
Nav
2
Desculpe, tenho que discordar. Estudar matemática ensina a pensar logicamente. Se você não consegue pensar logicamente, tudo o que você vai escrever é um monte de código que não é dimensionado. Não estou dizendo que você precisa ser especialista em matemática ou mesmo gostar de matemática, nem deve usá-lo em sua vida cotidiana. Mas você precisa estudá-lo se quiser resolver problemas reais de programação.
jmort253
2
@ jmort253: Estudar matemática não faz de você uma pessoa que pensa logicamente. É algo que está ligado à sua mente ou não. Detesto matemática desde a escola, mas sou uma pessoa muito lógica. Programar não é matemática, eu gosto de programar sistemas há mais de 10 anos, e posso dizer isso com 100% de confiança, e você pode esperar ainda menos matemática quando estiver desenvolvendo Web ou administrando SQL. Sua tarefa não é desenvolver novas teorias matemáticas, sua tarefa é fazer as coisas funcionarem usando recursos limitados de maneira sustentável, usando algoritmos e contêineres mais eficientes.
Codificador
2
@ Nav: Faz sentido para todas as pessoas a matemática básica, até as equações com x e y. Mas contar seus milhões é geralmente o que os contadores e advogados fazem, porque senão você perderá alguma lei estadual que tem a ver com a declaração e perderá tudo de qualquer maneira. Você deve ser inteligente o suficiente para entender o que está acontecendo, mas, quando se destacar em algo, é mais econômico usar serviços especializados que farão as coisas corretamente, com rapidez e pontualidade, enquanto você mantém a forma no ginásio, para manter o top 5 merecido.
Codificador
10
A matemática não é o processo de resolver equações. Se a única matemática que você já viu é a matemática ensinada na escola, você nunca viu a matemática real .
Doppelgreener