Sintaxe de C e Java são prejudiciais para iniciantes

281 views
Skip to first unread message

Fernando Masanori Ashikaga

unread,
Jul 12, 2014, 8:29:28 PM7/12/14
to python...@googlegroups.com
"Results show that many aspects of traditional C-style syntax, while it has influenced a generation of programmers, exhibits problems in terms of usability for novices".
Andreas Stefik and Susanna Siebert: "An Empirical Investigation into Programming Language Syntax." ACM Transactions on Computing Education, 13(4), Nov. 2013.


Fernando Masanori Ashikaga

unread,
Jul 12, 2014, 8:56:07 PM7/12/14
to python...@googlegroups.com
Mais ainda: "Perl and Java did not accuracy rates significantly higher than a language with randomly generated keywords" 

Fabio Oliveira

unread,
Jul 12, 2014, 9:54:13 PM7/12/14
to python...@googlegroups.com
Mestre, eu fiz faculdade de analise de sistemas. Mas aprendi a programar com seu curso de python.


Em sábado, 12 de julho de 2014 21h29min28s UTC-3, Fernando Masanori Ashikaga escreveu:

Abelardo Vieira Mota

unread,
Jul 13, 2014, 9:14:19 AM7/13/14
to python...@googlegroups.com
Quase 40 páginas é bem pesado rs 
Vai fazer algum resumo ou escrever algo sobre em algum lugar? Não tenho interesse suficiente agora para ler esse documento, mas gostaria de ler algo mastigado :)

Engraçado que ontem estava vendo esta página:

que acredito tratar de assunto similar, linguagens de programação sob o ponto de vista do ensino de programação.

Fernando Masanori Ashikaga

unread,
Jul 13, 2014, 9:46:57 AM7/13/14
to python...@googlegroups.com
Estou incorporando os resultados nas minhas apresentações que tenho feito sobre Python no ensino de programação. Eu vou submeter tudo isso mastigado como uma palestra na Python Brasil desse ano. Em 7 de julho, numa entrevista ao People of ACM, D. Knuth disse: "the most common fault in computer classes is to emphasize the rules of specific programming languages, instead of to emphasize the algorithms that are being expressed in those languages. It's bad to dwell on form over substance". Ensinei programação muitos anos com C e depois com Java. Uma boa parte do tempo os alunos ficam se debatendo com problemas de sintaxe e conceitos necessários para entender a linguagem em si, enquanto, para o iniciante, o que é importante é o algoritmo em si. Veja por exemplo a implementação do Quicksort em Python [1]. Nele você foca apenas no algoritmo, tente explicar os conceitos no mesmo algoritmo em C...



--
--
------------------------------------
Grupo Python-Brasil
http://www.python.org.br/wiki/AntesDePerguntar
 
<*> Para visitar o site do grupo na web, acesse:
http://groups.google.com/group/python-brasil
 
<*> Para sair deste grupo, envie um e-mail para:
python-brasi...@googlegroups.com

---
Você recebeu essa mensagem porque está inscrito em um tópico no grupo "Python Brasil" dos Grupos do Google.
Para cancelar inscrição nesse tópico, acesse https://groups.google.com/d/topic/python-brasil/u2a1zjaCrfU/unsubscribe.
Para cancelar inscrição nesse grupo e todos os seus tópicos, envie um e-mail para python-brasi...@googlegroups.com.
Para mais opções, acesse https://groups.google.com/d/optout.

Abelardo Vieira Mota

unread,
Jul 13, 2014, 10:03:38 AM7/13/14
to python...@googlegroups.com
Eu penso que o esforço empregado em conhecer e adquirir intimidade com uma linguagem de programação tem seu valor.

Uma analogia é a constante discussão que há em minha faculdade, Computação UFC, em que os alunos criticam a obrigatoriedade de certas disciplinas, como a "métodos numéricos".
Em minha graduação eu pertenci ao grupo dos críticos ferrenhos: ora, não vislumbro utilidade para aquilo!

Hoje vejo que incorria em dois erros, pelo menos:
  1. Atribuia a mim autoridade para decidir o que será útil ou não
  2. Ignorava que, além do conhecimento da disciplina, o processo de aprendizado também gera conhecimento, além de favorecer outros atributos, como, por exemplo, a capacidade de aprender algo abstrato(programação) sob restrições concretas(sintaxe difícil)
Penso que a discussão quanto a sintaxe de linguagens de programação, ou de outros aspectos relevantes no aprendizado de programação, passam pela mesma questão: devemos identificar bem se estamos falando de uso de linguagem de programação exclusivamente como ferramenta auxiliar ao aprendizado de programação ou não.
Só acho válida a crítica às linguagens de programação do ponto de vista da sintaxe quando falamos no primeiro caso. No último, focar em sintaxe é esquecer toda uma gama de conhecimentos e atributos que podem ser favorecidos durante o aprendizado.

Fernando Masanori Ashikaga

unread,
Jul 13, 2014, 10:44:50 AM7/13/14
to python...@googlegroups.com
Sim, o processo é importante, mas não no primeiro semestre de um curso de introdução à programação. Os alunos podem aprender C, Java ou outra linguagem nos semestres seguintes. Fiz Computação no IME-USP e aprendi muitas linguagens, porém o foco nunca foram as linguagens, era trabalho do aluno se virar para aprender a sintaxe delas e aplicar nas diversas disciplinas. Além disso não devemos esquecer que hoje programação é ensinada não apenas para pessoas de Ciências da Computação. Muitas vezes somos reducionistas e julgamos os méritos de uma linguagem, para ensino de programação, pensando somente no nosso caso particular. Hoje, programação é ensinado para jornalistas, advogados, biólogos, etc. No Python para Zumbis fiquei espantado com a quantidade de pessoas que precisavam aprender programação, que eram de outras áreas. Quanto ao seu comentário sobre a validade de aprender uma linguagem com sintaxe tradicional para iniciantes: na FATEC a introdução à programação é dada em dois semestres, no primeiro exclusivamente em Python, foco nos algoritmos e no segundo semestre em C, fazendo projetos um pouco maiores. Em outra disciplina aprendem OOP com Java. Desta forma temos o melhor dos dois mundos. Na minha opinião, acho errada a abordagem de deixar apenas um semestre para aprender introdução à programação (para públicos gerais) e pior ainda se for dada exclusivamente em Java ou C. 


Abelardo Vieira Mota

unread,
Jul 13, 2014, 10:55:49 AM7/13/14
to python...@googlegroups.com
Massa!

Ótima a ideia de ter duas fases do ensino de Fundamentos de Programação, a primeira com uma linguagem de sintaxe simples, a segunda já se permitindo usar linguagens com sintaxes mais complicadas.

Com relação ao ensino de programação para pessoas de outras áreas: conhece alguma iniciativa de estudo sobre isso, usando Python?
Recentemente ajudei um rapaz da engenharia em minha universidade em um trabalho da disciplina de introdução a programação deles. Fiquei surpreso por ver que o professor usou Python como linguagem. E, diante do interesse desse rapaz por aprender melhor sobre a linguagem, pensei em montar um curso de introdução a Python para o pessoal das engenharias, mas aí deparei com a questão de quais peculiaridades da engenharia podem influenciar o ensino de Python: como motivá-los, com exemplos que são familiares a eles, qual learning path seguir etc.

Fernando Masanori Ashikaga

unread,
Jul 13, 2014, 11:11:49 AM7/13/14
to python...@googlegroups.com
Uma motivação boa de Python para engenheiros é o ecossistema Python científico (pandas, scikit-learn, numpy, matplotlib, IPython, etc). Hoje Python é talvez a melhor opção open source para o Matlab (licença full == 7 mil obamas). Aqui em São José dos Campos temos a Embraer, que usa muito Python para tratamento de entradas e saídas dentro dos processamentos científicos. Sei do uso na Petrobrás também. O IPython tem lançado features matadoras, você consegue usar o IPython Notebook para compartilhar, via navegador, códigos Python integrados com outras linguagens como Julia ou R, ter gráficos feitos no D3 dinâmicos, etc. Veja, por exemplo, este curso de Aerodinâmica/Hidrodinâmica que usa o IPython Notebook, da doutora Lorena Barba, da Universidade George Washington https://github.com/barbagroup/AeroPython


--

Alex Chiaranda

unread,
Jul 13, 2014, 2:09:56 PM7/13/14
to python...@googlegroups.com
Gostaria de deixar minha opinião

