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 нужны для сохранения сессионных данных, воспроизведения контента, балансировки нагрузки, работы сторонних плагинов соцсетей.
Если вы профи в своем деле — покажите!
Такую задачу поставил Little.Bit пикабушникам. И на его призыв откликнулись PILOTMISHA, MorGott и Lei Radna. Поэтому теперь вы знаете, как сделать игру, скрафтить косплей, написать историю и посадить самолет. А если еще не знаете, то смотрите и учитесь.
Интересная библиотечка
Бороздя GitHub сегодня обнаружил довольно интересный проект на Python по восстановлению паролей по затёртым областям. Интересно теперь такое проверить на замазанных именах со скриншотов из соцсетей, никах в твиттере :)
Не реклама. Если кому интересно ссылка на оригинал: https://github.com/beurtschipper/Depix .
Если ссылку нельзя постить, то можете поискать Depix.