Os programadores precisam de uma boa memória? [fechadas]

16

Parece que é preciso lembrar todos os tipos de sintaxe para poder programar. Se alguém não tem uma boa memória para lembrar nomes, será mais difícil aprender a programar?

Mem
fonte
20
Havia um nome para ter uma boa memória de nomes, mas eu esqueci o que é.
Mike Two
3
Se a sintaxe for um problema, escolha um idioma com a sintaxe mínima. Lisp / Clojure?
Quíron
1
Atualmente, não passo o dia inteiro programando, mas passo algum tempo todos os dias programando. E eu programo em um monte de idiomas que não são iguais. Eu programa em C, Java, Javascript, Lisp, VBA, PL / SQL, Ruby, Python, Perl, Smalltalk e até um pouco de prólogo de tempos em tempos. Eu apenas procuro sintaxe.
Mike Sherrill 'Cat Recall'
4
Se o fizerem, estou fingindo há cerca de 13 anos.
ElGringoGrande
1
As universidades certamente ensinam como se você precisasse de boa memória, o que é totalmente estúpido. A mina é particularmente notória por exigir que os exames finais de CS valham pelo menos 50% (sempre em livro fechado) e as aulas intermediárias geralmente em pelo menos 30-40%.
Rei Miyasaka 23/07

Respostas:

34

A sintaxe de um idioma não é tão difícil quanto você se lembra, se você o usa diariamente. Eventualmente, torna-se muito fácil. Lembrar todas as várias funções da biblioteca pode ser muito mais difícil e acho que a maioria das pessoas não consegue se lembrar mais do que as mais comuns, mas tudo bem se você tiver acesso à Web, a um livro ou a algo que " lembra "todos os outros detalhes para você.

FrustratedWithFormsDesigner
fonte
+1. Realmente se torna uma segunda natureza. Eu olho para trás em código e nem sequer me lembro de fazer qualquer uma das regras de formatação que eu sigo ...
Reid
1
As guias de bolso de O'Reilly me ajudam a acompanhar as coisas. Altamente útil.
World Engineer
17

Parece que é preciso lembrar todos os tipos de sintaxe para poder programar um idioma natural.

Se alguém não tem uma boa memória para lembrar nomes de palavras, será mais difícil aprender a programar fala?

Não pode ser verdade que as pessoas tenham uma facilidade "natural" com idiomas, pode?

Não é possível que tenhamos hardware neural de baixo nível apenas para adquirir idiomas, pode?

A programação usa linguagens artificiais que seguem muitas das regras das linguagens naturais.

As línguas naturais têm um pouco mais de flexibilidade do que linguagens de programação.

gramática ainda estrita. regras existem muito são quais

Se você pode falar, pode aprender a programar sem memorizar nada além do que memorizou quando aprendeu a falar.

S.Lott
fonte
13

Sim:

Se você está falando sobre memória de curto prazo, então sim . um programador deve ser capaz de manipular vários bits de informação simultaneamente ao programar / resolver problemas.

Não:

Se você está falando sobre memória de longo prazo, não é verdade. Existem muitos manuais e referências + ferramentas que podem ajudar significativamente na recuperação de informações. Certamente memorizar essas informações de longo prazo fará de você um desenvolvedor mais rápido (em geral), mas isso não é um pré-requisito.

Noite escura
fonte
1
+1 Para fazer uma comparação útil entre a utilidade da memória de curto e longo prazo em relação à pergunta. Estava esperando ver alguém fazer isso.
KChaloux #
8

Uma boa memória é absolutamente essencial, mas não pelas razões óbvias.

Lembrar detalhes sobre algoritmos, bibliotecas, nomes de variáveis ​​e outros itens úteis é muito útil, mas não é super importante. Você possui Google, DuckDuckGo, páginas de manual, documentação específica do idioma e editores inteligentes para ajudar com todas as opções acima. Ajuda se você não precisar confiar nessas muletas, mas você vai se sair bem se precisar delas de tempos em tempos.

