After I have a linked program, and thinking about defensive programming, should I delete and detach the shaders used to link this program?
If yes, is that going to free any resources? Or do these shader objects only going to be freed after a glDeleteProgram call?
edit: Just for clarification what I am doing is (which is consistent with the answer):
glCreateShader -> glShaderSource -> glCompileShader -> glCreateProgram -> glAttachShader -> glLinkProgram -> glDetachShader -> glDeleteShader -> draw using this shader program -> and when I don't need this shader anymore glDeleteProgram