Alan Kay: Como eu ensinaria Ciência da Computação 101

“Uma das razões para realmente ir para a universidade é ir além da mera formação profissional e, em vez disso, compreender ideias mais profundas.”

Alan Kay: Como eu ensinaria Ciência da Computação 101

Vamos pensar um pouco sobre essa questão. Vários anos atrás, os departamentos de Ciência da Computação me convidaram para dar palestras em diversas universidades. Quase por acaso, perguntei ao meu primeiro público de estudantes de graduação, pós-graduação e professores sobre sua definição de “Ciência da Computação”. Todos só poderiam dar uma definição de engenharia. Fiz isso em cada novo lugar e em todos os lugares houve resultados semelhantes.

Outra pergunta foi: “Quem é Douglas Engelbart?” Várias pessoas disseram: “não tinha nada a ver com um mouse de computador?” (e isso foi muito decepcionante para mim, já que minha comunidade científica se esforçou muito para garantir que a resposta a essa pergunta fosse possível com dois ou três cliques do mouse e convencida de que Engelbart realmente tinha algo a ver com o mouse do computador) .

Parte do problema era a falta de curiosidade, em parte a estreiteza dos objetivos pessoais que não estavam relacionados com a aprendizagem, em parte a falta de compreensão do que era esta ciência, e assim por diante.

Trabalho meio período no departamento de ciência da computação da Universidade da Califórnia há vários anos (sou essencialmente professor, mas não preciso ir às reuniões do departamento). De vez em quando dou aulas, às vezes para alunos do primeiro ano. Ao longo dos anos, o já baixo nível de curiosidade em Ciência da Computação caiu significativamente (mas o nível de popularidade também aumentou, já que a computação é vista como um caminho para um emprego bem remunerado, se você puder programar e obter um certificado de um especialista de alto nível). 10 escola). Conseqüentemente, nenhum aluno jamais reclamou que a primeira linguagem na Universidade da Califórnia é C++!

Parece-me que estamos perante uma situação em que tanto o significado de "Computador" como de "Ciência" foram destruídos por conceitos fracos e massivos para criar um novo termo - uma espécie de etiqueta nas calças de ganga - que parece bom, mas é bastante vazio. Um termo relacionado que foi igualmente destruído é "engenharia de software", que, mais uma vez, não utilizou as ideias mais engenhosas de "programação" e "engenharia", mas simplesmente combinou-as (isto foi feito deliberadamente nos anos sessenta, quando foi termo cunhado).

Uma das razões para realmente ir para a universidade é ir além da simples formação profissional e, em vez disso, compreender ideias mais profundas. Parece-me bastante razoável que uma introdução a uma especialidade tente – através de exemplos, se possível – envolver os alunos com problemas da vida real e começar a compreender o que é realmente interessante, importante e central para o campo.

Os alunos da primeira série ficam felizes quando vêem como uma régua em cima de outra régua se transforma em uma máquina de somar, com a qual podem vencer as crianças da 5ª série na adição de frações. E então eles ficarão felizes em participar do desenvolvimento de máquinas de somar aprimoradas. Eles tocaram em um computador real – uma ferramenta física e mental que nos ajuda a pensar. Eles aprenderam uma maneira realmente eficaz de representar números – mais eficaz do que a que é ensinada nas escolas!

Eles foram capazes de combinar sua ideia de bom senso de “adicionar” como “acumular” com algo semelhante com novas propriedades poderosas. Eles o programaram para ser capaz de resolver uma variedade de problemas.

Eles também o expandiram. E assim por diante. Este não é um computador digital. E este não é um computador com programa memorizado. Mas essa é a essência de um computador. Assim como mecanismo de anticítera - Esta é geralmente a essência de um computador e da computação.

Alan Kay: Como eu ensinaria Ciência da Computação 101

Mecanismo de Antikythera

Até onde podemos ir e quanto podemos fazer antes que as coisas saiam do controle e nos percamos em abstrações? Eu sempre fui parcial com a caracterização Alan Perlis - o primeiro vencedor do Prêmio Turing, que pode ter inventado o termo "Ciência da Computação" - que na década de 60 dizia: "A Ciência da Computação é a ciência dos processos". Todos os processos.

Pelo bem do Quora, não vamos tentar levar isso adiante ou transformá-lo em dogma religioso. Vamos apenas usar a ideia com alegria Ala Perlisapensar melhor sobre o nosso campo. E principalmente sobre como ensiná-lo. Precisamos agora olhar para o significado moderno de "ciência", e Perlis estava bastante confiante de que ele não deveria ser diluído com significados mais antigos (como "coleção de conhecimento") e usos (como "biblioteconomia" ou mesmo "ciência social". Ciência" "). Por “ciência” ele tentou compreender um fenômeno criando modelos/mapas que tentam mostrar, “rastrear” e prever os fenômenos.

Alan Kay: Como eu ensinaria Ciência da Computação 101

