Estudos sobre o quão bem um programador pode entender o código em idiomas desconhecidos? [fechadas]

15

Há algum estudo sério sobre quão bem um programador experiente que conhece a linguagem X pode entender código escrito por um programador competente usando a linguagem Y, para uma boa variedade de linguagens amplamente usadas como X e Y?

Claro que o mundo real não é tão simples como um programador conhece apenas uma língua. O que gostaríamos de saber é: se fizermos nosso projeto em, digamos, C #, e algum dia alguns físicos antigos que conhecem apenas Fortran e Algol olham para ele, até que ponto isso faria sentido para eles? Partes matemáticas dele podem ler bem para eles, se eles ignorarem o que para eles são alguns sinais de pontuação aleatórios. Ou, um especialista em Python seria capaz de encontrar falhas no meu script inteligente de Ruby?

Pode haver problemas desde o nível de sintaxe superficial até o nível de grandes conceitos, como objetos, metaprogramação de modelos, funcionais e assim por diante. Eu não estou esperando que o programador entenda completamente todos os detalhes de sintaxe do código em uma "língua estrangeira" ou siga a religião de algum conceito grandioso, mas imaginando até que ponto eles obteriam o fluxo principal de controle, encontrar o ponto onde algo é desenhado na tela e o que determina sua cor ou tamanho, verifique se um robô programado para dirigir um carro desligará o motor quando estiver pronto, esse tipo de coisa.

Um estudo de boa qualidade incluiria pesquisa acadêmica publicada, um relatório oficial de algum grupo da indústria ou grande empresa de software, embora eu leve observações sistemáticas imparciais por líderes experientes de workshops e aulas ou outras fontes. Não está interessado em blogs curtos, exemplos de casos únicos ou anedotas. (Bem, talvez algumas anedotas se eles fazem uma boa leitura.)

    
por DarenW 04.08.2012 / 09:40
fonte

4 respostas

9

Obviamente depende do grau de relacionamento das línguas entre si. Por exemplo, se você tiver um plano de fundo C ou C ++ e tiver feito alguma programação em C # ou Java, deverá ser fácil para você ler e entender a outra das duas linguagens (Java ou C #). Se você conhece Lisp bem, o Scheme não deve ser um grande problema. Uma vez eu depurei um programa PHP sem ter nenhum conhecimento sobre PHP, apenas com meu conhecimento de C, C ++ e Perl. Tenho certeza de que, quando esse programa fosse escrito em Haskell ou Smalltalk, isso seria imensamente mais difícil do que seria impossível para mim.

Na verdade, eu não acho que uma pesquisa acadêmica sobre esse tópico faria algum sentido (pelo menos, não sério). Não existe tal coisa como um "programador experiente padrão que conhece a linguagem X", portanto, qualquer estudo perderia os dados básicos garantidos. As pessoas têm conhecimento diferente e, mesmo que tenham passado pelas mesmas escolas, elas são talentosas e motivadas de maneira diferente.

but wondering to what extent they'd get the main flow of control, find the spot where something is drawn on the screen

Isso pode ser difícil mesmo quando você está muito familiarizado com a linguagem, seja porque a qualidade do código é muito baixa, ou a estrutura usada é tão complexa, ou a base de código é muito grande.

    
por 04.08.2012 / 11:05
fonte
6

Não tenho certeza sobre uma referência de estudo conduzida acadêmica, no entanto nomeação bem de métodos, classes e funções em C # / C ++ / Java / Python ou etc. deve facilitar a compreensão do código base, bem como fluxo de processos de negócios.

Convenção de nomenclatura dentro do projeto e geralmente no desenvolvimento de software é um aspecto muito importante. No entanto, its importance e relevância para a construção de software de qualidade são frequentemente negligenciados ou ignorados em conjunto.

Diretrizes de nomenclatura usadas no .NET Framework e < href="http://msdn.microsoft.com/pt-br/library/ms229045.aspx"> Convenções gerais de nomenclatura usadas no .NET são boas referências para serem exibidas também.

    
por 04.08.2012 / 10:38
fonte
3

Depende tremendamente do programador individual e de como eles internalizam idiomas. Eu não tenho absolutamente nenhum problema em trabalhar em uma dúzia de idiomas, enquanto eu tenho um amigo que só conhece o C ++. Ele não é pior em programação do que eu, ele apenas aprendeu de maneira diferente.

Pessoalmente, eu acho uma questão relacionada mais interessante: quando há um bug no código (ou seja, o programador X pensou que ele escreveu someFunction(x, y) mas ele realmente escreveu outra coisa), quão difícil é para o segundo desenvolvedor identificar o erro? erro. Um bom programador X tornaria extremamente óbvio o que ele QUERIA que o computador fizesse, e isso seria fácil de ler. No entanto, se ele cometeu um erro, pode ser um grande problema. Coisas como o seguinte bug C ++:

int x = getCorrectValueForX();
if (x = 2)
   doSomethingWhenXIsTwo();

Pode ser NOTORIOUSMENTE difícil de detectar, a menos que você conheça o idioma.

    
por 18.02.2014 / 03:12
fonte
1

Não depende apenas do programador como outras pessoas disseram, mas também das semelhanças entre as linguagens, tanto na sintaxe, filosofia e implementação.

Muitas linguagens diferentes usam uma sintaxe derivada de C, e assim seguir o fluxo de controle será mais fácil se você estiver familiarizado com esse tipo de sintaxe. O mesmo se aplica a linguagens com tipos strongs e pouco tipados, idiomas com suporte a funções de ordem superior, nível de abstração e filosofias programáticas. Isso não depende apenas de você ser capaz de ler a sintaxe, mas também estar familiarizado com os conceitos e filosofias das linguagens.

Se você aprendeu C por exemplo, eu acho que seria razoável esperar que você seja capaz de derivar o fluxo de controle de C #, Java, ou C ++ etc. Seria um pouco mais difícil decifrar VB por causa da diferença sintaxe, ou JavaScript por causa de fechamentos, digitação fraca e funções de ordem superior (eu sei que você pode fazer isso em C, mas é um pouco complicado). Eu não esperaria que você, no entanto, fosse capaz de depurar o Lisp, F #, R ou, Deus me livre, assembly porque eles usam um paradigma de programação completamente diferente.

TL; DR Não é apenas importante reconhecer a sintaxe, mas sim a maior parte do tempo em que você pode decifrar uma declaração ou chamada de método, mas ser capaz de compreender a razão por que um programa é escrito de certa forma é o cerne da compreensão e ler código.

    
por 18.02.2014 / 04:14
fonte