ИМХО, чтение большинства книг типа "Самый полный самоучитель по ..." нужно совмещать с изучением фундаментальных трудов. Общая теория всего на свете:
весь Э. Таненбаум
Общие понятия и базовые алгоритмы:
Н. Вирт - "Алгоритмы и структуры данных"
Развитие стремления к совершенству:
Д. Кнут - "Искусство программирования" т. 1
Н. Н. Непейвода - "Основания программирования"
Развитие способности написать рабочую программу, даже после воздействия на мозг идей Кнута:
П. Гудлиф "Ремесло программиста. Практика написания хорошего кода"
Логические операции, булева алгебра и все такое:
Книги по ассемблеру. (учебник Юрова лежит почти в каждом книжном)
Сети:
В.Г. Олифер, Н.А. Олифер "Компьютерные сети. Принципы, технологии, протоколы" (учебник, поэтому довольно сухо, но по делу)
Все тот же Таненбаум "Компьютерные сети" (не учебник, поэтому, живо, иногда совсем не по делу, но фундаментально)
p.s. на рутрекере есть хорошая подборка различных учебников информатики.
Добавлено (14.12.2010, 03:30)
---------------------------------------------
Quote (Demol)
Мне проще на паскале всё это описать.... ладно, постараюсь без программирования
Программист должен понимать, хотя бы в общих чертах, что будет делать машина на том или ином этапе работы программы.
Для этого необходимо уметь разбивать одну большую задачу на множество мелких. По сути, это и есть алгоритмическое мышление.
Например вы пишете:
Quote
Выбираю самое маленькое из пересмотренных
Как выбираете?
Представим ситуацию: вам попадается совсем уж блондинистый компьютер, он даже на фоне других компьютеров-блондинок отличается совсем уж светлыми проводами. Этот компьютер может работать только с двумя соседними числами. Т.е., вы не можете заставить его выбрать самое маленькое число во всем массиве. Он может сравнить только два соседних числа.
Что делать?
Quote
ищу самое близкое по значению число во втором ряду
Как ищете?
Пусть основная последовательность такова:
5 6 2 7 0 41 57 3 16 9
В это время во второй ряд уже отправлены 2 элемента
13 56 Мы выбираем из основного ряда элемент "5" и находим самое близкое к нему значение.
Что значит "находим самое близкое к нему"?
Это означает "у нас есть последовательность трех элементов, мы должны ее упорядочить". Т.е.. для того, чтобы отсортировать исходную последовательность, мы должны отсортировать другую, производную последовательность ... Мюнхгаузен и волосы Для решения этой задачи мы можем
а) Организовать еще одну последовательность и отправить в нее первое число нашей маленькой производной последовательности .., а потом еще одну последовательность ... и так до тех пор, пока на последнем листке не окажется один единственный элемент ...
б) Вычесть из каждого элемента второго ряда наш новый элемент из основного ряда и посмотреть, где результат будет ближе к нулю.
в) Сравнить новый элемент с первым элементом второго ряда. Если новый элемент больше, сравниваем его со следующим элементом и т.д. ..
г) Определить в алгоритме функцию "Мне повезет!", которая помещает следующий элемент из основной последовательности в совершенно случайную позицию во второй последовательности.
Компьютер, наблюдая такое множество заманчивых путей, скорее всего сделает ход конем и зависнет, как Буриданов осел.