I am an undergraduate mathematics student and I am managing to stay a semester ahead of my classes. One way in which I want to use my free time is to learn a computer language(s) that will help me in my mathematical future as someone who wants to work in pure mathematics. Also I am interested in algorithms and complexity theory and classes. I have no background in any language as of now
Question: Which language or set of languages are usually taught to develop a base understanding for programming that also are used by the working mathematicians today? And which set of languages are more oriented towards algorithmic and complexity theory? Is there any intersection between the two?
Thanks in advance guys/gals. Any comment,answer or input is appreciated!!
For an introduction into programming I would recommend a "script language":
Then there are the languages which allow one to write fast programs, programs that utilize memory very efficiently and can talk to most hardware:
The general purpose languages that allow you to use the hardware very efficiently usually lack in abstraction and have only simple data structures. (C, FORTRAN)
C++ with modern libraries is hardware efficient and has advanced data structures.
Sometimes easy portability to different operating systems and hardware is important:
There are languages which focus on mathematics:
Mathematica, Maple, Matlab or R are examples. Each has its strengths.
Julia seems to be a promising new language, but I have no experience with it.
Then the occasional surprise:
Finally you might want to broaden your understanding of programming:
The languages above usually follow the imperative programming paradigm, as structured or object oriented languages. However there are alternative approaches to programming, like
declarative programming, e.g. Prolog or
functional programming (e.g. Lisp, Haskell, Erlang, OCaml, F#).
They excel for certain problems and widen the understanding of programming. Their ideas have connections to logic and theory of computation.