It is going to depend on the exact language you want to use both for the GUI and for the logic. As David answered, you basically only have those two choices, and they both have advantages and disadvantages:
Putting everything in a single app is the best performance-wise, because when you will make the calls to the other language, it will not wait until the other process will get control, and then will not wait for your process to gain control again to receive the answer. This is also the easiest solution if you can embed a language in another language, then they will by definition run in the same process.
Using different processes can be good if you are all the time doing a lot of things in the "logic" process, but want the gui to still be responsive. (although this could be achieved with threads too, in a single process). Also, if you can't embed the languages, this will be the easiest solution. (for example using simple sockets for IPC, which exist in almost all the languages and are truly portable. (which is not as true for things like pipes or shared memory)
So it really depends on the languages you will choose.
answered 2011-06-13T14:11:18.737