Ensinado programação

April 1st, 2003 § 11 comments

Estou ensinando meu irmão mais novo a programar. Ele tem dezessete anos e, embora use um computador há um bom tempo, sua única experiência prévia além do papel de mero usuário é mexer um pouco com o Flash, usando os recursos semi-automáticos do programa.

Como linguagem inicial eu escolhi o Smalltalk, que acredito ser ideal para começar: ela é puramente orientada a objetos, possui regras sintáticas muito simples e o ambiente favorece um ciclo de edição-execução-depuração muito rápido sem a preocupação com estágios intermediários como compilação. Como a linguagem é muito linear os conceitos básicos — objeto, classe e mensagem — podem ser compreendidos facilmente. As implementações que estamos usando são o Squeak e o VisualWorks.

A partir desses conceitos básicos, nós construimos alguns “programinhas” muito simples. O primeiro foi para encontrar os divisores de um número. O segundo foi determinar se um número é primo, usando o conhecimento adquirido no primeiro. Obviamente não usamos o modo ideal de fazer os cálculos, mas deu para ilustrar os conceitos básicos de algoritmo, além de tocar em quase todos os aspectos inicias da linguagem.

É até engraçado, mas o fator mais complicado para o meu irmão é o fato de que quase todas as linguagens de programação são centradas no idioma inglês. Isso faz com que a lembrança dos nomes das mensagens seja um pouco difícil para quem só fala um idioma nativo diferente.

Por outro lado, o meu maior problema é saber explicar e dosar os conhecimentos. Eu estou tentando explicar os conceitos de programação sem entrar muito nos detalhes de implementação. O Smalltalk ajuda nesse ponto por que eu não preciso fazer uma distinção inicial entre as várias construções de uma linguagem. Em Smalltalk tudo se resume a envios de mensagem entre os diversos objetos que fazem o programa. Ainda assim, eu fico meio perdido em saber até onde e como ir. Por exemplo, como explicar lógica booleana? Nós já usamos os conceitos, mas eu não entrei em detalhes.

O fato é que meu irmão é melhor aluno do que eu sou professor :-) Eu lembro de como aprendi os conceitos mas não lembro de como fui ensinado. Como eu era muito curioso, acabei ignorando as aulas no colégio e lendo tudo que podia encontrar para aprender mais rápido. Assim, passei da compreensão de alto nível para a compreensão no nível da máquina por mim mesmo. Além disso, depois que os conceitos são fixados, aprender novas linguagens é apenas uma questão de compreender as diferenças semânticas e sintáticas da nova linguagem. O entendimento essencial já está fixado, de forma que explicar o básico para outra pessoal é um pouco estranho.

Apesar dessas dificuldades iniciais, estamos nos divertimos. Se alguém tiver indicações de material ou dicas, eu ficaria feliz em recebê-las. Especialmente indicações sobre a ordem em que os conceitos devem ser introduzidos.

§ 11 Responses to Ensinado programação"

  • Charles says:

    Tempos atrás pensei em criar uma linguagem de programação OO em português. Cheguei a falar sobre isso com alguns professores universitários, e na opinião deles não valia a pena. No fim das contas deixei o projeto de lado por falta de tempo, mas volta e meia aparece novamente a vontade de fazer tal linguagem…

  • Ronaldo says:

    Eu acho que seria uma excelente idéia, principalmente como uma linguagem de ensino. Depois que a pessoa aprende, normalmente ela consegue se virar com o inglês por que os conceitos estão fixados. Traduzir uma outra linguagem só vale a pena se o potencial de uso for grande, como o VBA do Office (que foi realmente traduzido). Assim, o ideal é fazer uma mesmo. Em resumo, vá em frente :)

  • Solução, pessoal: peguem Rebol (http://www.rebol.com) e traduzam todos os comandos. Linguagem boa e moderna é assim: permite redefinição de comandos, como Forth, PostScript, Logo, Tcl.

    E Rebol, ainda por cima, é feita para a internet, orientada a objetos, tem interface gráfica para mais de 20 plataformas… mas cuidado: vicia!

  • Ronaldo says:

    Interessante… Eu não sabia que era possível faz isso com Rebol. Eu já dei uma olhada de leve na linguagem, mas ainda não animei a pegar. Talvez seja uma boa hora.

  • erik says:

    gostaria de tirar uma dúvida, basicaente: como é feita um linguagem de programação?

  • Eduardo says:

    oi, eu tô dificuldade pra aprender linguagem mas no momento estou meio lascado acabei sendo reprovado em Algoritmo por não ter ligado muito pra materia agora estou decidido vou apreder a qualquer custo vou da uma olhada no Smalltalk e ver o q pode ajudar nos meus estudos… obrigado pelas inormação. se vc não se encomodar poderia passar mas umas outras informação!!
    muito obrigado.

  • Ronaldo says:

    Se você está aprendendo, Smalltalk é uma das melhores linguagens para ajudar no começo. Como ela é muito simples, os conceitos podem ser absorvidos rapidamente e colocados em prática sem problemas. Eu recomendo que você baixa a versão Squeak (http://www.squeak.org/) que é mais simples e menor que o VisualWorks. Além disso ela é especialmente voltada para o aprendizado e você pode começar a modificar os exemplos que vem com ela em poucos minutos.

    No mais, você deve praticar muito. A única maneira de realmente visualizar e aplicar os conceitos é escrevendo pequenos programas sobre os mesmos e indo passo a passo. Evite linguagens como o Java ou Delphi no ínicio, e fique nas mais simples funcionalmente como Python e Smalltalk.

  • Torcato says:

    Sou fã da linguagem de programação Python e recomendo-a como linguagem introdutória. É orientada a objetos, tem uma sintaxe simples e elegante e possui um interpretador interativo ótimo para testes e consultas rápidas e código sujo. Sua biblioteca padrão é muito robusta. Recomendo acessarem http://www.python.org

  • Ronaldo says:

    Hoje em dia eu também recomendo Python como linguagem introdutória. Até pouco tempo atrás, como você pode ver pelo próprio comentário meu acima, eu recomendava Smalltalk (e ainda recomendo em alguns casos), mas Python é uma linguagem que tem se mostrado muito boa para isso. Exceto pelos sublinhados, é perfeita :-)

  • Rock says:

    Estou aprendendo Visual Basic, primeira linguagem, será que eu teria melhor base se começasse por algumas dessas citadas acima?

  • Ronaldo says:

    Com certeza você aprenderia melhor se escolhesse outra linguagem mais interessante.

    Dijkstra, um dos grandes luminares da programação, disse: “The teaching of BASIC should be rated as a criminal offence: it mutilates the mind beyond recovery.”

    Recomendo que você tente Python ou Ruby. São perfeitamente adequadas epossuem excelentes tutoriais.

What's this?

You are currently reading Ensinado programação at Superfície Reflexiva.

meta