Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Remover matérias de Programação Orientada a Objetos #2

Open
wants to merge 13 commits into
base: master
Choose a base branch
from

Conversation

ranisalt
Copy link
Collaborator

  • Primeiro de tudo, elas são conceitualmente quebradas: segundo a excelente argumentação de robotlolita neste Gist, Java, a linguagem escolhida, nem mesmo suporta corretamente o paradigma. Por que usar uma linguagem que não segue corretamente padrões de orientação a objetos em uma disciplina que deveria ensinar tal? Linguagens mais bem definidas como Python ou Ruby fariam melhor o trabalho.
  • Segundo, não faz o menor sentido aprender diretamente uma matéria de orientação a objetos antes mesmo de saber programar. Sem saber fazer um simples programa, é impraticável conseguir fazer o mesmo orientado a objetos. Isso torna a primeira matéria basicamente uma introdução de como se programar em Java. Seria muito mais sensato uma matéria de algoritmos e introdução à programação, preferencialmente usando uma linguagem neutra e multiparadigma (e que suporte corretamente os mesmos).

Abstraindo, à nivel de curso e ciência, aprender orientação a objetos separadamente não faz sentido. Veja esta imagem extraída da Wikipédia:
Lista de paradigmas
Existe uma infinidade de paradigmas, cada um solucionando um problema específico. Por que é dedicado um ano aprendendo apenas um deles e nem mesmo a (grande) maioria dos outros é mencionado durante o curso? Afinal, cientistas da computação são solucionadores de problemas e devem aprender múltiplos paradigmas, e não apenas um escolhido arbitrariamente.

Havendo quorum suficiente (comente +1), aplicarei este merge request na linha principal. Sugestões são sempre bem vindas.

@ranisalt
Copy link
Collaborator Author

Nota: o conteúdo desta matéria não necessariamente será excluído do curso, mas sim será transformado em optativo.

@Ionneto
Copy link

Ionneto commented May 8, 2015

+1
Creio que a remoção dessa matéria da nossa "linha principal" abre o espaço necessário e ideal para termos as tão necessárias matérias de algoritmos nas fases iniciais. Mais razão ainda para exclui-la, ou torna-la opcional se for o caso.

@lucasPereira
Copy link

Uma coisa é querer adicionar uma matéria de algoritmos (considerando que os alunos realmente tem uma base fraca nessa área). Outra coisa é remover uma das matérias mais importantes dentre aquelas que já existem nas primeiras fases. Ai você remove programação orientada a objetos e vai pegar um cara na quinta fase que sabe fazer muito bem um algoritmo mas que vai fazer um código espaguete igual faziam a 30 anos atrás. Ai pega e coloca esse mesmo cara pra trabalhar em um projeto em equipe pra ver o que acontece.

Foi falado ali das disciplinas de engenharia de software e nisso eu concordo. Agora, programação orientada a objetos é uma coisa totalmente diferente. Programação é com o que boa parte que se forma no curso vai trabalhar.

Sempre lembro de quando fiz SO 2 com o professor Guto. Essa é uma das matérias onde boa parte das coisas precisam ser programadas em baixo nível. Lembro de varias aulas onde o professor criticava a falta de organização e de legibilidade dos códigos. Criticava ainda a falta de utilização da orientação a objetos. Mais do que isso, ele mostrava dois códigos diferentes que geravam exatamente o mesmo assembly. A diferença era que um código podia ser facilmente compreendido e o outro, ao menos que o cara seja o Knuth, era uma merda pra ler.

Ninguém vai aprender a fazer um código descente com uma matéria de algorítimos. Da mesma forma, ninguém vai aprender a fazer um algorítimo com uma boa performance na matéria de programação orientada a objetos. Uma coisa não exclui a outra. Achar que essas matérias são mutualmente exclusivas no inicio curso é querer pender muito ou para ou lado ou para outro.

@ranisalt
Copy link
Collaborator Author

@lucasPereira desculpe se dei a entender ou realmente escrevi que o conteúdo seria removido, não é a ideia. A ideia é apenas retirar ela como matéria específica, visto que orientação a objetos é apenas um dos paradigmas que deveríamos aprender, mas deveria ser relocado para outro momento no curso.

Aliás, acho que sua visão de orientação a objetos é um pouco fora do real. Orientação a objetos não é o que aprendemos na ementa: classes e objetos com métodos não são exclusividade de OO, podemos aprender essa parte facilmente, por exemplo, implementando estruturas de dados; polimorfismo também não, visto que linguagens funcionais usam muito isso; muitas vezes aprendemos a fazer código na base da gambiarra nessas matérias (extraoficialmente, hehe).

Acredito que pra saber realmente o que é usar objetos (e outros paradigmas!!!), primeiro precisamos de uma base sólida de como programar de verdade. Construindo essa base sólida, e tendo alunos que sabem quando usar ponteiro e quando usar referência, ou como saber se o seu algoritmo realmente faz o esperado, aí sim podemos partir pra técnicas mais avançadas de organização de código.

Claro que esta é minha visão, um pouco afetada por eu já ter feito um curso técnico antes e ter estudado bastante programação; entrei com a base necessária para entender corretamente OO e vi colegas de turma terem muita dificuldade por não ter essa base.

Obrigado pelos comentários e faça suas sugestões no repositório também :)

@Ionneto
Copy link

Ionneto commented May 13, 2015

Sexta feira passada tivemos uma reunião ente o Calico, o PET e mais alguns convidados para debatermos esse assunto da mudança. A ideia que surgiu sobre POO nela foi de retirar isso do começo, onde o aluno não tem como entende-la completamente, ou pelo menos não tão facilmente quanto depois, e coloca-la mais a frente.

Não sei se concordam, mas além disso, creio que uma só matéria de POO, com seis créditos e uma ementa totalmente nova, seria o ideal

@lucasPereira
Copy link

Acho interesante a ideia do @Ionneto sobre a reformulação da ementa da matéria de POO. Vejo que a matéria de POO, como é dada hoje, funciona meramente como uma introdução a programação e pouco tem a ver com o paradigma.

@ranisalt valeu pelo feedback. Entendi o seu ponto, embora ainda discorde em alguns aspectos :-)
Só pra esclarecer a minha preocupação, o que temo é pela redução do número de matérias de programação (e pelo que entendi do seu último comentário acho que esse não é o objetivo) e não pela redução do número de matérias de POO em si. Acho que a ideia de criar uma nova e única matéria de POO (como o @Ionneto falou) é interessante desde que o lugar vago por POO II seja substituido por alguma outra matéria de programação.

E sim, tão logo que tenha mais tempo farei comentários no repositório também. Abraço;

@ranisalt
Copy link
Collaborator Author

Claro, a ideia é sim ter mais programação, mas programação de mais alta qualidade também. Não só aprender a escrever código, mas também otimizar esse código, saber se ele realmente está correto, saber sua complexidade e muitas outras coisas importantes que quase não são citadas.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

5 participants