Non c'è assolutamente nulla di sbagliato nel BASIC. In molti modi è un buon modo per iniziare - nessun ciclo di compilazione-modifica-ricompilazione, se digiti PRINT 42*3 lo fa. Se scrivi CIRCLE 100,100,50, ne disegna uno. Sì, si può fare "meglio", ma poi si finisce con un mucchio di loop di eventi e così via. È molto più semplice se il codice viene eseguito sequenzialmente.
La colpa, IMO, è di Microsoft. Hanno creato un BASIC modellato sull'allora vecchio originale della Dartmouth. Questo aveva molti difetti. Le variabili erano una lettera seguita opzionalmente da un numero. Solo GOTO era disponibile per le strutture (a parte FOR/NEXT). GOSUB era usato per i numeri di linea.
La maggior parte di questi sono facili da aggirare. Si può avere GOSUB per esempio. I parametri sono carini, ma avere subroutine con nome rende il codice molto più leggibile. Potete avere nomi di variabili e locali più lunghi. Potete aggiungere cicli REPEAT, IF THEN ELSE e così via. Puoi modificare e mantenere i numeri di linea - le macchine commodore lo facevano, mi ricordo (?). Potete rendere i numeri di linea opzionali. Puoi aggiungere OOP e cose del genere.
Quello che è male del BASIC sono le implementazioni specifiche usate sulla maggior parte dei computer tra la fine degli anni '70 e la metà degli anni '80.