sexta-feira, maio 27, 2016

Nostalgia: Turbo Pascal

Turbo Pascal é um daqueles softwares que eu usei pouco mas sempre achei admirável. No embalo de ter rodado o Wing Commander no Raspberry e um conhecido ter postado uma imagem rodando o Turbo C no Dosbox, resolvi brincar um pouco com as versões antigas que estão disponíveis no site da Embarcadero.


Um Pouco de História

A wikipedia tem um relato bem completo da história do Turbo Pascal. Resumindo, a ideia era agilizar o processo de desenvolvimento, juntando um editor com um compilador/linker de um passo só. Mais velocidade era obtida mantendo todo o ambiente e o fonte sendo compilado na memória.

Inicialmente oferecido para micros de 8 bits baseados no 8080 ou Z80 e rodando CP/M-80, o sucesso veio principalmente com a versão MSDOS para micros compatíveis com o PC IBM. As primeiras versões tinham algumas limitações fortes, que foram relaxadas com a versão 4. A versão 5.5 passou a incluir suporte à programação orientada a objeto. O Turbo Pascal para MSDOS evoluiu até a versão 7 e originou um versão Windows. Em 1995 o Turbo Pascal foi substituído pelo Delphi, que continua suportando a maior parte da linguagem.

Turbo Pascal MSDOS v1.00 (1983)

Esta versão é composta por apenas 10 arquivos, totalizando 128KB. Ideal para um disquete 5 1/4" face simples, densidade dupla. Destes 10 arquivos,  quatro são referentes a um exemplo (uma mini planilha eletrônica). O editor e o compilador estão em TURBO.COM com 33KB (se você quiser mensagens ao invés de códigos de erro, acrescente o TURBOMSG.OVR e "desperdiçe" 1,5KB no disco e na memória).

A tela inicial já sugere a interface minimalista:


Respondendo Y, obtemos uma espécie de menu principal:


 Temos algumas coisas curiosas nesta tela. Repare que fala no Logged Drive, estamos no tempo do MSDOS 1.x e subdiretórios ainda não existem. Por enquanto não tem nenhum fonte carregado na memória e estamos com quase 63000 bytes livres. Isto porque o Turbo Pascal trabalha com o fonte em uma área limitada a 64K da memória (no tempo do 8088 dava trabalho usar mais que 64K). Vamos digitar E e entrar com um programa:


O editor é razoavelmente poderoso, mas não utiliza as setas e teclas "especiais" do PC. Tudo é feito usando as sequências popularizadas pelo WordStar. Por exemplo, para sair é preciso digitar Control K D. Voltando ao menu principal e digitando C o programa é rapidamente compilado:


Digitando R o programa roda:


Uma observação: fonte e executável estão na memória. É preciso digitar S para salvar o fonte em disco. Para salvar o executável é preciso mudar uma opção do compilador antes de compilar. Para este meu programa exemplo, o executável (arquivo .COM) teve cerca de 8,5KB. A maior parte disto é o runtime do compilador.

Turbo Pascal MSDOS v3.02 (1986)

Agora são 29 arquivos e 319KB (precisa de um disco face dupla). O TURBO.COM ocupa 39K e estão disponíveis duas versões alternativas, uma que usa o 8087 para os cálculos em ponto flutuante e outro que usa o formato BCD (apropriado para cálculos envolvendo dinheiro). Os demais arquivos novos são mais exemplos e alguns utilitários.

A tela inicial não mudou muito:


O menu principal também não. Reparar na inclusão do diretório corrente, a versão 3 foi a primeira a tratar subdiretórios:


O editor agora trata as teclas do PC (continua tratando as teclas padrão WordStar, é claro). O resto é mais ou menos o mesmo, exceto que tem várias novas funções disponíveis para o programador.

Turbo Pascal MSDOS v5.5 (1989)

Neste ponto as coisas já mudaram bastante. São agora dois discos, contendo vários arquivos compactados. A tela inicial tem uma aparência bem diferente:


Lembre-se que ainda estamos no MSDOS, rodando em modo texto. Mas temos uma barra de menu em cima. Repare que uma das opções é Debug, além do editor e compilador temos um depurador! Estamos deixando os anos 80, alguns anos antes as três funções eram feitas por programas independentes e a gente comemorava ter um depurador onde pudesse usar os nomes das rotinas e variáveis ao invés dos endereços (leia aqui o entusiasmo de Charles Petzold com o SYMDEB).

Por trás desta carinha simpática, muita coisa mudou das versões 1 e 2. Existe suporte para programas quebrados em vários fontes e o uso de bibliotecas, com o conceito de Unit e um passo de link separado. O programa é gerado agora no formato .EXE ao invés do limitado .COM. Como dito antes, a principal novidade da versão 5.5 é o suporte a programação orientada a objeto.


Nenhum comentário: