O que é o design sistemático de programas (“How to Design Programs”)?

(Traduzido e adaptado de What is TeachScheme!)

Muitos têm perguntado aos autores da abordagem de design sistemático de programas e a linguagem Racket/Scheme para ensino de programação. A seguir os autores colocam alguns dos principais questionamentos sobre a abordagem e suas respostas:

Q: Essa disciplina é sobre programação em Racket?

  • A: Não, essa disciplina é sobre o design sistemático de programas para iniciantes, começando do “be-a-bá”, e independente da linguagem de programação. Inclusive o currículo completo inclui a linguagem Java como continuação natural.

Q: Então porque usar o Racket?

  • A: Na verdade não usamos “o Racket”. Usamos uma série de linguagens de ensino, sendo cada sucessora um pouco mais expressiva que a anterior. Tais linguagens emprestam elementos do Racket, que é um membro da família de linguagens do LISP.

Q: A ideia do design sistemático é realmente útil em todos os tipos de linguagens de programação?

  • A: Sim. Muitos estudantes que passaram por esse curso aplicam as receitas de projeto em todos os tipos de linguagem: assembly, Python, Perl, Ruby, Java, etc. De fato, existem professores que adotam linguagens diferentes para ensinar a mesma ideia.

Q: Então o curso não é sobre programação funcional?

  • A: Não, o curso é sobre design sistemático de todos os tipos de programas, o que inclui programas imperativos e orientados a objeto.

Q: Por que então estamos aprendendo a fazer programas em estilo funcional?

  • A: Consideramos o estilo funcional de programação o melhor ponto de partida por duas razões. Primeiro, a decisão parte de anos de experiência projetando sistemas grandes em assembly, Pascal, C, e ensinando com essas mesmas linguagens. No entanto, mais importante que isso, é que a programação funcional foca os programadores nos valores, no fato de que cada função deve produzir um valor, e que esse valor pode ser testado.
    A segunda razão é que consideramos o estilo funcional o ponto de partida apropriado até mesmo para alunos do ensino médio e básico. No ensino básico, programação funcional reforça álgebra e deixa claro que você pode criar animações, jogos, e todo tipo de coisas divertidas com álgebra. No ensino médio, programação funcional combina com trigonometria e geometria, com cálculo e lógica, e até mesmo com ciências que usam modelos matemáticos (física, economia, etc).

Q: Então todo mundo deveria usar linguagem funcional para todos os projetos?

  • A: De jeito nenhum! Não somos fanáticos por funcional; o próprio Racket – a linguagem que escolhemos – não é puramente funcional, pois suporta atribuição de variáveis, estruturas e objetos mutáveis, construções iterativas, etc. Todo programador deveria pensar funcionalmente e começar funcionalmente, mas é crítico que se conheça quando atribuições de variável e mutação são necessários. Isto garante que são usados de forma correta.

Q: Mas o estilo imperativo e iterativo é tão comum. Por que não mostrar aos novatos o estilo mais comum?

  • A: Experiências mostram que um entendimento inicial do estilo funcional produz programadores significantemente mais fortes do que uma imersão imediata na monocultura da programação orientada a objetos (POO).

Q: Isso não quer simplesmente dizer que um bom programador deve ter estudado várias linguagens diferentes?

  • A: É exatamente o que significa. Algumas universidades, e.g. CMU e Harvard, trocam a ordem. Eles ensinam programação convencional primeiro e usam uma abordagem similar à deste curso em uma segunda disciplina. A chave é, no entanto, que os estudantes produzam programas interessantes em qualquer estilo.

Q: Mas os alunos não ficam despreparados quando vão fazer estágio?

  • A: Sim e não. Sim, porque consideramos ruim mandar alunos para o mundo real com apenas um curso de programação realizado. O que você diria se seu farmacêutico contratasse um estudante após um único semestre de química?
    E não, porque experiências em várias universidades sugerem o contrário. Após terem passado por este curso, muitos estudantes conseguiram mais estágios e os empregadores demonstraram muita satisfação. Muitos desses empregadores constataram que formandos que não passaram pelo curso são piores projetistas (designers) do que os estagiários do início da graduação que tiveram o curso.

 

Anúncios

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s