Necessity of learning programming for math major. How necessary it is for a person planning to do research  in pure mathematics to learn programming as an undergrad?
And if it is, then which languages would you recommend to her or him? And why?
I am currently a first year undergraduate, and here we have C in the first semester, and no other programming language in the whole course. Is it enough for me learn only this language or do I need to learn other languages too? If so, then which ones?
I apologize in advance if my question does not belong here and please shift it to wherever it does. Or if the similar question has already been asked.   
Thanks in advance to all.
 A: Definitely anything higher than C which is the language of system programming - which you ain't gonna do (and I may add, it only still exists for historical reasons). Also avoid C++ which frankly has become too complex and bloated even for the technicians (why not C++).
Forcing C even on computer undergrads was bad in 1989 (we started first semester by attempting to prove algorithms' correctness on paper à la Dijkstra; not sure whether that was a wholly successful approach but it made you think). Forcing C on math undergrads in 2013 is appalling beyond words.
Look at Scheme, Lisp or Clojure, take a look at Coq. Check out Prolog and its derivatives (currently I'm reading up on Flora 2). A Haskell is fine too. Avoid languages that need to be compiled and have no run-time interpreter loops for experimentation. 
Somewhat related and because it brings back good memories: 
"A Parable" by Edsger W.Dijkstra, sometime in 1973
A: I am a PhD student in pure mathematics, doing research in symplectic geometry/representation theory, and I consider programming to be one of the most valuable skills I have.  Part of the problem to starting math research is that you have no clue what problem to solve.  I find it impossible to just sit at your desk and wonder, "What theorem should I prove today?"  In order to gain a sense for what theorems I want to prove, I always investigate problems on the computer in whatever way I can.
I used to program in MATLAB, but have been recently converted to SAGE (www.sagemath.org).  I cannot recommend SAGE highly enough.  SAGE is an object oriented scripting language based on Python.  It is high level and easy to quickly write code that works.  It has built in packages that allow you to define modules, rings, groups, graphs, solve ODEs, integrate stuff - I could go on forever here.  If you can think of a mathematical object, someone has probably already written a package in SAGE to handle it.  There is also an excellent community over at http://ask.sagemath.org/questions/ where you can ask questions.
Oh, and everything is free and open source.
A: To develop the algorithmic instincts you want, you ought to learn a lot of abstract algebra, including subjects such as Cauchy's and Sylow's theorems on finite groups as well Schreier's and Kurosh's theorems on discrete infinite groups.. Plenty of evidence of this trend you can easily get by a simple look of some CAS like GAP or others.
A: MATLAB, Mathematica, R, Haskell, Ruby, Python and others. There are mathematicians who use different languages. It depends on what you need done.
A: Esoteric Programming Language should be suitable for mathematicians who love problem solving.
