Linguagem para caloiros

February 19, 2008

Ou, mais pomposamente, como o Nuno escreve: Primeiro contacto com programação por parte dos alunos do ensino superior. Ele defende os Haskell pelas suas razões. Cá eu, tenho uma opinião diferente, e quem me conhece destas bandas já o adivinhou: Python.

O meu curso até há uns tempos tem sido mais uma daquelas escolas horríveis de Java, mas com a remodelação para bolonha isso foi corrigido. Das quatro cadeiras de programação que temos, usamos Python, C, Java para as três primeiras e na quarta uma qualquer das anteriores (visto que se baseia apenas em algoritmos). Acho bem começar com Python. É uma linguagem de alto nível, que pela sua simplicidade serve perfeitamente para transmitir os conceitos básicos de ciclos, funções, recursividade, e dá aos alunos a capacidade de já poderem fazer programas e scripts que lhes sejam úteis no dia a dia. Depois é dado C para chegar a um nível mais baixo, que também é essencial saber. Depois na cadeira de POO damos Java, embora eu sugeria fortemente Ruby, mas nem é o que me preocupa mais.

Mas eu acho que está aqui uma coisa mal, a programação não devia ser ensinada no ensino superior, mas sim a nível do ensino secundário (e lá mais para a frente a nível do básico). Quem está na área científica, devia logo aprender a programar, porque o seu curso vai ter sempre uma cadeira de informática (ok, há umas poucas que não dentro da área da saúde) e ter capacidade de escrever um script em Python (ou uma outra) para automatizar o seu trabalho é sempre uma mais valia, e cada vez mais imprescindível. Já para economia, deviam saber trabalhar com bases de dados, mas se calhar também já estou a exagerar.

Estou também a ver se junto um grupo de alunos do 8º ano para lhes ensinar a programar, porque acredito que é essa a idade ideal. Linguagem? Python (ou IronPython). Depois mostro os resultados ;)

Tagged with: pt, programming, education, python
This post has 9 comments. Feel free to read them and leave your own.
Viva

Não sou do 8º ano, um bocadinho mais velho, mas estou interessado em aprender Python, se me quiseres dar umas dicas de como começar, agradeço.

Obrigado.
Cr.
Nesta página, do lado direito, um bocadinho por baixo da foto daquele modelo de alto gabarito, tens os meus contactos ;)
Viva!

Eu encontro-me a aprender haskell, nos meus tempos livres e sinceramente acho que não é boa para quem está a aprender a programar. É uma linguagem mto interessante, mas para comecar a programar não acho que seja boa opção.

Concordo que a melhor linguagem para aprender a programar seja python, mas talvez esta opinião deve-se ao facto de as linguagens que aprendi foram, por esta ordem: java->lisp->python-> haskell (? ainda estou a aprender conceitos)

E já agora, porque não aprender com perl?

Cumprimentos
Manifest0, qualquer defensor de PERL admite que PERL é demasiado obscuro para rookies. Para introdução a programação, tu deves querer uma linguagem simples, que te ajude a perceber os conceitos básicos da programação.

Eu até acho que devia ser dado com recurso a robótica, mas isso são fantasias minhas :)
Hum... respondendo ao teu desafio, confesso-te que na minha opinião não há linguagem certa para a tarefa, isto é, qualquer que seja a linguagem que escolhas irás deparar-te com problemas ao nível da aprendizagem, e digo-te isto por experiência. Concordo com a introdução da programação mais cedo nos cursos de vertente tecnológica, mas penso que ao nível superior é necessário ou será sempre necessário efectivar essa aprendizagem e dessa forma terias que dar de novo conceitos de programação.

Um dos aspectos que me preocupa enquanto docente é que a linguagem ao invés de servir como auxilio de aprendizagem consuma ela própria ou se torne de alguma forma como o objecto de estudo, ou seja, a linguagem que se escolhe para introduzir os alunos à programação deve ser o mais transparente possível e nunca ela própria ser alvo de grande estudo! É que no final destas cadeiras o que se pretende é que os alunos levem consigo fundamentos de programação, como variáveis, ciclos, vectores, ponteiros, estruturas e afins e não esta ou aquela linguagem.

Pessoalmente acho que as linguagens funcionais, por se aproximarem mais da matemática são mais transparentes, mas não tenho certeza que sejam melhores ou piores para ensinar Introdução à Programação ;)

