1. when program has been linked, do not link again.
2. a shader is detached from a program, set program is_linked to false
add glBindAttribLocation in caching_client