Compatibility or Core profile

Hello i am a newbie at opengl programming in generall 3d-programming.
I have work experience in C/C++ and next year i want to write my diploma thesis
via 3d programming with opengl. Over google i have found a lot of stuff
(tutorials, e-books) for computergraphics using opengl.
But i saw that there are two profiles that uses opengl:

  1. Compatibility profile
  2. Core profile

When i am right i read that compatibility profile is used to be compatible with older
versions of opengl and systems. The new one core profile is used for opengl ver. > 4.x.x
For the second i need to learn GLSL language in addition. Now my question, the most tutorials i read
are in compatibility profiles. What profile should i learn in ourdays?

Thx in advance for help

OpenGL(R) 3.0 introduced the concept of deprecation. A whole bunch of functionallity that can be implemented in software on either the CPU side or in shaders got marked for removal in future versions (i.e. 3.1).

Core profile means OpenGL(R) minus the deprecated functions, compatibillity profile means OpenGL(R) with the deprecated functions. The word compatibillity is meant in regard to older software, not older hardware. (CAD vendors didn’t want to rewrite their decade old cruft)

My advice is to use core profile. There is not really any usefull stuff in compatibillity and hardware drivers might only optionally implement it. For instance, on Mac OS X there is OpenGL(R) 3.3 core by now, but compatibillity only gets you GL 2.1 (AFAIK! I don’t own one of those machines). On Mesa, compatibillty only gets you GL 3.0 equivalent, but core “supports” GL 3.3 equivalent.

Thank you very much your explanation was very detailed :).