Onde a memória é essencial é manter os detalhes do que você está trabalhando na memória ativa e de curto prazo. Ser capaz de visualizar o design, fluxo de dados, algoritmos, estruturas de dados e como todos eles interagem para fazer o que quer que seja o seu produto separa o programador OK do ótimo programador. Quando você está fazendo isso ativamente, parece que você está manipulando com sucesso um número gigantesco de bolas enquanto monta um monociclo.

Isso geralmente é chamado de estar na zona . Interrupções, perguntas estúpidas, chefes que precisam de TPS relatam tudo que você sacode nesta zona.

Quanto melhor sua memória, mais fácil é entrar na zona, mais fácil ficar lá e mais fácil voltar a ela depois de uma interrupção.

Se você tiver problemas com esse tipo de memória, sugiro aprender técnicas de meditação e truques de memória, quanto mais fácil a sua memória se tornar, maior o sucesso que você terá como programador.

antitônico
fonte
1
Na verdade, eu diria que os requisitos de memória são reduzidos se você modularizar melhor o programa e nomear as coisas corretamente. Se você tiver um método de duas páginas com 20 variáveis, precisará se lembrar muito mais do que se tiver um método de 5 linhas com chamadas para outros métodos bem nomeados para executar subtarefas. Além disso, toda vez que você deseja modificar algo tão complexo, é necessário entrar na "zona" para fazer isso. Considerando que, se for mais simples, você pode fazer sua alteração. Eu diria que "a zona" é uma responsabilidade.
Cervo
1
@Cervo - Sim, quando você está codificando módulos individuais e pequenas unidades de código, o que eu descrevo acima não é realmente necessário. Mas, quando você está depurando um sistema inteiro e tenta descobrir em qual módulo agradável, limpo e em que o problema reside, ajuda a manter o máximo de estado possível em mente.
Unpythonic
Por que no mundo isso teve apenas um voto? Você não pode criar seu código corretamente sem lembrar como ele se encaixa nas coisas ao seu redor. Muita programação moderna trata de reduzir a quantidade de detalhes que isso implica, mas isso simplesmente reduz a quantidade que você deve se lembrar, não o fato de que você deve se lembrar dela para fazer seu trabalho.
Loren Pechtel 9/10/12
5

Eu vou contra o fluxo e digo que sim . Uma boa memória é um recurso incrível como programador. Minha memória sempre vi como um passivo de programação, por isso peguei alguns truques para compensar minha desvantagem:

  • Você deve se lembrar de como a variável (que você usou três linhas antes) foi escrita. Se você não aprender a usar o Intellisense (ou qualquer que seja sua forma de preenchimento automático, esteja no seu editor ou IDE).

  • Você deve se lembrar rapidamente do que estava fazendo da última vez que trabalhou neste projeto. Isso pode ter acontecido dias atrás, antes do almoço. Se não puder, aprenda a escrever as coisas . Mantenha um caderno ao seu lado e escreva o que você estava (ou está) fazendo, itens TODO e coisas que você precisa lembrar sobre como o código atual em que você está trabalhando se encaixa.

  • A depuração e o controle de qualidade são difíceis. Idealmente, você deve manter um caderno muito detalhado sobre as etapas que você executou ao tentar reproduzir um bug ou depurar algo. Isso é algo que eu sei que devo fazer, mas ainda luto.

Espero que isto ajude!

RyanWilcox
fonte
4

O Guia de Guerrilha para Entrevistas (versão 3.0) é uma referência comum que observa que ser inteligente e fazer as coisas são os pontos importantes da programação. Inteligente inclui algumas habilidades de memória, mas não necessariamente tanto quanto você imagina.

O Intellisense pode ajudar muito no que diz respeito à sintaxe, se você quiser alguma ajuda desse lado. Saber como você aprende para poder aplicar rapidamente o que aprende de maneira significativa é mais importante do que poder responder a perguntas triviais.

JB King
fonte
2

Acredito que lembrar nomes é uma função cognitiva bastante diferente de lembrar processos, que é diferente de lembrar vocabulários. Houve casos de pessoas que sofreram lesões cerebrais que removeram completamente a capacidade de lembrar nomes, além de poder funcionar perfeitamente bem de outra maneira.

Então, eu diria que a capacidade de lembrar nomes não está relacionada ao aprendizado de linguagens de programação.

