Originally Posted by oracleguy
Yes that is correct.
It depends on what you are writing, a lot of code doesn't need to change. You just need to recompile the code on the different target (OS and/or architecture).
In some areas like GUIs if you write for the OS' native implementation then yes you would need to recode a lot to move say a Windows GUI to run on X11. However there are a number of GUI libraries you can use such as Gtk+, Qt and wxWidgets that will alleviate that problem.
The GUI limitation isn't really because of the language, in terms of syntax, it is just limited to whatever APIs are exposed to it. And some languages don't have the support for GUIs because there isn't a lot of point. For example PHP is targeted for developing web applications where creating desktop like GUIs isn't needed.
Right. Once again, very helpful. Now when you mention API's. Those are libraries right? A library is premade set of tools? So if an object is a tool, than a Library is the shed?