When they can, the statements usually form a poor programming language. For communication between two GUI-driven programs, an intermediate disk file is often required, causing program execution inefficiencies. While well designed programming languages do not suffer from the drawbacks of GUIs outlined above, CLUIs have unfortunately somewhat fallen into dispute. The most frustrating aspect of CLs is that there are so many of them. Despite the fact that most syntax differences are superficial, they effectively prevent porting high-level code developed for one system into another one.
Functional languages support and encourage programming in a functional style.
They are usually very expressive and often allow a direct translation of algorithms in mathematical notation into executable code. IDL, for instance, is equipped with a fully recursive, functional language featuring a homogeneous syntax. Tk allows one to construct GUIs that issue Tcl commands for immediate execution. Tcl also includes an inter-application communication mechanism. A Command Language Benefits from an Environment CLUIs are particularly attractive when they are embedded in a suitable software development and execution environment.