Provavelmente você já passou por isso: você faz um curso de informática qualquer, como por exemplo um colegial técnico ou uma faculdade, e quando você tem a aula de programação você é ensinado com exemplos pouco aplicáveis. Ou então, na primeira tentativa de fazer um sistema um pouco maior, descobre que ainda precisa aprender muito mais, pois seu sistema tornou-se impossível de continuar, e qualquer alteração no sistema propaga uma mudança absurda em toda a sua base de código. E então, você resolve ler alguns livros ou procurar, de alguma maneira, descobrir o que falta no seu conhecimento para conseguir, de fato, fazer grandes sistemas. Infelizmente, porém, a maior parte do conteúdo disponível está em inglês, ou é muito avançado ou básico.
Foi então que surgiu a idéia destas vídeo-aulas. A idéia é montar vídeo-aulas pequenas, em formato de curso (baseado no Coursera e Khan Academy), mas que ensinem de fato a técnica de programação e não apenas as linguagens que serão usadas. De fato, veremos muito pouco de “linguagens de programação”, e veremos mais os conceitos ou as técnicas que precisamos para escrever códigos robustos e duráveis.
Para anúncios rápidos, há uma página no Facebook para tal: http://www.facebook.com/TecnicasProgramacao
Eu não pretendo fazer um sylabus ou alguma outra ferramenta rígida sobre o assunto que vamos passar. Vamos estudar principalmente programação orientada a objetos e depois, programação funcional. Os assuntos que pretendo abordar serão:
-
Orientação a objetos introdutório
- Introdução
- Orientação a Objetos – exemplos e métodos
- Orientação a Objetos – propriedades
- Orientação a Objetos – classes
- Tipagem I – classes, tipagem estática e dinâmica, duck-typing
- Composição por Instância
- Tipagem II – Herança
- Tipagem III – Sobreposição
- Composição por Instância em Scala
- Orientação a Objetos em Smalltalk
- Orientação a Objetos por Prototipação – Javascript
- Herança Múltipla (Python/C++)
- Tipagem IV – interfaces e classes abstratas
- Closure, blocos, função anônima
- Compilação, Bytecode, AST
- Tempo de Compilação e Tempo de Execução
- Tipagem VI – tipagem estruturada em Scala
- Coleções
- Iteradores
- Closures em Javascript
- Closures em Java
- Efeitos Cliaterais, passagem por referência
- Imutabilidade
- Classes “Tipadas”, Generics, Templates
- Tipagem VII – variância
- Tipagem VIII – invariância
- Composição por Herança
- Composição – Exemplos
- Mande, Não Pergunte (Tell, Don’t Ask)
- Problemas com “Tell, don’t Ask”
- Testes Unitários
- Frameworks – Test/Unit
- TDD
- BDD
- SPECs (RSpec e Specs2)
- MVC
- DSL I
- DSL II
Coleções e iterações
Imutabilidade
“Generics” e “Generic-Likes”
Práticas
Testes
Padrões
Esta lista será atualizada com o tempo.
O que esperar?
Nestas vídeo-aulas, serão apresentados conceitos de “técnicas de programação”. Ou seja, você não aprenderá a programar numa linguagem específica (no caso, faremos o curso em Ruby e em Scala, principalmente porque são duas linguagens que suportam diversos dos conceitos que mencionaremos aqui), mas sim aprenderá técnicas que são suportadas em várias linguagens diferentes. Por exemplo, embora o conceito de “closure” faça muito mais sentido para Ruby e Scala, teremos um vídeo mostrando como fazer isso em Java.
Para quem são estas vídeo-aulas?
Este curso não é para alguém que não conhece nenhuma linguagem de programação. Na verdade, o ideal é que se conheça pelo menos uma linguagem de programação (podendo ser Java, Scala, Ruby, Python, ou qualquer outra). Não é necessário conhecer a fundo a linguagem, porém o ideal é que ao menos, tenha-se tentado fazer algum programa não tão simples quanto um “hello world”.
Por fim, provavelmente será feita uma apostila simples com os comandos mais comuns das linguagens Ruby e Scala, possivelmente com um guia de sintaxe e equivalências do código em Ruby/Scala/Java, porém não há planos de material de apoio para quem desconhece o básico de programação. Os códigos passados nesse projeto não ficarão disponíveis a princípio, principalmente para incentivar os alunos a escreverem bastante código.
Licença de Uso dos Vídeos
Os vídeos estão todos licenciados sob a “Creative Commons“, e podem ser usados à vontade ou editados, DESDE QUE se mantenha que o autor das vídeo-aulas originais sou eu (Maurício Eduardo Chicupo Szabo) e que estão no seguinte link: http://snipurl.com/programacao. Por favor, não use o link desta página.
Para modificações no trabalho, você apenas precisa indicar que a nova versão é uma edição/adaptação/modificação deste trabalho, mas não tem a obrigação de me informar que fez uma modificação (embora eu ficaria grato se fosse feito, e dependendo do conteúdo da modificação, poderia até inserir um link nesta página ou em um dos vídeos).
Link, e Considerações Finais
As vídeo-aulas estão disponíveis como uma playlist do YouTube, neste link.
Uma coisa importante a ser mencionada é que muita gente que já programa em Ruby e em Scala vai ver que eu não estou usando o potencial 100% da linguagem (por exemplo, em Ruby eu não uso o formato “Um #{texto} qualquer” para concatenar strings, e quando chegar em Scala, eu vou assinar mais tipagens do que o necessário). Isso é proposital, por motivo acadêmico, para que os alunos não precisem, necessariamente, de conhecimentos profundos sobre a linguagem ou para deixar alguns conceitos bem explícitos (como tipagem e a idéia de herança/variância).
Vídeo-Aulas de Técnicas de Programação by Maurício Eduardo Chicupo Szabo
is licensed under a Creative Commons Attribution 3.0 Unported License.
0 Comments