I was thinking about which program to choose for university studies, and I will probably study an engineering program kind of like mathematical engineering. It is kind of hard to specify a program/degree since I'm not from the US or UK.

So I only know a little bit of programming with python, I started learning because I assumed it would be good to know. However, I started questioning what I was doing when I struggled with creating a program with a GUI(Graphical User Interface). I mean, I don't really want to become an application or web developer or anything like that, so developing a GUI felt like the wrong thing to spend time on. Still I know programming skills are useful even if you are an engineer who deals with a lot of mathematics.

My question is then: What kind of programming, and what programming languages is worth knowing in a very mathematical job? Is it enough to learn mathematical programming languages like Mathematica, MatLab and R, or should I learn more common languages like Java and C++ too? What are the main programming tasks that mathematicians/engineers are facing in their jobs? Of course it is always good to know all kinds of programming languages, but learning takes some effort, so is it really worth the time?

  • $\begingroup$ matlab is probably a good start, but eventually you should branch into "real" languages as you suggest. python (with numpy and scipy) is a good next step, c or fortran after that. $\endgroup$ – BaronVT Dec 4 '14 at 17:10
  • $\begingroup$ Ok well, since I'm already familiar with python maybe I should start with numpy and scipy right away and learn it as I am taking a first course in linear algebra. $\endgroup$ – PandaDeTapas Dec 4 '14 at 17:51
  • $\begingroup$ I'd recommend learning Haskell. You'll probably never use it, but I found it really helped me develop as a mathematician and a programmer. $\endgroup$ – charlotte Dec 4 '14 at 18:02
  • $\begingroup$ In my experience, it is helpful to know the basics of several languages. For actual mathematics applications, MATLAB is very helpful. It's used throughout the sciences, and it can be handy to solve your own problems. There are built in routines for most of what you will need. I would also pick up another language like C or C++. This will get you to the bare bones of programming, and it will help you communicate with computer scientists. Also, it might be helpful to develop a faster routine from the ground up than using MATLAB itself. $\endgroup$ – Joel Dec 4 '14 at 18:03
  • $\begingroup$ Once you know a handful. Say Java, C, C++ and MATLAB, you can jump into any other language pretty quickly. You wont be as good as someone who spends years at it, but you can learn what you need to get a dirty job done. $\endgroup$ – Joel Dec 4 '14 at 18:05

I have been working as a mathematician at a university for about ten years and now I'm earning my money as a software developer for about the same period of time, so I think I do have some experience related to this question. Nonetheless my answer is probably very subjective and I know there are reasonable and bright people out there (including professional software develpers) who will advertise a completely different view on this topic.

The short version is that the choice programming language does not really matter. If you have a compiler at your finger tips and something you want to try, just go ahead, as long as you have fun you will very likely learn something useful.

If you really want to think longer about it: there is (in my humble opinion) no programming language which is specifically suited for a particular job or profession. Specific programming languages are often well suited for specific tasks, which is quite a different thing (as a side remark: mathematicians are supposed to be able to tackle any kind of task, as soon as they leave university ;-) If you are ever assigned to a programming task you will have to use the language which is used in the project in question (usually it is not your choice) and if it actually is your choice it will depend strongly on which one is suitable for the task in question.

Learning a given programming language on the job is usually not a big issue, especially if you have a mathematical education and good abstraction and analytic skills. Writing good software which does more than calculating some numbers or drawing some nifty picuters is, independent of the programming language, quite hard though, and consists of much more aspects than just programming.

If you just want to get an idea of how programming works at all any programming language will probably do, but as a student you will very likely prefer something with a stable and free (in terms of money) development tool chain, and it will be a good idea to start out with examples which do not depend too much on a particular OS.

There are some aspect for which I would say that they might be reasons to prefer a particular language, e.g. a language with strict type checking will be good for discipline, it is easier to learn such a language first and then some which does not enforce it than the other way round.

Whether it will involve GUI programming is a matter of your personal taste as long as you have no specific task assigned to you, but in most cases this will force you into using a particular OS (unless you take Java).

Finally there is the personal preference. Some people e.g. prefer languages like Java or C# which prevent them from doing stupid mistakes (e.g. in memory management) while others prefer languages like C++ which give them full control on this kind of thing and allow them at the same time to shoot in their own foot once a day -- it is up to you what you prefer in that regard ;-)

  • 1
    $\begingroup$ "The short version is that the choice programming language does not really matter. If you have a compiler at your finger tips and something you want to try, just go ahead, as long as you have you will very likely learn something useful." I love this! Folks can get too hung up on their favorite languages, and less about understanding algorithmic thinking. Very insightful post. Thank you for sharing your insights. :-) $\endgroup$ – ml0105 Dec 4 '14 at 18:01
  • $\begingroup$ Thank you so much for your thorough explanation! Would have voted up with 1 more rep ;) Guess I'll just focus on learning as much generic programming concepts as possible. $\endgroup$ – PandaDeTapas Dec 4 '14 at 18:12

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.