Já dei diversas entrevistas sobre como os melhores mapas e modelos muitas vezes cabem em uma camiseta, como acontece com as equações de Maxwell e outras. A analogia é que existe uma “ciência das pontes”, embora a maioria das pontes seja feita pelo homem. Mas uma vez construída, uma ponte representa fenómenos que os cientistas podem estudar, as pontes podem ser usadas para fazer modelos de vários tipos e formar "teorias de pontes" abrangentes e úteis. A diversão é que você pode projetar e construir novas pontes (já mencionei que não há nada mais divertido do que cientistas e engenheiros trabalhando juntos para resolver problemas grandes e importantes!)

Alan Kay: Como eu ensinaria Ciência da Computação 101

Herbert Simon, vencedor do Prêmio Turing e do Prêmio Nobel, chamou tudo isso de “a ciência do artificial” (e escreveu um excelente livro com o mesmo título).

Alan Kay: Como eu ensinaria Ciência da Computação 101

Deixe-me lhe dar um exemplo. Na década de 50, empresas e universidades construíram computadores com memória e começaram a programá-los - e houve um momento especial quando o Fortran foi lançado em 1956 - que não foi a primeira linguagem de alto nível, mas talvez a primeira tão bem feita que foi usado em muitas áreas diferentes, incluindo muitas que antes eram feitas apenas em linguagem de máquina.

Tudo isso deu origem a “fenômenos”.

Alan Kay: Como eu ensinaria Ciência da Computação 101

John McCarthy

A história do Lisp é mais complexa, mas John McCarthy ficou interessado em tentar encontrar uma "teoria matemática da computação" e estava determinado a fazer tudo funcionar perfeitamente. A função eval, que interpreta Lisp, caberia facilmente em uma camiseta! Comparado a um “sistema de programação”, isso é insignificante. Mais importante ainda, esta “teoria da computação” era um conceito mais poderoso que o Fortran! Esta foi a melhor ideia de ponte!

A natureza miniatura do Lisp permite que toda a ideia de programação seja capturada em alguns cliques em um nível mais profundo e pensada em um nível que parece simplesmente impossível quando você olha para artefatos enormes (esta é uma das razões por que os cientistas gostam que a matemática seja compacta e poderosa). A matemática usada aqui é uma nova matemática porque permite conceitos como "antes" e "depois" e isso leva à "lógica variável" que permite que tanto a dependência funcional quanto o fluxo lógico de pensamento sejam preservados, ao mesmo tempo que permite a posição e a passagem de tempo. (Isso ainda não é compreendido em nossa época, no mundo cruel da programação situacional).

Lisp, como uma poderosa linguagem de programação e metalinguagem que pode representar sua própria teoria, é um exemplo de verdadeira ciência da computação. Se você aprender isso e outras coisas semelhantes, você será capaz de pensar mais profundamente e ser mais responsável por seu próprio destino do que se simplesmente aprendesse a programar em Fortran ou seus equivalentes modernos (... para se aproximar dos programadores! ).

Você aprenderá muito mais sobre os tipos especiais de design que são necessários na computação (por exemplo, geralmente não é apreciado quando a computação muitas vezes exige sair do ambiente computacional: uma das características especiais da computação leve armazenada é que ela não é apenas o material para o programa, mas material para um computador completamente novo).

Outra razão para escolher a definição de Perlis é que, em geral, a computação está muito mais preocupada com a criação de sistemas de vários tipos do que com algoritmos, “estruturas de dados” ou mesmo com a própria programação. Por exemplo, um computador é um sistema, a computação é um sistema, uma rede local e a Internet são sistemas, e a maioria dos programas deveriam ser sistemas melhores do que são (o antigo estilo de programação dos anos 50 durou até parecer que a programação deveria ser assim - nada poderia estar mais longe da verdade).

A Internet é um bom exemplo - ao contrário da maioria dos softwares de hoje em dia, a Internet não precisa ser interrompida para consertar ou melhorar nada - é mais como um sistema biológico - pela nossa intenção - do que o que a maioria das pessoas considera um sistema de computação. E é muito mais escalável e confiável do que quase todos os sistemas de software disponíveis atualmente. Realmente vale a pena pensar nisso antes de ensinar conceitos menos poderosos para programadores novatos!

Portanto, o que precisamos fazer em um curso de primeiro ano de Ciência da Computação é levar em conta o que exatamente os alunos podem estar fazendo no início e, em seguida, tentar permanecer dentro de sua “carga cognitiva” para ajudá-los a chegar ao que é realmente importante. É importante “permanecer real” e encontrar formas que sejam intelectualmente honestas e adequadas para quem está apenas começando. (Por favor, não ensine ideias ruins só porque parecem um pouco mais simples - muitas ideias ruins são na verdade mais simples!).

Os alunos devem começar criando algo que tenha muitas das características importantes que discuti aqui. Deve ser um sistema de várias partes interagindo dinamicamente e assim por diante. Uma boa maneira de decidir qual linguagem de programação usar é simplesmente criar algo que tenha milhares de partes interagindo! Se não, então você deve encontrar um. A pior coisa que você pode fazer é colocar os alunos em um caminho de pouca fluência, o que limitaria severamente as grandes ideias. Isso simplesmente os mata – e queremos criá-los, não matá-los.

Sobre GoTo School

Alan Kay: Como eu ensinaria Ciência da Computação 101

Fonte: habr.com

Adicionar um comentário