Eu votaria qualquer coisa derivada do Lisp se pudesse, tipo Haskell or Arc, ou então Perl por ser mais flexível, no sentido em que daria alguma liberdade aos alunos sobre como iriam implementar ao invés de algumas linguagens mais restritivas como o C por exemplo... onde a linguagem é tão restrita que se torna ela própria no elemento de estudo! ;)
Já tinha dado a minha opinião sobre este tema na lista dos MSPs e continuo a afirmar que as duas melhores linguagens para se começar a programar são Python e Scheme.

Scheme acompanhado do "How to Design Programs: An Introduction to Programming and Computing" é uma excelente introdução na minha opinião. O livro ensina como formular ideias e como "converter" para código a solução para o nosso problema numa linguagem clara e acessivel.

No caso do Python, usar o "Beginning Python" pelas mesmas razões :P

O porquê destas duas linguagens? Abstração. Ninguém no seu perfeito juizo deveria dar introdução à programação em C (no entanto acontece frequentemente, nomeadamente na minha escola). Qualquer destas duas linguagens vai directo ao assunto e facilita o desenvolvimento de software. Nada de memory management, 10 tipos diferentes de TADs, sintaxe manhosa ou bagagem excessiva (*cof* Java *cof* C *cof* C++ *cof*).

E para quem acha que linguanges funcionais para se começar a programar é mau, a maioria das universidades lá fora (MITs e afins) usa o Scheme como linguagem nas famosas cadeiras de CS101... E pelos vistos não se dão mal...
Concordo completamente com o python, já o haskell nem por isso. Esta última é uma linguagem ideal depois de já se terem umas bases de java ou python ou outra linguagem qq "para caloiros". Confesso que depois de aprender haskell, a recursividade passou a fluir naturalmente no raciocínio. Haskell abre os horizontes.

Mas dizer que a programação deveria ser dada no básico e secundário é o mesmo que dizer que devia também ser dada segurança informática, ou então fazendo uma analogia, também deveriam ser dadas no básico e secundário aulas de Mecânica, dado que mais tarde quando conduzires vão sempre dar-te jeito para fazeres a manutenção do teu carro.

Apesar de tudo concordo contigo, mas deveria apenas ser dado para os alunos com interesse em seguir cursos orientados à informática. Todos nós sabemos que os verdadeiros bons programadores começam cedo, e isto apenas os ia manter mais interessados e motivados na escola além de densenvolver as suas capacidades.

Quanto aos restantes, conheço pessoas que odeiam só ouvir a palavra programação, acho que seria só colocar mais um entrave.
Só um pequeno comentário, Rogério: tu disseste que conheces muitos que odeiam ouvir a palavra programação, e eu também conheço muitos (inclusivé até de informática!)

A justificação que encontro para isto é que eles têm informática no primeiro ano do curso, quando o que lhes interessa é andar na farra o ano inteiro e só estudar na véspera do exame. Ora toda a gente sabe que programação é uma coisa que se tem de trabalhar um bocadinho em casa, ir explorando, ir fazendo as fichas que os professores dão, etc...

Agora se fosse dado no ensino secundário, o interesse gerado era capaz de ser bem maior, e já tinham essas bases para aplicar depois no curso. Claro que quem queira ir para área que nada tenham a haver com engenharia, não deveriam ter programação, eu salientei esse aspecto!
Eu acho que o Python é uma linguagem completamente errada para ensinar programação, a não ser para não-informáticos.

É uma linguagem demasiado alto-nível, com demasiados automatismos e simplificações. Quem começa por este tipo de linguagens nunca vai tolerar linguagens low-level como o C ou o C++, nem nunca vai conseguir interiorizar a relação dos mecanismos que as linguagens de programação fornecem com a forma como o hardware os trata (essencial para desenvolver software performante).

É como ensinar a conduzir com caixa-automática. Nem percebem como o carro funciona, nem nunca mais querem conduzir um carro com caixa manual.

Também não digo que o C seja a melhor linguagem, porque não é (demasiado low-level). Nem sequer o Java (impossível fugir à orientação por objectos).

Eu ainda acho que o Pascal standard é a melhor linguagem para ensinar os conceitos básicos de programação. É uma linguagem verbosa, simples e bem definida (os erros dos compiladores são normalmente claros e directos). E ainda por cima é uma linguagem quase irrelevante no mundo real o que faz com que os alunos se preocupem em aprender, em vez de criarem vícios.

Comment:

Author:
Email:
Website:
Comment:

About

I used to write in this blog, but I've found a better format to express myself. From now on, you may read my writings on ideas, programming and politics on my new wiki.

hCard

Name: Alcides Fonseca
Email:
MSN:
Gtalk:
Nov 24, 1988 40.197958, -8.408312

Tagcloud

Archives

Other links