I've seen the term used Mathematical Programming to describe a superset of:
- Linear programming
- Quadratic programming
- Nonlinear programming
- Mixed-integer programming
- Mixed-integer nonlinear programming
- Second-order cone programming
- Global optimization
- Constraint programming
I'm looking for a list of programming languages that your can use for solving such problems.
NOTE:
- Although it is true that the word "programming" as used in optimization doesn't mean "computer programming". And, languages like Matlab, python, C++, Julia, etc, can be used to solve optimization problems
- What I'm looking for a language that allows the easy specification of Math Programming problems and may (Or may-not) use a Matlab, python, C++, Julia, etc. backend for the actual solution
Some Math Programming modeling languages closest to "math" are AMPL, GAMS, AIMMS, Cplex/OPL, Minizinc. These are specialized languages to express math programming models. Working in these languages is sometimes called "modeling" instead of "programming". Note that these languages also often support Nonlinear Programming solvers (and they may provide services like automatic differentiation -- very useful in large complex models).
Examples of systems somewhere in between modeling and programming are Gurobi/Python, Cplex/Concert, Pyomo, Pulp, Julia/JuMP. They are typically Python or c++ libraries but using some clever Object Oriented language constructs, you can express the models reasonably painlessly. In general not as compact as the specialized languages, but in return you get a more familiar programming environment.
At the low end are solver APIs, e.g. in C. This may require to build matrices and do quite some gymnastics before you can pass on your model to the solver. This is for the hard-core programmers and is usually not a good approach for very complex models. For very structured models it may not be a big hurdle.
Somewhere between the last two categories there is another group of modeling tools. Languages like R and Matlab provide a nice interface to otherwise somewhat low-level solver APIs. Building up a matrix in these languages is somewhat easier than in C but you don't really write equations.
Finally it is always possible to write MPS or LP files from any programming environment and pass those on to the solver.