domingo, 22 de dezembro de 2013

Pascalzim

Assim nasceu o Pascalzim
 
A linguagem PASCAL foi desenvolvida pelo professor Niklaus Wirth no ano de 1972 em Genebra, Suíça. O nome da linguagem, Pascal, foi uma homenagem ao filósofo e matemático Blaise Pascal ( 1623-1662 ), inventor da primeira calculadora mecânica do mundo (a Pascalina). O desejo de Wirth era dispor, para o ensino de programação, de nova linguagem que fosse simples, coerente e capaz de incentivar a confecção de programas claros e facilmente legíveis, favorecendo a utilização de boas técnicas de programação.

A linguagem Pascal se tornou amplamente conhecida e utilizada com o lançamento da mundialmente famosa série de compiladores Turbo Pascal pela Borland, em 1985, devido a uma combinação de simplicidade e poder.

O compilador Pascalzim, cujo desenvolvimento iniciou no Departamento de Ciências da Computação da Universidade de Brasília, é fruto de vários anos de pesquisa e trabalho na área de algoritmos, tradutores e linguagens de programação. Foi adotado como ferramenta de apoio ao ensino e aprendizagem da linguagem Pascal pelos alunos matriculados no curso de Introdução à Ciência da Computação nesta Instituição, e começou a ser utilizado no primeiro semestre do ano de 2000.

No segundo semestre de 2001,e nos semestres que se seguiram, a ferramenta foi utilizada pelos meus alunos do Instituto de Educação Superior de Brasília (IESB) na disciplina "Algoritmos e Programação Estruturada".

A ferramenta foi exaustivamente testada, mas ainda assim não se encontra livre de erros de implementação. A correção destes será efetuada tão breve quanto sua descoberta, levando à disponibilidade de versões mais atualizadas do compilador.

O compilador implementa um subconjunto da linguagem Pascal e contém as estruturas de dados, funções e comandos mais utilizados por iniciantes no estudo dessa linguagem. O arquivo de ajuda que acompanha o produto especifica as instruções suportadas. Críticas e sugestões são bem vindas!



Um pouco da minha história com o Pascalzim

O Pascalzim tem uma longa história, como pode ser observado na página histórico do esforço de desenvolvimento. Ele surgiu de uma idéia, de um trabalho que se iniciou mais ou menos na metade do ano de 1998.

Nesta época, eu ainda cursava graduação em Ciência da Computação na Universidade de Brasília. As matrículas em disciplinas no semestre já haviam iniciado, e eu por muita sorte consegui uma das vagas ofertadas de última hora na disciplina Tradutores. Como objetivo do curso, todos alunos deveriam implementar e apresentar, no final do semestre, um compilador Pascal. O compilador deveria implementar ao menos as fases de análise léxica, sintática e semântica do código fonte. O compilador que apresentei continha, além do requisitado, a geração de código intermediário, e também uma máquina virtual que tornava possível a interpretação desse código. A este compilador dei o nome Pascalzim, pois ele era um "pequeno Pascal", um pascalzinho...

Nascia a versão 1.0 do compilador, desenvolvido em linguagem C. Bem primitiva, cheia de bugs, com poucos recursos da linguagem Pascal, funcionava via linha de comando do DOS. Gerava, no processo de compilação, um arquivo que continha instruções em uma linguagem semelhante ao conjunto de instruções P-Code proposto por Wirth. As instruções "Pzim-Code" eram executadas por um interpretador, construído a parte.

Como trabalho final de graduação optei por continuar o desenvolvimento do Pascalzim. Integrei o interpretador e o compilador dentro de um mesmo arquivo executável. Ampliei a linguagem reconhecida pelo compilador. Para tornar seu uso mais fácil (e agradável) desenvolvi uma interface gráfica (em Delphi) que chamava o compilador via linha de comando. Essa nova versão, a 2.0, ainda não havia sido liberada para uso, mas foi muito elogiada pelos professores que fizeram parte da banca de avaliação.

Terminada a graduação, no semestre seguinte ingressei no Mestrado em Ciência da Computação também na Universidade de Brasília. Foi quando tive a oportunidade de ensinar programação Pascal para uma turma da disciplina de Introdução a Ciência da Computação. Minha orientadora sugeriu a utilização do Pascalzim, e antes mesmo das aulas iniciarem, voltei minha atenção ao aperfeiçoamento da versão 2.0, descobrindo e eliminando vários bugs. Utilizando o C++ Builder, integrei em um único executável todo o ambiente de desenvolvimento (interface gráfica, compilador e interpretador). Incrementei o reconhecimento de algumas funções da linguagem Pascal, e a primeira versão oficial, a 3.0, foi disponibilizada para os alunos do curso de Introdução a Ciência da Computação, turma L, no 1º semestre de 2000.

