Opa,
Eu sou suspeito para opinar, pois meu livro é justamente sobre lógica de programação usando Python.
Eu fui aluno e professor na mesma escola (ensino médio técnico). O curriculum da escola era planejado para trabalhar com alunos leigos, muitos estavam vendo computadores pela primeira vez na vida (início dos anos 90...). Lógica de Programação I e Linguagem de Programação I eram matérias separadas e dadas em paralelo. Lógica com Portugol e Pascal em Linguagem de Programação. Quando aluno eu aprendi Basic em LPI :-D Ao começar a dar aulas, adotei Pascal. Eu já programava quando entrei no curso técnico, mas observei muitos amigos com dificuldades. O Portugol ajuda para quem não sabe nada de inglês, mas acho que isso é de curta duração. O inglês necessário para programar é mínimo e as poucas palavras que precisamos aprender são aprendidas rapidamente. Escrevíamos os algoritmos em Portugol (um Pascal aportuguesado e disfarçado que tinha até ponto-e-virgula!) e depois traduzíamos para Pascal. Estas operações eram vistas como trabalhosas, mas tinham algumas vantagens/desvantagens:
- Os alunos eram obrigados a rastrear o algoritmo em Portugol, tudo era corrigido a lápis! As aulas eram 100% em sala de aula.
- O uso do Portugol evitava o contato com o Turbo Pascal, que era todo em Inglês e esse sim assustava. Quando os alunos viam todos aqueles menus e mensagens de erros indecifráveis... a coisa pegava
- Uma turma sacou que podia escrever primeiro em Pascal e depois traduzir para o Portugol, era menos doloroso :-(
- Quando os algoritmos/programas crescem, fica quase impossível escrever tudo no papel.
Eu acredito que dentro de um plano coerente, essa separação ainda possa ser interessante. Minha opinião hoje é que uma linguagem como Python pode substituir amplamente as necessidades de um curso de introdução a programação, desde que os conceitos sejam apresentados numa ordem que facilite a compreensão e o entendimento da lógica por de trás disso. Para mim, o importante é explicar a lógica e depois a linguagem, por isso apresento o while antes do for no livro. Eu evito as mágicas o quanto posso, mas depois tento mostrar a maneira mais fácil de fazer as coisas.
Eu também acredito que o aluno fique mais motivado ao ver o quanto antes o resultado de seu esforço. Escrever em Portugol, rastrear, traduzir para Pascal, digitar o programa para saber que tem erro é triste e frustrante. Se a pessoa já tem dificuldades, tende a ficar ainda mais desmotivada :-(
A vantagem do curso técnico era que tudo era planejado. Não eram matérias correndo em paralelo, mas um programa de ensino sincronizado (coisa difícil de fazer em faculdades).
Eu não utilizaria Ruby num curso introdutório, mas não seria resistente em utilizar D, Go ou Lua. Eu utilizaria Ruby em um curso avançado de orientação a objetos ou construção de DSLs.
Para quem tem horror de palavras em inglês, acho que alguém da lista tinha um projeto ou versão do interpretador Python com as palavras chaves em português.
Minha opinião sobre aprender inglês, registrei aqui: http://junglecoders.blogspot.be/2008_01_01_archive.html
Tanto no curso técnico quanto da faculdade tive excelentes cursos de inglês técnico e acredito que eles são importantíssimos.
Programar só se aprende programando, eu sempre usei listas de exercícios para ajudar a galera a programar em casa :-D
[]
Nilo