Escolar Documentos
Profissional Documentos
Cultura Documentos
1. Pensamento computacional
abstrações, como números ou conjuntos reais, do mundo físico. Por exemplo, uma pilha
de elementos é um tipo de dado abstrato comum usado na computação. Não pensaríamos
em "adicionar" duas pilhas, assim como dois inteiros. Um algoritmo é uma abstração de
um procedimento passo a passo para obter entrada e produzir alguma saída desejada. O
que significa "intercalar" dois algoritmos, talvez para um processamento paralelo
eficiente? Uma linguagem de programação é uma abstração de um conjunto de sequências
de caracteres, cada uma das quais quando interpretada afeta algum cálculo. O que
significa 'combinar' duas linguagens de programação? Esses tipos de combinadores são
abstrações que exigem cuidadoso pensamento, talvez uma agenda de pesquisa inteira,
para definir. Segundo, porque nossas abstrações são finalmente implementadas para
funcionar dentro das restrições do mundo físico, precisamos nos preocupar com casos
extremos e casos de falha. O que acontece quando o disco está cheio ou o servidor não
está respondendo? O que acontece quando um programa encontra em tempo de execução
um erro que deveria ter sido capturado em tempo de compilação? Como conseguimos
que um robô se movesse por um corredor sem esbarrar nas pessoas?
Ao trabalhar com abstrações ricas, é fundamental definir a abstração "correta". O
processo de abstração - decidindo quais detalhes precisamos destacar e quais detalhes
podemos ignorar - está subjacente ao pensamento computacional.
O processo de abstração introduz camadas. Na computação, trabalhamos
simultaneamente com pelo menos duas, geralmente mais camadas de abstração: a camada
de interesse e a camada abaixo; ou a camada de interesse e a camada acima. Interfaces
bem definidas entre camadas nos permitem construir sistemas grandes e complexos.
Dada a interface de programação de aplicativos (API) de um componente de
software, o usuário não precisa conhecer os detalhes da implementação do componente
para saber como interagir com ele, e o implementador não precisa saber quem podem ser
todos os usuários em potencial do componente para implementar corretamente. A
arquitetura em camadas da Internet, em particular a camada de protocolo da Internet de
"cintura fina", suporta a incorporação de novos dispositivos de computação e tecnologia
de rede na parte inferior e a adição de novos aplicativos imprevistos na parte superior.
Ao trabalhar com camadas de abstração, temos necessariamente em mente a relação
entre cada par de camadas, seja definida por uma função de abstração, uma relação de
simulação, uma transformação ou um tipo mais geral de mapeamento. Usamos esses
mapeamentos para mostrar a equivalência observável entre uma máquina de estado
abstrato e um de seus possíveis refinamentos, para provar a correção de uma
implementação com relação a uma especificação e para compilar um programa escrito em
uma linguagem de alto nível para um código de máquina mais eficiente .
E assim, as porcas e os parafusos do pensamento computacional estão definindo
abstrações, trabalhando com múltiplas camadas de abstração e entendendo os
relacionamentos entre as diferentes camadas. Abstrações são as ferramentas "mentais" da
computação.
O poder de nossas ferramentas 'mentais' é amplificado pelo poder de nossas
ferramentas 'metálicas'. Computar é a automação de nossas abstrações. Operamos
mecanizando nossas abstrações, camadas de abstração e seus relacionamentos. A
mecanização é possível devido às nossas notações e modelos precisos e exatos. A
automação implica a necessidade de algum tipo de computador para interpretar as
abstrações. O tipo mais óbvio de computador é uma máquina, ou seja, um dispositivo
físico2 com processamento, armazenamento e
2
Os dispositivos físicos óbvios são os mecânicos ou elétricos de hoje. Também pretendo incluir os
dispositivos físicos de amanhã, por exemplo. computadores nano e quântico; e até os dispositivos
biológicos de amanhã, p. computadores orgânicos, de DNA e moleculares também.(cf. §2a).
Phil. Trans. R. Soc. A (2008)
Computational thinking 3719
capacidades de comunicação. Sim, um computador pode ser uma máquina, mas mais
sutilmente pode ser um humano. Os seres humanos processam informações; computação
dos humanos. Em outras palavras, o pensamento computacional não requer uma máquina.
Além disso, quando consideramos a combinação de um humano e uma máquina como um
computador, podemos explorar o poder de processamento combinado de um humano com o
de uma máquina. Por exemplo, os humanos ainda são melhores do que as máquinas para
analisar e interpretar imagens; por outro lado, as máquinas são muito melhores para executar
certos tipos de instruções com muito mais rapidez do que os humanos e processar conjuntos
de dados muito maiores do que um humano pode suportar.
Operacionalmente, a computação está preocupada em responder 'Como eu conseguiria
um computador para resolver esse problema?', Onde o computador poderia ser uma
máquina, um humano, a combinação de uma máquina e um humano, ou recursivamente, a
combinação (por exemplo, uma rede) desses computadores. Implícito na resposta a essa
pergunta está a identificação de abstrações apropriadas e a escolha do tipo apropriado de
computador para a tarefa. Infelizmente, é muito fácil responder a essa pergunta sem pensar
muito em definir a abstração correta e depois escolher uma máquina com muita potência
para resolver o problema usando força bruta. O pensamento computacional pode oferecer
mais do que esse simples uso de computadores mecânicos.
(b) Pensamento computacional em toda parte
"O pensamento computacional está influenciando a pesquisa em quase todas as
disciplinas, tanto nas ciências quanto nas humanidades" (Bundy 2007). As
evidências da influência do pensamento computacional em outros campos são abundantes: o
pensamento computacional está transformando a estatística, onde, com o aprendizado de
máquina, a automação dos métodos bayesianos e o uso de modelos gráficos probabilísticos
tornam possível identificar padrões e anomalias em conjuntos de dados volumosos tão diversos
quanto os mapas astronômicos. , imagens funcionais de ressonância magnética, compras com
cartão de crédito e recibos de supermercado (por exemplo, Machine Learning Department
2008). O pensamento computacional está transformando a biologia, primeiro com o
algoritmo de sequenciamento de espingarda, acelerando nossa capacidade de sequenciar
o genoma humano e agora com nossas abstrações que representam processos
dinâmicos encontrados na natureza, do ciclo celular ao dobramento de proteínas (por
exemplo, Fisher & Henzinger 2007). O pensamento computacional está transformando a
economia, gerando um novo campo de microeconomia computacional, com aplicações
como colocação de anúncios, leilões on-line, serviços de reputação e até a busca de
doadores ideais para a troca renal nos dois sentidos (Abraham et al. 2007).
Em outros campos, o pensamento computacional ainda está na fase do pensamento
computacional simples: gastar dias em ciclos de máquina para resolver problemas. Muitas
ciências e disciplinas de engenharia contam com enormes simulações computacionais de
modelos matemáticos de processos físicos encontrados na natureza. O setor aeroespacial
conta com a capacidade de simular uma aeronave inteira ou missão espacial. As geociências
se atrevem a querer simular a Terra, desde seu núcleo interno até sua superfície e o Sol. Nas
ciências humanas e nas artes, as bibliotecas digitais de livros, coleções e artefatos criam
oportunidades através de métodos computacionais, como mineração de dados e federação de
dados, para descobrir novas tendências, padrões e links em nossa compreensão e valorização
da humanidade.
Olhando para o futuro, um pensamento computacional mais profundo - por meio da
escolha de abstrações mais inteligentes ou sofisticadas - pode permitir que cientistas e
engenheiros modelem e analisem seus sistemas em uma escala de ordens de magnitude maior
do que são capazes de lidar atualmente. Com o uso de camadas de abstração, por exemplo,
Além disso, vale a pena revisar essa questão em colaboração com estudiosos no
aprendizado de ciências e educação. Por exemplo, quais conceitos de pensamento
computacional são tão inatos para a cognição humana quanto o conceito matemático
de números? A visão humana é um processamento paralelo. Que tarefas naturalmente
fazemos ou aprendemos a fazer em paralelo versus sequencialmente? As crianças
experimentam noções de infinidade e recursão através da matemática e da linguagem;
nomear e ensinar esses conceitos fundamentais desde o início em contextos formais de
aprendizagem forneceria blocos de construção poderosos para o pensamento
computacional.
O que seria uma ordenação eficaz de conceitos no ensino de crianças à medida que
sua capacidade de aprendizado progredir ao longo dos anos? Por analogia, ensinamos
números a crianças no jardim de infância (quando têm 5 anos), álgebra no ensino
fundamental (12 anos) e cálculo no ensino médio (18 anos). Pode haver muitas
maneiras possíveis de estruturar a progressão dos conceitos de pensamento
computacional; qual é o mais eficaz para qual tipo de aluno?
Qual a melhor forma de integrar a ferramenta ao ensino dos conceitos? Aqui e a
partir de agora, 'ferramenta' significa a máquina de computação (uma ferramenta
específica de 'metal' do §1a). Nosso campo de computação está em uma situação única,
pois não apenas existem conceitos computacionais para ensinar, mas também há uma
ferramenta para ensinar. Essa ferramenta oferece alguns desafios e oportunidades.
Um desafio é que não queremos que a ferramenta atrapalhe a compreensão dos
conceitos. Também não queremos que as pessoas sejam capazes de usar a ferramenta,
mas não tenham aprendido os conceitos (um caso em questão: usar uma calculadora
versus entender aritmética). Pior, não queremos que as pessoas saiam pensando que
entendem os conceitos porque são hábeis em usar a ferramenta. Um segundo desafio é
que queremos acompanhar o aprendizado de como usar a ferramenta na ordem de
aprendizado de conceitos. Em que momento apresentamos cada um dos poderosos
recursos de uma máquina de computação? Em que momento expomos as crianças aos
meandros de como a máquina funciona? Essas perguntas são análogas à escolha da
abstração correta, onde agora os critérios são definidos pela capacidade de aprendizado.
Uma oportunidade é que podemos usar a ferramenta para reforçar os conceitos que
ensinamos. Computar é legal: trata-se de dar vida às abstrações! Através de visualização
e animação eficazes, mesmo em séries iniciais, podemos mostrar visceralmente a
diferença entre um algoritmo de tempo polinomial e um de tempo exponencial ou
mostrar que uma árvore é um tipo especial de gráfico; nas séries posteriores,
adquirindo habilidades de programação, os alunos podem automatizar suas próprias
abstrações. De fato, essa ferramenta pode ser útil para reforçar não apenas conceitos de
pensamento computacional, mas também conceitos de outros campos. Uma segunda
oportunidade é que a maioria das crianças hoje é fácil com a mecânica do uso da
ferramenta e não tem medo de explorar e brincar com ela. Atualmente, podemos tirar
proveito da exposição de rotina que as crianças têm a dispositivos computacionais em
casa e na escola.
Dada essa última observação, também devemos explorar a aprendizagem informal
e a formal. A aprendizagem ocorre de várias maneiras e fora da sala de aula: as
crianças ensinam umas às outras; aprenda com os pais e a família; aprende em casa,
em museus e em bibliotecas; e aprenda através de hobbies, superando as experiências
da internet e da vida.
Visão no. 2. Imagino que o pensamento computacional seja parte integrante da
educação infantil.
Sociedade
Ciência Tecnologia
A Internet e a World Wide Web juntas são um ótimo equalizador. Por outro lado,
permanecem desafios científicos e técnicos em relação à responsabilidade, anonimato,
gerenciamento de identidade e privacidade.
Referencias
Abraham, D., Blum, A. & Sandholm, T. 2007 Clearing algorithms for barter exchange markets:
enabling nationwide kidney exchanges. In Proc. 8th ACM Conf. on Electronic Commerce,
pp. 295–304. New York, NY: Association for Computing Machinery.
Adleman, L. M. 1994 Molecular computation of solutions to combinatorial problems. Science 266,
1021–1024. (doi:10.1126/science.7973651)
Benenson, Y., Gil, B., Ben-Dor, U., Adar, R. & Shapiro, E. 2004 An autonomous molecular
computer for logical control of gene expression. Nature 429, 423–429. (doi:10.1038/nature02551)
Blue Brain Project 2005 See http://bluebrain.epfl.ch/.
Bundy, A. 2007 Computational thinking is pervasive. J. Scient. Pract. Comput. 1, 67–69.
Chua, L. 1971 Memristor—the missing circuit element. IEEE Trans. Circuit Theory 18, 507–519.
Economist 2007 Quote from R. Achatz, Seimens, from ‘Revving up’. The Economist, 11 October
2007.
Engadget 2006 See http://www.engadget.com/2007/09/19/gordon-moore-predicts-end-to-moores-
law-in-10-years/.
Fisher, J. & Henzinger, T. A. 2007 Executable cell biology. Nat. Biotechnol. 25, 1239–1249. (doi:10.
1038/nbt1356)
Heller, M. J., Sullivan, B. & Dehling, D. 2005 Fabrication of photonic transfer DNA–quantum dot
nanostructures. In Technical Proc. 2005 NSTI Nanotechnology Conference and Trade Show,
vol. 1, ch. 12, pp. 769–772.
IBM 2006 See http://domino.watson.ibm.com/comm/pr.nsf/pages/news.20060324_carbonnano-
tube.html.
Machine Learning Department 2008 Research projects home page, Carnegie Mellon University. See
http://www.ml.cmu.edu/research/index.html.
Messmer, E. 2007 Quantum cryptography to secure ballots in Swiss election. Network World, 11
October 2007. See http://www.networkworld.com/news/2007/101007-quantum-cryptography-
secure-ballots.html.
Numenta 2005 See http://www.numenta.com.
Strukov, D. B., Snider, G. S., Stewart, D. R. & Williams, R. S. 2008 The missing memristor found.
Nature 453, 80–83. (doi:10.1038/nature06932)
Wing, J. M. 2006 Computational thinking. Commun. ACM 49, 33–35.
Wing, J. M. 2008 Five deep questions in computing. Commun. ACM 51, 58–60. (doi:10.1145/
1327452.1327479)