Стек технологий
Оптимизированный список языков, технологий и инструментов для настоящего хакера, глубокое понимание которых даёт возможность мутить любые идеи. Без маркетинговой шелухи типа .NET и попсовой джигурды типа Rust, которая не достойна внимания.
Языки программирования
C -- гейт в системное программирование; большое количество написанного софта, откуда можно черпать опыт; возможность писать на низком уровне более оптимальные решения, когда это необходимо; возможность программировать драйвера собственных устройств и встраиваемые системы на контроллерах.
JavaScript -- гейт в веб-технологии как фронта (браузер), так и бэка (NodeJS); возможность быстро на коленке собирать нативные десктопные (electron) и мобильные приложения (ReactNative); доступная функциональщина (Fantasy Land, Static Land) и другие трендовые темы (реактивное программирование, event-driven...), с ним всегда будешь в тренде; опциональное чоткое типизирование (FlowJS).
Python -- гейт в системное/серверное скриптование; продвинутые математические, статистические библиотеки для анализа данных; куча библиотек искуственного интеллекта; куча систем DevOps'а с возможностью дописывать плагины; куча библиотек с помощью которых легко прототипировать сетевые прилоежния.
Haskell -- гейт в современную теорию программирования; куча быстрых библиотек искусственного интеллекта, обработки естественного языка... как python, только быстрый; возможность создавать надёжные интерпрайзные сервисы; подходит для разработки трансляторов/компиляторов мини DSL языков; мощная система типов с выводом.
BASH -- гейт в скриптование UNIX; простой, позволяет быстро и просто автоматизировать задачи ОС; есть по дефолту в любой системе; без него всё равно не обойтись.
Свой Lisp с блекджеком -- гейт в понимание построения языков изнутри; возможность разобраться в имеющихся компиляторах и интерпретаторах, виртуальных машинах.
VHDL/Verilog -- гейт в разработку хардвара на ПЛИСах; где нужны кастомные схемы обработки сигналов/данных (криптография, хардварные нейронные сети); где нельзя вставить мощный процессор, но нужна шустрая параллельная обработка данных; многоканальная передача данных на большой скорости (кастомное сетевое оборудование).
Операционная система
FreeBSD -- гейт в современные UNIX-like системы; всё собрано в кучку и работает из коробки; всё написано на C и POSIX/UNIX совместимо, так что опыт разработки можно перекладывать на другие подобные ОС; крутой сетевой стек, так что можно осваивать и принципы построение сетей; встроенные инструменты виртуализации и (почти) контейнеризации; высокая степень надёжности и малое количество ошибок безопасности; компетентное сообщество; поддержка продвинутой файловой системы ZFS; удобная для закрытого использования лицензия.
FreeRTOS -- система реального времени для встраиваемых систем; поддерживает MIPS контроллеры; дефакто стандарт для индустрии; позволяет мутить свистелки и перделки для интернета вещей; имеется большое количество библиотек на все случаи жизни (сеть, графика, ввод-вывод); программируется на C; хорошая документация; мощное сообщество.
Процессоры / ассемблеры
AMD64/Xeon -- все современные десктопные/серверные процессоры; реализации закрытые, но знать как стандарт индустрии нужно.
MIPS -- гейт в понимание процессорной архитектуры; простая архитектура; большое количество микроконтроллеров с такой архитектурой, которые можно использовать во встраиваемых системах; большое количество реализаций на VHDL/Verilog, которые можно использовать в образовательных целях и построении специфичных выч. систем, где нужно ЦПУ ядро; книжки по архитектуре в наличии.
GAS -- ассемблер от GNU; собирает код под разные аппаратные платформы (в т.ч. MIPS).
Среда разработки / компиляторы
Emacs -- почти IDE; много пакетов под разные языки, так что не придётся привыкать к разным IDE; умеет почти всё, что нужно; шустрый; можно запускать в консоли; работает на всех UNIX-like ОС; можно расширять и переопределять функции на лиспе под свои нужды.
Git -- основной инструмент организации командной разработки; распределённый, каждый разработчик имеет полный репозиторий; позволяет создавать любые схемы взаимодействия в команде (иерархические, стетевые...)
GCC -- большинство Open Source программ на C требуют именно GCC; компилирует в нативный код для множества различных аппаратных платформ; позволяет разрабатывать фронтэнды для собственных языков; в отличие от clang написан преимущественно на чистом C, что прекольно в свете того, что я ненавижу cpp.
V8 -- без вариантов, просто отмечу что нужно разбираться для глубокого понимания работы JavaScript.
Базы данных / доступ к данным
Postgres -- самая шустрая и продвинутая опенсорсная реляционная СУБД; можно широко тюнить; широко используется в разных продуктах; имеет хорошую документацию.
SQLite -- удобная встраиваемая реляционная БД, на случай если не хочется разворачивать настоящую.
NATS -- очередь сообщений; легко завязывается в общий канал с нескольких хостов; имеются простые в использовании библиотеки; разработчики с богатым опытом в области MQ; библиотеки под большое количество языков.
MongoDB -- документно-ориентированная БД; удобная для быстрого прототипирования и применения в быстро растущих (по функциональности) проектах; позволяет легко шардить данные; элементарная настройка репликации.
GraphQL -- язык запросов для завязки фронта и бэка; гибкий; имеет множество реализаций под разные платформы.
Управление инфраструктурой / мониторинг
Ansible -- оркестрация серверов; позволяет хранить конфигурацию всей инфраструктуры в одном репе; работает с FreeBSD; расширяется модулями на Python; достаточно проста для индивидуального пользования.
Zabbix -- система мониторинга серверной инфраструктуры; централизованный анализ логов; визуализация данных из коробки; отправка нотисов при авариях; анализ нагрузки и производительности.
Из полезного для медитаций
Но не для глубокого практического освоения, т.к. имеет ограниченное практическое применение.
Idris -- язык с зависимыми типами. Как передний край мысли о функциональных языках.
Lisp (с кучей диалектов) -- очень гибки и дающий много пищи для размышлений; много примеров реализации.
Forth + производные -- множество уникальных идей: метод парсинга, шитый код, элементарная архитектура VM...; + просто что бы сломать мозг; куча примеров реализации.
Tcl/Tk -- контекстно-зависимый, простой, гибкий язык, на котором приятно писать; минимальный но чоткий набор виджетов в Tk, на котором на коленке можно прототипировать полноценный GUI.
Minix3 -- микроядерная операционная система, созданная специально в образовательных целях.
Erlang/OTP/Elixir -- отличные языки/платформа для распределённых систем с повышенными требованиями к надёжности.