My programming stack
I am not a software engineer, but we do a lot of programming and computational work in OR/IE. I like to have a GNU/Linux system as a basis, and on top of that:
- For research, quick prototyping, and teaching illustrations I have been mostly using python (example code docs) and, more recently, Julia. Conceptually, I am pretty comfortable with OOP, but have limited exposure to FP.
- I really like R/ggplot/tidyverse in general for quick visualization and exploratory data analysis (see code example),
- For high performance computing I use a comp cluster with Portable Batch System (PBS) along with
bash
andmake
as a “glue” in my computing (see a small example and related note). - For a high-performance code, besides Julia, I would go with C++ or Java. (My last experience involved implementing Ellipsoid method for LPs as a course project.)
- I don’t really like Jupyter notebooks due to complicated version control, but I must admit it might be handy, and I had some success with it for teaching (e.g., see notebook/lecture example)
This is the core, but of course a lot is determined by the problem at hand. Note that I shared some more thoughts on “general toolbox” in a dedicated seminar we run in early 2021, and some smaller notes are indexed in “Misc notes” section.