não vejo como a sintaxe das linguagens (veja bem, estou dizendo a sintaxe e não a linguagem) citadas no subject desta mensagem possa ser prejudicial de qualquer forma ao aprendizado de iniciantes, na verdade penso justamente o contrário pois a sintaxe da linguagem C é bem clara e regrada ao ponto de permitir apenas o mínimo de erro sintático e principalmente de escopo. Acredito sim que precise de um pouco de dedicação e porque não estudo para aprender e entender essas regras o que é facilmente alcançado ao se utilizar a linguagem em seus projetos, dever de casa, trabalhos, etc.

Eu não sou tão velho, mas nos meus 35 anos também já não sou tão jovem, porém pude viver dois lados de uma realidade. Primeiro como o desenvolvedor mais novo em um time já experiente, e hoje muitas vezes sou o mais velho, tanto em idade quanto em experiência, e o que eu observo é que os mais jovens hoje não tem mais paciência para estudar determinado tópico, no caso a linguagem de programação e sua sintaxe. Ao invés disso ficam colocando defeitos e obstáculos se escondendo atrás da sintaxe de linguagens como python, ruby e por incrível que parece já vi até quem esteja usando o Swift recém lançado pela Apple como desculpa para não se aprofundar em Objective-C.

Não estou dizendo que python ou ruby ou qualquer outra linguagem dinâmica mais recente não ofereça vantagens (sintáticas ou não) se comparadas a linguagem C ou outras mais antigas, e ainda digo que é o mínimo que eu espero dessas linguagens pois elas são mais novas, e se basearam de alguma forma em C e nas suas deficiências e complexidades, então o mínimo que eu espero é que seja mais simples escrever um programa em python ou ruby, do que em C. A evolução é bem vinda e necessária.

Infelizmente eu vejo que hoje as matérias que antigamente se destinavam aos "Algoritmos de Programação" se perderam e deram lugar as disciplinas que já começam colocando o aluno para escrever código. Não estou dizendo que o contato com o código e poder ver o resultado o mais rápido possível seja ruim, ao contrário, é ótimo; estou dizendo que antigamente, aliado a isso, era criada toda uma base de pensamento e planejamento antes de sair codificando para ver o que acontece. Eu sinto que os jovens não tem essa base sólida, não conseguem entender o valor de pensar no que vão fazer antes de fazer.

Quando se tem uma base sólida de pensamento e se sabe o que precisa ser feito, e como ser feito, a LINGUAGEM e por consequência sua SINTAXE são apenas ferramentas que vão te auxiliar a chegar a solução que você planejou.

Me desculpem por ter me estendido mais do que eu planejava, mas estou com esse assunto me incomodando há um bom tempo e essa foi uma boa oportunidade para colocar em palavras o que eu sinto sobre o assunto.


Gostaria de reforçar que isso não é uma crítica a ninguém, ESSA É A MINHA OPINIÃO sobre um assunto que é mais abrangente que o tópico inicial desta mensagem.

Abs,

Bruno Coelho

unread,
Jul 13, 2014, 2:50:15 PM7/13/14
to python...@googlegroups.com
"A sintaxe não deve ficar no seu caminho."

Quando iniciei com programação foi C++ e Java, adotada nas graduações. Mas empresas exigem competências diferentes, sem falar na curva de aprendizagem necessária pra estas linguagens. Essa formação funciona a médio prazo, e são importantes para compreender noções basais, no entanto, é ineficiente no presente estágio do mercado.

Python direciona as pessoas para problemas os quais precisam ser solucionados, sem inserir complicações desnecessárias. Outro exemplo interessante é a linguagem Go, desenvolvida para trabalhar com concorrência. Em termos de formação, as melhores plataformas de ensino online tem Python entre as primeiras opções, em conjunto com front-end.

E não poderia ser diferente. O aumento de dados exige que o tempo de internalização de um tecnologia seja curto devido ao rápido surgimento constante de serviços e APIs de terceiros.

Em sábado, 12 de julho de 2014 21h29min28s UTC-3, Fernando Masanori Ashikaga escreveu:

Fernando Masanori Ashikaga

unread,
Jul 13, 2014, 4:00:17 PM7/13/14
to python...@googlegroups.com
Alex, todo mundo pode dar sua opinião. No entanto, o que apresentei não é já uma opinião, mas resultado de uma pesquisa científica, cujo resultado foi publicado em um jounal da ACM, cujo artigo pode ser visto aqui também https://www.dropbox.com/s/26xsrd4g8ni76gz/a19-stefik.pdf

Shander Lyrio

unread,
Jul 13, 2014, 5:35:12 PM7/13/14
to python...@googlegroups.com

Caro,

Não deixa de ser uma opinião, a diferença é que se desenvolveu uma
forma de se defender esta opinião através de artigo científico. Todo o
artigo científico começa assim, você tem uma ideia de que algo seja
verdade, começa a pesquisar de forma a tentar provar sua teoria, raras
vezes, eu vi um artigo científico que partiu de uma premissa e concluiu
outra. Esta minha teoria é corroborada com esta pequena parte do
trabalho: "From our perspective, one community that stands to benefit
most from controlled experiments on programming language design is
students." De minha perspectiva, eu acredito que quem mais se beneficia
deste tipo de ambiente é o profissional que não é da área de computação
que precisa fazer algum "programa" para testar alguma teoria mas não
precisa ser um programador para fazê-lo.

Existem artigos que dizem que ovo faz mal a saúde, assim como existem
os que dizem que ovo faz bem. O mesmo para tomate provocar câncer e
tomate combater câncer. Se eu quero provar que um alimento faz bem eu
coloco ele de forma regrada em uma dieta, se quero provar que ele faz
mal, eu coloco apenas ele em uma dieta.

Da mesma forma, eu sem nenhuma dificuldade, conseguiria escrever um
artigo científico mostrando que a dificuldade que as pessoas tem em
aprender a programar é em sua maior parte (grande maior parte), falta de
intimidade com áreas de conhecimento como lógica e matemática. Eu acho
muito difícil que alguém tenha escolhido usar Python especialmente pela
sua sintaxe: falta de colchetes, não necessidade de terminar um comando
com ; (ponto-e-vírgula), seu "for" estiloso ou obrigatoriedade de
edentação. Isto é puro açúcar sintático. Quem escolhe Python é pela sua
poderosa estrutura interna, sua riquíssima API, pelas baterias
incluídas, "eu acredito" que sintaxe seja o item menos relevante de
Python, e discutir isto é tão importante quanto discutir o novo corte de
cabelo do Neymar.

Estes dias eu tive uma calorosa discussão em uma lista cujo foco é Java
porque os programadores simplesmente não tinham ideia de teoria básica
de conjuntos. Teimaram que um dado de tipo boolean aceitavam 3 valores,
true, false e null. Na verdade confundiram a diferença entre Boolean e
boolean, a diferença entre objeto e tipo primitivo, entre referencia e
valor. Isto é ridículo, e típico de quem não aprendeu as bases da
computação. Ou confundiram com algum tipo de algum banco de dados, em
que você pode ter um valor verdadeiro, falso ou não ter valor nenhum
gravado, um problema antigo dos DBA's.
Apesar de null significar ausência de valor, em Python (True or null)
é uma estrutura válida, retorna True, em qualquer programa comum é
exatamente isto que se espera, o Python é mágico, mas se eu quero
explicar as bases de ciência de computação isto pode mais atrapalhar do
que ajudar, só imagine lógica binária com "null". É claro que se eu
estiver explicando para qualquer outro usuário, que não seja programador
por profissão, mas que precise fazer algum pequeno programa específico,
isto é tranquilamente válido.

Para mostrar que artigos surgem para tentar defender pontos de vista,
procurei rapidamente e encontrei um que casa exatamente com o meu ponto
de vista, é um artigo de 2008 que saiu na revista CrossTalk. Muito
menor, não é científico, mas vale a pena a leitura, ele é assinado por 2
professores eméritos de Ciência de Computação da Universidade de Nova
York, portanto para mim tem um peso enorme.

http://goo.gl/CfQOOe

Um forte abraço,

--
Shander Lyrio



