In a software portability context, what is the difference between these three concepts?
For example, I want to use the ncurses library, the original ncurses library is written in C, but my application is being written in C++, and then I found "ncurses wrapper", "bindings to ncurses", and "ncurses port". Which one should I use?
What are the pros and cons of each one?
A wrapper is a bit of code that sits on top of other code to recycle it's functionality but with a different interface. This usually implies an interface written in the same language. It should also be noted that sometimes people will say wrapper when what they technically mean is a binding (myself included).
Pros:
Cons:
A binding is another bit of code that sits on top of other code to recycle it's functionality except this time bindings are written in a language different than the thing they bind. A notable example is PyQt which is the python binding for QT.
Pros:
Cons:
A Port is when you translate some code to work in a different environment. Common analogies include games that come out for say... XBox and are later released for PS3.
Pros:
Cons: