Alan Kay: Como ensinaría Informática 101

"Unha das razóns para ir realmente á universidade é ir máis alá da simple formación profesional e, en cambio, captar ideas máis profundas".

Alan Kay: Como ensinaría Informática 101

Pensemos un pouco sobre esta pregunta. Hai varios anos, os departamentos de Informática invitáronme a dar conferencias en varias universidades. Case por casualidade, preguntei ao meu primeiro público de estudantes universitarios, estudantes de posgrao e profesores sobre a súa definición de "ciencia da computación". Todo o mundo só podía dar unha definición de enxeñería. Fixen isto en cada novo lugar, e en todas partes houbo resultados similares.

Outra pregunta foi: "Quen é Douglas Engelbart?" Varias persoas dixeron: "Non era algo que ver cun rato de ordenador?" (e isto foi moi decepcionante para min, xa que a miña comunidade científica se esforzara moito para asegurarse de que a resposta a esta pregunta fose posible con dous ou tres clics do rato e convencido de que Engelbart realmente tiña algo que ver co rato do ordenador) .

Parte do problema era a falta de curiosidade, en parte unha estreiteza de obxectivos persoais que non estaban relacionados coa aprendizaxe, en parte a falta de comprensión do que era esta ciencia, etc.

Levo varios anos traballando a tempo parcial no departamento de informática da Universidade de California (esencialmente son profesor, pero non teño que ir ás reunións do departamento). De cando en vez dou clases, ás veces para alumnos de primeiro curso. Co paso dos anos, o xa baixo nivel de curiosidade en Informática baixou significativamente (pero o nivel de popularidade tamén aumentou, xa que a informática é vista como un camiño cara a un traballo ben remunerado se pode codificar e obter un certificado dunha parte superior). 10 escola). En consecuencia, nin un só estudante se queixou de que o primeiro idioma da Universidade de California é C++!

Paréceme que estamos ante unha situación na que tanto os significados de "Informática" como de "Ciencia" foron destruídos por conceptos débiles e masivos para crear un novo termo -unha especie de etiqueta nos vaqueiros- que soa ben pero é bastante baleiro. Un termo relacionado que foi igualmente destruído é "enxeñaría de software", que, de novo, non utilizou as ideas máis enxeñosas de "programación" e "enxeñaría", senón que simplemente as combinou (isto fíxose deliberadamente nos anos sesenta, cando se termo acuñado).

Unha das razóns para ir realmente á universidade é ir máis aló da simple formación profesional e, en cambio, captar ideas máis profundas. Paréceme bastante razoable que unha introdución a unha especialidade intente, a través de exemplos, se é posible, que os estudantes se involucren con problemas da vida real e comecen a comprender o que é realmente interesante, importante e central para o campo.

Os alumnos de primeiro alégranse cando se lles mostra como unha regra enriba doutra regra se converte nunha máquina de sumar, coa que poden vencer aos nenos de 5o en sumar fraccións. E entón estarán encantados de participar no desenvolvemento de máquinas sumadoras melloradas. Tocaron un ordenador real, unha ferramenta física e mental que nos axuda a pensar. Aprenderon unha forma realmente eficaz de representar números, máis eficaz que o que se ensina nas escolas.

Puideron combinar a súa idea de sentido común de "engadir" como "acumulación" con algo semellante con novas propiedades poderosas. Programárono para poder resolver unha variedade de problemas.

Tamén o ampliaron. Etcétera. Este non é un ordenador dixital. E este non é un ordenador cun programa memorizado. Pero esa é a esencia dun ordenador. Igual que mecanismo de anticitera - Esta é xeralmente a esencia dun ordenador e da informática.

Alan Kay: Como ensinaría Informática 101

Mecanismo de Anticitera

Ata onde podemos chegar e canto podemos facer antes de que as cousas se saian das mans e nos perdamos nas abstraccións? Sempre fun parcial pola caracterización Alan Perlis - o primeiro gañador do premio Turing, que quizais inventou o termo "Ciencia da Computación" - que nos anos 60 dixo: "A Ciencia da Computación é a ciencia dos procesos". Todos os procesos.

Polo ben de Quora, non tratemos de impulsar isto máis lonxe nin de convertelo en dogma relixioso. Usemos a idea con alegría Ala Perlisapara pensar mellor no noso campo. E sobre todo sobre como ensinalo. Agora cómpre mirar o significado moderno de "ciencia", e Perlis estaba bastante seguro de que non debería diluírse con significados máis antigos (como "colección de coñecemento") e usos (como "bibliotecario" ou mesmo "social". ciencias") "). Por "ciencia" intentou comprender un fenómeno creando modelos/mapas que tentan mostrar, "seguir" e predicir os fenómenos.

Alan Kay: Como ensinaría Informática 101

Dei varias entrevistas sobre como os mellores mapas e modelos adoitan caber nunha camiseta, como fan as ecuacións de Maxwell e outras. A analoxía é que hai unha "ciencia das pontes", aínda que a maioría das pontes son feitas polo home. Pero unha vez construída unha ponte, representa fenómenos que os científicos poden estudar, as pontes pódense usar para facer modelos de moitos tipos e formar "teorías de pontes" completas e útiles. O divertido é que entón podes deseñar e construír novas pontes (xa mencionei que non hai nada máis divertido que científicos e enxeñeiros traballando xuntos para resolver problemas grandes e importantes!)

Alan Kay: Como ensinaría Informática 101

Herbert Simon, un premio Turing e gañador do Premio Nobel, chamou todo isto "a ciencia do artificial" (e escribiu un excelente libro co mesmo título).

Alan Kay: Como ensinaría Informática 101

Déixame un exemplo. Nos anos 50, empresas e universidades construíron ordenadores con memoria e comezaron a programalos -e houbo un momento especial no que Fortran saíu en 1956-, que non foi a primeira linguaxe de alto nivel, pero quizais a primeira fixo tan ben que foi usado en moitas áreas diferentes, incluíndo moitas que antes só se facían en linguaxe máquina.

Todo isto deu lugar a "fenómenos".

Alan Kay: Como ensinaría Informática 101

John McCarthy

A historia de Lisp é máis complexa, pero John McCarthy interesouse en tentar atopar unha "teoría matemática da computación" e decidiuse a que todo funcionase á perfección. A función eval, que interpreta a Lisp, podería caber facilmente nunha camiseta. En comparación cun "sistema de programación", isto é insignificante. Máis importante aínda, esta "teoría da computación" era un concepto máis poderoso que Fortran! Esta foi a mellor idea de ponte!

A natureza en miniatura de Lisp permite capturar toda a idea da programación nun par de clics nun nivel máis profundo e pensar nun nivel que parece simplemente imposible cando miras artefactos enormes (esta é unha das razóns). por que aos científicos lles gusta que as matemáticas sexan compactas e poderosas). As matemáticas que se usan aquí son matemáticas novas porque permiten conceptos como "antes" e "despois" e isto leva á "lóxica variable" que permite preservar a dependencia funcional e o fluxo lóxico do pensamento ao tempo que permite a posición e o paso. de tempo. (Isto aínda non se entende no noso tempo no cruel mundo da programación situacional).

Lisp, como unha poderosa linguaxe de programación e metalenguaxe que pode representar a súa propia teoría, é un exemplo de verdadeira ciencia da computación. Se o aprendes e outras cousas semellantes, poderás pensar máis profundamente e ser máis responsable do teu propio destino que se simplemente aprendeses a programar en Fortran ou os seus equivalentes modernos (... así podes achegarte aos programadores! ).

Aprenderás moito máis sobre os tipos especiais de deseño que se necesitan na informática (por exemplo, non se adoita apreciar cando a informática require moitas veces saír do entorno informático: unha das características especiais da informática suave almacenada é que non é só o material para o programa, pero material para un ordenador completamente novo).

Outra razón para escoller a definición de Perlis é que, en xeral, a informática preocúpase moito máis pola creación de sistemas de moitos tipos que polos algoritmos, "estruturas de datos" ou mesmo pola propia programación. Por exemplo, un ordenador é un sistema, a informática é un sistema, unha rede local e Internet son sistemas, e a maioría dos programas deberían ser sistemas mellores que eles (o vello estilo de programación dos anos 50 durou ata que parece que a programación debería ser así, nada máis lonxe da realidade).

Internet é un bo exemplo -a diferenza da maioría do software hoxe en día, Internet non necesita ser parado para arranxar ou mellorar nada - é máis parecido a un sistema biolóxico - pola nosa intención - que o que a maioría da xente pensa como un sistema informático. E é moito máis escalable e fiable que case todos os sistemas de software dispoñibles na actualidade. Isto realmente paga a pena pensalo antes de ensinar conceptos menos poderosos aos programadores novatos.

Polo tanto, o que debemos facer nun curso de Informática de primeiro ano é ter en conta o que os estudantes poderían estar facendo exactamente ao principio, e despois tratar de manterse dentro da súa "carga cognitiva" para axudalos a chegar ao que é realmente importante. É importante "manterse real" e atopar formas que sexan intelectualmente honestas e axeitadas para os que acaban de comezar. (Por favor, non ensine ideas malas só porque parecen un pouco máis simples: moitas ideas malas son realmente máis sinxelas!).

Os estudantes deberían comezar por crear algo que teña moitas das características importantes que comentei aquí. Debería ser un sistema de varias partes que interactúan dinámicamente, etc. Unha boa forma de decidir que linguaxe de programación usar é simplemente facer algo que teña miles de partes que interactúan! Se non, entón deberías atopar un. O peor que podes facer é poñer aos estudantes nun camiño de pouca fluidez, o que limitaría severamente as grandes ideas. Só os mata, e queremos crialos, non matalos.

Sobre GoTo School

Alan Kay: Como ensinaría Informática 101

Fonte: www.habr.com

Engadir un comentario