Saturday, February 14, 2009

Raptor - Um ambiente para aprendizagem de programação usando uma Linguagem Visual

O que quero partilhar hoje é uma reflexão minha sobre Linguagens Visuais e o seu interesse no ensino da Introdução à Programação.
A cerca de 4 anos atrás no Instituto em que dou aulas, em horário pós-laboral, verificava-se uma situação que penso ainda hoje existir em muitas outras entidades. Uma dificuldade grande de motivar os alunos para a aprendizagem da programação[]. E demostrar o grande interesse desta área, e o seu futuro inevitávelmente muito interessante em termos de empregabilidade e crescente reconhecimento que irá ter a nível das empresas e dos organismos oficias. Será sem duvida uma necessidade nuclear, a nível de recursos humanos de um país, que pretenda uma industria com produtos de tecnologicamente avançados e inovadores. O ignorar esta necessidade será cometer o mesmo erro que é a realidade da falta actual de médicos em Portugal, ou da falta de profissionais qualificados em engenharia de software em países como a Alemanha, Austrália ou EUA.
Tomamos na altura a decisão de implementar um programa focado numa nova estratégica que pudesse motivar e facilitar a aprendizagem das bases ciêntificas da programação desmitificando a áurea de dificuldade que este tipo de unidade curricular tem. Estive envolvido neste programa que se mostrou um desafio, cujos resultados actualmente mostram ter sido uma aposta ganha.
Este programa pretendia por um lado facilitar a aprendizagem das técnicas introdutórias da programação e simultâneamente aumentar significativamente o conjunto de competências, saberes e prática de programação dos alunos a frequentar estas unidades curriculares. Por outras palavras obter resultados significativos em termos dos "outputs" e artefactos de software que os alunos conseguissem produzir logo num primeiro curso de introdução a ciência dos computadores e programação. A maioria das abordagens tradicionais passam por articular unidades de conhecimento básico sobre algoritmia, metodologias de desenvolvimento de software e estruturas de dados com uma linguagem de programação tradicional como o C ou o Java. O problema desta abordagem é que a maioria dos alunos perde-se na complexidade da gramática, regras e bibliotecas e ambiente de desenvolvimento da linguagem em vez de focar a sua atenção sobre como resolver problemas com métodos, procedimentos e boas práticas de programação e engenharia de software.


