PARTE 1 PARTE 2 PARTE 3 PARTE 4 PARTE 5


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


início busca adquira manual novidades dúvidas suporte download imprensa contato