Some CAD programs do this. You could execute a command with fully defined parameters to make something happen, or maybe you'd execute the command and enter the parameters by selecting things in the GUI when prompted. It is a very powerful way to work, but the learning curve is often steep.
It would be kind of cool to have gui interfaces (including the general desktop gui) have something like this dual mode.