Here is an interesting compiler program – symbolically program with ladder logic, then compile into PIC or AVR code.
Which is pretty cool considering that ladder logic is usually the realm of PLC equipment handlers.
There are limits to what it can do, and you still can’t use a PIC or some other chip to replace a PLC for mission-critical or heavy duty uses, but being exposed to ladder logic in this way offers a graphical alternative to the way we usually program MCUs.
This program is open source and available in several languages.
(link here) to have a look.