Its very much broken by design. It has no proper Callstack debugging and thus discourages structured programming - aka use of objects and methods.
You can program it in simatic manager- which can convert other languages (KOP, AWL (Assembly-equivalent if i recall)) into FUP.
Which promotes using it for larger scale projects. Which will not have objects. Not have functions. Just kilometres of ladder logic, by the time the disaster management crew is called.