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 ...
development-process
math
Rory
fonte
fonte
Respostas:
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:
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:
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.
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 .
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
Vector
que significa que podemos fazer tudo o queVector
faz 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:
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:
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 ).
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.
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ê.
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.
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 .
fonte
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.
fonte
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.
fonte
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.
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.
fonte
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.
fonte
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+1
sempre será igual a2
, e asset a = 1
médiasa
sempre 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
13x13
se tornasse13x10 + 13x3
, o que é muito mais fácil para o meu cérebro trabalhar, e preciso acompanhar13x10=130 + 13x3=39
isso130+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.
fonte
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)
fonte
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.
fonte
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):
fonte
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.
fonte
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.
fonte
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?
fonte
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.
fonte
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.
fonte
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.
fonte
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.
fonte
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.
fonte
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!
fonte
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.
fonte
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.
fonte
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
/scheme
são as primeiras melhores linguagens de programação. Idiomas de tipo estático comoJava
/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ê !!!fonte
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.
fonte
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
fonte
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.
fonte
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 * deltaTime
ouint x = x - speed * deltaTime
Mas 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.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.
fonte
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.
fonte