Я, к сожалению или к счастью, могу и в вебе чё-то сделать, и в ООПе кое-как разбираюсь, но я плох в основах основ, поэтому хочу заново погрузиться в программирование в целом, но естественно ищу хорошие курсы (платный/бесплатный), книги (правда ли, что "Искусство программирования" Кнута - это библия программиста?), ещё что-то... Может посоветуете чего хорошего?
Попробуй это поглядеть:
https://habr.com/ru/post/251747/
Вводный курс по программированию:
https://www.youtube.com/playlist?list=PLawfWYMUziZqyUL5QDLVbe3j5BKWj42E5
И доп. материалы к нему:
https://javarush.ru/groups/posts/1555-dopolniteljhnihe-materialih-k-lekcijam-cs50-week-0-lekcii-1-i-2
Ещё мб пригодится:
https://techrocks.ru/2018/05/10/computer-science-self-education-plan/
https://habr.com/ru/company/edison/blog/315724/
https://tproger.ru/curriculum/computer-science-step-by-step/
Ну раз Ширяев плюс поставил, то, наверное, лучше уже не посоветуют)
CS50
Кнут скорее для спеца. Я оттуда использовал один алгоритм маскировки целых чисел, забыл как его сам Кнут назвал. Для псевдослучайных названий заказов в виде кодов, из которого номер заказа получить можно, но нужно знать два секретных числа.
Редко, но метко, могут пригодится двоичные деревья и поиск по ним (использовал в рамках БД таблицы с большим количеством категорий, вложенных в друг друга), поиск по графам и прочая.
Проблема в том, что я пока реализую красивый алгоритм, мидл программист решит ту же задачу "в лоб". Если не быстрее. Да, его решение будет на 30-50% медленнее, но в ряде задач это тупо некритично, а где-то нивелируется процессорной мощностью, которая только растет. Эффективные алгоритмы нужны только там, где много поступающих данных, типа банковской сферы или социальных сетей.
Даже не смотря на то, что ты написал про решение "в лоб" у мидлов, мне всё равно как-то не комфортно живётся с тем, что я не могу сходу написать любой алгоритм сортировки, а не пользоваться встроенной библиотекой с каким-нибудь там .sort методом для массива. Это как уметь решать СЛАУ методом Гаусса, но не сразу вспомнить сколько будет 8*7. Не знаю почему, но у меня именно такое мнение
Кто у вас лучший?
Как вариант сначала просто узнать определение Computer Science. Потом узнать основные разделы, которые изучает Computer Science. После определить для себя самые приоритетные разделы и на каждый из них загуглить по книжке (естественно нужны те, которые легко читать новичку, подборок куча в Интернете). После 2-3 книжек уже сам определишь, что тебе нужно дальше.