Em 13-07-2014 17:00, Fernando Masanori Ashikaga escreveu:
> Alex, todo mundo pode dar sua opinião. No entanto, o que apresentei não
> é já uma opinião, mas resultado de uma pesquisa científica, cujo
> resultado foi publicado em um jounal da ACM, cujo artigo pode ser visto
> aqui também https://www.dropbox.com/s/26xsrd4g8ni76gz/a19-stefik.pdf
>
> Em domingo, 13 de julho de 2014 15h09min56s UTC-3, Alex Chiaranda escreveu:
>
> Gostaria de deixar minha opinião
>
> não vejo como a sintaxe das linguagens (veja bem, estou dizendo a
> *sintaxe* e não a linguagem) citadas no subject desta mensagem possa
> *solução* *que você planejou*.
> <https://groups.google.com/d/topic/python-brasil/u2a1zjaCrfU/unsubscribe>.
> Para cancelar inscrição nesse grupo e todos os seus tópicos,
> envie um e-mail para python-brasi...@googlegroups.com.
> Para mais opções, acesse https://groups.google.com/d/optout
> <https://groups.google.com/d/optout>.
>
>
> --
> --
> ------------------------------------
> Grupo Python-Brasil
> http://www.python.org.br/wiki/AntesDePerguntar
>
> <*> Para visitar o site do grupo na web, acesse:
> http://groups.google.com/group/python-brasil
>
> <*> Para sair deste grupo, envie um e-mail para:
> python-brasi...@googlegroups.com
>
> ---
> Você recebeu essa mensagem porque está inscrito no grupo quot;Python
> Brasil" dos Grupos do Google.
> Para cancelar inscrição nesse grupo e parar de receber e-mails dele,
> envie um e-mail para python-brasi...@googlegroups.com
> <mailto:python-brasi...@googlegroups.com>.

Abelardo Vieira Mota

unread,
Jul 13, 2014, 6:20:57 PM7/13/14
to python...@googlegroups.com
@Shander

O problema são as deduções falaciosas que são feitas. No exemplo do ovo, acredito que as pesquisas não apontem, unicamente, que ele é saudável ou nocivo à saúde. Falam em termos de 'colesterol', por exemplo. O peso maior da pesquisa, então, deve ser dado a essa conclusão primária, e não à conclusão derivada, e menos objetiva, de que o fato de o consumo de ovo influenciar na disponibilidade de 'colesterol' é um benefício/malefício à saúde.

Sem querer ofender, mas eu gostaria de ver esse artigo mostrando que o maior dificultador no aprendizado de programação se deve a carências em matemática.
Eu, por exemplo, escolho Python para diversas tarefas(scripts, web e análise de dados) sim pela sua sintaxe, tanto por achar ela agradável, tanto porque já estou bastante familiarizado com ela, de forma que sinto que as ideias, a lógica da programação flui mais facilmente com ela.

O ponto que acho que é defendido na discussão sintaxe+Python é o fato de: ao utilizar uma linguagem de programação no aprendizado de uma ideia, a dificuldade no aprendizado da linguagem interferirá no aprendizado da ideia.
Daí eu dizer que é preciso deixar claro qual a finalidade do aprendizado: 
  • se for, por exemplo, apenas o aprendizado de Bubble Sort, o esforço de aprendizado de uma linguagem mais complexa(e aqui entra o aspecto sintaxe) não parece se justificar.
  • já se for para apresentar linguagens de programação, um paradigma de programação etc, a dificuldade no aprendizado da linguagem torna-se parte da dificuldade do aprendizado da ideia em si, e, portanto, parece mais justificável.


felipeobastos

unread,
Jul 13, 2014, 6:31:31 PM7/13/14
to python...@googlegroups.com
Concordo. Pois a sintaxe é muito complexa (em JAVA) e difícil em C/C++. Quando se trata de iniciantes.
Acredito que se eu aprendesse Python mais cedo teria muito mais facilidade, mas, aprendi programação em jogos.Então não vejo muitos obstáculos. 

Fernando Masanori Ashikaga

unread,
Jul 13, 2014, 6:56:52 PM7/13/14
to python...@googlegroups.com
Complementando o Abelardo, pode-se opinar que C é melhor para ensinar programação, também posso opinar que não. Nossas opiniões, no entanto são reforçadas por um conjunto grande de fatores, um deles que citei é a sintaxe, outro são as baterias inclusas, concordo em gênero, número e grau (não disse em nenhum momento o contrário), ler artigos também ajuda a formar a opinião, principalmente se são da ACM. Além disso para formar essa opinão levo em conta também a própria experiência pessoal, ensinando vários anos, tanto em C, quanto com Java e agora Python. Escutar o que as pessoas dizem faz parte desse processo. Neste caso escutei vários docentes de outras universidades e tanto sintaxe, baterias inclusas, ecosistema científico e comunidade ativa são importantes fatores que muitos deles citam para adotar Python. Hoje Python lá fora é muito usado para ensino de programação, volto a reforçar, não restrito aos cursos de Ciências da Computação. 


--
--
------------------------------------
Grupo Python-Brasil
http://www.python.org.br/wiki/AntesDePerguntar
 
<*> Para visitar o site do grupo na web, acesse:
http://groups.google.com/group/python-brasil
 
<*> Para sair deste grupo, envie um e-mail para:
python-brasi...@googlegroups.com

---
Você recebeu essa mensagem porque está inscrito em um tópico no grupo "Python Brasil" dos Grupos do Google.
Para cancelar inscrição nesse tópico, acesse https://groups.google.com/d/topic/python-brasil/u2a1zjaCrfU/unsubscribe.

Para cancelar inscrição nesse grupo e todos os seus tópicos, envie um e-mail para python-brasi...@googlegroups.com.
Para mais opções, acesse https://groups.google.com/d/optout.

Alex Chiaranda

unread,
Jul 14, 2014, 8:42:01 AM7/14/14
to python...@googlegroups.com
@Fernando, eu não disse que o artigo refletia a sua opinião, ou a de ninguém aqui do grupo, eu entendi que estava divulgando uma notícia, bem interessante por sinal.
@Aberlardo, acho que não é necessário nenhum estudo ou artigo científico para observar que pessoas com facilidade em lógica e exatas aprendem a programar com mais facilidade, você não acha ?

Acredito que o @Shander entendeu o que eu estava querendo dizer. Eu gosto muito de python, uso python para várias coisas (web principalmente), mas se tiver que fazer o processamento de um arquivo grande (como já tive que fazer) não vou fazer em python, pois nunca vai ter a performance que eu preciso, também não vou fazer em Java, provavelmente eu faria em ANSI C pela facilidade em utilizar structs para definir o formato dos dados lidos do arquivo e pela velocidade de comunicação com o sistema operacional para operações de leitura e escrita. Eu sei que posso chegar a ter a mesma performance em python ou Java mas o trabalho que teria para isso seria enorme e acredito que não valeria a pena.

Eu também não disse que python é ruim para ensinar linguagens de programação, eu disse que a linguagem não deveria ser uma barreira, pois ela é apenas a ferramenta que você vai usar para expressar uma idéia ou algoritmo ou solução.

Acredito que esse é o ponto, quando a idéia está clara, expressá-la em código é mero detalhe

Gosto da discussão saudável, por favor compartilhem mais o que vocês pensam sobre isso.

Abs,

Fernando Masanori Ashikaga

unread,
Jul 14, 2014, 9:03:42 AM7/14/14
to python...@googlegroups.com
Alex, justamente esse é o ponto, a opinião de vários docentes, é de que, baseada em vários artigos, experiência, etc. a sintaxe é uma barreira para ensinar o algoritmo, pois nos cursos de programação de grande parte das instituições o foco é dado na linguagem e não no algoritmo. Se você ensinar programação em Java ou C vai perder uma boa parte do tempo na sintaxe, quando deveria focar o algoritmo (lógica de programação). Lembro novamente que não devemos ser reducionistas e pensar somente no aluno de Ciências da Computação. Python, na minha opinião, é a que menos atrapalha nesse sentido, pois é quase um pseudo-código, além de ajudar a adquirir práticas que ajudam a legibilidade do código, como a identação. Numa entrevista de 7 de julho passado, também na ACM, Donald Knuth disse que esse é o grande erro dos atuais cursos,  "the most common fault in computer classes is to emphasize the rules of specific programming languages, instead of to emphasize the algorithms that are being expressed in those languages. It's bad to dwell on form over substance". Nos depoimentos de muitos dos atuais alunos do Python para Zumbis, agradecendo que agora aprenderam a programar, muitos reclamaram que nas suas faculdades tivem aula de Java ou C e não de programação. Ensinar a programar não deveria depender de uma linguagem concreta, concordo, mas hoje o aluno não aguenta assistir uma aula abstrata, giz e lousa, sem colocar a mão na massa. A atual geração, por ser altamente conectada, tem uma necessidade pscicológica de feed back mais rápido (isto é estudo de doutorado de um docente alemão). Você não conseguiria fazer isso sem uma linguagem de verdade. As universidades americanas adotaram Java e recentemente estão migrando para Python, segundo artigo recente: http://cacm.acm.org/blogs/blog-cacm/176450-python-is-now-the-most-popular-introductory-teaching-language-at-top-us-universities/fulltext

