Il n'y a absolument rien de mal avec le BASIC. À bien des égards, c'est un bon moyen de commencer - pas de boucle de compilation-éditation-recompilation, si vous tapez PRINT 42*3, il le fait. Si vous tapez CIRCLE 100,100,50, il en dessine un. Oui, vous pouvez le faire "mieux", mais vous vous retrouvez alors avec tout un tas de boucles d'événements, etc. C'est beaucoup plus simple si le code s'exécute de manière séquentielle.
La faute, IMO, est celle de Microsoft. Ils ont créé un BASIC calqué sur l'original de Dartmouth, encore vieux à l'époque. Celui-ci présentait de nombreux défauts. Les variables étaient une lettre suivie éventuellement d'un chiffre. Seul GOTO était disponible pour les structures (à part FOR/NEXT). GOSUB était utilisé pour les numéros de ligne.
La plupart de ces défauts sont faciles à contourner. Vous pouvez avoir GOSUB par exemple. Les paramètres sont sympathiques, mais avoir des sous-routines nommées rend le code beaucoup plus lisible. Vous pouvez avoir des noms de variables et des locals plus longs. Vous pouvez ajouter des boucles REPEAT, IF THEN ELSE et ainsi de suite. Vous pouvez éditer et garder les numéros de ligne - les machines commodore le faisaient si je me souviens bien ( ?). Vous pouvez rendre les numéros de ligne optionnels. Vous pouvez ajouter de l'OOP et d'autres choses.
Ce qui est mauvais à propos de BASIC, ce sont les implémentations spécifiques utilisées sur la plupart des ordinateurs à la fin des années 70 et au milieu des années 80.