You might want to learn to walk before you start running with scissors in your hand. But if you're looking to learn about exploits and shellcode then looking at existing exploits is not a bad place to start.
Developing exploit code is not really dependent on a specific language you can write an exploit in perl, python, C or Assembly for example. Shellcode is generally written in C and converted to ASM in order to reduce the size of the payload. If you look at one of the exploits on Milw0rm.com you will see the payload represented by something like the following:
char code = "\x31\xc0\xb0\x46\x31\xdb\x31\xc9\xcd\x80\xeb"\
This is the hex representation of the bytecode. This shellcode is for a bind shell on a linux platform. It makes a call to execve() in order to spawn a shell using /bin/sh. Gotta love "int 0x80"!
Obviously, writing shellcode for each OS platform is different and requires a different approach.
There are some excellent books on the subject as well such as:
Sockets, Shellcode, Porting and Coding by James Foster
As for Google: try "writing shellcode" <-- got me hundreds of hits.