In general, I think Constraint Programming or Constraint Satisfaction Problems have their roots in Computer Science/Artificial Intelligence communities that may or may not overlap to some extent with the Operations Research communities. According to "Artificial Intelligence, A Modern Approach" by Stuart Russel and Peter Norvig, an early example within computer of a specific constraint satisfaction problem was Sketchpad. That book furthermore notes that the idea that CSP's can be generalized came from a 1974 paper by Ugo Montanari in the journal Information Sciences.
Linear programming was developed earlier, mostly by mathematicians, as pure Computer Scientists did not even exist back then. Wikipedia mentions contributions from Kantovorich in 1939, and from Dantzig and Von Neumann in 1947.
Both approaches are quite different. Linear programming basically solves systems of linear equations. With this approach, it is typically difficult to obtain integral solutions, since in general we only know how to solve continuous problems efficiently.
However, it is usually quite efficient to find optimal solutions for such continuous problems, and if we are lucky, those solutions are (close to some) integral solutions.
In Constraint Programming, you can imagine your variables to be nodes in a network with a discrete set of possible values, and the constraints as links between two or more variables/nodes. It performs a "clever" brute force technique: you can pick a constraint, and see if the sets of possible values in the variables affected by the constraint are compatible. For example, if for a variable $x$ we have $\{1,2,3\}$ as possible options, and for variable $y$ we have $\{2,3,4\}$ as possible options, the constraint $x+y\leq 4$ can be used to determine that $y$ can never become $4$, so it can be safely removed from $y$'s set of possible values. It performs guessing (what happens if I assume $x$ should be $2$?), backtracking and repeatedly using constraints to update the possible values of each variable (this is called constraint propagation). It aims to search for a feasible solution that satisfies all constraints, not necessarily an optimal one. If it turns out one of the sets of potential values for a variable becomes empty, it is clear you need to backtrack. The advantage of this approach is that you do not need all your constraints to be linear. In fact, as long as a constraint can be efficiently used to prune possible values from the variables it affects, it can get as crazy as you want, and this is why Constraint Programming typically offers greater modeling flexibility compared to linear programming. The downside is, however, that it is very hard to deal with continuous variables in a basic setup.
Note that the IBM ILOG CP Solver has many advanced features that seem to combine ideas from Constraint Programming and Linear Optimization, as it does allow optimization and, I believe, continuous variables.