tokovsam

На Пикабу
2925 рейтинг 547 подписчиков 1 подписка 21 пост 9 в горячем
Награды:
5 лет на Пикабу
9

JavaScript книги, курсы | что читать/смотреть | с чего начать

Приветствую, я сейчас делаю роадмап/план изучения по фронтенду, все в лайве, в телеге, примерные сроки 6 месяцев, если хотите изучить фронтенд, welcome ( https://t.me/into_frontend ).


Буквально сегодня закончил расписывать вводные уч. материалы по js, думаю это будет многим полезно, сделал в формате отдельного поста.


1. Взаимозаменяемость уч.материалов

Это очень важно, понимание этого способно решить кучу проблем, особенно на ранних этапах.


Изучение программирования не похоже на изучение какой-нибудь философии, нет кардинально разных взглядов на предмет(каких то определенных школ), способных изменить всю картину.


На практике это означает, что можно как угодно жонглировать учебными материалами. Если произошел какой-то затык и после изучения определенной темы, она все еще остается непонятной, хорошая идея - посмотреть как об этом рассказано в других книгах/курсах. И чем больше учебных материалов, тем выше вероятность найти подходящее объяснение.


При очень большом желании, можно читать главу про функции у одного автора, типы данных у другого, ооп у третьего, и условные 10 глав ввода в ЯП разложить на 10 разных авторов. В этом не много смысла и скорее всего это не очень удобно в плане восприятия, но даже такой странный метод никак не собьет с пути правильного изучения.


2. Начать выстраивать план изучения лучше с какого-то опорного уч.материала

Он должен быть достаточно полным, и служить ориентиром для всего дальнейшего изучения. Важна именно функция ориентира, не обязательно двигаться конкретно по этому учебному материалу(но можно и двигаться, как хотите), важно именно мочь с ним свериться и понять на каком этапе находитесь, что уже пройдено, какие темы еще не закрыты и т.д. и т.п.


В целом, я бы разделил на два уровня: для начинающих и для продолжающих. Преимущество второй категории - больше и глубже, недостаток - не оч. оптимизировано для тех кто хочет начать с нуля.


В JS для роли такого опорного материала отлично подойдут:

Для начинающих:

2.1.https://learn.javascript.ru - легендарный сайт, он всем хорош, однако ребята которых я менторил приходили ко мне вот с какой проблемой:

-прочитал главу на learnjavascript, все понял, задачи в конце решил, после открываю codewars, беру задачи по теме, не могу решить без открытой в соседней вкладке той самой прочитанной/понятой/прорешенной главы, как так?


Дальше мы обсудим эту тему, важно - это не проблема уч.материала, с ним все в порядке, это проблема самого языка, ничего тут не поделаешь, js имеет это странное свойство - маскироваться под очень простую понятную штуку, а потом ‘ускользать’, когда дело касается реального применения.


Для продолжающих:

2.2.Флэнаган Дэвид, JavaScript. Полное руководство (книга с носорожком)

Просто лучшая книга по js, должна быть у каждого работающего с языком. Без малейшего понятия, почему ее рекомендуют начинающим, это немного сложноватый заход.


Я ее буквально сейчас держу в руках, и на задней обложке красуется “книга предназначена для программистов, желающих изучить js”, еще раз, ‘для программистов’, а не для новичков.


В любом случае, книга великолепна, ее обязательно надо будет прочитать. И как опорный материал - лучше некуда.


3.Ускользающий js

Тема кажется усвоенной, но когда дело касается применения полученных знаний, то обнаруживается куча пробелов.


Все дело в том, как js устроен и в его истории развития, если совсем просто - у js очень необычный дизайн, как следствие - он не учится также эффективно, как и другие языки.


Например, когда я писал об изучении питона, то настаивал на отходе от абстрактных задач к реальным, при том как можно быстрее. Все просто, реальные задачи питона в разы сложнее ‘созданных для проверки усвоения языка’.


В js все с точностью до наоборот, можно хоть сразу приступать к реальным задачам, и решать, разумеется, криво-косо, компонуя из кусков кода, который даже не до конца понимаешь. И этого огромная проблема, сколько угодно случаев, когда начинающий уверен на 100% в знаниях ЯПа(ну он же на нем проектики воял), а потом оказывается, что решить пресловутый fizzbuzz(задача, буквально, про самые основы) не получается.


Я как-то делал видео (там есть привязка ко времени, но если не сработает - 8:35) про питон, где затрагивал весьма искусственно разбиение на уровни(планирования и реализации). Так вот, js - это игровая площадка для уровня планирования.


Поэтому, как бы это печально не было, нужно намерено решать кучу абстрактных задач, для закрепления языка. Прочли о массивах, считайте вы только прикоснулись к прекрасному, по настоящему материал будет усвоен не после применение парочки методов в очередном ту-ду листе, а после прорешивания задач эдак 30-50 на codewars.


4. JavaScript с нуля, Чиннатхамби Кирупа

Эта книга - отличный(возможно лучший) вариант для старта. Материал изложен в ней именно последовательно, это не просто объяснить, но в сравнении с другими вводами в js, сразу станет понятно, почему это огромное преимущество, к тому же, книга совсем не перегружена(в js с этим проблемы).


На гугл книгах(прост вбейте название в гугле, справа будет карточка книги) доступен предпросмотр 80 страниц, тут проще один раз посмотреть, чем читать почему она хороша.


5. Freecodecamp

Freecodecamp[англ.] - является олицетворением вот этого ‘научим всех программировать’. Если вы спросите программиста из Америки/Канады, то вероятность 90% порекомендуют его или аналоги(например, codeacademy). Из аналогов выделяется тем, что это буквально пик подобных проектов.


Freecodecamp ‘nonprofit organization’, т.е. у них все бесплатно, но время от времени будут просить сделать донат, по моему в виде подписки(разумеется, все добровольно, можно и не делать).


Есть курсы начиная с основ html и до React-a, дают сертификаты(честно скажу, никому никакие сертификаты не нужны, но все же), куча задач, вполне себе хорошая теория, и оч крутой форум. Также есть отдельные задания-проекты.


6. Введение в программирование, hexlet

Давайте я сразу скажу, это не реклама, я не говорю ничего про их платные курсы, речь только о бесплатном.


https://ru.hexlet.io/courses/introduction_to_programming очень крутой курс введения в программирование, подача на высшем уровне.

Этот же курс есть на степике https://stepik.org/course/13929 , правда там он несколько урезан


7. Выразительный JavaScript

Оригинал - https://eloquentjavascript.net

Перевод - https://karmazzin.gitbook.io/eloquentjavascript_ru


Один из самых примечательных вводов в ЯП. Отличная книга, много кода, много примеров, все хорошо объяснено, отдельно хочется отметить главы-проекты, чего только стоит проект - создание маленького языка программирования.


8. https://developer.mozilla.org/ru/docs/Learn/JavaScript/First_steps

Ну и разумеется, документация JS, там есть отличные туториалы, стоит ознакомиться.


9. Есть еще один курс, о котором нельзя не упомянуть. Сразу скажу - сложный, но абсолютно потрясающий. Я бы даже сказал, что он единственный в своем роде. Более полного и глубокого я не видел, что сказать это настоящий академический подход.

Подробнее на хабре

Сам плейлист курса с канала Timur Shemsedinov


Этот курс стоит хотя бы просто посмотреть, поскольку пройти его с нуля получится очень не у многих. Наверно есть смысл подучить язык, а уже потом к нему вернуться.

Показать полностью
11

Всем, кто хочет вкатиться в айтишку

Приветствую, обычно я тут пишу всякое про программирование, и обычно это небольшой формат, но тут я решил попробовать что-то более масштабное, надеюсь идея удастся и кому-то это будет полезно.


Кратко: это такой формат канала-роадмапа/плана изучения по фронтенду.


Важный момент - именно формат канала, то есть на нем будут постепено выходить шаги этого роадмапа разбираться разные подводные камни(js на них определено богат), учебные материалы, типичные ошибки определенного шага, пути того как их можно избежать и т.д. и т.п.


Начнем с абсолютного нуля, а финальной целью будет достаточный уровень для входа в профессию(скорее всего, последние этапы этого роадмапа будут полностью посвящены собесам). Пока ориентируемся на React, возможно это изменится(до него еще дойти надо), но честно говоря, особых причин это сделать не вижу.


Примерный сроки - 6 месяцев, это довольно оптимистичный прогноз(обычно эту цифру умножают раза в полтора-два). В любом случае роадмап останется, и можно будет идти по нему в своем темпе.


-будет куча крутейших учебных материалов неизвестных новичкам(поверьте, там мягко сказать, очень все хорошо)

-будут разбираться разные техники изучения(очень важная тема, которой редко касаются)

-все в контексте ‘реального’ мира, т.е. что-то вроде: этот инструмент полезен при изучении, но в реальности на работе его не юзают из-за такой-то причины; так в реальности никто не пишет, но об этом могу спросить на собесе; и т.д. и т.п.

В общем, welcome - Во фронтенд

Показать полностью
26

Computer Science | что читать/смотреть1

Приветствую, давно хотел написать пост об изучения Computer Science, рассмотреть пару тем, рассказать об интересных уч.материалах. К тому же здесь превалируют русскоязычные уч. материалы, что достаточно редкая история(но об английском будет пару слов, без него, к сожалению, никуда).


Этот пост - последний вышедший на моем канале в телеге https://t.me/tobeprog (там об изучении программирования).


Какие варианты roadmap-ов по cs бывают

Кажется крайне позитивной идеей, перед началом любого подобного материала ссылаться на уже существующие roadmap-ы/планы изучения.


Пост о том как найти хороший 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, собственно весь roadmap - это его подготовка к собеседованию и обретение этих знаний с нуля.


https://github.com/ossu/computer-science OSSU(Open Source Society University)

Очень известный проект, опенсорсный университет. Они ориентируются именно на вузовскую программу cs.


1. Ввод в computer science

Учебные материалы, не требующие какой либо предварительной подготовки, можно даже ни одного ЯПа не знать. При этом, их полезно посмотреть всем начинающим программистам, даже если дальнейшее изучения cs не планируется.


1.1. CS50

Оригинал Перевод

Легендарный Гарвардский ввод в cs. Лектор обладает каким то запредельным скиллом интересно подавать сложный материал, и сам материал выше всяких похвал. На данный момент, именно этот ввод мне видится лучшим вариантом для старта.


1.2. "Код", Петцольд

Эта книга - ввод в архитектуру, разбирается всё, буквально от подачи тока по проводкам и заканчивая высокоуровневыми языками программирования.


Но куда интересней другая особенность книги - здесь с легкостью ловится эффект, когда ты понял одну часть, но уже забыл прошлую, и надо все заново, и все удерживать в голове и т.д. При этом сама книга написана простым языком, не подразумевает никаких предварительных знаний по теме и досконально разбирает каждый момент. Вы как бы учитесь работать со сложной системой, находясь при этом в комфортных условиях(это буквально необходимый навык для дальнейшего изучения cs, наверно, он даже важнее самой темы книги).


Ко всему прочему CS50 и "Код" Петцольда - идеальное сочетание. CS50 мало про архитектуру, а Код отлично ложится на ввод в computer science. Поэтому рекомендую ознакомится с книгой как можно раньше.


1.3. Missing Semester

Оригинал - https://missing.csail.mit.edu/

[Перевод, на данный момент переведено 2 из 11 частей]Пропущенный семестр курса по компьютерным наукам - https://missing-semester-rus.github.io/

Есть куча инструментов, которые предположительно должен знать студент после изучения Computer Science, обычно это оставляют для самостоятельного изучения, тут же наоборот решили сакцентировать на них внимание(и сэкономить кучу времени студентам).


2. Подготовка к изучению cs

2.1. Про английский

Раз уж, в Missing Semester соприкосновения с иностранным языком не избежать, обсудим эту тему сейчас. Так уж получилось, английский - это необходимость для изучения cs. Хорошая новость в том, что для уч.материалов на английском не нужен уровень Disco Elysium.


Я не лингвист, поэтому рассуждений на тему почему так, выдать не могу. Но точно могу сказать, что для многих становится настоящим открытием то, насколько простой английский используют в тех же лекциях по тех.специальностям. Если получается смотреть какие-нибудь ситкомчики(условных “Друзей”) в оригинале, то и лекции условного MIT по алгоритмам тоже потяните(к тому же, у лекций могут быть конспекты, субтитры, да даже контекст повествования).


Знание языка, даже на каком-нибудь Intermediate, уже огромное преимущество, и если есть возможность каким-то образом подтянуть язык, то это однозначно стоит сделать.


2.2. Выбор языка

Все сводится к 2 вариантам: более классический - си, более простой - питон. Вообще можно выбрать и любой другой, но так уж сложилось, что большинство уч.материалов крутятся вокруг этих двух.


Начнем с питона, основное преимущество - можно быстро писать сложные программы или их рабочие прототипы. В cs очень важно не просто изучать теорию, но и мочь что-то сделать, что называется “покрутить” это, поэкспериментировать, понять принцип работы на практике.


Пост про уч.материалы для изучения основ питона

Не буду расписывать каждый, уже кучу всего про них написал, как и про подбор правильных уч.материалов, все есть в посте.


Поэтому, сразу к Си. Сразу скажу, в моем понимании, изучении Си без ассемблера - крайне странная идея, и из того же gdb изучающий вообще вылезать не должен. Но это достаточно хардкорный подход, в котором для начинающего уж слишком много процесса исследования(что может сильно запутать).


Нет особого смысла расписывать книги по Си, в любой подборке будет фигурировать тот же Прата, мимо основных пройти невозможно, вместо этого расскажу о куда более интересном и малоизвестном материале.


https://stepik.org/course/73618 - один из лучших курсов по Си, найденный мной весьма странным образом. Дело в том, что автор курса написал книгу, с тем самым правильным в моем понимании подходом(сишечка через ассемблер), самой книги нет на русском, но гугл неожиданно привел меня на степик, где курс можно сказать спрятался(не привязан к какой-либо организации, на обложке милейший котик, и всего 2к учащихся, поэтому на самом сайте его приметить затруднительно).


К сожалению, сам курс без ассемблера, но он все же очень хорош. Cложный, глубокий, про современный подход к разработке(это прям редкость). Тут главное не торопиться, и постепенно, вникая во все(это оч. важно), двигаться по курсу.


2.3. А оно точно вам нужно?

Этот вопрос стоит задавать перед изучением любого топика/темы cs. И уж точно, перед комплексным изучением всего предмета. Да, вроде как лишних знаний не бывает, но вот что бывает, так это зря потраченное время(в случае с cs, очень и очень большое).


Почему я вообще поднял этот вопрос? Если кратко, ища разные материалы на тему cs, очень уж часто я видел крайне спорные утверждения из разряда: “каждый программист должен знать”. И если подобное утверждение выходит далеко за пределы основ, то я советую очень и очень осторожно к нему относиться.


Особенно, если изначально не стоит задачи разобраться в той или иной области, а ее изучения связано с получением, например, будущей профессии. Сделайте ресерч, посмотрите действительно ли это необходимое требование(предположу, что в большинстве случаев - нет).


2.4. Изучение от практики

Одна из самых примечательных особенностей изучения cs сейчас, это - возможность изучать некоторые темы от практики. Начинать с небольших “игрушечных” проектов и потихоньку увеличивать сложность, все больше и больше приближаясь к настоящим.


Даже без подборок и прочего, туториалы с ними легко гуглятся. Например, запрос “Lisp interpreter python” и первый же результат:

http://norvig.com/lispy.html (How to Write a (Lisp) Interpreter (in Python)) статья Питера Норвига, где буквально за 90 строк он пишет и объясняет очень простой интерпретатор Lisp

https://habr.com/ru/post/115206/ - перевод этой статьи, также будет на первой странице выдачи

Это отличный вариант для старта. А что потом? Ну например, есть продолжении этой статьи с улучшенной версией интерпретатора:

https://norvig.com/lispy2.html (An ((Even Better) Lisp) Interpreter (in Python)) все также первая страница выдачи, там же будут и другие варианты.


Такой подход, ни в коем случае не отрицает чтения фундаментальной литературы, а наоборот дополняет его, и даже мотивирует все глубже и глубже изучать тему.


2.5. Количество тем

Чтобы этот пост не стал слишком уж большим, я взял самые популярные темы, они входят, если так можно выразиться, в классические топики cs. Получилось 5(Алгоритмы, Математика, Архитектура, Операционные системы, Языки программирования и компиляторы). Не знаю насколько вообще тема поста интересна, если хорошо зайдет, то сделаю еще 5, навскидку: сети, бд, графика и т.д


Computer Science | что читать/смотреть


3. Алгоритмы

3.1. Алгоритмы. Руководство по разработке, Стивен Скиена - считаю лучшим вариантом, замечательная книга. Кроме того, что она великолепно написана, в ней есть куча ссылок на другую отличную литературу, можно очень глубоко погрузиться в тему.


3.2. Грокаем алгоритмы, Адитья Бхаргава - хороший вариант для совсем начинающих.


3.3. Структуры данных и алгоритмы Java, Роберт Лафоре - классика, не смущайтесь ЯПа в названии, вообще хорошая литература по алгоритмам к ЯПам не привязана, они лишь лучше иллюстрируют рассказанное, в случае Лафоре, рассказанное настолько понятно, что Java точно не станет проблемой.


Но если нужно именно на определенном ЯПе, то разумеется есть репозиторий с кучей алгоритмов и реализаций на разных ЯПах - https://github.com/TheAlgorithms/Python/blob/master/DIRECTORY.md


3.4. Алгоритмы. Вводный курс, Томас Кормен - почему то все время забывают про эту книгу, и сразу отсылают к большой работе того же автора ‘Алгоритмы. Построение и анализ’, эта книга, куда легче и возможно, станет ступенькой к основному труду автора.


3.5. https://stepik.org/course/217 - Алгоритмы: теория и практика. Методы

https://stepik.org/course/1547 - Алгоритмы: теория и практика. Структуры данных

Два отличных курса от CSC, оба мультиязычные


3.6. Есть один курс на английском, который я не могу не упомянуть:

Introduction to Algorithms(MIT), он большой(это мягко сказано), но зато очень детальный, и объясняют все достаточно понятно, ко всему прочему этот курс только часть из серии Массачусетских курсов по алгоритмам, сразу за ним идет не менее приятный - Design and Analysis of Algorithms.


Еще к этому можно добавить кучу отличных статей, кучу объяснений сложных моментов простым языком, всякие ресурсы с задачками и т.д. и т.п. В плане поиска уч.материалов - изучение алгоритмов не доставит проблем.


4. Математика

Лучше изучать математику под конкретную цель. Т.е. в тот момент, когда приходит понимание, что для дальнейшего изучения другой темы необходимо ее(математику) подтянуть.


Но, как бы это помягче сказать, может сложиться ситуация, когда и подтягивать то нечего, настолько с математикой дружба не склеилась. В таком случае, наверно стоит почитать что-то популярное, пускай не относящееся к дискретной математике(cs крутится вокруг неё), просто чтобы понять, что это не такая страшная штука.


4.1. Парочка таких книг:

Красота в квадрате, Алекс Беллос

Удовольствие от х, Стивен Строгац

Теория игр, Авинаш Диксит, Барри Нейлбафф

Что такое математика? Рихард Курант, Герберт Роббинс


После/параллельно, стоит посмотреть что-то из разряда “математика для взрослых/минимум для абитуриента тех.вуза”. Главное, чтобы подобные ликбезы не стали в тягость.


Как и говорилось выше, в cs все крутится вокруг дискретной математики

4.2. Дискретная математика для программистов, Род Хаггарти - наверно, сейчас это лучший вариант введения в предмет.


4.3. На степике довольно много курсов по дискретной математике, возможно кому то такой формат будет удобней.

https://stepik.org/course/91 - Ликбез по дискретной математике

https://stepik.org/course/83 - Дискретные структуры

https://stepik.org/course/125 - Основы перечислительной комбинаторики

https://stepik.org/course/126 - Основы теории графов

https://stepik.org/course/5608 - Теория графов


4.4. Перед курсом про алгоритмы(из прошлого раздела) в MIT читают курс, который так и называется Mathematics for Computer Science.


5. Архитектура


5.1. "Код", Петцольд - книга из введения, если по каким то причинам еще не прочитана, то самое время это сделать.


5.2. Архитектура компьютера, Таненбаум - буквально фундамент, очень важная книга. Она куда сложнее Петцольда, но это, можно сказать, другой уровень. По сути, Петцольд в разрезе изучения архитектуры - подготовка к этой книге.


5.3. Архитектура компьютера и проектирование компьютерных систем, Дэвид Паттерсон, Джон Хеннесси - еще одна фундаментальная книга. Вполне может составить конкуренцию Таненбауму.


Честно сказать, не вижу смысла писать о других уч.материалах. Последние 2 книги просто вне всякой конкуренции. И даже близко никакой другой курс/книга не подобрался.


6. Операционные системы

6.1. https://stepik.org/course/1780 - Операционные системы, отличный курс, с него вполне можно начать.


6.2. https://github.com/tuhdo/os01 - Operating Systems: From 0 to 1, книга, отличный ввод в тему, к сожалению, только на английском.


6.3. https://littleosbook.github.io/ - The little book about OS development, великолепная книга, именно по разработке операционок, теорию же авторы рекомендуют брать из того же Таненбаума. Тоже только на английском.


6.4. Собственно, Современные операционные системы, Таненбаум, Бос - книга, разумеется, абсолютный мастрид для желающих разобраться в вопросе, но она очень и очень сложная, поэтому крайне не рекомендую начинать с нее, посмотрите варианты которые выше, попишите всякие мелкие проекты(благо туториалов куча), и только потом стоит приступать.


6.5. Если интересует Linux, точно не стоит проходить мимо Ядро Linux. Описание процесса разработки, Роберт Лав


7. Языки программирования и компиляторы

7.1. Разумеется, есть книга дракона Компиляторы: принципы, технологии и инструменты, Ахо, Лам, Ульман, Сети - здесь та же история, что с операционками Таненбаума, абсолютный мастрид, но к нему следует хорошенько подготовиться.


К тому же, можно очень хорошо разобраться в теме, и например, написать свой первый компилятор, вообще до соприкосновения с драконами. И это мне кажется правильной тактикой изучения.


Начать с того самого “подхода от практики”, потихонечку увеличивать сложность, пока не станет ясно, что необходимо более глубокое понимание теории. Отправная точка у всех разная, благо туториалов разной сложности столько, что без проблем можно найти подходящий.


7.2. https://ruslanspivak.com/lsbasi-part1/ - отличный вариант для старта, Цикл из 19 статей, в котором автор, пишет интерпретатор языка Pascal на Python.


7.3. https://github.com/DoctorWkt/acwj - автор репозитория пишет компилятор, при этом подробнейшим образом объясняя каждый шаг.

Показать полностью
130

Незаслуженно малоизвестные курсы по программированию/computer science

Приветствую, этот пост - небольшая подборка незаслуженно непопулярных курсов по программированию/cs.


О каких-то я рассказывал у себя на канале в телеге https://t.me/tobeprog , какие-то проскакивали в других моих постах, упоминание некоторых пунктов я вообще нигде не видел, решил собрать их в одной такой подборке(друг с другом они никак не связаны).


Такой момент, популярность - штука относительная. Где-то все явно выражено в небольшом количестве просмотров, а какие-то из пунктов я просто редко вижу во всяких списках учебных материалов. Поэтому, здесь могут соседствовать пункты и с 1к просмотров, и со 100к, в любом случае, на мой взгляд, они все заслуживают куда большего внимания.


CS50 | Введение в искусственный интеллект с python


Оригинал[плейлист] - https://www.youtube.com/watch?v=WbzNRTTrX0g&list=PLhQjrBD2T382Nz7z1AEXmioc27axa19Kv&ab_channel=CS50

Перевод 1 лекции(на данный момент переведено 4 лекции из 7) - https://youtu.be/nDCFajF49U4


Курс по ИИ, следующий за cs50, как говорит сам Дэвид Мэлан(тот самый профессор, легендарный лектор CS50, но сам курс читает другой лектор): “этот курс начинается там, где заканчивается основной cs50”, кстати видео с приглашением на курс, где он это и говорит, тоже переведено.


Даже не знаю, нужно ли что-то говорить про качество, это великолепно, это гарвардский CS50. Меня всегда поражало насколько правильно, последовательно и интересно они подают сложные темы, еще больше меня поражает колл-во этих тем (просто откройте описание к ролику, там есть таймкоды).


Отдельный респект автору перевода. Титанический труд, невероятного качества перевод, как и написано выше, таймкоды, буквально на все темы в лекции, код удобно выложен на github(ссылка там же, где и таймкоды). И к сожалению, незаслуженно малое число просмотров(на последнем переводе меньше 1к).


Если вы прошли основы питона, посмотрели CS50, и хотите дальше углубится в изучении computer science(не говоря уже, об изучении ИИ) и python, то этот курс подходит как нельзя лучше.


CS50's Introduction to Game Development 2018 (GD50)


Оригинал: https://www.youtube.com/watch?v=GfwpRU0cT10 [англ]


Раз уж упомянули CS50, то есть еще одно неожиданное(по крайней мере, для меня), ответвление - gamedev


Интересный подход, каждый урок берется как кейс какая-то известная игра(например понг или марио) и, собственно, разбирается. Начинается все с Lua и Love2D(LÖVE) и переходит в C# и Unity.


В последних двух видео разбирают Portal, в первом - создавая простой клон на Unity, а во втором уже с двумя участниками команды создавшей саму игру(да-да они позвали ребят из Valve прочитать лекцию) разбирают всякие интересные проблемы и их решения возникавшие по ходу разработки.


Computer Science Center


Канал на YT: https://www.youtube.com/c/CompscicenterRu

Степик: https://stepik.org/org/compscicenter


Просто куча крутейших курсов на русском. В прошлом посте про поиск хорошего roadmap/плана изучения, я писал, что если вижу упоминание их курса по Python, то для меня это показатель, такой знака качества.


Хотя это про язык с самых его основ, он не для новичков, а для уже программистов, к примеру, решивших выучить новый язык или углубить понимание питона. Он сложный, даже очень сложный, но при этом абсолютно потрясающий, разобрано вообще все. Его стоит посмотреть каждому, кто решил связаться с питоном.


Но есть и для начинающих. К примеру, курс о котором тоже как-то писал:

Python для решения практических задач - https://stepik.org/course/4519

Уникальная штука, курс где показан тот самый процесс программирования(о самом процессе делал пост).


У них есть еще куча всего интересного(и достаточно редкого):

Курс про RUST - https://youtu.be/Oy_VYovfWyo

Курс об основах внутреннего устройства ядра ОС - https://stepik.org/course/1780


Если нужно попроще - степик, если посложнее - youtube(разумеется, там все разбито на плейлисты и легко ориентироваться)


Missing Semester

Оригинал - https://missing.csail.mit.edu/

[Перевод, на данный момент переведено 2 из 11 частей]Пропущенный семестр курса по компьютерным наукам - https://missing-semester-rus.github.io/


Идея такая, есть куча инструментов, которые предположительно должен знать студент после изучения Computer Science, обычно это оставляют для самостоятельного изучения, тут же наоборот решили сакцентировать на них внимание(и сэкономить кучу времени студентам).


Уже хотел расписывать как мне понравилась часть про метапрограммирование, и нахваливать их подход к изучению Vim, но вдруг понял, что здесь вот какая проблема: понять насколько это круто, смогут те, кто уже знает что это.


Поэтому, прибегну к максимально ужасному, но в тоже время понятному всем объяснению. Знаете такой голливудский образ процесса работы программиста - печатает со скоростью света, разумеется не пользуется мышкой и никогда не выходит из консоли.


Разумеется это полный бред, краем глаза киношники увидели использование определенных инструментов, и не поняв(или наоборот утрировав, выглядит то это, действительно, впечатляюще) решили, что весь процесс использование компьютера программистом выстроен исключительно на них.


Так вот, в этом курсе научат этими самыми инструментами пользоваться. Кроме того, что их использование довольно эффектно, оно еще и очень эффективно.

Показать полностью
20

Где найти хороший 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»)

Показать полностью
530

План изучения программирования | Python | Часть 1

Приветствую, перевел еще один пост в видеоформат. Как-то начинал подобную серию постов, вот решил довести эту историю уже в видеоформате.


Текстовая версия(в видео все 3 части):

часть 0

часть 1

часть 1.5(дополнение к первой)

Показать полностью
549

Python, основы | что читать/смотреть(видео)

Приветствую, перевел еще один пост в видеоформат. Для меня эти видео в рамках такого, скорее эксперимента, поэтому критика очень приветствуется.


Текстовая версия поста

Показать полностью
Отличная работа, все прочитано!