Благодаря нашей системе образования, у меня ни в школе, ни в институте не было информатики. Точнее была, но когда она появилась в школе в 10-11 классах со своими вордом и толикой HTML, я уже во всю самообучался программированию. В институте была примерно такая же ситуация (так получилось, что пошёл не на IT-специальность). Но несмотря на это, самообразованием в этой сфере я занимался довольно серьёзно.
И в результате такого вот обучения, знания по некоторым отраслям довольно глубокие, а вот по другим напрочь отсутствуют. Хотелось бы систематизировать весь этот хлам в голове, а заодно заполнить пробелы, поэтому я ищу учебник по информатике, который покрывает первые два-три курса соответствующих вузовских специальностей. Где рассказывалось бы про архитектуру железа, про то, как с ним работают операционные системы, про работу с памятью, с видеопамятью, про всё многое другое, что необходимо знать наизусть системному программисту.
Грубо говоря, хочется самостоятельно получить знания айтишной вузовской специальности.
p.s. Чтобы избежать вопросов о том, что я уже знаю, пусть это будет уровень среднестатистического первокура на обозначенной специальности.
Решите для начала, что вы действительно хотите знать. Если операционные системы, то гуглите на тему книжек Таненбаума. Если железо, опять же какое, какая архитектура. Это уже будут совсем другие книжки.
Я сам не совсем знаю, что мне нужно, но судя по тому, чем я сейчас занимаюсь, хочется от веба перебраться к более серьёзному программированию. Или к более серьёзному программированию в рамках того же веба. В общем хочу получить какую-то базу знаний, с которой можно будет хоть в геймдев, хоть в системное программирование, хоть ещё куда. Такую общую базу как раз в институтах и дают на первых курсах.
Для примера — при знакомстве с Си и ассемблером возникают проблемы с пониманием, когда дело доходит до работы с памятью, регистрами процессора и т.п. Когда ради интереса читал документацию по OpenGl, наткнулся на видеобуфер и т.п. — тёмный лес, да даже когда тут в стаатье про собеседования попалась статья про виды многозадачности, я обнаружил, что и того не знаю.
Вот примерно в таком ключе и рассуждаю. Таненбаума посмотрю.
Рекомендую также всегда гуглить профильную документацию. Если вы думаете, что в наших, российских вузах, все это изучается на должном уровне, то глубоко заблуждаетесь.
Не думаю. Это, кстати, было одной из причин (конечно, третьестепенной), по которой я не пошёл в профильный вуз.
Из-за того, что сколько помню, столько гуглю, знания и получились таки неравномерные. что местами даже основ нет.
Значит у вас подход не совсем правильный. Когда я хочу что-то изучить хорошенько, то начинаю читать соответствующую документацию. Но, как только натыкаюсь на незнакомый мне термин, то начинаю искать что это значит, и если предо мной открывается новая область, то изучаю сперва её, а потом только возвращаюсь к тому, что читал ранее. И так далее, и так далее, рекурсивно спускаюсь до самых основ… Глубина рекурсии определяется при этом наличием свободного времени и желания знать что-то до определенной подробности.
Я стараюсь так делать, но порой эта самая рекурсия слишком глубокой получается. Да и стал замечать, что часто сходится к одним и тем же фундаментальным вещам. И я люблю, когда такие фундаментальные вещи стоят на полке под рукой в бумажном варианте =)
А ещё. конечно, немного теряюсь, когда начинаю копать глубже, а оказывается, что мне две-три сложные области надо разобрать, причём эти области тянут за собой другие области и непонятно с чего и начинать. Имея базу в виде темы вопроса в голове, проще будет отталкиваться в таких ситуациях.
Книжек Вам уже насоветовали, а я могу помочь с практическими знаниями.
Вам понадобится виртуальная машина (например VM Ware), MS-DOS или FreeDOS и компилятор Borland C.
После прочтения книжек обращайтесь ко мне за заданиями. Задания будут сложные, интересные и… имеющие практический смысл. Вы получите опыт, а я получу код. Идёт?
Почему DOS и Borland С++? Потому что современные системы не дают прикладным программам доступ к железу, а MS-DOS — даёт. Borland C++ один из самых удобных компиляторов в для MS-DOS.
Кстати, как у Вас с английским? Практически, более 99.9% спецификаций на железо написаны на английском языке. Если проблемы с чтением технической документации, то, наверное, лучше начать с углублённого изучения английского, а потом уже взяться за литературу по системному программированию.
Практических задач, куда я бы смог применить знания, у меня полно. А вот знаний нет =)
Для начала мне пока Си и gcc под линуксом хватит, а дальше сам не знаю, в какую сторону двинусь.
С английским в плане чтения документации всё хорошо, я тут даже как-то писал обзор одной интересной книги, которой на русском языке нет и не предвидится.