Buy a handfull of 74xxxx series logic chips (spice simulator) and build all the basic logic "primitives" with them, then look up how to interpret logic between ladder and design symbols.
Then you can find some PLC to program ladder.
I always cringe when "higher level language" programmers whine about the PLC languages or lack of modern Oop specific features etc.. I suggest they try to someday to reverse-engineer on-fly someones (large/massive) PLC code, which was done "on-fly" (and lost up-to-date documentation) and say if some abstraction and data-hiding would make life easier. Usually even structured text IDEs and debuggers are p.i.t.a. In other hand ladder and fbd are better developed in my experience what comes to online visualisation and debugging features. Besides PLCs are all about reliabily (or at least were) and cycle time. Not to mention that half of the programming is hardwired components and physics outside the PLC.
Then you can add scada with true objects and heritage and overloading and all other bells and whistless to actually handle the big data in a few second sweeps.
These graphical languages are actually pretty abstract rebresentation of code already. Not to mention hardly used SFC, which is already closer to petrinets and uml-charts by heritage.