C — смекалка
Где найти хороший roadmap/план изучения/список учебных материалов для изучения программирования
Приветствую, совсем короткий пост. Пару раз видел это вопрос под моими постами, да даже сами посты с этой тематикой получают наибольшее внимание. Очевидно, тема актуальная, и хотя ответ на поверхности, думаю многим начинающим он поможет.
Этот пост - последний вышедший на моем канале в телеге https://t.me/tobeprog (там об изучении программирования).
Итак, где же найти хороший roadmap/план изучения/список учебных материалов?
Ответ который мне нравится большего всего: продолжать смотреть мою замечательную серию видео “план изучения программирования”.
Но если серьезно, к примеру в том же посте про понимание самого процесса программирования, говорилось, что сам принцип один, и хотя там он рассматривался в рамках питона, можно выбрать любой другой ЯП, и это будет работать. Так где найти, хотя бы хороший список учебных материалов для другого ЯПа?
Ну или к примеру, зритель сильно обгоняет план изучения, в таком случае ему нужны более углубленные учебные материалы, и нужны они, очевидно, сейчас.
Есть немного грубый, но в целом верный ответ - гугл. Проблема в том, что этот поиск может сильно затянуться и только сильней запутать. Правило здесь очень простое(как-то о нем уже писал):
“...в программировании, популярность учебного материала - верный признак качества. Правда работает это тогда, когда популярность - следствие рекомендаций уже ставших программистами(именно подобные отзывы и стоит искать при подборе уч. материалов).”
Нужно идти туда, где программисты обитают, где возможно невысокий, но все же хоть какой-то порог вхождения, случайным людям там будет просто не особо интересно, таким образом, ценность оценок возрастает.
И первое что приходит на ум, страшно недооцененный в целях изучения - github. Это немного абсурдное заявление, поэтому уточню, недооцененный - новичками, те кто хотя бы немного продвинулся в изучении, понимают насколько это ценный ресурс.
Первая же строка выдачи “python + roadmap + github”
https://github.com/GnuriaN/Python-Roadmap - крутой roadmap для изучения python, на русском, ссылается на русскоязычные ресурсы, достаточно подробно расписано, без лишней воды.
Я его мельком посмотрел. Что-то я бы вычеркнул, что-то добавил, на чем-то больше сакцентировал внимание, но повторюсь, по моему, это отличный roadmap.
Меня особо порадовало, что в конце упоминается курс от Computer Science Center, я как то о нем писал, именно о той версии которую советует автор roadmap-а, для меня это такой знак качества - замечательный курс(о котором, к сожалению, очень мало где говорят).
Более того, можно найти учебный план, не просто определенного ЯПа, а даже целой специальности/области/профессии, иногда у них есть даже целая история.
https://github.com/jwasham/coding-interview-university (англ.)
https://github.com/jwasham/coding-interview-university/blob/main/translations/README-ru.md (на русском)
John Washam имел достаточно успешную карьеру, но у него была мечта - попасть в гугл. Его отделяло от нее отсутствие образования и знаний в сфере computer science, собственно весь план - это его подготовка к собеседованию и обретение этих знаний с нуля. Даже в отрыве от столь амбициозной задачи, это просто крутой план по изучению computer science.
Кстати, у Джона получилось, правда не с Гуглом, а с другим представителем FAANG - Амазоном.
https://github.com/ossu/computer-science Еще один достаточно известный репозиторий, эти ребята вообще называют себя опенсорсный университетом.
Таких репозиториев куча, где-то это личный проект, например человек просто таким образом трекал свой прогресс, где-то огромный проект с кучей людей и переводами на разные языки.
Это может быть даже просто картинка, где показана связь необходимых для предмета топиков/тем(такой классический roadmap), а может быть детально проработанный план изучения. В любом случае, это делалось программистами для программистов(возможно будущих), и оценки будут напрямую коррелировать качеством.
P.S. Можно искать на самом гитхабе, если по каким-то причинам, это пока вызывает дискомфорт, можно просто приписать в гугле к запросу ‘github’ ну или уточнить поиск по сайту(в гугле это делается командой site:адрес, т.е. «site:github.com»)
Программирование, самый полезный Github репозиторий
Приветствую, этот пост совсем короткий, всего лишь рассказывает об одном репозитории на github, но как мне кажется, он куда важнее и полезней других моих постов.
Всем кто хочет написать операционку или язык программирования, изучить сложную технологию и разобраться в ее работе. Куча туториалов, рассказывающих, как создавать с нуля действительно потрясающие штуки.
Этот текст существует в видеоформате
(мне кажется, удобная штука - не читать, а просто врубить видео на фоне и заниматься своими делами, поэтому, в будущем мои посты будут сопровождаться таким видео-дополнением).
На всякий случай, напишу сразу, то о чем пойдет речь ниже, даже близко не претендует быть чем то простым.
build-your-own-x Легендарный репозиторий, несмотря на огромную популярность(100к звезд на github), все еще многим неизвестный, и что особенно печально - многим начинающим программистам.
Если кратко - подборка туториалов, основная идея которых - создание с нуля какой то сложной технологии: языка программирования, операционки, воксельного движка, физического движка и прочего. Привязки к определенному языку тоже нет: питон, плюсы, js, c# и т.д.
Пример, одного такого материала. Цикл из 19 статей, в котором автор(Ruslan Spivak), пишет интерпретатор языка Pascal на Python(кстати отличный пример ооп на python). Вообще, качество работы поражает - по сути это полноценная книга с подробнейшим разбором, графическими пояснениями, примерами из жизни, даже юмором, а в конце каждой главы - вопросы для проверки понимания темы и домашнее задание.
В данном случае - формат блога, в нем есть комментарии(из особенно интересных - переводы на другие япы), т.е. можно можно узнать какие вопросы появлялись, как они решались, какие-то интересные ссылки, рассуждения и т.д.
Возможные проблемы, при прохождении подобных материалов:
1. Ну разумеется - английский
Душный ответ - надо выучить, перевода материала о котором выше, к сожалению, не нашел. Но да, многие пункты из репозитория переведены и легко ищутся на том же хабре.
К примеру, статья Питера Норвига, где он пишет интерпретатор языка Lisp на python:
2. Как минимум, нужно знать основы япа
Подобный уч. материал, может, буквально начинается с краткого объяснения основ языка. Это скорее правило хорошего тона, чем необходимость. Не знаю, нужно ли об этом писать, но такая сложность - не подойдет тем, кто вчера написал первый хелловорлд.
Также, неплохо иметь хотя бы начальные знания в computer science, всегда можно загуглить какие то моменты, но систематическое изучение просто сэкономит время.
Гарвардский CS50 вполне может закрыть основные моменты.
3. Сложность может быть не в коде
Может быть такая ситуация: по частям код вроде бы понятен, но собрать эти части вместе, грубо говоря, увидеть их взаимодействие - не получается. Эта проблема может наступить куда раньше изучения материалов такой сложности. Надо приучить мозг к работе со сложными системами, и есть довольно интересное решение.
Замечательная книга - "Код" Петцольда, это ввод в архитектуру, разбирается всё, буквально, от подачи тока по проводкам и заканчивая высокоуровневыми языками программирования. Здесь, с легкостью ловится эффект, когда ты понял одну часть, но уже забыл прошлую, и надо все заново, и все удерживать в голове и т.д. При этом сама книга написана простым языком, не подразумевает никаких предварительных знаний по теме и досконально разбирает каждый момент. Вы как бы учитесь работать со сложной системой, находясь при этом в комфортных условиях.
Ко всему прочему CS50 и "Код" Петцольда - идеальное сочетание. CS50 мало про архитектуру, а Код отлично ложится на ввод в computer science. Поэтому рекомендую ознакомится с книгой как можно раньше.
Если подытожить, эти туториалы, хорошо вписываются в момент обучения, когда основы пройдены, и хочется приступить/разобраться/покопаться чем то, по настоящему, сложном и главное - интересном. Именно поиск подобных уч. материалов и становится зачастую проблемой. Здесь же они собраны(их действительно много), отсортированы по темам и языкам, и даже пополняются время от времени.
GitHub сообщил об изменениях в политике сбора данных и удалил cookie-баннеры
GitHub обязуется впредь использовать только те cookies, которые необходимы для обслуживания сайта. Информация для сторонних служб больше собираться не будет, поэтому и предупреждающие баннеры больше не нужны.
Отображение cookie-баннеров требование Европейского союза. Они должны появляться, если сайт собирает данные для сторонних служб аналитики, отслеживания и рекламы. Можно не получать согласие пользователя, если cookies нужны для сохранения сессионных данных, воспроизведения контента, балансировки нагрузки, работы сторонних плагинов соцсетей.
Поиграем в бизнесменов?
Одна вакансия, два кандидата. Сможете выбрать лучшего? И так пять раз.
Интересная библиотечка
Бороздя GitHub сегодня обнаружил довольно интересный проект на Python по восстановлению паролей по затёртым областям. Интересно теперь такое проверить на замазанных именах со скриншотов из соцсетей, никах в твиттере :)
Не реклама. Если кому интересно ссылка на оригинал: https://github.com/beurtschipper/Depix .
Если ссылку нельзя постить, то можете поискать Depix.