You might want to have a look at metakernel:
It was created to have a common API for kernels. You can either make an API in Python, or run a program (using expect) and route information back and forth between it and the wrapper.
There are examples in that repository (metakernel_bash, _python, _echo) and others, like octave:
You can write an entire kernel in a native language, but that requires quite a bit of work. If you want to do that, what language are you targeting?
-Doug