Seria útil, porém, lembrar padrões lógicos, regras e vocabulário.

Matthew Flynn
fonte
2
Tenho certeza que você está certo. O indicador de tipo Myers-Briggs diz que os INTPs (que são particularmente adequados para se tornarem programadores) têm dificuldade em lembrar o nome das pessoas. Eu sei que isso é verdade no meu caso. Lembro-me dos nomes de seus animais de estimação, da placa do carro e de onde coloquei a impressão de um rastreamento de pilha que você me deu no ano passado, com as novas linhas estranhas como 0x0D0A0D. Seu próprio nome, no entanto, vou esquecê-lo por 10 minutos. (Quando eu era mais novo, ele me levou três anos para obter os nomes de todas as pessoas no meu time de futebol.)
Mike Sherrill 'Cat recall'
2

Não. A profundidade da memória das ferramentas (Intellisense, Google, compiladores, geradores de código) é infinita comparada à memória humana. Portanto, o programador com boa memória não é muito melhor do que aquele com um buraco na cabeça.

O que os programadores realmente precisam é de "pico de velocidade de ganho de foco" quando alternam entre os níveis de abstração. Quanto mais rápido você puder, melhor será como programador. Alguns têm uma velocidade de batimento cardíaco de 500 ms, com a chegada da primeira onda sanguínea no cérebro em que você está focado. Alguns têm o relógio de foco arredondado para o ciclo de fumar, cerca de 2 horas. Alguns precisam de banho matinal, cerca de 24 horas. etc. A diferença entre programador bom e ruim foi declarada uma vez a 1:80 anos atrás, e a diferença está crescendo apenas.

Cirurgião Foguete
fonte
1

Não, você só precisa entender como o Google funciona para conseguir o que deseja

Tenho uma memória horrível, mas minhas habilidades no Google são incríveis ^ _ ^

Com toda a seriedade, desde que você saiba onde encontrar a sintaxe, não precisará se lembrar dela. É para isso que servem o intellisense, arquivos de ajuda, guias de referência, internet etc.

Rachel
fonte
1

Primeiro de tudo, aprender a programar é difícil para todos. Ter uma boa memória ajuda, tenho certeza. Mas, dedicação e amor pela aprendizagem ao longo da vida são mais valiosos. Aprender sintaxe é como qualquer outra coisa, repetição.

Não há nada de mágico ou sobre-humano na habilidade de programação. Apenas gaste cerca de 10.000 horas nele ... e você será um mestre como qualquer outra habilidade. Claro, são 10.000 horas de treinamento, sem repetir cegamente e de maneira entorpecente os erros do passado.

P.Brian.Mackey
fonte
1

Você escreveu esta postagem em inglês, com sintaxe adequada. Claramente, você consegue se lembrar de como usar um idioma. Você só precisa aprender um novo idioma e usá-lo com frequência suficiente para acertar o tempo todo. Diferentemente das linguagens orientadas para o ser humano, as linguagens de programação do computador sempre o avisam quando você usa sintaxe incorreta; portanto, é realmente mais fácil. :-)

Wolfger
fonte
1

Concordo que há uma enorme variedade de coisas que um programador comum pode saber para realizar suas tarefas; pense em todas as palavras, sintaxes e técnicas que você deve basicamente controlar para criar um site simples (no front end: html, css, javascript (você pode contar também com algumas estruturas Js como jquery), ajax, no back-end: Php ou ASP ou ASP.Net, e não se esqueça de bancos de dados, mySql ou SqlServer ou Oracle ou MongoDB, etc.). Há uma lista enorme de linguagens, paradigmas, sintaxias, padrões etc., é impossível lembrar tudo.

Ele acha que o que faz um bom programador é a prática, pratica mais com algoritmos do que com linguagens e com isso você eventualmente se lembrará das coisas que costuma usar, para o resto, sempre existe google = P

Leandro Galluppi
fonte
1

Uma ótima memória pode cortar nos dois sentidos.

Se você conseguir manipular dezenas de informações em sua cabeça ao mesmo tempo, terá muito mais facilidade para entender (e espero reescrever) aquele horrível pedaço de código legado que é crítico para o projeto, mas tão complicado que todo mundo tem medo tocá-lo.

