A cabeça do programador: como a codificação afeta o pensamento

Aprender a programar significa não apenas desenvolver uma habilidade útil, mas também adquirir um tipo especial de pensamento. Os programadores são bons em resolver problemas matemáticos e lógicos. Eles também prestam atenção aos detalhes, simulam situações na vida cotidiana e fazem uma avaliação com base em um grande número de fatores.



Antecipando nosso curso Go Workshop , dizemos que psicólogos, linguistas e educadores pensam sobre os efeitos da codificação no cérebro e o que os índios australianos e a hipótese de Sepir-Whorf têm a ver com isso.

Nos anos 30 do século passado, apareceu a teoria da relatividade linguística, nomeada por analogia com a descoberta de Einstein. Diz: a linguagem define consciência, ou seja, as pessoas percebem o mundo de maneira diferente, porque as categorias lingüísticas da língua nativa impõem restrições e até determinam o pensamento.

Essa idéia foi formulada por Edward Sepir e seu aluno Benjamin Wharf, mas eles estavam errados. Qualquer ideia pode ser transmitida em qualquer idioma. Eles atribuíram a enorme influência nos processos cognitivos a diferenças simples na gramática, mas o conceito também continha um grão saudável. Guy Deutscher em seu livro Through the Mirror of Tongue explica quais:

“Se idiomas diferentes influenciam o pensamento de seus falantes de maneira diferente, o ponto não é que cada idioma permita que seus falantes pensem, mas as partes do significado em que cada idioma geralmente faz você pensar. Quando uma língua obriga seus falantes a prestar atenção em certos aspectos do mundo ... esses hábitos de fala podem eventualmente se tornar hábitos de pensamento com consequências para a memória, percepção, associações e até habilidades práticas. ”

A verdade está em algum lugar ao norte


Foi provado de forma convincente que o sistema de gênero dos substantivos influencia as séries associativas, forçando a dotar certos objetos inanimados de características imaginárias femininas ou masculinas. Um efeito semelhante está associado a diferenças na sensibilidade a tons de cores, para os quais o idioma tem um nome.

Mas essas são triviais em comparação com o fato de que a linguagem pode formar habilidades. Isso foi revelado durante o estudo de uma das línguas dos aborígines australianos. Em vez das habituais “frente” e “costas”, “esquerda” e “direita”, eles usam apenas pontos cardeais para indicar a direção.

Pode parecer uma farsa, mas se um falante nativo dessa língua solicitar que você abra espaço no banco, isso soará como "mude para o leste, por favor". Se, ao mesmo tempo, você estiver lendo um livro, sentado de frente para o sul, e o nativo desejar que você vire algumas páginas para a frente, ouvirá "virar mais para o oeste". Se você virar para o norte, a solicitação será diferente - você será solicitado a virar para o leste.

Para falar esse idioma, você deve monitorar constantemente a localização dos pontos cardeais, que formam uma memória geográfica e não requerem controle consciente de um senso de direção. Portanto, o aprendizado profundo de línguas é mais do que apenas conhecimento de gramática e vocabulário.

O estudo da influência da linguagem no pensamento acaba de começar, mas estudos semelhantes sobre linguagens de programação já estão em andamento, que não apenas o nome se refere às naturais.

Programação ≥ Fala


Ao contrário dos estereótipos, na programação os mais importantes não são habilidades matemáticas, mas linguísticas. Isso foi em 1982 em seu Etudes for Programmers, de Charles Wesrel. Ele chamou a atenção para as habilidades verbais como um aspecto importante da personalidade de um programador de sucesso, tendo em mente a capacidade de trabalhar com a gramática das linguagens artificial e natural.

Suas observações são confirmadas. Estudos estatísticos revelaram uma correlação entre programação e altas habilidades linguísticas. Observações diretas da atividade em diferentes áreas do cérebro, com a ajuda da ressonância magnética, estabeleceram que, enquanto trabalhava no código, as mesmas partes do cérebro responsáveis ​​pelas línguas naturais são ativadas.

Não surpreende que muitos programadores considerem a hipótese de Sapir-Whorf aplicável ao seu trabalho. Opiniões semelhantes foram realizadas por Kenneth Iverson, criador da APL. Yukihiro Matsumoto admitiu que ao desenvolver Ruby, ele foi inspirado no romance "Babel-17", baseado na hipótese de relatividade linguística.

Motivos semelhantes são desenvolvidos no ensaio de Paul Graham "Conquistando a Mediocridade", em seu paradoxo "Blub", segundo o qual um programador que domina uma linguagem e resolveu todos os problemas com ela não entende o valor de ferramentas mais eficazes de outras linguagens de programação, percebendo-as como algo estranho incomum e desnecessário.