Nilo Menezes

unread,
Jul 14, 2014, 9:05:32 AM7/14/14
to python...@googlegroups.com
Oi,

Ainda estou lendo os artigos... Eu gostaria de adicionar que para mim a grande vantagem do Python não é a sintaxe em si, mas o retorno rápido de resultados;

Quando o aluno começa a aprender, precisa de uma enorme força de vontade ou interesse para chegar ao fim do curso.
Nem todo mundo se excita ao ver o cursor piscar. Muita gente pensa: passei 2 horas para ter essas 4 linhas na tela! Que atividade nula! 
Outros vão vibrar e dizer: tá vendo o que consegui fazer!!!
Estas pessoas na primeira oportunidade fogem de continuar a aprender programação. Perdi a conta dos colegas que faziam computação, mas que queriam ser apenas analistas, pois detestavam programar. Muitos eram pessoas capazes, mas foram desencorajados a programar por experiências ruins nos cursos de iniciação.

O problema dos ";" e outros detalhes do C é que adicionam frustração a quem inicia, ou seja, é mais uma coisa para errar e desmotivar.
Lembro que quando eu era aluno, nós perdíamos 0.5 pontos na prova por cada ponto e vírgula esquecido. As provas eram feitas a lápis e sem computador.

Começar com objetos é difícil, nem todo mundo pensa do mesmo jeito. Eu tive vários alunos que se deram bem com Pascal ou Basic desde o início. Cada pessoa tem uma forma diferente de aprender e de se interessar. Eu gostaria de ler um estudo sobre a psicologia do aprendizado de linguagens de programação, realizado por profissionais da área de psicologia e ensino.

Meus alunos achavam mais fácil aprender COBOL/Clipper do que C, mesmo digitando muito, conseguiam fazer um sistema com entrada de dados decente e relatórios.

As vantagens do Python são:
1. Modo iterativo: você pode começar no interpretador e tirar várias dúvidas sem sair do mesmo programa
2. Sintaxe simplificada: diminui os erros bestas como ; e {} ... lembrei aqui que antes os editores não identavam o código automaticamente e do trabalho que dava procurar um { ou } que havia sido esquecido :-D hoje está mais fácil
3. Produtividade: com pouco código se faz muita coisa
4. Baterias: com o Python padrão já dá para fazer muita coisa!

Outra, garotada que nasceu com Internet em casa quer usar Twitter, gerar páginas web, gráficos, etc. Fazer isso em C demora muito.
Eu passava um ano para ensinar C e no fim do ano estava ensinando listas encadeadas e arquivos. O mesmo pode ser feito em muito menos tempo com Python. No meu último curso de Python que durou 2 semanas (para profissionais de estatística), saímos do zero até a criação de servidores TCP e processamento de arquivos XML/HTML em 2 semanas.

Isso não quer dizer que não se deve aprender C ou JAVA, a questão é apenas qual a melhor ordem para melhorar a experiência deste aprendizado.


[]'s

Nilo


-------------------
Nilo Menezes (@lskbr)


Você recebeu essa mensagem porque está inscrito no grupo quot;Python Brasil" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para python-brasi...@googlegroups.com.

Rodrigo Delduca

unread,
Jul 14, 2014, 9:08:13 AM7/14/14
to python...@googlegroups.com
Pessoalmente, quando comecei a programar "provei" diversas linguagens,
entre elas Python e C... Achei mais fácil C e com ela segui meus
estudos passando por C++, onde fiquei. Só depois de muitos anos voltei
a estudar Python. Atualmente trabalho com C++ e uso Python para
scripting


--
http://www.nullonerror.org/
-- flipping bits whilst updating pixels

"The world is full of fascinating problems waiting to be solved" --
Eric S.Raymond
-... .-.. --- --- -.. --- ..-. .-.. .. --- -. ... .-. ..- ... .... ..
-. --. - .... .-. ..- -- -.-- ...- . .. -. ...
"Scientists study the world as it is; engineers create the world that
has never been" -- Theodore von Kármán
.--. ..- -- .--. .. -. --. - .... . -.-. --- .-.. -.. -. . ... ... ---
..-. -- -.-- .... . .- .-. -
"Security is an illusion. Paranoia is our profession" -- Strategic Air command
.... . .-. . .. -.-. --- -- . .- - - .... . ... .--. . . -.. --- .- --
..- .-. -.. . .-. . .-. ... --- ..- -. -..
"They say hackers die twice, once when they pass, and then again when
the last of their code is rewritten by some asshole using JavaScript"
-- Anonymous
-... .-.. --- --- -.. --- ..-. .-.. .. --- -. ... .-. ..- ... .... ..
-. --. - .... .-. ..- -- -.-- ...- . .. -. ...
"He who hasn't hacked assembly language as a youth has no heart. He
who does as an adult has no brain" -- John Moore

Fernando Masanori Ashikaga

unread,
Jul 14, 2014, 9:27:46 AM7/14/14
to python...@googlegroups.com
Concordo Nilo, o modo interativo do Python ajuda muito nesse quesito motivação dos alunos. Produtividade também, em poucas linhas você consegue baixar fotos dos amigos do Facebook e criar um mixador de áudio. Os meus alunos ficam compartilhando código em redes sociais! Cada exemplo das minhas aulas cabe em um único slide, com fonte 26, quando usava C tinha que colocar vários slides com fonte pequeno. Alunos de outras instituições pediram transferência para a FATEC, atraídos por essa nova abordagem. E a academia está fazendo pesquisas e publicando, para fornecer dados isentos sobre o assunto. Lamentavelmente, muitos dos autores desses artigos receberam emails raivosos, com respostas emocionais. Acredito, na minha opinião, que é necessário ter humildade para ver que um pensamento diferente do seu próprio, alimentado durante anos talvez, possa ter fundamento e te obrigue a mudar. Eu ensinei muitos anos com C e depois com Java, estudei bastante, falei com muitos docentes, profissionais, até mudar para Python e não me arrependo. Infelizmente, para uma pequena parte das pessoas, o orgulho é o principal problema para mudar, eu aprendi assim, fiz assim durante anos, mudar me obriga a gastar tempo para analisar de forma isenta a opinião de outras pessoas e muito mais para analisar dados que fundamentam essas opiniões.
PS.: toda a minha vida profissional trabalhei com C++, Software Express, ITAÚ e Credicard Mastercard, não tenho nada contra C++ para trabalho, aliás, quando estou cansado e entediado programa em C++ para descansar e me distrair. Agora em Python e outras linguagens que estou experimentando. É que o foco da thread é ensino de programação.

Rodrigo Delduca

unread,
Jul 14, 2014, 9:36:51 AM7/14/14
to python...@googlegroups.com
Quando se fala em C++ aposto que a maioria lembra daquela sintaxe verborrágica recheada de templates, mas isto tem mudado, na recente versão do C++, o C++14 a sintaxe se assemelha muito com a do Python, exemplo:








-- 
http://www.nullonerror.org/
-- flipping bits whilst updating pixels

"The world is full of fascinating problems waiting to be solved" -- Eric S.Raymond
-... .-.. --- --- -.. --- ..-. .-.. .. --- -. ... .-. ..- ... .... .. -. --. - .... .-. ..- -- -.-- ...- . .. -. ...
"Scientists study the world as it is; engineers create the world that has never been" -- Theodore von Kármán
.--. ..- -- .--. .. -. --. - .... . -.-. --- .-.. -.. -. . ... ... --- ..-. -- -.-- .... . .- .-. -
"Security is an illusion. Paranoia is our profession" -- Strategic Air command
.... . .-. . .. -.-. --- -- . .- - - .... . ... .--. . . -.. --- .- -- ..- .-. -.. . .-. . .-. ... --- ..- -. -..
"They say hackers die twice, once when they pass, and then again when the last of their code is rewritten by some asshole using JavaScript" -- Anonymous
-... .-.. --- --- -.. --- ..-. .-.. .. --- -. ... .-. ..- ... .... .. -. --. - .... .-. ..- -- -.-- ...- . .. -. ...
"He who hasn't hacked assembly language as a youth has no heart. He who does as an adult has no brain" -- John Moore



Alysson Bruno

unread,
Jul 14, 2014, 9:38:52 AM7/14/14
to python-brasil
Opinião pessoal?

​Acho que JavaScript é a melhor linguagem para ensinar alguém a programar.​ Não precisa instalar nada, o aluno verá os resultados na tela, simples, rápido e eficiente. Depois do básico o JS já não é mais a melhor linguagem, aí talvez entre Python e só depois C.