Sou muito grato a estes magníficos alunos, pois eles, espontaneamentese, mostraram interesse em participar do chamado Projeto Pascalzim, contribuindo de forma significativa para o amadurecimento do compilador. Foram meus beta-testers, sofreram bastante com bugs que inevitavelmente apareceram no meio do caminho (e não foram poucos!!!). Cadeias aparecendo invertidas na impressão, erros dos mais diversos... :) Ao final do semestre, o compilador já estava muito mais estável.

Quase dois anos se passaram desde então, e alguns professores da UnB passaram a utilizar o compilador para ensinar programação em Pascal (dentre eles minha orientadora, a professora Maria Emília, uma pessoa admirável!). Foram descobertos alguns outros novos bugs, que fui anotando e corrigindo aos poucos, ao mesmo tempo em que lutava para concluir o mestrado. Reescrevi novamente o analisador léxico e o analisador semântico.

No segundo semestre de 2001, fui convidado para ensinar programação Pascal aos alunos da disciplina de Algoritmos e Programação Estruturada no IESB - uma faculdade particular de Brasília. Os alunos mostraram interesse pelo Pascalzim, e pediram para que eu o utilizasse na disciplina. O compilador, nessa altura, estava muito mais estável que nas primeiras versões, mas ainda apresentava alguns problemas.... A fim de saná-los, concentrei meus esforços na sua detecção e correção. A versão resultante deste esforço foi disponibilizada na página da disciplina.

Quando percebi que o compilador estava relativamente confiável e estável, decidi finalmente divulgá-lo na Internet. Disponibilizei os arquivos para sua instalação no site http://ww.superdownloads.com.br e, em 4 meses, mais de 3.000 downloads foram efetuados. Os e-mails não paravam de chegar, vinham de toda parte do Brasil, e até Portugal. :) Meus alunos, no IESB, acompanhavam esta conquista mostrando entusiasmo com os resultados alcançados.

Finalmente, decidi estruturar um site próprio para o Pascalzim, que trouxe como novidade a versão 4.0 do compilador. Nessa nova versão o editor foi consideravelmente ampliado, e as palavras-chaves, strings, etc. apresentavam uma formatação própria no código fonte. Foi adicionada a opção de templates, que adiciona um esqueleto das construções sintáticas mais comuns. As mudanças foram tão grandes, que decidi dar à nova versão o rótulo de versão 4.0.

A versão 4.0 foi disponibilizada para download no dia 25 de janeiro de 2002. No dia primeiro de abril o site http://ww.superdownloads.com.br anunciava que mais de 10.000 downloads do Pascalzim foram efetuados. Em menos de 3 meses, foram mais de 6.000 downloads. Em agosto de 2003, na versão 4.04, o site anunciava um total de 37.000 downloads. Em meados de 2005, o número de downloads alcançava 150.000.

Comecei a receber vários emails, dos mais variados cantos do país, de professores, instrutores e alunos que estavam utilizando o compilador em disciplinas de programação em Pascal. Muitos destes emails traziam palavras amigas, palavras de incentivo, agradecimentos. Algumas pessoas enviaram sugestões, dúvidas, outras problemas encontrados durante a utilização do compilador. Também recebi alguns emails digamos, nada educados...

Em meados de setembro de 2005, sem que eu pudesse receber uma comunicação do pessoal do site http://ww.superdownloads.com.br, o Pascalzim foi dali retirado. Tentei por várias vezes entrar em contato com os responsáveis pelo site, mas nenhum e-mail de retorno foi enviado como resposta aos meus apelos. Posteriormente, descobri que eles haviam barrado (e banido) do site os softwares que estavam armazenados em servidores gratuitos como o geocities e o tripod - justamente o caso do Pascalzim. Mesmo assim, sendo fiel aos usuários do compilador, optei por manter os sites oficiais:
http://br.geocities.com/pascalzim/index.html (esse site foi desativado)

http://pascalzim.tripod.com/index.html

Em 2007 foi adicionado ao compilador um recurso muito interessante: a execução passo a passo do programa. Isso aconteceu na versão 5.0, e permitiu aos usuários do pascalzim acompanhar visualmente a execução dos seus programas.

Nas versões seguintes foram encontrados e corrigidos diversos bugs. Foram adicionados belíssimos exemplos de jogos que foram enviados a mim por usuários do compilador, com destaque ao WordKill, ao Pong, ao Invasores, ao Damas. Foi adicionado também um interessante editor de imagens, o PaintZim, também enviado por um usuário do compilador. Diversos recursos foram incorporados à linguagem reconhecida pelo compilador, como o suporte ao tipo subgrupo, enumerações, o uso de with com registros.

