terça-feira, 12 de abril de 2022

BASIC Apascalado #10 - O Spectrum Next ainda não chegou ao nível do QL!


E o Zé Oliveira continua a enviar-nos os seus inestimáveis contributos. Desta vez temos a continuação dos artigos sobre Basic Apascalado, que começou por aparecer em 1986 no suplemento do MicroSe7e. O tema é o QL, o que é inédito em Planeta Sinclair.

Em 1984 o BASIC estava a evoluir para uma linguagem estruturada. No ano seguinte seria lançado o QuickBASIC em que os números de linha seriam opcionais. Mas em 1984, continuando a evoluir a sua linha de computadores, Sir Clive Sinclair lançou o Sinclair QL com o objectivo de ser uma versão profissional do ZX Spectrum. Embora comercialmente tenha sido um fiasco (vendeu 150.000 unidades enquanto o Spectrum vendeu 5 milhões), tecnicamente o QL era um sucesso: mais memória, mais velocidade, mais resolução gráfica, ... e uma linguagem BASIC que permitia a programação estruturada (sem o uso de GOTO). Este BASIC foi denominado, apropriadamente, SuperBASIC. Infelizmente, o preço (400 libras enquanto o Spectrum era 175 libras) e a quantidade de jogos que já havia para o Spectrum tornaram o QL nesse ilustre desconhecido!

Em 2017 houve uma nova tentativa para lançar uma versão melhorada do ZX Spectrum: O ZX Spectrum Next. Parece que o ZX Spectrum Next foi inspirado pelo Sinclair QL porque os melhoramentos do NextBASIC são semelhantes ao BASIC do QL:

- Declaração de procedimentos:
    DEFine PROCedure ProcName / END DEFine
    implementado como DEFPROC ProcName() / ENDPROC
- Invocação de procedimentos:
    ProcName
    implementado como PROC ProcName
- Declaração de funções:
    DEFine FuNction FunctionName / RETURN Result / END DEFine
    implementado, com melhoramento, como DEFPROC ProcName() / ENDPROC = Result
- Invocação de funções:
    LET result = FuncName(arg)
    implementado, pior, como PROC FuncName(arg) TO result
    devia ser LET result = PROC FuncName(arg)
- Ciclos:
    REPeat CicleName / IF condition EXIT CicleName / END REPeat CicleName
    implementado, com melhoramento, como REPEAT / REPEAT UNTIL condition
- IF command:
    IF condition THEN / ELSE IF condition2 / ELSE / END IF
    implementado, com algumas limitações, como IF condition THEN / : ELSE
- Declaração de variáveis locais:
    LOCAL VarName
    implementado, da mesma maneira, como LOCAL VarName

Mas, apesar destas melhorias, o NextBASIC deixou de lado um assunto importante que foi implementado no QL: os nomes das variáveis alfanuméricas (strings) e arrays ainda são limitados a um caracter. Isto é um grande inconveniente para os programadores modernos...

Quem tiver curiosidade para ver como é um programa em QL, pode descarregar aqui um exemplo em QL, Spectrum Next e ZX Spectrum.

Entretanto, quem quiser programar em BASIC estruturado no velho ZX Spectrum terá que usar um conversor como este que deixamos aqui.

Sem comentários:

Enviar um comentário