O Logo é uma tecnologia obsoleta?
Esta é uma discussão que foi mantida na comp.lang.logo (e na correspondente
lista de discussão por e-mail de 16 de novembro a 2 de
dezembro, em 1998. A discussão foi intitulada "O Logo é uma
tecnologia obsoleta?"
De Ken Kahn:
Ken, obrigado pela sua interessante mensagem sobre o ToonTalk.
Eu provavelmente não terei tempo para uma análise cuidadosa por enquanto, mas pelo modo com o qual você o descreve não posso ver muita diferença do MicroWorlds ou outros produtos LCSI como "MY Make Believe Castle" ( para crianças jovens).
Quando você contrasta o ToonTalk com o Logo, parece estar se referindo às versões antigas (pré-MicroWorlds) do Logo.
"Uma linguagem de programação é algo para `pensar com´. Pensamento com procedimento seqüencial e variáveis globais é o que o Logo oferece.
Eu estive pensando desta forma desde que aprendi a programar em 1968. Mas foi maravilhoso quando em 1973 eu aprendi (a maior parte com um professor do MIT chamado Carl Hewitt) a pensar em termos do que ele chamava atores–objetos concorrentes com passagem de mensagens."
Eu li Papert dizendo coisas similares, por exemplo, em seu artigo
"Epistemological Pluralism" (com Turkle) - que o que você está
descrevendo é a filosofia por detrás do MicroWorlds.
"Então em 1980 eu aprendi com o Prolog a pensar em programas
declarativamente em termos de predicados e exemplonstração de
teoremas.
Prolog concorrente e seus sucessores me ensinaram a
pensar com atores e lógica em conjunto. Eu não quero afirmar que uma forma de pensar domina completamente as outras.
Eu apenas quero despertar a comunidade Logo para o fato de que há muito mais que pode ser `tomado de empréstimo´ da ciência da computação."
A idéia de construir, ao mesmo tempo, lógica e intuição em programas, proporcionando uma diversidade de estilos de aprendizagem, também é uma idéia de Papert (vide o mesmo artigo) e eu penso que isto é uma parte do projeto MicroWorlds.
"Em 1994 eu li um artigo de Sharon Yader em Logo Exchange
intitulado `Desencorajado? ...Não se desespere!´. Ela perguntava a uma classe de calouros na universidade acerca de sua exposição ao Logo.
Uma grande percentagem havia sido exposta e quase todos relataram a experiência como negativa. Nos anos 70 eu ensinei Logo e também observei os resultados do ensino de outras pessoas no grupo de Logo do MIT. Era maravilhoso. Era `mágico´.
Minha teoria de como conciliar estes dois fatos é que as crianças podem obter um nível excelente aprendendo Logo se ele é ensinado por um professor que compreende profundamente tanto crianças quanto programação. Eu penso que a pesquisa informal de Sharon indica que tais professores são raros."
A evidência anedótica é que as crianças apreciam ToonTalk e o dominam com relativa rapidez. (Vide www.ToonTalk.com/English/users.htm) Um
grande projeto de pesquisa pan-europeu acabou de se iniciar no princípio do mês, que irá construir o que nós chamamos "playgrounds" sobre o ToonTalk e o Logo (vide www.ioe.ac.uk/playground). Ele planeja fazer estudos cuidadosos acerca de crianças utilizando ambos os sistemas. Eu estou quase apostando que o ToonTalk despontará primeiro.
Eu concordo com essa análise.
Então, como poexemplos dar às crianças o poder e a mágica da programação quando tais professores não estão disponíveis?
Fazendo um ambiente de software no qual as crianças possam
descobrir e aprender programação por si mesmas.
O ToonTalk, eu afirmo, é tal ambiente. As crianças podem aprender o ToonTalk explorando um ambiente seguro, auto-revelador, abrindo seu caminho através de um jogo de desafios interativo, assistindo a exemplos com narração, obtendo ajuda de um agente do programa e outras coisas.
[Eu escrevi um capítulo em um livro que acabou de ser publicado este mês acerca deste tópico. O livro é "The Design of Children's Technology", editado por Alison Druin, publicado por Morgan Kaufman].
As primeiras indicações são que isto realmente funciona (vide www.ToonTalk.com/English/users.htm).
Este argumento é, simultaneamente, verdadeiro e perigoso. Bons
programas construcionistas serão mais intuitivos para novos
usuários (verdadeiro), mas sempre haverá lugar para bons
professores para encontrar diversos meios para levar o usuário para
um nível mais elevado.
Sugerir que isto pudesse ocorrer para o programa em separado é perigoso.
(Eu gostaria de seguir a análise de seu capítulo, mas não tenho tempo no momento).
Eu penso que uma solução melhor para o dilema é aperfeiçoar os cursos de educação de professores, pois o fator humano será sempre o principal.)
Em paralelo, "smarallel"- você realmente crê que as crianças se
importam em que fundo os programas rodam?"
Eu suponho que já tenha respondido parcialmente esta questão no ponto número 1 acima. Mas o paralelismo não é apenas outra ferramenta de pensamento, ele é também uma melhor forma de programação.
Por exemplo, um dos exemplos do ToonTalk é construir um jogo de pingue-pongue.
Eu estou convencido que a melhor maneira de estruturar programas é através de muitos processos independentes (mas que se comunicam e estão sincronizados).
No exemplo do pingue-pongue, a bola, a raquete e o marcador de
escore são, cada um, programas paralelos. O mundo ao redor de
nós está rodando em paralelo e tentar copiá-lo ou simulá-lo de maneira seqüencial é desnecessariamente difícil."
Esta é uma grande questão. Se a resposta for sim, a abordagem do ToonTalk é definitivamente o caminho a seguir, não havendo nenhuma dúvida a respeito.
Em minha opinião, é mais fácil para a maioria das pessoas adotar o estilo de programação declarativa do que o estilo de programação concorrente. Por exemplo, a SQL, como utilizada em bancos de dados, é declarativa.
Ela começa a ser utilizada universalmente nos dias de hoje. Ninguém poderia dizer que as bases de dados relacionais são, atualmente, lentas; as pessoas apenas se preocupam acerca da "produtividade" que ela tem para oferecer.
Eu suponho que o que Ray quis dizer é que o MicroWorlds também suporta o paralelismo.
O que você precisa exemplonstrar é que o ToonTalk de alguma forma o faz melhor, ou seja, que a diferença seja óbvia para o usuário, e não apenas para o sofisticado cientista da computação (embora eu esteja interessado pessoalmente em cada explicação, ou seja, uma expansão de sua anterior explicação muito
resumida).
Eu estou interessado em descobrir mais acerca do ToonTalk e sua
filosofia educacional. Estes breves comentários poderão auxiliá-lo a endereçar algumas das reflexões que encontrará neste grupo de discussão.
- Bill Kerr
De Gary S. Stager:
Brian,
Eu tive uma poderosa experiência ontem tentando utilizar um novo
ambiente de programação "mais simples" para crianças.
Embora eu estivesse tentando realizar uma tarefa muito simples, a falta de
elegância da interface obrigou-me a chamar um velho colega que
trabalha para a companhia que produz o programa.
Nós dois passamos a próxima hora tentando colaborar com o que deveria ter sido um programa de 2 minutos, pois não havia linguagem para comunicação no nosso programa.
"Conecte o objeto azul ao canto do ícone – não aquele canto – eu disse o garfo..."
Uma das idéias poderosas do Logo é que ele é compartilhável.
Eu fui recentemente relembrado de seu poder por um meu aluno que
ensina crianças latinas pequenas em L.A. Estas crianças da terceira série, falando inglês limitado, estão desconstruindo projetos criados por garotos de escolas médias abastadas de Nova Iorque e programando
(ou pelo menos se sentindo suficientemente confiantes de que podem tentar programar) seus próprios vídeo-games.
O Logo oferece às crianças um ambiente no qual elas podem criar algo compartilhável logo no princípio de sua utilização do software, pois ele permite múltiplas abordagens para resolver um problema.
Gary S. Stager escreveu:
"Eu tive uma poderosa experiência ontem tentando utilizar um novo
ambiente de programação `mais simples´ para crianças.
Embora eu estivesse tentando realizar uma tarefa muito simples, a falta de
elegância da interface obrigou-me a chamar um velho colega que
trabalha para a companhia que produz o programa.
Nós dois passamos a próxima hora tentando colaborar com o que deveria ter sido um programa de 2 minutos, pois não havia linguagem para comunicação no nosso programa.
`Conecte o objeto azul ao canto do ícone – não aquele canto - eu disse o garfo...´
"Uma das idéias poderosas do Logo é que ele é compartilhável."
Sobre algumas coisas, como o Logo, são mais fáceis de discutir ao telefone ou por e-mail. Isso não é surpreendente, pois o Logo é textual.
Outras coisas, como o software que você está utilizando,
ToonTalk, e problemas, não são tão adequados para discussões puramente verbais.
Minsky e Papert uma vez tentaram "compartilhar" problemas através do telefone. Eles perceberam que era extremamente difícil.
Se você e seu colega tinham um meio de conectar seus
computadores, então ambos viram a mesma tela e talvez ambos
tinham um cursor do mouse para apontar, então falar ao telefone
poderia ter sido muito produtivo.
Mas a característica de ser compartilhável não é a mesma que ser capaz de falar sobre ela ao telefone.
As coisas que você faz no ToonTalk são compartilháveis – você pode mesmo colocá-las em mensagens por e-mail ou convertê-las para aplicativos Java para mostrar a qualquer um com um navegador da web o que você fez.
E estas coisas são componíveis – uma característica muito importante.
O Logo seqüencial é componível também – mas eu me pergunto quão bem funciona a composição de processos paralelos do MicroWorlds se a comunicação é através de variáveis globais.
Saudações,
- Ken Kahn
Deluvisi@andru.sonoma.edu:
"Ken Kahn" <KenKahn@ToonTalk.com escreve:
"Se você e seu colega tinham um meio de conectar seus
computadores, então ambos viram a mesma tela e talvez ambos
tinham um cursor do mouse para apontar, então falar ao telefone
poderia ter sido muito produtivo."
Vnc é tal espécie de software... http://www.orl.co.uk/vnc.
E, como muitos bons softwares, tem código aberto.
Andru
De Brian Harvey:
"Bill Kerr" <kerrb@senet.com.au escreve:
"Então em 1980 eu aprendi com o Prolog a pensar em programas
declarativamente em termos de predicados e exemplonstração de
teoremas. O Prolog concorrente e seus sucessores me ensinaram a
pensar com atores e lógica em conjunto."
"A idéia de construir, ao mesmo tempo, lógica e intuição em programas, proporcionando uma diversidade de estilos de aprendizagem, também é uma idéia de Papert (vide o mesmo artigo) e eu penso que isto é uma parte do projeto MicroWorlds."
Isto não é muito justo. Qualquer linguagem de programação requer pensamento lógico, mas a programação lógica é ainda muito
diferente da programação procedural.
A mudança nos processos de pensamento que é requerida é da mesma ordem (embora em uma direção diferente) do grau pelo qual o paralelismo massivo no StarLogo é profundamente diferente da programação tradicional, e mesmo do paralelismo limitado do MicroWorlds.
Ken está perfeitamente certo quanto a não haver nenhum traço de Logo que seja remotamente como a programação lógica.
Bill Kerr escreveu:
"Obrigado pela sua interessante mensagem sobre o ToonTalk. Eu
provavelmente não terei tempo para uma análise cuidadosa por
enquanto mas pelo modo pelo qual você o descreve não posso ver
muita diferença do MicroWorlds ou outros produtos LCSI como `My
Make Believe Castle´ (para crianças jovens). Quando você contrasta o ToonTalk com o Logo, parece estar se referindo às versões antigas (pré-MicroWorlds) do Logo."
Do ponto de vista de um cientista da computação, existem grandes diferenças. Eles diferem tanto em sintaxe quanto em semântica.
O Logo tem uma sintaxe textual. O ToonTalk tem uma sintaxe visual animada. O Logo é uma linguagem procedural seqüencial.
O ToonTalk é uma linguagem concorrente orientada para objetos.
"Uma
linguagem de programação é algo para `pensar com´. Pensamento
com procedimento seqüencial e variáveis globais é o que o Logo oferece. Eu estive pensando desta forma desde que aprendi a programar em 1968. Mas
foi maravilhoso quando em 1973 eu aprendi (a maior parte com um professor do MIT chamado Carl Hewitt) a pensar em termos do que ele chamava atores objetos concorrentes com passagem de mensagens."
"Eu li Papert dizendo coisas similares, por exemplo, em seu artigo
`Epistemological Pluralism´ (com Turkle) – que o que você está descrevendo é a filosofia por detrás do MicroWorlds."
Eu aprendi muito de Seymour – inclusive esta idéia. Talvez eu esteja enganado, mas o MicroWorlds não altera muito o Logo.
Ele adiciona uma grande quantidade de invenções de interface do usuário úteis e uma noção empobrecida, muito primitiva, de processamento paralelo.
Eu não tenho ciência de nenhuma forma de sincronizar processos
paralelos no MicroWorlds. E o único meio pelo qual os processos
podem se comunicar são variáveis globais. Esta é uma
modularidade pobre e pode levar a que seja extremamente difícil
detectar problemas.
E em que sentido o MicroWorlds é orientado para objetos?
"A idéia de construir, ao mesmo tempo, lógica e intuição em programas, proporcionando uma diversidade de
estilos de aprendizagem, também é uma idéia de Papert (vide o mesmo artigo) e eu penso que isto é uma parte do projeto MicroWorlds."
Lógica/planejamento e intuição/consertos estão naquele artigo. E eu não questiono que o MicroWorlds suporta ambos os estilos cognitivos (assim como o ToonTalk).
Mas existe um nível diferente, ao qual estou tentando chegar. Eu estou destacando que há um papel para pensamento lógico e declarativo como um meio de EXPRESSAR programas, não apenas projetá-los e construí-los.
"Este argumento é, simultaneamente, verdadeiro e perigoso. Bons
programas construcionistas serão mais intuitivos para novos
usuários (verdadeiro), mas sempre haverá lugar para bons
professores para encontrar diversos meios para levar o usuário para
um nível mais elevado. Sugerir que isto pudesse ocorrer para o
programa em separado é perigoso.
(Eu gostaria de seguir a análise de seu capítulo, mas não tenho tempo no momento.) Eu penso que uma solução melhor para o dilema é aperfeiçoar os cursos de
educação de professores, pois o fator humano será sempre o principal."
Eu concordo parcialmente. Mas também vejo o ToonTalk
funcionando no lar, quando não há professor. O mais recente livro de
Seymour, "The Connected Family", enfatiza também o aprendizado
que ocorre em casa.
"Eu suponho que o que Ray quis dizer é que o MicroWorlds também suporta o paralelismo. O que você precisa exemplonstrar é que o ToonTalk de alguma forma o faz melhor, ou seja, que a diferença seja óbvia para o usuário e não apenas para o sofisticado cientista da computação (embora eu esteja interessado pessoalmente em cada explicação, ou seja, uma expansão de sua anterior explicação muito
resumida)."
Eu toquei a resposta do sofisticado cientista da computação acima. Eu planejo escrever uma resposta de 1 ou 2 páginas para a questão em breve, e a enviarei assim que estiver pronta.
"Eu estou interessado em descobrir mais acerca do ToonTalk e sua
filosofia educacional. Estes breves comentários poderão auxiliá-lo a endereçar algumas das reflexões que encontrará neste grupo de discussão."
Seus comentários foram úteis, obrigado.
Saudações,
- Ken Kahn
De Bill Kerr:
Brian escreveu: "Ken está perfeitamente certo quanto a não haver nenhum traço de Logo que seja remotamente como a programação lógica."
Eu não sei nada sobre o Prologo, então posso ser corrigido. Minha questão seria: o que ocorre com a lógica do ToonTalk para que esta seja, ao mesmo tempo, óbvia e superior à lógica do MicroWorlds?
É uma idéia poderosa como a de recursão que deve ser incorporada aos softwares educacionais e sua exclusão faz do Logo uma "tecnologia antiga"?
Ou é alguma coisa de interesse principalmente para os cientistas da computação mas não para uma audiência mais ampla? Minha sensação (admitidamente subjetiva) é
que o equilíbrio entre lógica e intuição no MicroWorlds é quase perfeito.
- Bill Kerr
De Brian Harvey
"Bill Kerr" <kerrb@senet.com.au escreveu:
Brian escreveu: "Ken está perfeitamente certo quanto a não
haver nenhum traço do Logo que seja remotamente como a
programação lógica." "Eu
não sei nada sobre o Prologo, então posso ser
corrigido. Minha questão seria: o que ocorre com a
lógica do ToonTalk para que esta seja, ao mesmo tempo,
óbvia
e superior à lógica do MicroWorlds?
É uma idéia poderosa como a de recursão que deve ser incorporada aos softwares educacionais e sua exclusão faz do Logo uma "tecnologia antiga"?
Ou é alguma coisa de interesse principalmente para os cientistas da computação, mas não para uma audiência mais ampla? Minha sensação (admitidamente subjetiva) é
que o equilíbrio entre lógica e intuição no MicroWorlds é quase perfeito."
Primeiramente, esqueça sobre aquele "balanço entre lógica e intuição". A programação lógica não envolve nem mais nem menos
intuição que a programação procedural.
Na programação procedural, você informa um ALGORITMO ao
computador, que ele utilizará para computar a resposta que você deseja. Primeiro faça isso, depois aquilo etc.
Na programação lógica, você informa alguns FATOS ao computador, que você conhece, e algumas REGRAS que podem ser utilizadas para inferir novos fatos, e então você lhe faz questões, e o trabalho do computador é descobrir como conseguir as respostas.
Como um exemplo clássico, aqui está um procedimento Logo para
anexar duas tabelas:
To append :a :b if empty? :a [output :b] output fput (first
:a) (append bf :a :b) end
Por contraste, em programação lógica você deveria inserir estas
regras;
(append [] :b) = :b
IF (append :a :b) = :c THEN (append (fput :x :a) :b) = (fput
:x :c)
(Isto não é realmente nenhuma linguagem lógica particular; estou tentando utilizar o vocabulário e notação Logo para evitar criar a notação.)
Com estas regras, como com os procedimentos Logo, você pode ter questões como
O que é (append [123] [4 5]?
Mas você também pode ter questões como
Se (append [ 123] : x é [1 2 3 4 5], o que é :x?
Ou ainda
Se (append [ : x : y] é [ 1 2 3 4 5 ], o que são :x e : y?
O que lhe dará todas as seis respostas possíveis! No Logo, você não
pode " rodar um procedimento subjacente" como pode fazer com as
regras em uma linguagem lógica.
A maneira pela qual funciona é que os inventores da programação
lógica inventaram uma espécie de algoritmo universal, uma
generalização do ajuste de padrões.
A programação lógica é um companheiro natural para a pesquisa de banco de dados; ela é menos óbvia como aliada para programação "side-effect-laden, embora muitos
anos atrás Ken Kahn tenha escrito um pacote de gráficos de tartaruga em Prolog, portanto seus interesses atuais têm uma longa história.
A programação lógica realmente é um meio muito diferente de pensar acerca da programação, e ela, eu penso, desenvolve a mente de maneira útil, seja ou não o usuário um cientista da computação.
A utilização do Prolog como uma primeira linguagem para crianças tem um uma longa história, não nos Estados Unidos, mas definitivamente na Inglaterra – Richard Ennals escreveu um
livro de Prolog para crianças, eu suponho que em algum momento nos anos 70, mas todos os meus livros ainda estão encaixotados, portanto não posso examiná-los agora (eu acabei de me mudar!).
Resumo principal: eu não penso que o Logo seja "obsoleto", mas
creio que há mais de uma boa ferramenta de computador para
crianças!
De Bill Kerr:
Brian Harvey escreveu:
"A programação lógica realmente é um meio muito diferente de pensar acerca da programação, e ela, eu penso, desenvolve a mente de maneira útil, seja ou não o usuário um cientista da computação.
A utilização do Prolog como uma primeira linguagem para crianças tem um uma longa história, não nos Estados Unidos, mas definitivamente na Inglaterra – Richard Ennals escreveu um livro de Prolog para crianças"
Obrigado pela resposta informativa – parece como se o Prolog
pudesse ser um bom modo de dar sentido ao conceito de
engenharia reversa.
- Bill Kerr
De Bill Kerr:
Ken Kahn escreveu:
"Talvez eu esteja enganado, mas o MicroWorlds não altera muito o
Logo.
Ele adiciona uma grande quantidade de invenções de
interface do usuário úteis e uma noção empobrecida, muito primitiva, de processamento paralelo.
Eu não tenho ciência de nenhuma forma de sincronizar processos paralelos no MicroWorlds."
Eu penso que esse procedimento do MicroWorlds (da ajuda do MW,
e também realizá-lo?) realiza processos paralelos sincronizados.:
To sq-circ
T1, pd launch [repeat 36 [fd 10 rt 10]]
; t1 draws a circle
t2, pd launch [repeat 4[ fd 50 rt 90]]
; ts draws a square
waituntil [ done?[repeat 36 [fd 10 rt 10]]]
; the procedure does not continue until the circle is finished
; so that the drawings of circles and square are synchronised
t1, pu rt random 360 fd random 50
t2, pu rt random 360 fd random 50
; repositions turtles for next drawing
sq- circ
end
"E o único meio pelo qual os processos podem se comunicar são
variáveis globais. Esta é uma modularidade pobre e pode levar a que seja extremamente difícil detectar problemas.
E em que sentido o MicroWorlds é orientado para objetos?"
O MicroWorlds tem um primitivo "turtlesown" que lhe permite localizar
coisas como a velocidade ou a posição de um "turtle" que está, por exemplo, simulando um cavalo.
Eu colarei na explicação da ajuda do MW, o que nos dará alguma espécie de ponto para as discussões posteriores.
Eu não estou tentando sugerir que o MW é totalmente
orientado para objetos, mas o código pode residir em objetos como
cores, "turtles", botões.
Isto dá aos estudantes uma introdução a conceitos elementares e para crianças pequenas eu não posso ver que a questão vá além.
O MW e o Logo têm variáveis locais as quais
poderiam ser a coisa principal, não? Minha impressão principal a partir de alguns java "oops" no início deste ano é que tudo é dez vezes mais difícil do que utilizando o Logo.
Start of paste from MW help
Turtlesown word
Determina uma variável para todos os "turtles" no projeto em
andamento. Esta variável pode então ser definida para um valor específico para cada "turtle".
Este comando também cria um novo uso primitivo da definição da palavra seguida pelo nome da variável (por exemplo, turtlesown" velocidade cria um comando de ajuste de velocidade como em t1, ajuste de velocidade 12).
Há dois modos de obter o valor de uma variável de um "turtle" definido: você pode informar a um "turtle" e utilizar o nome da
variável para reportar o valor (por exemplo, t1 exibe a velocidade 12, neste exemplo) ou você pode utilizar o nome do "turtle" seguido por 's 9 por exemplo, exibir t1's velocidade exibe 12).
Utilize
"remove" para remover uma variável de um "turtle". Isto
remove a variável nomeada para todos os "turtles" no projeto. Depois
de uma instrução "turtlesown" , o valor da variável é ajustado para a lista vazia (vide as três primeiras linhas do exemplo abaixo).
Turtlesown "speed
T1, show speed
(empty list)
t1, setspeed 10
t2, setspeed 20
t3, setspeed 5
t1, show speed
10
show t2's "speed
20
everyone [fd speed]
everyone [forever [fd speed]]
Choose Stop All from the Edit menu.
Remove "speed
End of paste from MW help
- Bill Kerr
|