Fernando Masanori Ashikaga

unread,
Jul 14, 2014, 9:49:25 AM7/14/14
to python...@googlegroups.com
Essa é uma abordagem que estou estudando, imagens ajudam a pessoa a ver o resultado de forma mais fácil. Usamos isso no final do semestre. Durante o curso também usamos o JavaScript do navegador para ensinar Python, hehe. O http://pythontutor.com/ permite rodar e depurar código somente no navegador, sem instalar nada. Também o http://www.codeskulptor.org/ permite ensinar programação com Python sem instalar nada. Os alunos ficam animados com a facilidade de criação de games no codeskulptor, vejam por exemplo o Asteroids: http://www.codeskulptor.org/#user17_Y6qFifh92LwWPXi.py (habilitar o popup). Porém isso é um plus no curso.


Em 14 de julho de 2014 10:38, Alysson Bruno <alysso...@gmail.com> escreveu:
Opinião pessoal?

​Acho que JavaScript é a melhor linguagem para ensinar alguém a programar.​ Não precisa instalar nada, o aluno verá os resultados na tela, simples, rápido e eficiente. Depois do básico o JS já não é mais a melhor linguagem, aí talvez entre Python e só depois C.

Alysson Bruno

unread,
Jul 14, 2014, 9:55:19 AM7/14/14
to python-brasil
A khan Academy parece estar usando JS como primeira linguagem mesmo: http://ejohn.org/blog/javascript-as-a-first-language/

Eu gosto da ideia, mas ainda não pude colocá-la em prática (estou sem dar aulas). Mas penso que seja mais familiar às novas mentes trabalhar com o Browser que com um terminal, nunca tentei usar sites para dar aula com Python, talvez seja uma boa também.

Quando aprendi a programar (no milénio passado), aprendi a fazer "joginhos" com Basic, talvez por isso as aulas de algoritmo e de C da faculdade nunca foram problema.


paz e amor (love and peace),

Alysson Bruno
===============================================
Palmas(TO)
Brasil

Blog: http://abruno.com


=================================================================
Meu alterego Escritor:

Leia alguns contos que escrevo, não esqueça de me dar sua opinião: http://goo.gl/Wjn4p

=================================================================


Você recebeu essa mensagem porque está inscrito no grupo quot;Python Brasil" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para python-brasi...@googlegroups.com.

Rodrigo Delduca

unread,
Jul 14, 2014, 10:02:42 AM7/14/14
to python...@googlegroups.com
Javascript? Sério? Se javascript fosse bom não existiram tantas outras
linguagens tentando consertar (coffscript, typedscript, dart, etc...)


--
http://www.nullonerror.org/
-- flipping bits whilst updating pixels

"The world is full of fascinating problems waiting to be solved" --
Eric S.Raymond
-... .-.. --- --- -.. --- ..-. .-.. .. --- -. ... .-. ..- ... .... ..
-. --. - .... .-. ..- -- -.-- ...- . .. -. ...
"Scientists study the world as it is; engineers create the world that
has never been" -- Theodore von Kármán
.--. ..- -- .--. .. -. --. - .... . -.-. --- .-.. -.. -. . ... ... ---
..-. -- -.-- .... . .- .-. -
"Security is an illusion. Paranoia is our profession" -- Strategic Air command
.... . .-. . .. -.-. --- -- . .- - - .... . ... .--. . . -.. --- .- --
..- .-. -.. . .-. . .-. ... --- ..- -. -..
"They say hackers die twice, once when they pass, and then again when
the last of their code is rewritten by some asshole using JavaScript"
-- Anonymous
-... .-.. --- --- -.. --- ..-. .-.. .. --- -. ... .-. ..- ... .... ..
-. --. - .... .-. ..- -- -.-- ...- . .. -. ...
"He who hasn't hacked assembly language as a youth has no heart. He
who does as an adult has no brain" -- John Moore



Fernando Masanori Ashikaga

unread,
Jul 14, 2014, 10:03:22 AM7/14/14
to python...@googlegroups.com
Alysson, sim, conheço alguns desenvolvedores que trabalham no Khan Academy e confirmo essa reorganização. Alguns artigos que tenho lido reforçam essa abordagem. A representação visual imediata, resultado do seu código, ajuda no início do aprendizado de programação. Algumas faculdades de humanas usam computação lúdica (Processing) para ensinar programação. Eu ensino Processing e JavaScript no final do semestre.

Fernando Masanori Ashikaga

unread,
Jul 14, 2014, 10:06:20 AM7/14/14
to python...@googlegroups.com
Também concordo com o @skhaz que existem muitas objeções devido à arquitetura da linguagem, porém, se é somente para iniciar o processo de aprendizado de programação, sem compromisso de continuar usando a linguagem nos semestres posteriores, pode ser uma abordagem válida. 

Nilo Menezes

unread,
Jul 14, 2014, 10:13:48 AM7/14/14
to python...@googlegroups.com
Oi Rodrigo,

Vamos analisar o seu exemplo. Ok, a primeira vez em Python eu faria como no seu exemplo.

Na segunda vez eu já mostraria como:

sum(seq)/len(seq)

Com o Python 3.4, temos o módulo statistics

Fica ainda melhor:

statistics.mean(seq)

De quebra testaria tudo no interpretador.

O C++ 2011 já melhora muito a linguagem, mas ainda se sofre para conseguir um compilador que suporte tudo. O C++ 2014 deve ficar ainda melhor.
O Sequence do C++ 2011 parece que foi abandonado...

Para quem começa, te listo as peguntas que o C++ 2014 (baseado no teu exemplo) obteria em sala:
1. Só isso não compila, cadê os includes?
2. Tem que fazer outro programa para usar isso?
3. Por que o const ?
4. Por que & ?
5. Por que auto e não float?
6. Por que o Sr não usou um template?
7. Escrevo isso antes ou depois da main?
8. Por que depois do for não abre chaves?

Parece piada, mas é apenas um exemplo do que pode acontecer. Fora que já teria passado mais de uma aula até instalar o compilador ou se familiarizar com o IDE.
Se os alunos usam o computador da faculdade, ok, pode-se preparar tudo antes da aula. Se cada um traz o seu notebook, bom dia semana de configuração de macs, Linux e Windows.

Além disso, Sequence agora é SequenceContainer, se não estou enganado.


[]

Nilo
PS.: eu trabalho com C++ na minha pesquisa. Os méritos da linguagem são indiscutíveis, mas aqui falamos sobre o que usar como primeira linguagem. Desculpem as piadas.



-------------------
Nilo Menezes (@lskbr)


Em 14 de julho de 2014 15:38, Alysson Bruno <alysso...@gmail.com> escreveu:
Opinião pessoal?

​Acho que JavaScript é a melhor linguagem para ensinar alguém a programar.​ Não precisa instalar nada, o aluno verá os resultados na tela, simples, rápido e eficiente. Depois do básico o JS já não é mais a melhor linguagem, aí talvez entre Python e só depois C.

Nilo Menezes

unread,
Jul 14, 2014, 10:18:51 AM7/14/14
to python...@googlegroups.com
Oi,

Eu gostaria de experimentar com Javascript, ainda não tive a oportunidade de ensiná-la.
Tenho medo de confundir o aluno com HTML, CSS e DOM junto com programação.
Já vi alguns cursos na Web que parecem excelentes!

Eu concordo que é excelente para dar um feedback imediato e com gráficos, mas depende muito de como o instrutor prepara o curso.
Se bem dado e com um site cheio de ferramentas, pode ser muito bom.

O problema do Javascript para mim é que a complexidade cresce muito rápido.

[]

Nilo

-------------------
Nilo Menezes (@lskbr)


Ademir Francisco da Silva

unread,
Jul 14, 2014, 10:19:41 AM7/14/14
to python...@googlegroups.com
Pois é ferramenta de qualidade, bem como, curso gratuito em Python para facilitar o aprendizado é o que não falta, se é realmente mais aprazível a utilização da linguagem em Python no aprendizado da programação porque há então esta resistência ??? A resposta ( mesmo que parcial ) é devido ao desconforto gerado que alguns sentem na mudança ( após anos fazendo o mesmo ) em si, mesmo que para melhor, pois ( ainda ) não dominam a linguagem ( sintaxe ). Não estou aqui propagando a digamos "extinção" de outras linguagens pois toda a unanimidade é burra e a diversidade se faz necessária para o desenvolvimento humano/cientifico, contudo acho que se for possível facilitar por que não fazê-lo ...
( Abaixo o sadismo ... :-D   )

