Уже пора задуматься о будущей работе и специализации, и я пришла к мысли, что не могу себя представить хорошим, профессиональным работником.
Кажется, что я мало знаю и упускаю время, несмотря на то что у меня сильные преподаватели и вуз. Кажется, что этого мало, и нужно больше самообучения.
Конечно мало. В вузе получают высшее образование, а не делают из вас разработчика. Но время вы не теряете. Вышка сама по себе неплоха. Учите не только разработку. Налегайте на английский, математику.
В связи с этим я начала искать литературу для изучения в свободное время
Для начинающего важнее больше писать, чем читать.
и поняла для себя, что нет смысла читать книги по типу Кнута о самой парадигме программирования
Есть такое.
Да, я понимаю, как решать задачи(по крайней мере те, которые мне дают в вузе на лабораторных) с точки зрения алгоритмов и программирования на определённом языке, я соберу файл, потестирую, сделаю отладку, оценю результаты, может даже юнит-тесты напишу, и так далее. Но мне это знание кажется смехотворно малозначимым.
Набивайте руку. Делайте не только задачи которые вам дают, пишите свои какие-то программки для себя.
Нужно решать задачи более сложные, где отладка вам поможет преодолеть сложность. Где тесты будут тестировать полезные для вас вещи.
Я знаю, как решить задачу - но как сам компьютер делает то, что я пишу в коде? Для меня это просто магия: скомпилировала и вот, держи результат. А как это все прошло внутри компьютера, для меня большая загадка.
Это не так важно для начинающего.
Но наверное самый простой способ копнуть чуть глубже - потратить месяц на ассемблер и написать простенький.. ну не хелловорлд, но какой-нибудь конвертер, парсер. Консольный, не обязательно даже с графикой работать. Просто чтобы на практике понять что такое регистры, размерность операндов, инструкции. И сразу понять, что в современном мире, учитывая количество виртуализации, достаточно знать по верхам, чтобы иметь представление. Надо будет больше - потом почитаете тематические статьи.
В связи с этим я решила начать экскурс в архитектуру компьютера, начала с Таненбаума. Прочитала 3 главы, и поняла, что дальше читать не могу - слишком сложно, не хватает базы.
Раньше не было такого софта как сейчас, и база была именно то, что написано у Таненбаума. Сейчас все сложнее, а то что было раньше глубоко под капотом. Поэтому да, для начинающего это не обязательно.
Поэтому хотела бы, чтобы здешняя аудитория порекомендовала, с чего стоит начать изучение, чтобы достичь моей цели(более-менее полное понимание архитектуры компьютера и процессов, которые в нем происходят)
Процессы происходят в операционной системе, у компьютера их нет, поэтому можно почитать про архитектуру конкретной операционной системы - как создается процесс, что в нем есть, как работают права доступа, как они наследуются.
Как работать с библиотеками, как написать свою и пользоваться ею.
Как работать с сетевыми технологиями - банальные запросы по http, можно и сокет позже копнуть.
и также, возможно, на что ещё стоит обратить внимание начинающему программисту и изучить именно с точки зрения теории, а не "искусства программирования".
Теории особо нет смысла. Нужна практика.
На каком-то простом уровне необходимо освоить следующие вещи:
Работа с базами данных - в любой программе чуть больше helloworld есть куча данных. Чаще всего их хранят в какой-то базе данных. Следовательно что-то простенькое надо осилить - sql (например sqlite или mysql), как с этим работать готовыми клиентами, как с этим работать из вашей программы.
Как работать с JSON
git - сейчас это требуется вообще везде.
Опять таки, неизвестно какие базовые вещи продвинутого пользователя для вас уже не проблема, типа что такое кодировки, зачем нужна или не нужна дефрагментация, чем отличаются файловые системы.
Какими способами можно передать файл между компьютерами, как настроить домашний роутер. Потому что компьютер уже давно перестал быть вещью в себе, и без сети уже его встретить можно нечасто.