A escolha das ferramentas caiu num ambiente desenvolvido pelo professor Martin Carlisle United States Air Force Academy [http://raptor.martincarlisle.com/]. Este ambiente de desenvolvimento possuí um paradigma visual baseado no conceito de fluxograma, e na sua versão mais recente possuí um modo OO - orientado a objectos, em que é possivel construir diagramas de classe UML. Testado por mim nos últimos quatro anos com sucesso este ambiente permite a introdução à programação e algoritmia usando os marcadores recomendados pela ACM para uma unidade curricular CS1/ 'PF - Programming Fundamentals' e o nível de trabalhos de laboratório executados pelos alunos estão em linha com as os resultados das melhores escolas com abordagens/estratégias/unidades semelhantes. Outros programas 'opensource' que usam este paradigma do fluxograma e geram código existem como o devFlowCharter, FlowGrid ou freeDFD, este último em várias linguas, mas nenhum tem o suporte e robustez do Raptor.


Bibliografia Fundamental:

1. Recomendações curriculares da ACM - CC2001 (computing curricula 2001) para cursos de Ciências da Computação [Download]
2. “RAPTOR: Introducing Programming to Non-Majors with Flowcharts”, with T. Wilson, J. Humphries and S. Hadfield, Journal of Computing Sciences in Colleges, 19(4):52-60, April 2004.
3. “Tools for Teaching Introductory Programming: What works”, with K. Powers, P. Gross, S. Cooper, M. McNally, K. Goldman, V. Proulx (panelist). Proceedings of the 37th SIGCSE Technical Symposium on Computer Science Education, Houston TX, March 2006. (14 of 26 submissions accepted, 54%)
4. “RAPTOR: A Visual Programming Environment for Teaching Algorithmic Problem Solving”, with T. Wilson, J. Humphries and S. Hadfield, Proceedings of the 36th SIGCSE Technical Symposium on Computer Science Education, Saint Louis MO, February 2005. (104 of 330 submissions accepted, 32%)
5. “RAPTOR: Introducing Programming to Non-Majors with Flowcharts”, with T. Wilson, J. Humphries and S. Hadfield, Proceedings of the 10th Annual CCSC Central Plains Conference, Warrensburg MO, April 2004.
6. Exemplo de programa de ordenação interna, de vector com 100 elementos numéricos, em devFlowCharter[download]
7. A minha pessoal [http://www.jorgemota.com/] página de suporte as disciplinas que leccione e que incluem a Disciplina de Introdução a Ciências da Computação, com inumeros exemplos em Raptor.

Friday, February 13, 2009

Altair 8800 o 'Pai' dos computadores pessoais


O MITS Altair 8800 é considerado por muitos como o primeiro computador pessoal. Naturalmente que esta pretensão é alvo de longa controvérsia com muitos 'litigantes' a considerarem o Scelbi-8H da empresa Scelbi Computer Consulting Company, disponivel comercialmente em Março de 1974 em revistas como a QST e Radio Electronics, baseado no microprocessador 8008 da Intel, como verdadeiramente o primeiro, ou outros a considerarem o Mark-8, cujo artigo de construção foi publicado em Junho de 1974 na revista Radio- Electronics como o motor do movimento de 'apaixonados' pelos pequenos microcomputadores que fez nascer a indústria de computadores pessoais como a conhecemos hoje. Para a história ficou que o artigo publicado na Popular Electronics em Janeiro de 1975, foi aquele que revolucionou e popularizou o uso de computadores de baixo preço e de arquitectura aberta, com ferramentas de software capazes de levar a casa de todos o uso dos computadores. A bem da verdade, uma pequena nota deve ser deixada aqui sobre a verdadeira realidade do que eram os recursos de software com a versão original do Altair 8800 - nenhuns. Este microcomputador era programado, usando o painel com pequenos interruptores, que davam acesso ao barramento de dados, endereços e operações de controle sobre os mesmos que em binário e instrução e intrução servia para desenvolver cada programa que se pretendia ver executar no Altair. Como não tinha originalmente nenhum tipo de interface homem-máquina digno desse nome (interface para impressora, terminal alfanumérico ou mesmo terminal de fita perfurada) nada fazia a não ser mostrar no painel frontal sob a forma de leds acessos os apagados o resultado da execução do programa.
O engenheiro H. Eduard Roberts autor do Altair e da sua arquitectura, dono de uma pequena empresa no Novo México (New Mexico), Micro Instrumentation and Telemetry Systems (MITS), fundada em 1968, concebeu e disponibilizou com este projecto ao mundo muitas das realidades que vemos reflectidas hoje na indústria de computadores, os 'clones' , a normalização de elementos da arquitectura através do seu desenho aberto e da disponibilização de padrões como o famoso barramento S-100. Isto permitiu que o espírito empreendedor de muitos jovens engenheiros e empresários produzissem computadores literalmente semelhante em termos operativos e capazes de correr o mesmo software. Entre estes jovens empreendedores estava Bill Gates que encontrou neste microcomputador a oportunidade de disponibilizar ferramentas de software que de forma definitiva massificou a capacidade de programação de computadores e consequentemente o desenvolvimento da indústria de software como a conhecemos hoje. O famoso Basic que fez nascer a Microsoft foi desenvolvido para esta máquina e carregado para demostração numa fita perfurada que foi lida por um pequeno 'loader' programado na viagem de avião entre Boston e Albuquerque. Igualmente, podemos atribuir a movimentos de utilizadores do Altair, o que ainda hoje designamos como hackers e "piratas" de software, ao associarem-se em grupos como o famoso "Homebrew Computer Club" e usarem para a seus projectos e investigação cópias do famoso Basic, da ainda não existente Microsoft [ler carta aberta de Bill Gates aos Hackers].


Na reacção revolucionária das pessoas ao lançamento comercial deste microcomputador, esteve seu modesto preço [lista de preços], substancial capacidade de processamente relativamente ao microcoputadores da época pré-Altair e extensa e aberta documentação em termos de arquitectura, forma de programação e operação[ manual de programação, manual de operação e manual de montagem e arquitectura]. A ideia de Ed. Roberts na MITS era a de permitir que outros fabricantes e desenvolvedores pudessem produzir componentes que tornassem o Kit original verdadeiramente útil e a sua capacidade pudesse ser expandida através de uma rede de fabricantes dos mais diversos tipos de artefactos de expansão como placas de memória, de interfaces de I/O, modems, interfaces de video, interfaces para unidades de disquete, leitores de cassetes, placas de projecto electrónico etc., Verdadeiramente foi um sucesso de tal forma grande que a MITS, a empresa de E. Roberts, viu-se incapaz de dar resposta ao enorme numero de pedidos que surgiram com a publicação do artigo na Popular Electronics. A previsão de vendas total de cerca de duas centenas de unidades de Kits do Altair 8800 foram ultrapassadas logo no primeiro dia após a publicação do artigo, com dezenas de pessoas a acamparem em frente a MITS em Albuquerque na esperança de conseguirem uma das primeiras unidades produzidas.
Eu sou um feliz possuidor de uma destas raras máquinas, em bom estado de conservação e a funcionar e sobre o qual pretendo num próximo 'post', escrever as minhas experiências na sua programavação básica e como ainda hoje podemos aprender com estas máquinas. Existem simuladores de Altair interessantes que para quem como eu não tem a felicidade de possuir uma destas reliquias, mas possa no entanto ter o enorme prazer de as programar ou usar [simulador de Altair 8800].
Bibliografia importante sobre o Altair:
1. The tenth anniversary of the Altair 8800, Mims Forrest, Computer & Electronics, 1985
2. Altair 8800 Operators Manual [download]
3. Altair 8800 Assembly /construction Manual [download]
4. Altair 8800 Theory Of Operation Manual [Download]
11. Revista Popular Electronics Janeiro de 1975 [1, 2, 3, 4, 5]
12. Revista Popular Electronics Fevereiro de 1975 [1, 2, 3, 4, 5]