Parece que a sabedoria convencional sugere que bons programadores também são bons em matemática. Ou que os dois estão de alguma forma intrinsecamente ligados. Muitos livros de programação que li fornecem muitos exemplos que são soluções para problemas de matemática ou de alguma forma estão relacionados à matemática como se esses exemplos fossem o que faz sentido para a maioria das pessoas.
Então a pergunta que eu gostaria de fazer é: você precisa ser bom em matemática para ser um bom programador?
Respostas:
Eu acho que depende do tipo de programação que você deseja fazer. No que diz respeito a ser um programador no mundo dos negócios, eu diria que a resposta é não. Você pode se tornar um ótimo programador sem conhecer matemática avançada. Quando você acaba tendo que lidar com a matemática, as fórmulas geralmente são definidas nos requisitos de negócios, portanto, torna-se apenas uma questão de implementá-las no código.
Por outro lado, se você quiser se tornar um programador de baixo nível ou dizer criar mecanismos de gráficos 3D, a matemática terá um papel importante.
fonte
Estou indo contra a corrente e dizendo que sim, você precisa de uma mentalidade matemática . A maioria das pessoas pensa na matemática como fazendo aritmética ou memorizando fórmulas arcanas. É como perguntar se você precisa de uma ortografia perfeita ou de um vocabulário extraordinário para ser um bom escritor.
Escrever é sobre comunicação e matemática / programação é sobre o processo de raciocínio claro e lógico (de uma maneira que você não pode cometer erros; a equação não se equilibra ou o programa não compila). Especificamente, esse pensamento lógico se manifesta em:
Então, direi que você precisa de uma mentalidade matemática , capaz de construir e manipular modelos mentais do que seu programa está fazendo, em vez de uma coleção de fatos e teoremas. Certos campos, como gráficos ou bancos de dados, também terão certos fatos, mas para mim essa não é a essência de ser "bom em matemática".
fonte
Existem muitos campos diferentes de programação e muitos deles não exigem um padrão particularmente alto de conhecimento matemático. Você nunca poderá escrever um mecanismo 3D, mas certamente poderá desenvolver aplicativos comerciais e da web. Vamos ser sinceros - a operação matemática mais comum na maioria dos programas de computador está aumentando um número por um.
Felizmente, admito que nunca gostei particularmente de matemática ou fui bom nisso (na verdade, me formei em literatura inglesa!) E trabalho como desenvolvedor profissional há mais de 12 anos. Eu desenvolvo principalmente aplicativos da Web, que raramente exigem tanta matemática. Mais importante é a capacidade de pensar logicamente, ser capaz de dividir os problemas em partes e ter um amplo entendimento das várias tecnologias e estruturas envolvidas.
Como programador, é muito mais provável que você implemente um algoritmo existente do que criar um algoritmo inteiramente novo . Precisa resolver, digamos, juros compostos? Você não precisa descobrir por si mesmo, basta procurar a fórmula e aplicá-la. A maioria dos problemas já foi resolvida, você só precisa saber como implementar as soluções no idioma de sua escolha. Isso não quer dizer que ser bom em matemática não seria uma vantagem ; é que não é totalmente essencial .
Quando eu estava na escola em meados dos anos 80, quando os computadores domésticos não eram muito comuns, eu costumava escrever programas para resolver meus deveres de matemática. Muitas vezes não conseguia fazer isso na minha cabeça, mas podia aplicar qualquer fórmula necessária como rotina de software. Você não precisa ser outro Pitágoras para calcular o lado mais comprido de um triângulo retângulo, basta codificar
a² + b² = h²
no idioma de sua escolha.fonte
Você não precisa ser bom em matemática. No entanto, você deve ser bom em lógica e resolução de problemas. No entanto, as pessoas que são boas em lógica e resolução de problemas geralmente também são boas em matemática. Eu diria que realmente depende do tipo de matemática. Você pode ser péssimo em cálculo (como eu) e ainda ser um bom programador (como eu). Mas se você tiver problemas com Matemática Discreta e Teoria dos Conjuntos, provavelmente encontrará muitos aspectos da programação bastante difíceis.
fonte
Eu acho importante olhar de perto porque você não gosta de matemática.
A aversão a uma disciplina acadêmica geralmente é algo que acontece na escola e pode estar relacionado a um conflito de algum tipo ou outro com um professor, falta de confiança em sua própria capacidade dentro de um assunto ou pressão do grupo de colegas.
Programação! = Matemática. Nem parece "matemática" para mim (e eu gostei de matemática, apesar de não ter me saído tão bem no final dos meus estudos formais). Muitas habilidades que você pode usar em matemática são úteis, necessárias mesmo em programação, mas muitos programadores se ensinam a maior parte do tempo. Não gostar de matemática na escola tem praticamente zero influência em sua capacidade ou prazer em programar.
fonte
Matemática e programação estão intimamente relacionadas, pois a matemática é realmente a linguagem universal entre humanos e computadores. Você não precisa saber muita matemática para programação de alto nível, pois muito disso está nos bastidores, mas ajudará na compreensão de muitos conceitos de programação mais avançados. Se você planeja fazer mais programação de baixo nível (sistemas ou programação de dispositivos), precisará saber muito mais matemática.
fonte
Uma boa ? Muito improvável. A maioria dos padrões de design tem pelo menos alguma base em conceitos matemáticos. Coisas essenciais à programação, como variáveis, loops, procedimentos e objetos, são análogos a conceitos em campos matemáticos como álgebra, cálculo e teoria dos conjuntos.
Considere também que a ciência da computação é um subconjunto da matemática: algoritmos e lógica formal, nos quais toda a programação se baseia, são fundamentalmente matemática .
Se você odeia matemática, vai odiar a programação.
fonte
Quase todo mundo respondeu: "você precisa saber matemática para ser um bom programador?" A resposta correta para isso é: "Não, na verdade não, mas ajuda", como muitos já disseram.
Mas minha interpretação da pergunta é "existe uma forte correlação entre aptidão matemática e aptidão para programação?" A resposta correta para isso é: "Sim, existe". Se você luta com álgebra, geometria e cálculo, provavelmente não é muito bom em lidar com abstrações e / ou em pensar logicamente. Se você é ruim em matemática, provavelmente nunca será um ótimo programador. (Não que você não deva tentar.)
fonte
Depende do que você está programando. Um mecanismo de jogo em 3D, por exemplo, seria extremamente difícil (se não impossível) de executar com algum grau de coerência sem o conhecimento dos conceitos matemáticos apropriados.
fonte
"Gosto" e "ser competente em" são coisas totalmente diferentes - desde que você seja numerado corretamente, não vejo uma razão para ter que gostar de matemática.
Mas vamos ficar absolutamente claros aqui - a programação tem uma base sólida em matemática e, mais cedo ou mais tarde, quase todo desenvolvimento não trivial envolverá cálculos - você não pode esconder isso.
Qualquer programação envolve lógica (com base em matemática), a maioria das programações modernas provavelmente envolve coisas (como SQL) que envolvem teoria dos conjuntos (mesmo que não seja óbvia) e, se isso não acontecer, pode ser que você esteja errado. domínios (como programação de jogos) que são ainda mais explicitamente baseados em matemática (renderização - matemática, IA -> probabilidade e aleatoriedade - matemática ...) e assim por diante.
O resultado acima é que você precisa se sentir confortável com os números - você certamente precisa entender porque é engraçado "Existem 10 tipos de pessoas no mundo, quem entende de binário e quem não". Mas você provavelmente está dispensado "2 + 2 = 5 ... para valores muito grandes de 2".
fonte
O conceito fundamental de matemática é o seguinte, concepção, compreensão, implementação e uso de algoritmos. Se você não pode fazer matemática, é porque não pode fazer essas coisas e, se não pode fazer essas coisas, não pode ser um programador eficaz.
Tarefas comuns de programação podem não precisar de conhecimentos matemáticos específicos (por exemplo, você provavelmente não precisará de álgebra e cálculo de vetores, a menos que esteja executando tarefas como gráficos 3D ou simulações de física, por exemplo), mas as habilidades subjacentes são idênticas e falta de capacidade em um domínio será correspondido por uma correspondente falta de habilidade no outro domínio.
fonte
Para ser sincero, eu era um horrível estudante de matemática na escola. A álgebra estava completamente além de mim na época, e acho que nunca consegui mais do que um D nela.
No entanto, alguns anos depois, depois de trabalhar como desenvolvedor profissional de software, voltei para a faculdade e fiz um curso de álgebra. Para minha surpresa, foi a aula mais fácil que tive e recebi um A.
A verdade era que a programação me ensinou álgebra, porque praticamente tudo é apenas uma expressão algébrica.
Então não, você não precisa começar. Ajuda, mas não é obrigatório. A coisa bonita sobre o desenvolvimento de software como um meio de ensinar matemática é que o compilador, depurador e programa de execução são maneiras maravilhosas de verificar se a resposta está correta. Nesse sentido, a depuração é particularmente um grande benefício para o aprendizado, porque você pode percorrer o código e observar cada etapa da avaliação do seu algoritmo.
fonte
Depende um pouco do que exatamente você está fazendo, embora definitivamente não possa doer.
Por exemplo, alguém que se formou em Ciência da Computação precisa passar por muita matemática para se formar. O CS geralmente se concentra muito nos algoritmos e em sua correção, comprovados por meio de provas de alto nível no estilo matemático. Muitos programas de CS da Universitie estão tão próximos do seu programa de matemática que um curso duplo está a apenas alguns cursos de distância. Mesmo como um graduado em Engenharia de Software, eu estava a 2 cursos de um curso de matemática.
No entanto, dito isso, muitas das provas, estruturas de dados, métodos de pesquisa e material de correção de algoritmos que aprendi não foram realmente usadas diretamente desde que terminei a escola. Mas seria difícil dizer que isso não me proporcionou pelo menos uma boa base e uma melhor compreensão do que faço em um nível baixo.
Porque não importa como você olhe para ela, no nível mais baixo, tudo o que você está fazendo se resume à matemática.
fonte
Você pode se tornar um bom desenvolvedor de software sem matemática? Acho que sim. Você pode se tornar o tipo de programador heróico que as pessoas falam o tempo todo? Eu acho que não.
O problema é que a maioria, senão todos os programadores heróicos (pense em Dennis Ritchie), tem formação em ciência da computação ou matemática. Para se tornar um excelente programador, você precisa entender algoritmos em um nível que é mais do que superficial, o que significa que você é forçado a se aprofundar na ciência da computação formal. E a ciência da computação é apenas matemática aplicada.
Da mesma forma, uma compreensão do cálculo lambda seria inestimável para um arquiteto de SO ou um designer de linguagem.
fonte
Eu já vi esse tópico discutido. Eu trabalhei com pessoas que tinham diplomas em matemática que pensavam poder programar e, dentro de um ou dois anos, mudaram de carreira. Um dos melhores programadores com quem tive o prazer de trabalhar tinha um Ph.D em Bioquímica e nunca teve uma aula formal de programação / CS na escola, mas se autodidata e começou uma empresa de software de sucesso!
Em última análise, o que torna um programador bom a ótimo é alguém capaz de entender a lógica, os fluxos de trabalho, pode aprender pelo exemplo e disposto a pesquisar uma solução. Além disso, você precisa aprender os negócios para os quais seus aplicativos são. Eu odeio programadores que são orgulhosos por não entenderem contabilidade, mas escrevem aplicativos de contabilidade. Eles sempre fazem suposições incorretas e realmente atrasam o desenvolvimento.
Você encontrará, não importa em que escola frequente, aprenderá mais em um ano fora da escola do que em quatro anos. A escola ensina a aprender com um conjunto de habilidades básicas - mas a experiência do mundo real é muito mais valiosa ao longo do tempo.
A experiência é o melhor professor e, quando você precisa aplicar a matemática no desenvolvimento de software, desde que aprenda o negócio - você ficará bem. Além disso, lembre-se, como um post anterior disse, a menos que você esteja tentando trabalhar em um mecanismo de gráficos 3D ou em sistemas de coordenadas gráficas como o aplicativo GIS, a matemática que você aprendeu no ensino médio é tudo o que você realmente precisa.
Eu trabalhei nos sistemas de contabilidade e cobrança - e nunca tive que descobrir o log (x), o SIN, o COS etc. para lidar com uma contabilidade ou permitir a entrada de dados. Um Jornal de Envelhecimento não é "matemática alta", mas fundamental para avaliar questões de AP.
Venha para pensar sobre isso, eu nunca encontrei um contador com uma calculadora científica em sua mesa!
fonte
A resposta curta é não. Eu acho que é um mito, mas é propagado porque os problemas de matemática geralmente são adequados para serem resolvidos por computadores.
Portanto, na universidade / faculdade, as pessoas terão problemas de matemática que precisam resolver em assuntos de composição, mas o que você normalmente encontrará é que a matemática é realmente mais difícil de resolver do que o código necessário para implementar a solução.
Depois de entrar no mundo real, você descobrirá cada vez mais que os problemas estão amplamente resolvidos para você, seu trabalho será apenas implementá-los em código.
fonte
Você precisa aprender matemática ou criar o seu próprio. De qualquer forma, é importante ser bom de uma forma ou de outra.
Desde que você possa trabalhar com valores e entender o que eles estão fazendo, por que e o que você pode fazê- los fazer, a matemática tradicional nem sempre é necessária. Ocasionalmente, até atrapalha.
Existem maneiras alternativas de visualizar o valor de um byte que não sejam números, mas elas são definitivamente o método mais pensado depois. Seria possível escrever um programa pensando em todos os valores como cores, por exemplo.
A programação de hoje deriva muito de seu valor por poder representar 1s e 0s como tipos diferentes de dados. Embora realmente esses 1s e 0s não sejam números, mas o comprimento de onda elétrico muda, a matemática não é tão importante quanto a física, ... no entanto , ... é muito importante para entender muito do que outros programadores dizem e codificam.
Ainda assim, seria possível ser um bom programador sem matemática, por mais difícil que seja.
fonte
Acabei de terminar um curso introdutório de matemática discreta e descobri que já sabia quase tudo sobre lógica de predicados, graças à programação; tudo o que havia de novo era a sintaxe - basicamente era apenas trabalhar com booleanos.
Em resumo: talvez você não precise aprender matemática explicitamente , mas apenas por ser um programador, provavelmente aprendeu alguma matemática sem perceber. Ou seja, sendo um "bom programador", você também está realmente sendo um matemático (até certo ponto).
A Correspondência Curry-Howard ilustra o que quero dizer: basicamente, afirma que as provas matemáticas e certos programas de computador são "isomórficos", ou seja, são maneiras diferentes de escrever a mesma coisa. Claro, é realmente mais complexo que isso, mas eu não sou matemático, então essa é a melhor explicação que posso dar. Espero que não esteja muito longe da realidade.
Em resumo, não apenas muitos campos em CS e programação envolvem muita matemática, mas até as idéias básicas de programação (por exemplo, booleanos) são basicamente matemática disfarçada.
fonte
Essa é uma pergunta muito difícil de responder e provavelmente provocará muitos debates.
Uma das razões pelas quais essa pergunta é tão difícil é que ela depende parcialmente do tipo de trabalho que você está realizando. Não há muita matemática envolvida na maioria dos aplicativos de negócios; portanto, você pode se familiarizar com um sólido entendimento de álgebra e matemática de negócios. No entanto, aplicativos mais avançados exigem matemática mais avançada e você começa a precisar de um sólido entendimento de cálculo, álgebra linear e similares.
No entanto, essa é apenas uma parte da equação, pois você ainda precisa de um certo grau de matemática apenas para a prática da programação em si. Escusado será dizer que você precisa estar confortável com a lógica para poder escrever um programa básico e álgebra básica. Olhando um pouco além de apenas ter um programa básico funcionando, você precisa entender certos aspectos da matemática discreta para poder determinar o que faz um bom algoritmo usar para um determinado problema.
Mas voltando ao cerne da questão. Pessoalmente, não acho que você precise ser um matemático para ser um bom programador; no entanto, acho que você precisa se sentir confortável com a matemática para poder ser um bom programador generalista.
fonte
Sim definitivamente.
Até a programação de negócios de fábrica exige alguma habilidade em matemática.
A programação de negócios de fábrica requer habilidades de banco de dados. Para ser um bom programador de banco de dados, é necessário entender como os bancos de dados funcionam e quais são os algoritmos que o processador de consultas usa quando traduz suas consultas. Sem uma compreensão dos limites e derivadas (ou mesmo o entendimento básico de que a linha y = x cruza a linha y = x ^ 2 duas vezes), não é possível comparar com precisão um plano de consulta de junção interna com correspondência de hash versus uma junção de loop aninhado plano de consulta.
Além disso, um bom programador pode trabalhar em praticamente qualquer domínio, desde que estude um pouco: jogos, simulação, desenvolvimento incorporado, compiladores, sistemas operacionais, itens da Web, bancos de dados etc. Ser capaz de fazer todas essas coisas (ou mais ser capaz de aprender rapidamente como fazer todas essas coisas) requer uma quantidade razoável de conhecimentos matemáticos.
Eu diria que alguém deveria ter tido alguma experiência em algum momento com o seguinte:
fonte
A matemática é mais do que apenas fórmulas. Compreender alguns princípios matemáticos sobre teoria dos conjuntos é muito útil para apreender conceitos complexos em sistemas de tipos, assim como entender a complexidade é fundamental para o uso eficiente da estrutura de dados.
A teoria dos grafos também é extremamente útil, pois muitos problemas de programação podem ser modelados por um gráfico. Fiquei muito surpreso, ao desenvolver um aplicativo de negócios, ao descobrir que os teoremas de caminho mais curto estavam fornecendo uma solução elegante para um problema espinhoso que eu tinha!
fonte
Eu sempre considerei a programação nada mais que matemática.
Simplesmente não se parece com álgebra do ensino médio.
fonte
A matemática é a ante-sala da programação.
Sendo capaz de trabalhar com camadas e mais camadas de abstração, modelos, "objetificação" de funções, transformações e conceitos temporais, a matemática é o campo de treinamento perfeito para tudo isso.
É possível desenvolver a mentalidade certa para a programação sem matemática, mas é muito mais difícil.
No entanto, áreas especializadas à parte, apenas a compreensão da matemática é importante, sabendo o nome de tudo e como um determinado teorema pode ser provado. Portanto, mesmo que você tenha boas notas em matemática porque aprendeu tudo sem realmente entender, ainda terá dificuldades com a programação.
fonte
O conhecimento de matemática é bom para algumas aplicações (como jogos, inteligência artificial, computação gráfica, etc.), mas a matemática ensina algo além de apenas fórmulas ou equações complexas.
Aprender matemática é como aprender uma nova linguagem de programação. De fato, a programação é aplicada à matemática. Quando você aprende um novo idioma, aprende muitas coisas que o tornam um programador melhor. Não é diferente com a matemática, mas se você realmente dominar a matemática, será um programador melhor para sempre, mesmo que não use matemática avançada em seu trabalho.
O motivo é simples: a matemática ensina você a ver o mundo com outros olhos. Ele ensina a resolver problemas com diferentes abordagens sem necessariamente programar. Essa nova maneira de pensar certamente leva você a uma maneira melhor de fazer seu trabalho.
Programar é uma arte. A matemática é uma arte. Se você combinar os dois, será um artista melhor.
fonte
Não.
Assim como a maioria das disciplinas de ciências, ter um bom entendimento dos conceitos de matemática será útil, principalmente ao avaliar coisas como eficiência. Mas para a maioria das tarefas de programação, sua capacidade matemática é relevante apenas se o problema que você está resolvendo estiver relacionado à matemática.
Os computadores são excelentes em matemática, portanto, faz sentido que os computadores antigos tenham sido usados extensivamente para fazer o 'trabalho pesado' associado a muitos trabalhos complexos em matemática. Um monte de software ainda não resolver problemas de matemática complexos, nesse caso, ser bom em matemática vai ajudá-lo a escrever um programa melhor, mas não é o que você faz um bom programador.
fonte
Normalmente, não no sentido em que você precisa saber, digamos, cálculo ou equações trigonométricas para fazer a maior parte do trabalho. Se você está fazendo gráficos pesados / programação de jogos, então sim. Um famoso truque matemático para o Quake é um bom exemplo disso. No entanto, o pensamento em que você deve se envolver ao lidar com matemática de nível superior certamente se aplica à programação; com a programação, você está desenvolvendo sua própria estrutura lógica, suas próprias funções, suas próprias "provas".
A única vez em que me deparei com matemática em meu trabalho (fluxo de trabalho e aplicativos internos da empresa) é quando faço alguns aplicativos de relatório que exigem conhecimento de estatística, mas isso é apenas porque era diretamente aplicável aos requisitos.
fonte
Eu diria que não necessariamente. Certas disciplinas de programação (criptografia, gráficos, mecanismos de física etc.) certamente teriam uma vantagem clara para os matematicamente inclinados, mas não acho que uma boa compreensão das equações diferenciais seja particularmente útil para a programação da Web, por exemplo.
A lógica booleana é provavelmente um requisito para ser um bom programador, mas não me surpreenderia se muitas pessoas que não obtiveram boas notas na matemática do ensino médio se mostrassem boas em programação.
fonte
Eu diria que você definitivamente não precisa ser bom em matemática para ser um bom programador.
Meu primeiro trabalho como programador foi fazer gráficos 3D para o planejamento da missão B-52 e Cruise Missile. Era um aplicativo intensivo em matemática, mas eu realmente só precisava de acesso a pessoas que eram boas / ótimas em matemática. Não precisava saber a fórmula para calcular grandes distâncias de círculo entre dois pontos. Eu precisava saber como converter a fórmula para que funcionasse em uma linguagem de programação. O mesmo com a simulação de vôo. A Boeing fez todas as contas que precisávamos aplicar.
Essa experiência também me ajudou a entender quem seria um bom programador e quem não seria. O trabalho teve pilotos e navegadores fazendo um tour de serviço como programadores e para ajudar os programadores a entender as necessidades da missão. Você poderia dizer em poucas semanas o que os pilotos e navegadores seriam bons nisso. Especialistas em matemática geralmente levam a programação imediatamente.
Então, eu diria que ser bom em matemática aumenta a probabilidade de você ser bom em programação, mas conheço muitos bons programadores que não são tão bons em matemática.
fonte
Eu não gosto de matemática e sempre tenho notas baixas. Não quero dizer que sou um bom programador, mas estou na indústria de software há 10 anos com grande sucesso.
fonte
Não, não-não, não, sim e não!
Não, porque muitas vezes você precisa.
Por que isso não funciona?
pode ser reescrito de uma maneira mais abstrata?
968 ms é mais ou menos que 0,7 s? Quantos MB você precisa, quantos Ghz a máquina possui, um byte será suficiente - a matemática faz parte do trabalho todos os dias. Às vezes, explicitamente e matemática superior.
Sempre implicitamente menor matemática.
A matemática é um campo amplo, do cálculo à matriz, à geometria, lógica, estatística, teoria das categorias, teoria dos grafos. Então, se você acredita que está programando sem usar matemática, talvez esteja errado.
Se você observar os problemas na página do Project Euler , encontrará quebra-cabeças, nos quais não faço ideia de como a matemática é usada para resolvê-lo. (Não que eu possa resolvê-los sem matemática.) Observe que o tamanho do problema é normalmente tão grande que você não pode resolvê-los com força bruta.
No entanto - como não consigo resolver muitos deles (cerca de 2/3 agora), isso significa que não gosto de matemática?
Se você não estudou matemática, provavelmente não saberá onde encontrar matemática em sua vida diária, incluindo programação.
Mesmo se você apenas se especializou em mover os componentes da GUI na tela para ter uma boa aparência, você está fazendo matemática de alguma forma.
fonte