Em 2012 dediquei um bom tempo para reescrever uma grande parte do analisador semântico do compilador, e todo o tratamento de tipos de dados foi reescrito. Essa mudança tornou permitiu adicionar ao compilador uma janela de debug para visualizar o conteudo de variáveis globais e locais durante a execução passo a passo. Essa importante funcionalidade tornou ainda melhor o acompanhento linha a linha da execução de um programa.

Em 2013 voltei minha atenção para o refatoramento do código fonte do compilador. Tentei eliminar do código funções soltas, fruto da programação estruturada, e organizei o código em um conjunto de classes significativas, segundo a programação orientada a objetos. Depois de uma extensa pesquisa, finalmente consegui adicionar ao compilador o suporte a arquivos binários (file of). Adicionei também o suporte ao tipo conjunto (set), encerrando com isso um ciclo: a implementação dos tipos disponíveis na linguagem Pascal. Nesse ano o compilador passou a permitir ainda a definição e uso de bibliotecas de código definidas pelo usuário (units).

Desde a escrita da primeira linha de código, até os dias atuais, muitos anos se passaram. O Pascalzim, hoje, conta com muitos anos de história. Ao olhar o código do compilador facilmente percebo o quanto aprendi e amadureci com meus erros e acertos. Escrevi e reescrevi muita coisa, tentando ao mesmo tempo melhorar e evoluir o compilador.

Hoje sinto uma enorme saudade dos dias em que estava lecionando na UnB, quando as primeiras versões do compilador começaram a ser testadas e usadas pelos meus alunos... Sinto também muito orgulho desses alunos, e de todos aqueles que participaram e contribuiram, espontaneamente, para que o Pascalzim atingisse a maturidade e o reconhecimento que hoje alcançou. 


Linguagem 

Na versão atual o compilador:

- Suporta os tipos predefinidos integer, char, boolean, real e string.

- Permite a utilização dos seguintes tipos estruturados: vetor (array), registro (record), enumeração, conjunto (set) e ponteiro.

- Permite o uso de arquivos no formato texto (text) e binário (file of). 


- Admite constantes inteiras, reais, lógicas e literais; 


- Reconhece os seguintes operadores: 


  • Aritméticos: +, - , *, /, div, mod
  • Lógicos: not, and, or, xor
  • Condicionais: =, <>, >, >=, <, <=
  • Conjuntos: =, <>, +, -, *, <=, >=

- Reconhece os seguintes comandos: 
  • Comandos de atribuição
  • Estruturas de repetição: for .. to, for .. downto, repeat, while
  • Estruturas condicionais: case, if .. then, if .. then .. else
  • Comandos para manipulação de arquivos: append, close, open, reset, rewrite, seek, filesize e filepos
  • Comandos para manipulação de ponteiros: dispose, new
  • Comandos para entrada e saída de dados: read, readln, write, writeln
  • Outros: break, clrscr, continue, cursoron, cursoroff, dec, delay, delete, exit, gotoxy, inc, insert, readkey, randomize, str, textcolor, textbackground, val, with

- Reconhece as funções abs, arctan, chr , concat, copy, cos, eof , eoln, exp , frac, filesize, filepos, int, ioresult, keypressed, length, ln, odd, ord, pos, pred, random, readkey, round, seek, sin, sqr, sqrt, str, succ, trunc, upcase, wherex, wherey

- Reconhece as constantes pré-definidas maxint e pi

- Permite a definição de funções e procedimentos, suportando: 
  • Recursividade
  • Aninhamento
  • Passagem de parâmetros por valor e/ou referência 
- Permite o uso de unidades definidas pelo usuário (uses)
Download


Versão atual do compilador:
Pascalzim 5.2.4 (18/10/2013)

Requisitos Minimos :
Sistema Operacional Windows


Programa:
Pegue o arquivo de distribuição clicando aqui.


Apostila gentilmente cedida pelo Professor Dalton Kozak: 
Pegue a apostila clicando aqui.

Versões Anteriores:


Pascalzim Versão 5.2.3
Pascalzim Versão 5.2.2
Pascalzim Versão 5.2.1
Pascalzim Versão 5.2.0
Pascalzim Versão 5.1.3
Pascalzim Versão 5.1.2
Pascalzim Versão 5.1.1
Pascalzim Versão 5.1.0
Pascalzim Versão 5.03
Observações:
  • Por questões de disponibilidade, os arquivos de distribuição estão sendo mantidos no google docs. 
  • Depois de clicar no link de download, selecione o menu 'File', depois a opção 'Download'. 
  • Utilize o Winzip (ou outro programa capaz de descompactar arquivos zip) para abrir o arquivo de distribuição. 
  • Execute o programa clicando em Pzim.exe.



Fonte:http://pascalzimbr.blogspot.com.br

Nenhum comentário:

Postar um comentário