TIA Portal lets you write the very same logic four different ways. They're not rivals — they're dialects, each fluent for a different kind of problem. Here's the trick no manual shows you: one live motor circuit, drawn in all four at once. Flip the inputs and watch the current flow through every dialect together.
The logic: a motor starts when you press Start, keeps running (seals in) after you let go, and stops when you press Stop. That's the most common pattern in all of automation. Switch tabs to see it as Ladder, Function Block Diagram, Structured Text and GRAPH — the inputs at the bottom drive all four identically.
// the seal-in, in one line of code "Motor" := ("Start" OR "Motor") AND NOT "Stop"; // reads exactly like the sentence: // "run if Start OR already-running, // as long as Stop is not pressed"
Tap Start on, then off — the motor stays running because it seals itself in (the "Motor" contact keeps the rung alive). Tap Stop to drop it. Same behaviour in every dialect, because they compile to the same logic.
A pro uses all four in one project, picking per block. Tap each.
You must compute a moving average over the last 50 samples, with a FOR loop and an array. Which language fits best?