CAD and other high end complex packages for example offer combination of command line and GUI at the same time where one can augment the other at many points.
What I liked the most was when a GUI would emit the CLI commands for my actions. It breaks the discoverability barrier significantly. You learn in the GUI but you can switch gradually to the CLI with aliases, functions and loops.