FAQ da unidade curricular de Introdução à Programação

Geral

1. Qual o objectivo da unidade curricular?
A unidade curricular pretende começar a ensinar programação de computadores, partindo do príncípio que o aluno(a) nunca programou. Assume-se, no entanto, que tem os conhecimentos básicos de utilização de computadores e principalmente alguma maturidade matemática ao nível da que se obtém com a conclusão do ensino secundário ou profissional. Em termos de Engenharia Civil, poderíamos dizer, que vamos começar a aprender a fazer pontes partindo do príncipio que o aluno já sabe atravessar uma!

2. Programar é difícil?
Programar computadores é difícil. Programá-los bem, é muito difícil. É preciso muito trabalho, motivação, gosto, sacrifício, e, principalmente, é preciso programar muito. Mesmo muito. Vários anos, muitas horas por dia. Tal não deve ser motivo de espanto. O mesmo acontece a quem quer ser competente em qualquer actividade mais exigente. Claro que as capacidades inatas são muito importantes, mas elas não chegam. Basta ver a quantidade de treino que um pianista, um jogador de xadrez, um futebolista, um piloto, necessitam até atingirem um bom nível de competência. Para um programador de computadores é a mesma coisa: é preciso ter algum jeito, gostar muito, e treinar/trabalhar muito mais. Vale a pena ler o texto "Teach Yourself Programming in Ten Years" sobre o mito do "programador em 21 dias".

3. Se é assim tão difícil e demorado, será que o curso serve para alguma coisa?
Claro que sim! Um curso de (Engenharia) Informática é uma óptima preparação para quem quer ser um bom programador. Além da programação propriamente dita, permite compreender de forma estruturada o "Mundo" da Informática. O importante é trabalhar muito e esforçar-se ao máximo para obter os melhores resultados possíveis. Não apenas pelas notas propriamente ditas, mas principalmente porque só trabalhando muito e esforçando muito a cabeça, se aproveitará totalmente o curso. O curso é um guia que nos indica o que devemos estudar. Depois é "só" estudar e trabalhar o mais e melhor possível. Só assim se adquirirá o maior benefício de um curso de Informática (e não só!): ficar mais apto a aprender coisas novas.

4. Coisas novas? Então o curso não é para eu ficar a saber tudo o que é preciso? Claro que não! Nenhum curso pode ensinar "tudo o que é preciso". Em Informática tal é ainda mais verdadeiro pois é necessário aprender coisas novas a toda a hora (veja o artigo "Are too many programmers too narrowly trained" para mais sobre este tema). Já pensou que quando os seus professores foram estudantes ninguém lhes ensinou Java (a linguagem que vai utilizar nesta unidade curricular)! Pois é, nem sequer existia. E mesmo que existisse, poderiam muito bem ter aprendido outra(s) linguagens. Mais uma vez o mais importante é aprender a programar. Quanto a linguagens... quanto mais linguagens (realmente) diferentes melhor.

5. Então o que é que devo aprender?
Deve compreender bem conceitos que servem para compreender muitas "novidades" que vão surgindo. Por exemplo, quem já sabe trabalhar com um telemóvel facilmente aprende a trabalhar com um novo modelo que surja. Mesmo que este modelo tenha uma nova funcionalidade (invente uma!). Na verdade, a maioria das habilidades serão idênticas às que o  antigo modelo já tinha, embora possam ser mais rápidas, mais coloridas ou estarem num menu diferente. Quem sabe trabalhar com um sabe trabalhar com muitos e rapidamente aprende a trabalhar com um novo. Os tais conceitos são conhecidos (chamada telefónica, agenda, sms, e as outras coisas todas que ninguém utiliza ;-)).

6. Conceitos? E o programa/linguagem/...  (prencher com a sua preferência)?
Num curso de formação aprende-se a trabalhar com  tecnologia/linguagem/ferramenta  específica (por exemplo, a linguagem ABC versão 3.4.2). Um curso superior não é um desses cursos de formação, nem sequer um conjunto desses cursos. Num curso superior, a ênfase é nos tais conceitos que servirão para mais facilmente aprender a trabalhar com muitas (todas?) as tecnologias/linguagens/ferramentas específicas de que venha a necessitar. Claro que pelo caminho aprenderá várias dessas tecnologias/linguagens/ferramentas mas esse não é o objectivo principal. É apenas a consequência.

7. Porque é que os sites e livros recomendados são em inglês?
Porque quem escolheu não conhece nenhuns em português que julgue serem melhores para os objectivos da unidade  curricular.

8. Mas isto é um curso de Informática. Não é um curso de Inglês! E se eu não souber inglês?
Alguém que pretende ser um engenheiro informático, tem de aprender inglês e quanto mais depressa melhor. A língua inglesa é, provavelmente, o conhecimento extra-curricular mais importante que um aluno de Informática deve obter. Para tal o melhor é ler em inglês. A Internet é obviamente a fonte mais óbvia, mas as revistas e livros em papel também são uma boa (e adicional) opção.

9. Conhecimento extra-curricular? Que dizer que além do curso vou ter de aprender mais coisas??
Claro que sim! Os conhecimentos que se obtém ao ser aluno de um curso superior (ou até outros) não se devem restringir aos temas apresentados nas unidade curriculars. Há muitas outras coisas para aprender/descobrir que não são leccionadas nas aulas ou o são de forma incompleta! Entre elas, e no caso de alunos deste curso, estão, por exemplo: a língua inglesa, utilização de software (processadores de texto, folhas de cálculo), procurar conteúdos na Internet, montar e desmontar computadores, quais os grandes fabricantes de computadores, História da Informática e toda a cultura geral possível. Para tal é preciso ler, ler muito. Revistas portuguesas e estrangeiras. Livros portugueses e estrangeiros. Conversar, conversar sobre informática, mas também sobre ciência, filosofia, política, etc., etc..

10. Pois. Mas voltemos ao que interessa. O que é que devo fazer para aprender o mais possível nesta unidade curricular?
I am always ready to learn, although I do not always like being taught.
                 
Winston Churchill
11. E qual a melhora maneira de aprender pouco e/ou não fazer Introdução à Programação?
Infelizmente existem várias formas bem conhecidas de não fazer Introdução à Programação prejudicando assim todo o curso, mesmo que não pareça... Aqui estão as mais utilizadas:
Keep away from people who try to belittle your ambitions. Small people always do that, but the really great make you feel that you, too, can become great.
                Mark Twain
The greatest barrier to success is the fear of failure. 
                Sven-Göran Eriksson

Utilidades
12. Devo comprar o livro. Onde o posso fazer?

Não é obrigatório mas é boa ideia desde que depois o leia! É uma forma de ver mais exemplos de código. O livro também será útil para Programação Orientada pelos Objectos (do segundo semestre). O melhor local é na Internet. Em http://www.addall.com/ pode comparar os preços entre algumas dezenas de livrarias online. Uma das melhores é a amazon no Reino Unido.


Beja, 30 de Setembro de 2007 (revisto em 17 de Setembro de 2015)
João Paulo Barros