A primeira tentativa de resumir os dados disponíveis sobre o impacto da programação nos processos cognitivos foi feita em 1987 na edição de maio da Educational Computing Research .

Em seguida, os pesquisadores notaram que a programação com suas várias tarefas pode afetar positivamente a capacidade de resolver problemas estrategicamente, a capacidade de lógica formal, habilidades de modelagem e estilos cognitivos, mas não chegaram a conclusões inequívocas e conclusivas devido à falta de dados.
Outros seis anos se passaram antes que as estatísticas fossem coletadas, o que possibilitou concretizar idéias sobre o impacto da codificação no pensamento. É apresentado em uma metanálise de 65 estudos sobre os efeitos da programação nos processos cognitivos , publicados em 1991.

Verificou-se que, na maioria dos casos, a programação tem um efeito positivo em várias habilidades cognitivas que se correlacionam com a duração do estudo da linguagem de programação e o sucesso nela. "As implicações de aprender uma linguagem de programação vão além do conteúdo de uma linguagem de computador específica", dizem os cientistas. Com a capacidade de programar, as habilidades de planejamento, a capacidade de criar raciocínio, pensamento lógico e habilidades gerais para resolver problemas usando programas de computador são aprimoradas.

Estudos comparativos do impacto de várias linguagens de programação nos processos cognitivos continuam. Uma doação de US $ 750.000 foi alocada para analisar o conteúdo dos repositórios on-line do Github e BitBucket, perguntas e respostas publicadas no StackExchange. Segundo eles, o Laboratório de Conhecimento e o Departamento de Psicologia da Universidade de Wisconsin Madison restaurarão a “história natural” das linguagens de programação e acompanharão com que frequência e com que finalidade cada uma delas é usada.

Até 2020, os pesquisadores planejam descobrir como os recursos específicos das linguagens de programação afetam o número de caminhos e a velocidade de solução de vários problemas, analisando quão bem uma determinada linguagem é adequada para a programação coletiva.

O projeto tem uma tarefa ambiciosa: fornecer informações sobre quais idiomas escolher para projetos específicos e descobrir como essa escolha afeta a maneira como os desenvolvedores pensam e trabalham.

Mais que habilidade


Além das habilidades de programação, o aprendizado de idiomas forma o hábito do que o matemático, psicólogo e programador Seymour Papert chama de "pensamento computacional" em seu trabalho.

Este é um conjunto flexível de habilidades destinadas à resolução de problemas algorítmicos , o hábito de usar complexamente abstração, decomposição, avaliação, pensamento lógico, precisão e o hábito de observar detalhes na vida cotidiana.

O conceito de pensamento computacional ganhou autoridade na pedagogia, formando a base de muitos programas educacionais, mas, com o passar do tempo, como esperado nos anos 80 do século passado, sua influência se espalhou muito além de faculdades e universidades .

Usando uma metodologia de programação, uma grande variedade de problemas é resolvida com sucesso. Um exemplo disso não é apenas a modelagem computacional, a coleta de big data, a introdução de sistemas automatizados e o sucesso da fintech.

O pensamento computacional é aplicável e útil na vida cotidiana e para profissionais que estão longe das tecnologias de TI. Aprender programação ajuda a encontrar novas abordagens e soluções, não importa o quê. Seja física, biologia, química, sociologia, pedagogia, negócios ou saúde.

Então, surgindo o conceito de altruísmo eficaz, começou a busca pelas estratégias de caridade mais eficazes. Graças a esses estudos, verificou-se, por exemplo, que na luta contra a malária é mais eficiente doar dinheiro para redes mosquiteiras do que medicamentos caros.

Outra consequência do pensamento computacional é a ideia de usar ferramentas para análise matemática de transações de troca e big data para resolver o problema de seleção de doadores de órgãos. Como resultado , um projeto foi desenvolvido para o complexo e ao mesmo tempo confiável e eficaz sistema de troca de rim de doador "na cadeia" para os EUA, para o qual o professor da Universidade de Harvard Alvin Roth recebeu o Prêmio Nobel em 2012.

No contexto de novas pesquisas, aprender uma linguagem de programação não é apenas adquirir uma habilidade, mas também uma maneira de dar uma nova olhada na vida e lidar com os desafios que ela apresenta.

Muito em breve, o curso Go Workshop começará no Distrito Binário - um excelente começo para programadores iniciantes e uma continuação lógica para aqueles que já enfrentam o projeto de seus próprios serviços web.

Source: https://habr.com/ru/post/pt425385/


All Articles