Я собираю различные списки компетенций, которые должны быть у программистов, которым нужно заниматься самостоятельно.
Среди всех тем операционные системы являются самыми сложными, потому что создание даже игрушечной операционной системы - довольно нетривиальная задача. Однако в то же время разработчик приложений (который, возможно, не формально изучил CS), по крайней мере, должен знать и, надеюсь, должен был реализовать некоторые ключевые концепции, чтобы оценить, как работает ОС, и быть лучшим разработчиком.
У меня есть несколько конкретных вопросов:
- Какие ключевые понятия для операционных систем важны для программиста, которому требуется самообучение, чтобы понимать, что они могут быть лучшими разработчиками программного обеспечения (хотя и работают над обычной разработкой приложений)?
- Возможно ли даже дистанционно изучить такой предмет в практических произведениях размером в байт? (Даже такой объект, как построение компилятора, может быть изучен руками, на довольно низком уровне сложности).