Fernando mais alguns links ilustrativos ao seu comentário abaixo ...

http://www.trypython.org/#
http://repl.it/languages/Python
http://www.skulpt.org/
http://pythonwebconsole.thomnichols.org/
http://shell.appspot.com/
http://doc.pyschools.com/console


Ademir

PS .: Hoje eu considero a linguagem Python uma das melhores ( sintaxe ), mas com certeza vai surgir algo melhor nos anos vindouros ( mas ainda não ...  ;-)   ), quando surgir ela com certeza vai ter Python como base ...
Você recebeu essa mensagem porque está inscrito no grupo quot;Python Brasil" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para python-brasi...@googlegroups.com.

Para mais opções, acesse https://groups.google.com/d/optout.


-- 
Ademir Francisco da Silva
Skype  ...: Ademir_Francisco_da_Silva
[ CMC ] God will do me justice

Fernando Masanori Ashikaga

unread,
Jul 14, 2014, 10:19:47 AM7/14/14
to python...@googlegroups.com
Ei, gostei das possíveis perguntas de alunos. Quando ensinava programação em C: 
1) Fiz 1 / 2 e deu zero? (no python 3.x 1 / 2 == 0.5)
2) opção = 42 (professor deu erro) 


Você recebeu essa mensagem porque está inscrito em um tópico no grupo "Python Brasil" dos Grupos do Google.
Para cancelar inscrição nesse tópico, acesse https://groups.google.com/d/topic/python-brasil/u2a1zjaCrfU/unsubscribe.
Para cancelar inscrição nesse grupo e todos os seus tópicos, envie um e-mail para python-brasi...@googlegroups.com.

Nilo Menezes

unread,
Jul 14, 2014, 10:20:26 AM7/14/14
to python...@googlegroups.com
É Fernando, é sempre uma guerra mudar as coisas. Precisa realmente de muita coragem.

[]

Nilo

-------------------
Nilo Menezes (@lskbr)


Douglas Camata

unread,
Jul 14, 2014, 10:22:45 AM7/14/14
to python...@googlegroups.com
Pessoalmente, eu acho ensinar alguém a programar com Javascript um pouco confuso, devido ao excesso de "function", parênteses e chaves pra todo lado. Vira e mexe eu perco um bocado de tempo (e alguns neuronios) com Javascript por causa disso.
Douglas Camata
Graduando em Ciência da Computação (UENF)

Skype: douglas_camata
-----------------------------------
Linux User #509211

Alysson Bruno

unread,
Jul 14, 2014, 10:23:02 AM7/14/14
to python-brasil
Esqueçamos nossos preconceitos, JS tem muito a atrair novos programadores, principalmente por que:

1. É simples de fazer coisas bacanas desde o início;
2. O HTML5 tem bastante "pilhas inclusas";
3. O aluno pode usar o novo conhecimento quase que instantaneamente.

O aluno tem que querer aprender a programar, para conseguir evoluir a contento. Disciplinas iniciais não são para discutir o que é mais rápido, mais elegante, ou mesmo mais usado, são para cativar alunos.

A academia pecou por insistir demais em C, talvez esse não fosse o caminho, estão migraram para o Java, e estão percebendo que não está legal, agora a maioria parece querer Python.

Mas eu penso em algo mais, algo que seja mais que o Scratch [1], mas que seja voltado para crianças estou tentando convencer a escola que meu filho estuda (9 anos) de ensinar eles a programarem, mas ainda não obtive sucesso, se conseguir será uma experiência bacana.



paz e amor (love and peace),

Alysson Bruno
===============================================
Palmas(TO)
Brasil

Blog: http://abruno.com


=================================================================
Meu alterego Escritor:

Leia alguns contos que escrevo, não esqueça de me dar sua opinião: http://goo.gl/Wjn4p

=================================================================


Fernando Masanori Ashikaga

unread,
Jul 14, 2014, 10:25:45 AM7/14/14
to python...@googlegroups.com
Nilo, ainda mais que meus colegas de faculdade (IME-USP) são defensores xiitas de C. Fiquei até espantado quando eles me falaram que a Poli-USP estava adotando Python como primeira linguagem. Fui lá no IME-USP e ficamos umas boas horas trocando experiências didáticas. 
Obs.: lá na Poli no primeiro semestre começam com Python, mas ensinam C também no final

Fernando Masanori Ashikaga

unread,
Jul 14, 2014, 10:37:25 AM7/14/14
to python...@googlegroups.com
Alysson, também penso assim, mas quando adotei esse método, apesar de muitas alunas (moças) adorarem (não estou trollando), os rapazes, talvez devido a alguma convenção cultural, acharam um pouco infantil demais. Por isso atualmente só uso no final do semestre, assim dou chance para os dois grupos de pensamento. Eu faço isso na FATEC. No ensino de programação para crianças do CEDET (Centro do Desenvolvimento do Talento), começo com o visual. Meninas em geral gostam mais do visual (começando com scratch), mas quando pegam a sério a lógica, se desenvolvem mais que os meninos, então preferem o Python.

Rodrigo Delduca

unread,
Jul 14, 2014, 10:46:50 AM7/14/14
to python...@googlegroups.com
Nilo,

> De quebra testaria tudo no interpretador.

O C++ também tem um interpretador, o cling[1]
(http://root.cern.ch/drupal/content/cling)

> O C++ 2011 já melhora muito a linguagem, mas ainda se sofre para conseguir
> um compilador que suporte tudo. O C++ 2014 deve ficar ainda melhor.

Apenas o VisualStudio que não suporta todas as features do C++11, o
clang e gcc já suportam o C++14. E o clang já começa a trabalhar no
C++17 a todo vapor, mas veja, tem uma diferença entre os novo padrão e
a biblioteca padrão.

> O Sequence do C++ 2011 parece que foi abandonado...

http://en.cppreference.com/w/cpp/concept/SequenceContainer

>
> Para quem começa, te listo as peguntas que o C++ 2014 (baseado no teu
> exemplo) obteria em sala:
> 1. Só isso não compila, cadê os includes?
> 2. Tem que fazer outro programa para usar isso?
> 3. Por que o const ?
> 4. Por que & ?
> 5. Por que auto e não float?
> 6. Por que o Sr não usou um template?
> 7. Escrevo isso antes ou depois da main?
> 8. Por que depois do for não abre chaves?

Sim, eu sei que muitas duvidas surgirão, mas C++ é a linguagem que
separa os homens dos meninos ;)

> Parece piada, mas é apenas um exemplo do que pode acontecer. Fora que já
> teria passado mais de uma aula até instalar o compilador ou se familiarizar
> com o IDE.

e mais dois dias compilando a boost e o Qt :)

> Se os alunos usam o computador da faculdade, ok, pode-se preparar tudo antes
> da aula. Se cada um traz o seu notebook, bom dia semana de configuração de
> macs, Linux e Windows.
>
> Além disso, Sequence agora é SequenceContainer, se não estou enganado.
>

É sim.

Não me leve a mal, mas C++ é minha linguagem preferida, claro que uso
outras linguagens quando necessário, Python está sempre presente no
meu dia a dia, em um outro projeto usei Boost.Python para
interoperabilidade entre C++ e Python, é fantástico, o melhor dos
dois mundos.
Já usei Lua em desenvolvimento de jogos e Javascript com QtScript, etc...
Mas não vou ficar dando murro em ponta de faca tentando convencer que
C++ é mais simples do que Python, que de fato não é. C++ tem suas
vantagens assim como Python tem

Fernando Masanori Ashikaga

unread,
Jul 14, 2014, 11:01:54 AM7/14/14
to python...@googlegroups.com
É esse o problema que originou a thread: sintaxe prejudicial para os iniciantes, ninguém ensina programação apenas para a elite ninja.

Nilo Menezes

unread,
Jul 14, 2014, 11:29:19 AM7/14/14
to python...@googlegroups.com
Oi Rodrigo,

Eu não conhecia o cling!

