Lots of errors in your shaders:
In your vertex shader, texture_coordinate is declared as an out variable, but you use it as if it were an input. You might be collecting trash data here. You meant it to be an attribute (deprecated in GLSL 1.50, that's just in for your vertex shader.) It's surprising you didn't get at least a warning (which you probably have but didn't notice, are you checking the error log?)
In your vertex shader, texture_coordinate and texture_coord are both vec2 (and you do assign one to the other, why do you need both then?), but then in your fragment shader, texture_coordinate is a vec3, so types do not match.
Also, varying is deprecated in GLSL 1.50 so I encourage you not to use it. It's inferred from the in/out qualifiers in each shader and the different interpolation qualifiers (smooth, flat and noperspective.)
In your vertex shader,
texture_coordinateis declared as anoutvariable, but you use it as if it were an input. You might be collecting trash data here. You meant it to be anattribute(deprecated in GLSL 1.50, that's justinfor your vertex shader.) It's surprising you didn't get at least a warning (which you probably have but didn't notice, are you checking the error log?)texture_coordinateandtexture_coordare bothvec2, but then in your fragment shader,texture_coordinateis avec3, so types do not match.varyingis deprecated in GLSL 1.50 so I encourage you not to use it. It's inferred from thein/outqualifiers in each shader and the different interpolation qualifiers (smooth,flatandnoperspective.)
There are several problems in your shader which seem to be the consequence of heavy copy-pasting from tutorials involving different GLSL versions. You might want to check GLSL 1.50 reference thoroughly and the error log to avoid these.