Classic and classy tools
Ubuntu, because it is backed by big corps. I use
GTK because it is everywhere (Chrome, Emacs, gVim, Firefox, etc, etc.). I use
Wayland because Chrome OS and even
Chrome are using it. I use
Clang + libc++ because Google (Android) and Apple (Swift) do.
Assembler, C, C++, Python3
To really understand the basic principles of Software Engineering (as opposed to merely PHP coding) one must be able to zoom from, say, Python code, through C, thorough Assembly to the actual memory layout and register values. It does not mean that we need to memorize all the details of how a particular compiler creates function's activation frames and pack structures and classes - we must understand the principles and be able to examine
objdump -d and run
Gnome Shell + Wayland
Most of the time I use Ubuntu with Gnome Shell on Wayland instead of X11. I believe there are enough man-hours being spent for each new release to make Ubuntu barely usable --and bloated--, so it could make things easier. At least there is always working
gcc - just imagine how many installations of Ubuntu on Google and Facebook server farms, leave alone Amazon AWS. Ubuntu is de-facto the most widely used distro, supported by big corps.
This will fetch and install all the innumerable dependencies
sudo apt-get install xwayland gnome-session-wayland libwayland-egl1 gnome-shell
Gnome Terminal is good just for one reason - it can render nicely True Type fonts. Otherwise it is a bloatware.
sudo apt-get install gnome-terminal
To have the same consistent set of fonts in
gVim is absolutely essential. I use both Vim and Emacs heavily,
Vim for quick and dirty editing of config files and code snippets, including on remote servers, and
Emacs for long-running editing sessions of whatever it could be. So I really like when everything look the same.
Solarized Dark Theme
Having the same consistent colors (and fonts) everywhere is The Principle Of Less Astonishment applied to your DE. Ideally, I should see no difference whether I edit the same file in
Emacs or just view it in the
Solarized Dark theme makes it possible, with some minor caveats, like bold fonts in Emacs faces.
This will install
objdump, etc. - the whole executable building pipeline.
sudo apt-get install build-essential
We need default stock compilers and debugger
sudo apt-get install gcc g++ gdb
version control systems
We need to fetch a source code from developer's repos.
sudo apt-get install cvs subversion mercurial git
Sometimes we have no choice but to use a crapware.
sudo apt-get install cmake
and compile it efficiently and robustly, with hight quality and well-tested code generation Clang
This is Intel's own OpenMP runtime. Could be linked with C or C++ code. OpenMP is the easiest and sanest way (pragmas will be merely ignored) to parallelize media players and even the basic stuff.
sudo apt-get install libmkl-gnu-thread
Scripting languages rely on
C and the Standard Library. Python 3 Interpreter is a