Tiny BASIC: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
Nessun oggetto della modifica |
mNessun oggetto della modifica |
||
(27 versioni intermedie di 16 utenti non mostrate) | |||
Riga 1:
{{Linguaggio di programmazione
|nome = Tiny BASIC
|immagine =
|didascalia =
|autore = aa. vv.
|data = [[1975]]/[[1976]]
|versione =
|utilizzo = linguaggio general-purpose
|paradigmi = non strutturato
|tipizzazione = forte
|specifiche =
|estensione =
|influenzato_da = [[BASIC]]
|ha_influenzato =
|implementazione_riferimento =
|sistema_operativo =
|lingua =
|licenza =
|sito_web =
}}
Il '''Tiny BASIC''' è un [[dialetto (informatica)|dialetto]] del [[linguaggio di programmazione]] [[BASIC]] che è stato sviluppato tra il [[1975]] e il [[1976]] per i [[computer]] a [[8 bit]] dell'epoca. Un suo punto di forza era la ridotta quantità di memoria occupata, variabile dai 2 ai 3 [[byte|kB]], un fattore molto importante in un periodo in cui gli elaboratori erano offerti con una dotazione di [[RAM]] che generalmente non superava i 4 kB. Da questo il nome ''Tiny'', {{lett|minuscolo}}.
==Sviluppo==
La spinta a terminare e a pubblicare il Tiny BASIC fu data dalla pubblicazione della famosa [[Lettera aperta agli hobbisti]] che un giovane [[Bill Gates]] scrisse per denunciare la crescente diffusione della pratica di copiare il software piuttosto che acquistarlo. La lettera era indirizzata genericamente a tutti gli appassionati di computer, ma in realtà era diretta principalmente proprio verso l'Homebrew Computer Club, un membro del quale aveva trafugato durante un tour di presentazione dell'Altair 8800 una copia dell'[[Altair BASIC]] e lo aveva poi ridistribuito agli altri membri.
Bill Gates, nella sua lettera, sosteneva che la [[pirateria informatica]] non solo non ripagava gli autori del software delle loro fatiche in termini di rientro economico ma scoraggiava anche i programmatori dal continuare a produrre software di qualità. Warren rispose a Gates dalle colonne di ''SIGPLAN Notices'', la newsletter pubblicata da [[Association for Computing Machinery]] (ACM):
{{citazione|C'è una valida alternativa ai problemi del "furto" del software sollevati da Bill Gates nella sua rabbiosa lettera agli appassionati di computer. Quando il software è gratuito, o poco costoso, è più facile pagarlo che duplicarlo, così che non sia "rubato".|Jim Warren, ''SIGPLAN Notices'' (luglio 1976)}}
Warren annunciava la disponibilità del Tiny BASIC, i cui sorgenti erano copiabili dalla rivista ''Dr. Dobb's Journal'' oppure era possibile acquistarne una copia già pronta alla modica cifra di 5/10 dollari.
== Sintassi ==
La [[sintassi (informatica)|sintassi]] del Tiny BASIC è elencata qui sotto, in [[Backus-Naur Form|formato Backus-Naur]]. Nell'elenco un asterisco ("<kbd>*</kbd>") denota zero o più degli oggetti alla sua sinistra — tranne che per il primo asterisco nella definizione del "<kbd>termine</kbd>", che è il segno della moltiplicazione; le parentesi raggruppano gli oggetti; la lettera epsilon ("<kbd>ε</kbd>") indica un insieme vuoto. La barra verticale ("<kbd>|</kbd>") indica delle alternative, elencate su righe separate; il simbolo "<kbd>CR</kbd>" indica un carattere di [[ritorno carrello]]:
linea ::= numero istruzione CR | istruzione CR
IF
GOTO
INPUT
LET var =
GOSUB
RETURN
CLEAR
Line 27 ⟶ 51:
END
var ::= A | B | C .... | Y | Z
Un BREAK dal terminale interrompe l'esecuzione del programma
''Fonte: "Dr. Dobb's Journal of Computer Calisthenics & Orthodontia", Volume 1, Numero 1, 1976, pag. 9.''
==Implementazione==
Il Tiny BASIC fu implementato come [[linguaggio interpretato]] usando un [[interprete (informatica)|interprete]] che girava su una [[macchina virtuale]]: l'interprete traduceva le istruzioni scritte dall'utente in appositi comandi che poi eseguiva. L'interprete era scritto con gli stessi comandi che eseguiva. Quelli che seguono sono un esempio dei comandi eseguibili dall'interprete:
* <code>TST etichetta, stringa</code>: se "stringa" combacia con la linea BASIC, avanza il cursore oltre "stringa" ed esegue la prossima istruzione interpretata alla linea indicata da "etichetta", altrimenti esegue l'istruzione presente a "etichetta"
* <code>CALL etichetta</code>: esegue il codice presente a "etichetta"; salva l'indirizzo dell'istruzione dopo <code>CALL</code> nello [[pila (informatica)|stack]]
* <code>RTN</code>: riprende l'esecuzione dal punto specificato nel valore contenuto in cima allo stack;
* <code>JUMP etichetta</code>: continua l'esecuzione del programma dal punto indicato da "etichetta";
<small>(fonte: "Dr. Dobb's Journal", Volume 1, Numero 1, 1976, pag.12.)</small>
==Palo Alto Tiny BASIC==
<!-- ATTENZIONE: a questo capitolo punta un redirect dalla voce "Palo Alto Tiny BASIC" - Si prega di non modificarne il titolo-->
[[File:Copyleft All Wrongs Reserved.png|thumb|Inizio del sorgente del '''Palo Alto Tiny BASIC''' di [[Li-Chen Wang]]. Si legge la dicitura "[[Copyleft|@Copyleft]]" e "All wrongs reserved".]]
Il '''Palo Alto Tiny BASIC''' fu la quarta versione del Tiny BASIC che fu pubblicata su ''Dr. Dobb's Journal'', esattamente sul nº 5 di maggio del 1976 della rivista. Fu scritta da [[Li-Chen Wang]] e, rispetto alle altre versioni del linguaggio, era quella che occupava meno memoria: solo 1,77 kB di RAM. Altre differenze riguardavano l'introduzione del supporto agli [[array]] (mediante l'uso del prefisso "@") e la possibilità di omettere il comando <code>LET</code> per le operazioni di assegnamento con le variabili. Infine, per risparmiare sullo spazio occupato dai listati in memoria, l'interprete accettava le forme abbreviate dei comandi: <code>A.</code> per <code>ABS</code>, <code>P.</code> per <code>POKE</code>, <code>R.</code> per <code>RUN</code> ecc..<ref name="paloalto">{{cita web|url=http://www.nicholson.com/rhn/files/tinybasic.tar.Z|titolo=Sorgenti del Palo Alto Tiny BASIC di Li-Chen Wang e relativa documentazione|accesso=09/03/2011}}</ref> Li-Chen scrisse anche una versione del gioco [[Star Trek (videogioco 1971)|Star Trek]] con il suo BASIC che fu pubblicato sul numero di luglio del 1976 della newsletter ''People's Computer Company''.
Il Palo Alto Tiny BASIC è anche da segnalare come uno dei primi software per cui fu utilizzato il concetto di [[copyleft]], con esplicito riferimento ai diritti dei produttori software difesi da [[Bill Gates]] nella sua [[lettera aperta agli hobbisti]] pubblicata alcuni mesi prima, lettera in cui Gates accusava di violazione di [[copyright]] chi copiava il suo [[Altair BASIC]].
==
<references/>
==Voci
* [[Altair 8800]]
* [[Lettera aperta agli hobbisti]]
* [[Copyleft]]
==Collegamenti esterni==
* {{cita web|http://www.IttyBittyComputers.com/IttyBitty/TinyBasic/TBuserMan.htm|Manuale utente del Tiny BASIC}}
* {{cita web|http://www.IttyBittyComputers.com/IttyBitty/TinyBasic/TBEK.txt|Esempi di codice in Tiny BASIC}}
* [https://web.archive.org/web/20110107204656/http://www.swtpc.com/mholley/BASIC_2/Uiterwyk.htm Micro BASIC], una versione per [[Motorola 6800|MC6800]] venduta da Robert Uiterwyk con i computer [[SWTPC]] 6800
* [http://www.multicians.org/raf-tbl-definition.html Linguaggio TBL], un linguaggio che usa un interprete su macchina virtuale come il Tiny BASIC
* [http://members.shaw.ca/gbrandly/68ktinyb.html Il 68000 Tiny BASIC], versione per il [[Motorola 68000]] del Tiny BASIC, pubblicato sul 100° numero della rivista "Dr. Dobb's Journal"
* [http://www.aldweb.com/articles.php?lng=en&pg=7407 Tiny BASIC per Palm], implementazione del linguaggio scritta in [http://www.aldweb.com/articles.php?lng=en&pg=5350 iziBasic]
* [https://web.archive.org/web/20110715213426/http://www.runbasic.com/?_page=tinybasic.bas Tiny BASIC per web], una implementazione del Tiny BASIC scritto per girare su web in {{Collegamento interrotto|1=[http://www.runbasic.com/seaside/go/runbasic?_s=CPdbnQcuHfQqPOdy&_k=ufhcDZto Run BASIC] |data=marzo 2020 |bot=InternetArchiveBot }}
* [http://www.tinybasic.de Tiny BASIC per microcontrollori], una implementazione per i moderni [[microcontrollore|microcontrollori]] ad 8/16 bit
* [http://rosettacode.org/wiki/Category:Tiny_BASIC Category:Tiny BASIC] Attività implementate in Tiny BASIC in [http://rosettacode.org rosettacode.org]
* [http://rosettacode.org/wiki/Category:Palo_Alto_Tiny_BASIC Category:Palo Alto Tiny BASIC] Attività implementate in Palo Alto Tiny BASIC in [http://rosettacode.org rosettacode.org]
{{portale|informatica}}
[[
|