Otimo vídeo – Google Tech Talks October 10 ,2007
Link direto aqui.
Seguimos com novos exemplos inspirados na triste realidade da polícia carioca.
/** O Bope foi criado para atuar quando a policia perde o controle* E no rio de janeiro isso acontece com bastante frequencia*/class Bope{ private String nome; private int qtdeVitimas = 1; // ja começa bem!
public Bope(String nome){ this.nome = nome; } // sobrecarga do método ondeTaOBaiano public void ondeTaOBaiano(Estudante e){ e.sabeVoarEstudante(); } public void ondeTaOBaiano(Traficante t){ t.levaSacoNaCabeca(); } // exemplo de método final! public final Doze encontreiOBaiano(Baiano b){ return b.naCaraNaoQueEhPraNaoEstragarVelorio(); }}
public class Treinamento{ public static void main(String [] xxx){ // Apresento o capitão nascimento Bope instrutor = new Bope("Capitao Nascimento"); try{ // de cada 100 policiais que fazem o curso do Bope, // so se formam 5, e eu, quando me formei parceiro, // eramos apenas 3. Turma.tentaFazerCursoBopeCom(capitao); } catch (PolicialCorruptoEncontrado pce){
} catch (PolicialFracoEncontrado pfe){
} catch (PolicialSemABandoleiraNessaAlturadoCampeonato e){
} }}
SEUS FANFARRÕES!
VCS TEM 10 SEGUNDOS PARA COMPLETAR ESSE CÓDIGO!
- O zero-dois NÃO está escrevendo!
- SEU zero-dois, porque o senhor não escreveu nenhuma linha?
- A-a minha IDE não terminou de carregar, senhor…
- Agora a sua IDE ja carregou, seu zero-dois?
- S-sim senhor…
- Então, seu zero-dois, termine o seu programa, senão todos os seus colegas terão que usar o EDIT do MS-DOS até o fim do curso E A CULPA EH DO ZERO-DOIS!
- Senhor, o zero-cinco está dormindo…
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
int cadastra_video(char *nome, int preco, int categoria);int cadastra_cliente(char *nome, char *cpf, char *endereco);int aluga_video(...);
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
O maluco do Peter Norvig (google) publicou no seu site o artigo How to Write a Spelling Corrector. Impressionante o que 21 linhas de Python são capazes de fazer!
>>> correct('speling')'spelling'>>> correct('korrecter')'corrector'
Não é atoa que o Google é o que é hoje em dia.
Vamos analisar a condição de leigo.
Eu já vi centenas de leigos que, ao sentar no computador, baixavam músicas, videos e jogos com os mais diversos programas, conectavam no irc, msn, icq, colocavam luzinhas e bichinhos animados para acompanhar o cursor do mouse, trocavam as fontes e os temas, procuravam os mais bizarros jogos, encontravam videos extremamente incomuns (sem youtube), etc. Para o que não presta, os leigos tem uma criatividade impressionante!
Quando falamos em um sistema pra leigos não precisamos pensar que as usuarios tem preguiça mental. Eles até podem ter, mas aí cabe aos projetistas desafiar e exercitar essa criatividade do mal e tranformar em criatividade do bem. Qualquer pessoa que senta na frente de um browser vai acabar nas paginas mais escabrosas mesmo que não sabia o que é ‘google’. Vai me dizer que, nesse caso, a linha de comando é ameaçadora ou difícil?
Das duas, uma: ou pensamos em uma camada de software para permitir que um usuario abstraia o sistema operacional e as configurações (normalmente se faz isso em sistemas “embarcados”) e use todos os recursos multimídia e de troca de informação com a facilidade de um pensamento OU pensamos em sistemas mais inteligentes, com documentação adequada e, com a ajuda da comunidade, divulgamos as informações e conceitos corretos. O Linux só é seguro porque o usuario comum, que vai fazer besteira, não tem a senha de root.
Não podemos fazer sistemas operacionais à prova de gente sem noção ou que sejam capazes de oferecer tanta intuitividade sem sacrificar a segurança, por exemplo.
Puxa, não tem nada mais fácil que usar a linha de comando (ok, sou suspeito pra falar). As pessoas não usam [o shell] pois não tem como acessar o orkut, ver vídeo do youtube, etc, de um jeito bonitinho. Alem de tudo, tá em inglês, ECA. Hoje em dia existem shells para pessoas iniciantes que ajudam, colorem o texto e sugerem mudanças praticas, como o fish.
É assim que fazemos um sistema pra leigos – temos que desafia-los a usar a criatividade que normalmente é usada pra criatividade do MAL e mostrar que um PC com linux não é um playstation. Quer usar um browser de verdade e usar o orkut e o youtube? PO! não tem nada mais facil que instalar um ubuntu da vida e clicar no icone do firefox!
Não vamos tomar atitudes de forma a não desafiar intelectualmente os usuários. Eles merecem todo o nosso respeito. Agora quem quer que o usuário não pense que faça uma camada de software que abstraia o Sistema Operacional. Existe mercado para ambas as coisas.
Entretanto acho mais humano que a gente exercite os cérebros atrofiados dos empurradores de mouse. Há 20 anos as pessoas usavam computadores com 32 kb de RAM e carregavam os jogos de uma fita K7 e ninguem morreu por isso — pelo contrário desenvolveram skills hoje necessárias em muitos cargos importantes e empresas como algumas multinacionais procuram desesperadamente.
Quem se lembra do Tio Maneco?
Pois bem, descobri que foi aprovada a captação de recursos para a produção do filme “As aventuras de Reina Caiman em o resgate do Maneco” (RF Cinema e TV Ltda).
Pra mim, este é o filme mais esperado de todos os tempos, mal posso esperar para ver o Flávio Migliaccio de novo, em um dos papeis mais legais e inteligentes da tv brasileira — afinal os filmes são impossiveis de serem achados e a série original foi apagada acidentalmente pela tv cultura.
(se alguem tiver mais informações, please, me avise!!!)