Logo Hardware.com.br
peczenyj
peczenyj Geek Registrado
3K Mensagens 75 Curtidas

Aprendendo Conceitos antes de Sintaxe

#1 Por peczenyj 04/10/2007 - 21:38
Publiquei esse texto no meu blog, hoje. Não é propaganda, é um debate sobre o assunto, se alguem quiser entrar la e comentar, tudo bem, mas estou postando aqui na integra para que seja discutido, se quiserem, aqui.

---------------------

O homem aprende por dois motivos: por gosto ou por necessidade.

Depois de passar um semestre brincando com Pascal na era pré-google ( quando não encontravamos uma pagina através do yahoo ou cadê, tentavamos urls aleatórias como www.pascal.org - que era a pagina da família pascal ), tive uma disciplina cujo professor só sabia Fortran e C.

Através do MOO descobri o curso on-line da UFMG, e pude dar os primeiros passos em C. Entretanto o foco dessa disciplina não era fazer agenda ou video-locadora - eram programas científicos. Linux, gnuplot, maple... foi um mundo muito divertido.

É claro que algumas coisas eu simplesmente não compreendia: os tais dos ponteiros, por exemplo. Era só ver um * que não fosse multiplicação que eu já tinha dor de cabeça. E assim se passaram alguns anos onde eu apenas reproduzia os comandos que tinha aprendido.

Anos depois, conversando com o CaSantos caímos em uma micro-aula de programação. Eis que ele profere sabias palavras: Ao estudar uma linguagem de programação, a primeira coisa que se precisa estudar são os conceitos e, por último, a sua sintaxe.

Toda a vez que eu entrava em uma lista de discussão ou forum e via as perguntas dos novatos eu lembrava dessa frase. Coisas como dizer que os arquivos .h do C são bibliotecas, colocar system("pause") pro programa não "fechar do nada" e por ai vai. O tipo da coisa que, quem conhece o conceito, não perguntaria.

Por que razão não se ensina os conceitos de uma linguagem logo no começo? Eu só posso pensar que é para os alunos aprenderem de forma intuitiva no começo e resgatar isso mais tarde (talvez em uma cadeira de compiladores, sei lá), mas será que isso acontece?

Geralmente o trabalho de fim de semestre dessas cadeiras é um CRUD em C com listagem (ou relatório) de alguma coisa ordenada de uma ou mais formas. Cadastrar alunos ou contas bancárias, salvando em arquivo.

Pois bem, se é uma disciplina introdutória, por que raios alguem iria pedir um CRUD?? Meu deus, os alunos mal sabem como compilar o programa, tampouco debuga-lo - No maximo enchem de printf("passei por aqui") - e pedem um programa com 'menu interativo'! Ai o camarada perde metade do tempo fazendo 'menuzinho' com asteriscos ou outro caracter e não consegue implementar a lógica. Quando implementa é aquela maçaroca. O que isso ensina?

Eu daria uma sugestão: quer ensinar C ou Java ou Snobol 4, ensine. Mas não peça um programa CRUD cheio de frescura - peça uma biblioteca. De um arquivo header ou uma interface java e diga: implementem essas funções/metodos ai. Eu vou testar o meu programa com essa biblioteca e espero que tudo funcione.

videolocadora.h

[PHP]int cadastra_video(char *nome, int preco, int categoria);
int cadastra_cliente(char *nome, char *cpf, char *endereco);
int aluga_video(...);[/PHP]

Enfim, não consigo pensar num exemplo melhor. A ideia é introduzir um desenvolvimento em camadas, deixando o aluno pensar em como ele vai gravar, ler e ordenar os dados sem frescuras de tela, ensinando a fazer testes e também a debugar a aplicação.

Quer ensinar a fazer telinha? Ensina em outra disciplina, nesse caso ensinando técnicas de design apropriadas. Começando pela linha de comando do unix: como pode um aluno se formar sem nunca ter criado o seu próprio grep? Criar interfaces com o usuário não é algo facil, requer muito estudo, principalmente de usabilidade.

Alias fazer "telinhas" geralmente supõe colocar um programa em um estado. Quem aprende o conceito de maquina de estados no momento que esta fazendo esse cadastro? Posso apostar que esse pessoal não sabe o que é stateless e statefull e o professor nem pensa q isso seja importante (aqui eu lembro da agenda de telefones que eu fiz em pascal).

Fica aqui a minha sugestão. Espero que faça sentido smile.png
jofrelscalvet
jofrelscalve... Veterano Registrado
1.3K Mensagens 51 Curtidas
#2 Por jofrelscalve...
04/10/2007 - 22:12
Triste fico que os livros para iniciantes parecem focar em sua graaande maioria na sintaxe. E pra piorar muitos livros para nivel intermediário assumem que você deveria ter uma base.
Fico com a impressão que alguns livros que se dizem intemediário-avaçado são os os unicos que abordam algumas coisas básicas. (Infelizmente tem um preço condizentes com um livro que aborda TODO o assunto)

Sugestões de bons livros que não foquem em uma linguagem especifica serão MUITO apreciadas por mim
Melhore o futuro do fórum: Diga se a dica funcionou ou conte-nos como conseguiu resolver a sua dúvida!
Se eu errar ou for pouco claro, reclame! Quando possivel eu tentarei melhorar.
bugado
bugado Membro Junior Registrado
78 Mensagens 4 Curtidas
#5 Por bugado
05/10/2007 - 16:20
Boa. Legal o artigo.

A primeira 'linguagem' que eu mexi foi PPE, não sei se alguém se lembra disso, época de BBS's daquele servidor PcBoard (época boa legal.png). O source não era disponível então eu usava um 'descompilador', que gerava um código infestado de GOTO, GOTO.. Isso prejudicou de tal forma o céLebro, que hoje em dia tô querendo aprender, mas é complicado pegar as manhas da estrutura correta.. (n = n + 1?! wtf?!)

Mas é verdade isso, o importante mesmo é a lógica, se ficar só em sintaxe, na hora que for começar um programa do zero vai dar um branco geral. espantado.png:

edit: a linguagem do PcBoard era PPL, que gerava o executável (PPE). Pra quem curte nostalgia:
http://en.wikipedia.org/wiki/PCBoard

<>'s!
icefusion
icefusion Tô em todas Registrado
2.2K Mensagens 41 Curtidas
#7 Por icefusion
05/10/2007 - 16:49
Como dizemos em engenharia.....
O importante é aprender a lógica.....as linguagens qualquer um aprende lendo um livrinho " delphi e 12 dias" da vida..huahauhau..

tirando a brincadeira de lado....primeiro é entender a lógica....isso é o mais importante.....pois após isso...a linguagem(sintaxe) vc consulta um livro e aprende....eu aprendi php sozinho....
delphi sozinho....só naum aprendi java ainda pq me falta o conhecimento de POO....não preciso da sintaxe do java pois sem saber como funciona o POO de forma correta...este mesmo naum será utilizado!!sei apenas conceitos básicos de criação de um objeto! =]

-----

um profissional nunca deve se prender em uma única linguagem....ele deve ter a capacidade de migrar de linguagem com a mesma facilidade q se troca de roupa!!!
por essa razão após desenvolver os 3 sistemas q tenho em delphi....após isso vou começar a mexer com java!e continuar mexendo com php, porém orientado a objeto!
arkRed">Desenvolvedor Web - PHP
Site Pessoal
Twitter
Facebook
Linkedin
jofrelscalvet
jofrelscalve... Veterano Registrado
1.3K Mensagens 51 Curtidas
#8 Por jofrelscalve...
05/10/2007 - 22:37
pflynn disse:
Ué? Mas isso faz sentido sim, afinal, são escritos justamente para quem já tem alguma base no assunto smile.png

Faz sentido mas falta coerência. Leva a um ciclo: você não aprende num livro porque fica pra depois e no seguinte você não aprende porque deveria ter aprendido antes.
Melhore o futuro do fórum: Diga se a dica funcionou ou conte-nos como conseguiu resolver a sua dúvida!
Se eu errar ou for pouco claro, reclame! Quando possivel eu tentarei melhorar.
philix
philix Super Participante Registrado
946 Mensagens 14 Curtidas
#9 Por philix
05/10/2007 - 22:39
Eu não passei por essa fase, pois

aprendi programação sem computador, hehe!!!
(eu passava semana organizando um algoritmo e implementava no PC na casa da avó)

Eu só queria entender o que eram os tipos de dados, os ifs e os for(esses eram dificeis), não queria fazer gerenciadores de video-locadora(pulava essa parte, pois não entendia a diferença de write para writeln kkkkk) Resultado? Eu aprendi a lógica do Pascal bem "aprendida"!!!

Para aprender C foi um instante, meu primeiro algoritmo funcional já usava ponteiros e uns bons truques no printf.

Sobre assembly:

O melhor assembly que existe para começar a aprender o funcionamento do hardware é o MIPS assembly(por causa dos seus conceitos).

Mais uma coisa:

Esse problema do system("pause") nunca tive. A facilidade dos fóruns atrapalha, é melhor quebrar a cabeça antes do que perguntar em um fórum, aprende-se com os erros.
"A Matemática é a ginástica mental necessária na tentativa da compreenssão do universo" Linus Torvalds
zerocow
zerocow Veterano Registrado
1.7K Mensagens 17 Curtidas
#10 Por zerocow
06/10/2007 - 05:08
jofrelscalvet disse:
Triste fico que os livros para iniciantes parecem focar em sua graaande maioria na sintaxe. E pra piorar muitos livros para nivel intermediário assumem que você deveria ter uma base.
Fico com a impressão que alguns livros que se dizem intemediário-avaçado são os os unicos que abordam algumas coisas básicas. (Infelizmente tem um preço condizentes com um livro que aborda TODO o assunto)

Sugestões de bons livros que não foquem em uma linguagem especifica serão MUITO apreciadas por mim



Bem, sobre o livro, tava conversando ontem mesmo comum amigo sobre o assunto. e chegamos em um MMC.

onde, Livro de programação (exemplo, C), não deve ensinar a "lógica" ao "iniciante", pois o livro de destina a ensinar a linquagem (nesse caso, a syntax), e não a lógica.

e livros intermediarios, geralmente eles não "falam" muito, eles presumen que vc já tem um noção, dai ele enrola menos e é mais direto ao assunto.

bem, lógica é algo que a pessoa deve adiquirir, ela não é "ensinada" (é e não é... é complicado) exatamente. poss dizer que ela é 'apresentada", a pessoa.

cabe a pessoa a usa-la, melhora-la, modifica-la...

deu para sacar oq eu penso mais ou menos?

a unica coisa que eu queria que tivesse como ensinar mesmo, é como "retomar a vontade" de programar...
pois eu tô sem saco algum nesses ultimos dias...

mas é assim mesmo, acontece com todospiscadela.png
Apenas Quem Reinventou a Roda, Sabe o porque dela ser Redonda - DevilF
© 1999-2024 Hardware.com.br. Todos os direitos reservados.
Imagem do Modal