Por outro lado, aquele horrível pedaço de código que é crítico para o projeto, mas tão complicado que todo mundo tem medo de tocá-lo, provavelmente foi escrito por alguém com uma incrível capacidade de manipular dezenas de bits de informação. Se você tem uma ótima memória, trabalhe muito duro para cultivar uma apreciação pela elegância da simplicidade.

Aprender a sintaxe de uma linguagem de programação não requer muita memória. Como outros já disseram, a sintaxe é reforçada em sua memória tanto que rapidamente se torna uma segunda natureza. Você já se esqueceu de que lado da estrada você deveria estar dirigindo? Quais símbolos aritméticos representam adição e subtração? Caso contrário, você dominará as partes mais comuns da sintaxe do idioma escolhido sem muita dificuldade e poderá procurar os bits menos comuns quando eles surgirem.

Algumas bibliotecas têm centenas ou milhares de funções, classes e / ou métodos. Para alguém de fora, parece uma tarefa impossível aprender a usar toda essa funcionalidade. Mas há quase sempre alguma estrutura subjacente à biblioteca. Em vez de tentar lembrar de todas essas funções, um programador inteligente tenta entender como a biblioteca está organizada e o que ela pode fazer. Com isso feito, geralmente é muito fácil encontrar a função que você precisa quando precisa.

Em suma, a memória é muito menos importante que a compreensão.

Caleb
fonte
0

Depende. No Java e .NET, as bibliotecas padrão estão em uma espécie de hierarquia e estão bem documentadas. Portanto, se você sabe que está lidando com redes, acesse o system.net em C # e, a partir daí, poderá detalhar os objetos / chamadas específicos necessários. Portanto, a esse respeito, você não precisa memorizar os detalhes e assim por diante.

No seu próprio programa, é tudo sobre como você organiza / nomeia as coisas. Se você estiver usando nomes como a $, b $, c $ ... ou g $ do Basic antigo, boa sorte. se você nomear as coisas da maneira que você pensará nelas como Nome, Sobrenome, será muito mais fácil. Muitos idiomas têm padrões de nomeação que também ajudam. Em Java, por exemplo, há uma convenção de setX, getX para obter / definir atributos específicos de uma classe, bem como convenções de capitalização. Portanto, se você souber que uma pessoa tem o primeiro nome, provavelmente será chamada firstName e o getter / setter provavelmente será getFirstName e setFirstName ..... Portanto, essas convenções ajudam muito ...

Métodos / funções também mais curtos ajudam você a manter menos em sua cabeça ao mesmo tempo. E usar nomes próprios ajuda você a não precisar procurar. Por exemplo, se você nomear as coisas pelo que elas fazem, ao ler um procedimento que chama getMaximumValue, você provavelmente não precisará ler getMaximumValue para descobrir o que faz ... Mas, como as funções / métodos ficam mais longos e mais aninhados, uma memória melhor definitivamente ajuda.

Cervo
fonte
Eu deixei de fora o senso comum que JB King mencionou, mas para C # isso realmente ajuda também. Eu costumo usar editores para Java que não o possuem :( No entanto, o resto ainda se aplica, se você mantiver métodos mais curtos, siga as convenções de nomenclatura, pois o intellisense funcionará ainda melhor. Se você tiver 50 variáveis ​​em um método, o intellisense ainda poderá sair -lhe um pouco sobrecarregado.
Cervo
Cervo Eu sou principalmente um desenvolvedor de C #, mas ultimamente tenho feito cada vez mais java. Experimente o IntelliJ Idea. A versão mais recente deles tem um bom senso intelectual. Não é o Visual Studio bom, mas próximo.
Adrian
0

A memória não é tão importante. Se você está preocupado com isso, regularmente esqueço minha carteira ou chaves em minha casa de manhã. Eu chamo todos pelo nome errado pelo menos uma vez (incluindo minha família e namorada). Eu simplesmente esqueço de fazer coisas em casa o tempo todo.