Eu vivo no mundo da compatibilidade entre o GCC e o Visual Studio 2013... fora as inúmeras distros Linux :-( O C++ 2011 ainda é o melhor suporte comum, mas tem melhorado bastante.

Separar homens de meninos é uma atitude comum em nossa área, eu pensei assim por muito tempo. Se não consegue programar, reprova e vai fazer outro curso!
Mas não é bem assim. Nem todo mundo vai gostar de programar em C++. Nem todos vão gostar de Python. A ideia é não fazer a separação já no primeiro curso e fazer uma introdução suave.

A separação entre programadores GOD level, ninja, "chihuahua", mosca morta, vampiro, perereca do brejo, etc vem muito depois :-D E cada classe admite homens, mulheres, indecisos, crianças e idosos!

Quanto a gosto, tem gente que gosta de programar em Perl :-D Eu pulei para Python na primeira oportunidade e nunca mais voltei :-D

Fernando,

Tens alguma novidade do povo que utiliza Haskell, ML ou LISP no ICC?

Eu lembro que antes de todos pularem para Java no ICC se utilizava Pascal. Acho que algumas cursos ainda usam até hoje :-D
Acredito que o mesmo já está acontecendo com a migração para Python e daqui a uns 10 anos, teremos outra linguagem mais interessante.
Quem sabe o Go, se a Google não mudar de ideia ou mesmo outra linguagem que ainda nem conhecemos/ouvimos falar.

Pensei agora se Dart com o Chrome não seria uma boa alternativa ao Javascript. Alguém já usou? (como primeira linguagem)

[]

Nilo

-------------------
Nilo Menezes (@lskbr)


Dharis Brunoro

unread,
Jul 14, 2014, 11:40:07 AM7/14/14
to python...@googlegroups.com

Infelizmente, não pude olhar o artigo na íntegra que foi citado no começo. Escrevo um pouco longo, sem querer, mas favor avaliar dentro do contexto mais acadêmico, pois a formação é mais gradual e abrangente.


Gosto muito da linguagem Python, e concordo com bastante coisa dita a favor de seu uso.

Além disso, concordo com o que o Alex colocou sobre o (des)preparo dos novatos.


Quando dei aula na graduação para alunos do 4º ao 8º semestre, o maior entrave que percebia nos alunos dessas turmas eram as bases ainda fracas: entender algoritmos, resolver problemas e conceitos de orientação a objetos, independente da linguagem de programação.

O segundo entrave era mente fechada para entender o que significa uma linguagem (de programação ou não) ou linguagem como ferramenta para resolução de problemas...


Até as turmas mais "avançadas" não sabiam como o compilador funcionava (ou até mesmo ouvido falar o que era um), e que o que eles escreviam em sua IDE favorita, era simples e "magicamente" executado ao se pressionar um atalho... que tristeza :-(


Eu já ministrei curso com programação em C, as provas eram de papel e lápis também, mas nunca "descontei" um ponto e vírgula sequer que fosse esquecido, pois o foco era verificar a capacidade de resolução de problemas.

Entretanto, considero mais grave, durante aula prática de laboratório em que o mesmo erro ocorre, mas o estudante não sabe interpretar as mensagens do compilador (reiteradas vezes). Nesse ponto, a assimilação da linguagem pode ter um peso, mas ainda não é o único problema.


Então, eu penso que essa questão é um pouco mais complicada que simples escolha de linguagens. E alguns professores não estão preparados para apresentar os iniciantes ao mundo dos algoritmos e da programação de maneira adequada, mesmo que se escolha "a melhor" linguagem, ensinar bem e aprender a pensar precisa ser considerado.





Em sábado, 12 de julho de 2014 19h29min28s UTC-5, Fernando Masanori Ashikaga escreveu:
"Results show that many aspects of traditional C-style syntax, while it has influenced a generation of programmers, exhibits problems in terms of usability for novices".
Andreas Stefik and Susanna Siebert: "An Empirical Investigation into Programming Language Syntax." ACM Transactions on Computing Education, 13(4), Nov. 2013.


Fernando Masanori Ashikaga

unread,
Jul 14, 2014, 11:42:53 AM7/14/14
to python...@googlegroups.com
Nilo, além disso, se a pessoa já é "homem" e não "menino", provalvelmente não precisaria de um curso para aprender a programar e talvez fazer um curso seja até perda de tempo para esse tipo de pessoa. De fato, alguns alunos já sabem programar ao entrarem na faculdade. Acho que até nisso o Python é interessante, ele é simples, sem ser simplório. Os alunos que já são "homens" adoram aprender geradores, decoradores, list comprehensions, por sua conta, já no primeiro semestre. Para que os alunos mais experientes não se desmotivem implementei o Big Brother (sugestão do Senra). Depois da primeira prova, o aluno que tirou nota alta, pode "adotar" um aluno que foi mal. Na segunda prova o aluno que ajudou ganha um quarto do aumento de nota que o aluno ajudado teve. Por exemplo, o aluno com dificuldade aumentou de 2 para 6, o aluno que foi o Big Brother, além da sua própria nota, aumenta um ponto por conta do ajudado. Os melhores aumentos podem escolher dos brindes que ganho nas conferências (foto anexa). Neste ano consegui recuperar 11 alunos de introdução à programação entre 100 e 6 alunos de Estrutura de Dados entre 47.
10250101_10203606902911499_2876673067779429401_n.jpg

Nilo Menezes

unread,
Jul 14, 2014, 12:47:39 PM7/14/14
to python...@googlegroups.com
Que sistema excelente! Gostei da ideia do colega que ajuda!

[]

Nilo

-------------------
Nilo Menezes (@lskbr)


Fernando Masanori Ashikaga

unread,
Jul 14, 2014, 1:53:51 PM7/14/14
to python...@googlegroups.com
Em 14 de julho de 2014 12:40, Dharis Brunoro <dha...@gmail.com> escreveu:
Então, eu penso que essa questão é um pouco mais complicada que simples escolha de linguagens. E alguns professores não estão preparados para apresentar os iniciantes ao mundo dos algoritmos e da programação de maneira adequada, mesmo que se escolha "a melhor" linguagem, ensinar bem e aprender a pensar precisa ser considerado.

Dharis, concordo, além da linguagem, ensinar bem e aprender a pensar precisa ser considerado. Eu fui na PyConUS em Montreal e fiquei muito feliz em perceber, na prática, que essa é uma preocupação da comunidade Python! Tivemos um dia inteiro do congresso dedicado ao tema Educação (antes do evento). Depois do congresso outro dia inteiro, dedicado a um treinamento sobre como ensinar, sem entrar em nenhuma sintaxe de linguagem, promovido pela Software Carpentry, da Mozilla. Nos dois dias fiquei edificado em ver Core Developers como o Nick Coghlan, profissionais da Google, Dropbox, Rackspace, Mozilla, trabalhando conosco (professores) nos vários grupos, desenhando por exemplo, mapas mentais de um laço for (fotos anexas). Conversei muito com o Jeff Elkner e Allen Downey, autores do livro "Como pensar como um cientista da Computação", eles, e os desenvolvedores que participaram desses dias, são pessoas bastante acessíveis, preocupadas em melhorar a forma de ensinar programação, não se atendo a linguagem Python. Não encontrei isso nas conferências de outras linguagens.
20140414_113346.jpg
20140414_113944.jpg

Alysson Bruno

unread,
Jul 14, 2014, 2:18:09 PM7/14/14
to python-brasil
A grande questão realmente é essa, o ideal é que a linguagem atrapalhe o menos possível na assimilação do conteúdo. Se depois vamos trabalhar escovando bits ou produzindo blogs no WordPress, não faz diferença, há excelentes pessoas fazendo ambas as coisas. 

paz e amor (love and peace),

Alysson Bruno
===============================================
Palmas(TO)
Brasil

Blog: http://abruno.com


=================================================================
Meu alterego Escritor:

Leia alguns contos que escrevo, não esqueça de me dar sua opinião: http://goo.gl/Wjn4p

=================================================================


--

Nilo Menezes

unread,
Jul 14, 2014, 2:25:14 PM7/14/14
to python...@googlegroups.com
Sim, o professor é alma do negócio. É ele quem segura o tranco na sala de aula e conta a história para manter todo mundo interessado e ligado no assunto.
Um problema sério e legar ICC para professores iniciantes :-(

Eu acho que esse carinho da comunidade Python com o ensino de programação vem da ABC, linguagem que inspirou o Python. Na Wikipédia tem um trecho interessante da proposta dele para o desenvolvimento da nova linguagem:

http://en.wikipedia.org/wiki/Guido_van_Rossum

Computer Programming for Everybody[edit]

In 1999, Van Rossum submitted a funding proposal to DARPA called  Computer Programming for Everybody[1] in which he further defined his goals for Python:

  • an easy and intuitive language just as powerful as major competitors
  • open source, so anyone can contribute to its development
  • code that is as understandable as plain English
  • suitability for everyday tasks, allowing for short development times

Python has grown to become a popular programming language: For example, as of November 2011, it is the 3rd most popular language on the GitHub social coding website,[15] and according to a programming language popularity survey[16] it is consistently amongst the top 10 most mentioned languages in job postings. Additionally, it is consistently in the top 10 most popular languages according to the TIOBE Programming Community Index.[17]

[1] http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.123.6836&rep=rep1&type=pdf

[]

Nilo

Abelardo Vieira Mota

unread,
Jul 15, 2014, 8:02:49 AM7/15/14
to python...@googlegroups.com
Seguindo a linha de discussão de outros aspectos que influenciam no aprendizado, além da sintaxe, o seguinte vídeo é bastante interessante:

Seeing Spaces - Bret Victor

Fernando Masanori Ashikaga

unread,
Jul 15, 2014, 8:13:25 AM7/15/14
to python...@googlegroups.com
Encontrei algumas idéias interessantes sobre o vídeo: https://news.ycombinator.com/item?id=7880119

Humberto Rocha

unread,
Jul 15, 2014, 9:01:26 AM7/15/14
to python...@googlegroups.com
Eu tenho uma questão sobre o assunto,

Estou no último semestre de ciência da computação e minhas aulas de introdutórias de programação foram em C.
Paralelamente como uma iniciativa nossa como alunos fomos atrás do python através da realização de dojos e mini cursos que os mais experientes na linguagem passaram para os novatos.
Para mim, ambas experiências foram importantes, o python me permitiu forcar mais na resolução dos problemas, mas o C trouxe algo que eu acho fundamental, pelo menos em um curso de ciência da computação, que é a desmistificação dos processos de funcionamento do de um programa do baixo nível até o alto nível. E as facilidades do python de certa forma tiram esta preocupação do aluno nos primeiros semestres, mas podem criar um gap para as matérias mais complexas que, devido ao curto tempo de um processo de graduação, contam com que o aluno já tenha passado por este processo de aprendizado e esteja mais "calejado" para seguir com elas.

Dito isso, não seria interessante uma mescla durante este período (normalmente de 2 semestres), que haja um aprendizado em paralelo, mostrando uma linguagem interpretada e uma compilada, e a partir dai já começar a construir o conhecimento, ao invés de proteger o aluno deste choque inicial?

Essa é só uma visão minha quanto a formação de um cientista da computação, em casos onde a programação é uma matéria para ensinar pensamento lógico ou simplesmente computação não é o foco principal do curso eu já acho a abordagem mais focada na resolução do problema ao invés dos problemas da linguagem uma ótima ideia. 

Fernando Masanori Ashikaga

unread,
Jul 15, 2014, 9:17:20 AM7/15/14
to python...@googlegroups.com
Humberto, também concordo que para o caso *específico* de Ciências da Computação acredito ser importante ver também o "baixo nível": alocação de memória, ponteiros, etc. Talvez não no primeiro semestre, pessoal rala para depurar erros com ponteiros... Uma abordagem é dar introdução à programação em dois semestres, primeiro em Python e depois em C. Na FATEC ensinamos C no segundo semestre, fazendo a ponte com o que foi aprendido em Python. Por exemplo:
>>> a = [1, 2, 3]
>>> b = a
>>> a[0] = 42
>>> b
>>> [42, 2, 3]
Dá para ilustrar ponteiros com as referências aos objetos em Python. Em Estrutura de Dados ensino códigos em C em paralelo com códigos em Python. Assim, quem tem dificuldade com a sintaxe de C pega a lógica no código Python sem deixar de ver no baixo nível. Na minha visão de professor, alguns algoritmos ficam muito mais claros em Python, por exemplo no caso do quicksort que citei no início da thread:

def quicksort(v):
if len(v) <= 1:
return v
pivot = v[0]
equals = [x for x in v if x == pivot]
smaller = [x for x in v if x < pivot]
higher = [x for x in v if x > pivot]
return quicksort(smaller) + equals + quicksort(higher)
 
print (quicksort([5, 7, 9, 3, 4, 0, 2, 1, 6, 8]))




--
--
------------------------------------
Grupo Python-Brasil
http://www.python.org.br/wiki/AntesDePerguntar
 
<*> Para visitar o site do grupo na web, acesse:
http://groups.google.com/group/python-brasil
 
<*> Para sair deste grupo, envie um e-mail para:
python-brasi...@googlegroups.com

---
Você recebeu essa mensagem porque está inscrito em um tópico no grupo "Python Brasil" dos Grupos do Google.
Para cancelar inscrição nesse tópico, acesse https://groups.google.com/d/topic/python-brasil/u2a1zjaCrfU/unsubscribe.
Para cancelar inscrição nesse grupo e todos os seus tópicos, envie um e-mail para python-brasi...@googlegroups.com.

Humberto Rocha

unread,
Jul 15, 2014, 9:35:52 AM7/15/14
to python...@googlegroups.com
Legal, aqui no IESB em Brasília estamos tentando mostrar o python como uma ideia viável para os professores. Sempre que temos oportunidades trazemos soluções python para os problemas discutidos em sala e neste semestre estamos com um projeto de dojo periódico para apresentar o python para as novas turmas e ao mesmo tempo aumentar o contato com pessoal da comunidade de Brasília.

Fernando Masanori Ashikaga

unread,
Jul 15, 2014, 9:51:47 AM7/15/14
to python...@googlegroups.com
A Poli USP também adotou essa abordagem híbrida, Python e C. O que é importante é aluno aprender o algoritmo, a essência da programação. Se é polêmico, para o caso *específico* de Ciências da Computação, escolher C ou Python por que não usar as duas? Se introdução à programação é tão traumático em muitas faculdades, pelos índices de reprovação, por que zipar todo o conteúdo em um único semestre? Quando a FATEC usava C e depois Java chegamos a 70% de reprovação, hoje estamos com menos de 30%. O interessante é que nas disciplinas seguintes o aluno também melhorou, pois a lógica de programação, aka algoritmo, estava mais sedimentada: em Estrutura de Dados tínhamos 80% de reprovação, no último semestre conseguimos baixar para 12%! Claro que não é mérito apenas da linguagem, usamos a idéia do Rodrigo Senra, Big Brother, para que os próprios alunos se ajudem entre si (vide msg acima na thread), começamos a ter Coding Dojos semanais, com o Python para Zumbis comecei a usar "aulas invertidas" == flipped classrooms, deixando mais tempo para o pessoal por a mão na massa. No entanto são dados interessantes, diminuímos significativamente o índice de evasão em matérias "bicho papão". 
Obs.: para cursos de outras áreas: programação para advogados, médicos, jornalistas, outras engenharias fora da Computação, na minha opinião, C provoca traumas muitas vezes irreversíveis nos alunos.


Alejandro Mesias

unread,
Jul 15, 2014, 10:13:03 AM7/15/14
to python-brasil
Só um comentário sobre o artigo e a thread em sí. A questão de usar Python pelo açúcar sintático e as pilhas incluídas e todo o resto do tema está abordando iniciantes, pessoas começando a programar, pessoas que nunca viram programação, pessoas se iniciando na programação.

É um pouco obvio que C/C++ tem vantagens em questões de performance e que a sintaxe não atrapalha tanto para programar (para quem sabe). Acredito que tem que se ater ao foco do artigo, publico alvo de quem está sendo aplicado o uso da programação em Python.


Você recebeu essa mensagem porque está inscrito no grupo quot;Python Brasil" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para python-brasi...@googlegroups.com.

Para mais opções, acesse https://groups.google.com/d/optout.



--
======================================
Alejandro Mesias André Nebra Perez
Java/Python/Js/Something else Developer
Twitter: @meszias
Linux User #442506
Campinas - SP - Brasil - South America
======================================

Pedro Henrique Almeida Cruz

unread,
Jul 16, 2014, 9:53:25 PM7/16/14
to python...@googlegroups.com
Humberto off-topic aqui, como funcionariam esses coding-dojos?

------------------------
class Developer
   Languages = [ruby, python, haskell, php, javascript, CoffeeScript, 'a bit of lisp', 'Learning C'] 

  def contact
    @nome = Pedro Henrique
    @fone = 8607-8677
  end
  puts "Undergraduating in Computater Engineering"
end


Em 15 de julho de 2014 10:35, Humberto Rocha <humro...@gmail.com> escreveu:

Humberto Rocha

unread,
Jul 17, 2014, 1:12:50 PM7/17/14
to python...@googlegroups.com
Opa Pedro, desculpa andei meio enrolado não consegui checar a lista.

Mas para não poluir muito a thread da uma checada na lista de python aqui do df: https://groups.google.com/forum/#!forum/grupy-df

Lá estamos publicando tudo sobre os dojos e os resultados estão postados no github: https://github.com/grupydf/dojos
Reply all
Reply to author
Forward
0 new messages