MSX-BASIC -> QBasic -> B3d, B+, BMax/GUI
Learning programming means making large programs at some point. At the moment you're facing a giant mess beyond control, then you automatically start thinking about how to make a program more structured. By doing so, you go from messy to procedural, from procedural to procedural/fake-OO (Do thing, instead of thing.Do) and eventually you end up in OO when using Max. One step further and you'll be using events as main means of communication.
Learning programming means making large programs at some point. At the moment you're facing a giant mess beyond control, then you automatically start thinking about how to make a program more structured. By doing so, you go from messy to procedural, from procedural to procedural/fake-OO (Do thing, instead of thing.Do) and eventually you end up in OO when using Max. One step further and you'll be using events as main means of communication.