The description above concentrates on the C programming language. It should apply directly to C++ and Objective C. In assembler, you have to call
iopl() as in C, but after that you can use the I/O port read/write instructions directly.
In other languages, unless you can insert inline assembler or C code into the program or use the system calls mentioned above, it is probably easiest to write a simple C source file with functions for the I/O port accesses or delays that you need, and compile and link it in with the rest of your program. Or use
/dev/port as described above.