Какие книги можете посоветовать о алгоритмической и низкоуровневой разработки для уровня мидла?
Я пока студент, перешёл на второй курс. До ВУЗа уже 6 лет занимался программированием.
В основном участвовал прям в IT-олимпиадах и хакатонах. вроде НТО, WorldSkills, SberZ, CTF и им подобные, но, всегда хотелось научиться алгоритмической разработке и низкоуровневой разработке, C++, C и ещё лучше - ассембли, ARM и им подобные.
В алгоритмах знаком на уровне квиксорта, инвертации дерева и такой твёрдой базы.
С низкоуровневой не знаком вовсе, но понимаю устройство работы процессоров, памяти, и в целом знаком с информатикой на отлично с 5 класса по 1 курс ВУЗа.
Какие можете посоветовать книги лично от себя, отдельно для изучения алгоритмов и отдельно для низкоуровневой разработки?
Я знаю PhP, Java, C#, C++, Python, GoLang, JS, TS, поэтому книга может быть почти на любом языке.
В алгоритмах знаком на уровне квиксорта, инвертации дерева и такой твёрдой базы.
самое прикольное, никогда в реальности этого делать не будешь
среднестатистический разраб таким не занимается. В реальной жизни нужны другие знания. Какая архитектура, слои и их взаимодействие, диай, как работает фреймоврк и почему, как договориться чтобы не делать бред от менеджера и объяснить что "ну там одна кнопка" это на самом деле может быть надолго и тд
Я знаю PhP, Java, C#, C++, Python, GoLang, JS, TS
какое смелое заявление, особенно про плюсы и джаваскрипт мне нравится
если участвовали в олимпиадах, то в принципе знаете алгоритмы лучше мидлового разраба. Они к тому времени это все забывают)
ЗЫ не забуду как сделал задачу с минимальным расходом памяти и быстрой работой, а мне сказали все переделать на читабельнее, я специально замерил скорость, она уменьшишилась раз в 10, вроде до примерно 50мс )
Jacen11, вообще, нужно снимать римейк "Матрица и методы рационального мышления".
Где Нео открывает глаза, заявляет "я знаю кунг-фу", а ему ложкой в лоб, чтобы не трындел зря.
И он потом фрустрирует про "нет никакой ложки", конечно...
Алгоритмы это классно, книга Кормена закроет большую часть вопросов по ним.
По ассемблеру (в т.ч. и для АРМ) есть несколько толстых красивых книг у издательства ДМК пресс, можешь поискать у них на сайте. Не читал. Думаю, что не стоит пока туда лезть, разве что очень-очень руки чешутся.
Из того, что реально необходимо в большинстве проектов:
1. параллельное программирование: Энтони Уильмс C++. Практика многопоточного программирования
2. сетевое программирование: Уильям Стивенс UNIX: Разработка сетевых приложений
3. Разработка под линукс: Керриск Майкл Linux API. Исчерпывающее руководство
4. базы данных. Тут очень много книг и много вариантов так что советовать ничего не буду, но стоит освоить работу хотя бы с одной реляционной базой данных и знать SQL. Рекомендую смотреть в сторону Postgres.
Тебя в любом случае градуируют как junior/trainee на первой работе.
И дело даже не в том сколько олимпиад ты прошел и сколько ты книжек прочитал.
Просто звездочки в погонах надо заслужить. Если ты талантлив - то наверное
за год перепрыгнешь уровнеь junior но я советую вообще с этим не спешить.
Без опыта тебе мало кто даст задачи, которые требуют жёстко шарить за алгоритмы.
А с опытом ты и сам это всё изучишь, если тебе это будет интересно.
А если прям очень интересно - начни с "Алгоритмы: построение и анализ".
Хочешь низкий уровень - попробуй изучить Rust.
Хочешь совсем низкий уровень - читай мануалы к нужной процессорной архитектуре.