domingo, 8 de fevereiro de 2009

Plataformas de Programação

Na arrumação do escritório aqui de casa, achei duas raridades. A primeira, uma Micro Sistemas bem velha, a primeira revista de programação e informática que eu tive. Depois, algumas MSX Magazine e MSX Fan japonesas. O que me chama a atenção nestas revistas é como o usuário médio na época era interessado em aprender a fazer programas. Coisas simples, claro, mas ainda capaz de fazer pequenas tarefas no computador sem precisar dispor mão de de um programa especial ou grandes complicações de programação.

As plataformas como MSX, Apple ][e e ZX Spectrum eram bastante limitadas, com pouquíssima memória, mas ao mesmo tempo, eram máquinas com arquiteturas muito bem boladas, que tornavam estas máquinas uma plataforma bastante poderosa e simples de se programar. Um exemplo? Se eu pedir para um aluno escrever um programa para PC que desenhe uma linha na tela em modo gráfico usando C, o coitado vai ter uma baita trabalheira, como obter bibliotecas, configurar um projeto/makefile que as utilize, etc. Um programador de basic MSX teria bem menos trabalho:

10 screen 2
20 line (100,100)-(200,200)
30 goto 30

Essa quantidade absurda de programa faz, de maneira eficiente e direta, o que um programador de PC teria muito mais trabalho. E nem era difícil digitar isso tudo, já que essas máquinas mais antigas tinham embarcado um interpretador Basic que era exibido assim que ligadas. Agora, vamos ver um exemplo para PC/Mac que faz praticamente o mesmo, escrito em C usando SDL e a SDL_gfx.

#include [SDL/SDL.h]
#include [SDL/SDL_gfxPrimitives.h]


int main(int argc, char **argv)
{
SDL_Surface *tela;
SDL_Event e;
int a=-1;
if(SDL_Init(SDL_INIT_VIDEO)<0)
exit(1);
atexit(SDL_Quit);
tela = SDL_SetVideoMode(640,480,32, SDL_SWSURFACE);
if(tela == 0)
exit(1);
lineRGBA(tela, 100, 100, 200, 200, 255, 255, 255, 255);
SDL_Flip(tela);
while(a)
while(SDL_PollEvent(&e))
switch(e.type)
{
case SDL_KEYDOWN:
case SDL_QUIT:
a=0;
break;
}
exit(0);
}

obs: os símbolos maior quê e menor quê foram trocados por ] e [.

Bem mais longo e complexo do que o programa anterior. Ah, para compilar esse fonte, a gente usa o seguinte palavrão na linha de comando Posix:

gcc -lSDL -lSDL_gfx sdl_sample.c -o sdl_sample

O alarmante nisso tudo é que a SDL é uma biblioteca que facilita, e muito, a vida de um programador PC. Claro que o exemplo é multimídia, mas ele é uma amostra direta de que, muitas vezes, menos é mais. Menos complicações na plataforma, mais simplicidade no desenvolvimento. Claro, mesmo num MSX poderíamos programar em C, mas o que conta é o fato de que há uma plataforma simples de se trabalhar com a qual pode-se escrever programas muito complexos. Por exemplo, o Page Maker do MSX era em Basic e era um dos melhores editores DTP na época para microcomputadores de 8 bits.

Colocando isso nas mãos dos usuários caseiros, em especial adolescentes com muito tempo nas mãos, saíam programas muito bons, publicados em páginas de revistas como as já mencionadas (um jeito de vender o seu programa). Era muito legal poder digitar um jogo a partir da revista e depois fazer alterações nele para ver o que aocntecia. Como diria o meu amigo Marcel da EGM Brasil, esse foi o primeiro mod de jogos, muito antes do termo virar moda.

Mas afinal, porquê isso é interessante? Como professor na área, vejo uma diminuição patente no número de alunos cursando uma faculdade na área de informática. Uma plataforma simples, mas poderosa, e fácil de programar, é o requisito básico para que usuários comuns que ficam apenas no Messenger e no navegador façam pequenos programas úteis. Uma plataforma que seja fácil de resolver o problema de física que o professor passou, ou aquelas contas chatas com números imaginários. Isso aumentaria o interesse na área, suprindo a demanda do mercado que hoje está reprimida pela falta de profissionais.

O duro é, nos dias de hoje, aparecer com tal solução. Pode ser um trabalho interessante para a disciplina de compiladores deste ano.

2 comentários:

Piovezan disse...

"Era muito legal poder digitar um jogo a partir da revista". Pô, cansa só de lembrar... Mas era legal nesse processo descobrir uns recursos de sintaxe que nem sabia que existiam. :)

PV disse...

Não só era legal, como era extremamente legal. Pegar código fonte em site é prático, concordo, mas do ponto de vista aprendizado é zero. Digitando o programa, a gente lia o código e ia entendendo. Lembro um dia que enquanto digitava um joguinho, eu ia descobrindo como o jogo funcionaria, mesmo antes de poder rodá-lo.