No final do dia, os princípios da programação ainda estarão na sua cabeça, exatamente como "você nunca esquece como andar de bicicleta". Detalhes específicos e detalhes de implementação não são tão importantes. Você sempre pode pesquisar no Google.

user7007
fonte
0

De Joel On Software sobre produtividade de um programador

A produtividade depende de ser capaz de manipular muitos pequenos detalhes na memória de curto prazo, tudo de uma vez.

Portanto, a memória de curto prazo é muito importante para um programador, dada uma tarefa crítica.
Mas não acho que a memória de longo prazo seja tão importante.

Gulshan
fonte
0

De uma rápida leitura, não vi ninguém falando sobre memória no sentido geral de programação, em vez de uma tarefa singular de escrever um programa.

A memória é útil para duas coisas:

  1. Lembrando a semântica básica / bibliotecas:

    Isso é facilmente substituído pela repetição e pelo Google. IOW, a quantidade de memória com a qual você nasceu precisa ser ridiculamente baixa para não conseguir superar esse problema.

  2. Lembrando o contexto em grandes programas:

    Aqui é onde está o truque. À medida que os programas aumentam (e você fica mais velho), as decisões que você toma se relacionam totalmente com a quantidade de seu conhecimento do sistema e com a capacidade de recuperá-lo em questão de milissegundos, para que seja útil em discussões de projeto, depuração, reagindo a emergências operacionais, etc. Quando o esforço é necessário, nenhuma quantidade de entradas de documentação / wiki irá ajudá-lo - o "assistente" de sua equipe será sua única opção. Essa é uma das razões pelas quais os principais engenheiros são muito valorizados / pagos. A maioria deles pode não gastar todo o seu tempo realmente codificando neste momento; eles passam mais tempo mantendo-se atualizados com a imagem completa e aplicando-a para quaisquer problemas / melhorias. Os bons apenas mantêm contato realizando uma tonelada de CRs e uma alteração de código aqui e ali / prototipando revisões mais recentes.

Você pode ser um programador razoável apenas com o número 1, mas se você for o próximo Linus, é melhor você ter muita memória, pelo menos o suficiente para abranger o problema que está resolvendo.

Pelas minhas observações, eu poderia até dizer que a memória de trabalho é quase diretamente proporcional ao valor da pessoa.

Um pequeno aviso para encerrar: se você tiver memória Eidetic, mas zero / baixo poder intelectual na aplicação dessa lógica, não será bom para um projeto como uma câmera.

Subu Sankara Subramanian
fonte
0

Se você tiver dificuldade em lembrar os nomes das pessoas que conhece, ainda poderá se tornar um grande programador.

Eu esqueço o nome das pessoas o tempo todo. Sou programador sênior com quase uma década de experiência. No meu caso, minha terrível memória auditiva é compensada por uma grande memória visual.

Mesmo assim, o requisito essencial para um bom programador é a capacidade de abstrair. Não importa quanto ou quão pouco você se lembre, se você não conseguir entender o conceito de uma variável e como usá-lo em um programa, você não se tornará um bom programador.

Minha sugestão é que você experimente um curso curto de programação ou conclua o tutorial do Python para ver como você gosta.

Isso deve lhe dar uma boa idéia sobre se a programação é uma carreira que você pode estar interessado em seguir.

Gustav Bertram
fonte
-1

Eu digo um enfático SIM!

No momento, estou aprendendo JAVA & C #. Todos os testes são fechados, portanto, para o JAVA, tudo é 100% da memória que codifica todos os aplicativos nos exames.

Além do mais, está ficando cada vez mais difícil. Agora estou no ponto em que preciso começar a usar truques de memória, como mnemônicos, etc.

Eu diria que QI alto, bom conhecimento geral, bom vocabulário, polimatismo, maior conhecimento em matemática, digitação por toque e boa memória são recursos para um programador.

Conheço programadores muito inteligentes que não conseguem tocar em letras ou fazer matemática mais alta etc. Se conseguissem, poderiam ser muito melhores.

gareth thomas
fonte
O mundo real não é livro fechado. Em quase todos os casos, os testes de livros fechados são uma indicação de um professor que não sabe como fazer bons testes.
Loren Pechtel 9/10/12