Какие лучше работают на большом изображение, а какие на мелких, все те же? Анализ может, например, показать: алгоритм A быстро и хорошо справляется с небольшой картинкой, алгоритм B с большой. В таком случае, можно сделать вывод - стоит написать архиватор который будет в зависимости от веса файла решать какому алгоритму его скормить.
Вышла первая часть - ‘плана изучения программирования’.
Pikabu - https://pikabu.ru/story/_7790900
Reddit - https://www.reddit.com/r/Pikabu/comments/jhvuqx
Я пересмотрел формат, теперь в подобных/больших постах будут только основные моменты, так же они будут разбиты по пунктам для удобной навигации. Посты дополняющие/раскрывающие план, будут на этом канале.
Не всем удобно читать за пределами телеги, поэтому у больших постов будет краткое содержание(которе удобно здесь же и сохранить и использовать как список учебных материалов).
План изучения программирования| Часть 1 (кратко)
1-4: об уч. материалах
5,6: о самом процессе программирования
1. Для начала, нужен синтаксис, самые основы. Свейгарт[Автоматизация рутинных задач с помощью Python] - идеальный вариант, не перегруженный, понятный, с интересными задачами, к тому же, по пути задаваемым книгой и будет дальнейшее движение этого плана.
2.Чтобы понять процесс программирования, для начала надо его увидеть. https://www.youtube.com/watch?v=vpyWbpdk3Xs - уникальный пример, где автор показывает процесс мышления при написании программы. Можно считать видео ориентиром, когда подобный способ понят, понят и сам процесс программирования.
Почему автоматизация рутины?
Что бы как можно раньше прикоснуться к процессу программирования. Это не строгое ограничение, скорее рекомендация на какие задачи стоит обратить внимание в самом начале. Книга Свейгарта породила огромную волну материалов по "автоматизации". Если вбить на ютубе "python automation", темы роликов будут от работы в Excel до знакомств в Tinder(десяток подобных видео, и алгоритм рекомендаций избавит от нехватки новых идей).
3. https://stepik.org/course/575 - курс по автоматизации тестирования, нам интересны первые две его части. Там про selenium - инструмент, для автоматизации в браузере(это про - зайти на страницу, заполнить форму, нажать кнопочки, оставить комент и т.д. и т.п.).
4. https://stepik.org/course/4519 - курс в котором учат гуглить, искать на StackOverflow, читать документацию и юзать библиотеки. Это тот самый подход, о котором не особо пишут в книжках, однако, это именно про такую - трушную практику.
Составляющие процесса программирования
Программист постоянно выстраивает структуру будущей программы, как бы выставляет какие то чекпоинты, идет по ним, создавая и заставляя эти куски функционировать как ему надо, можно не знать, как в точности, сделать определенный кусок, но важно понимать как его сделать(или где найти, как его сделать).
Подобный способ позволяет одновременно работать в двух плоскостях, на уровне планирования - взаимодействия с целыми кусочками кода(пускай даже не готовыми), и на уровне реализации - написания этих кусочков кода.
5.Уровень реализации. Оставим термин - 'кусочек', но по хорошему, его нужно подвести под какую то завершенную единицу кода(которой мы можем манипулировать на уровне планирования), скорее всего, на этом этапе - функцию.
5.1.Самое важное: Контроль происходящего
Ищем ответ на Stackoverflow, видим - понятный, но в 10 строк или не понятный, но небольшой, сразу хочется забрать, пригреть в своем коде. Так делать не стоит. Проблема в том, что на уровне планирования, контроль, не будет потерян(код что то делает, не знаем что именно, но знаем результат), но вот на уровне реализации - теряется, мы не понимаем что происходит, и это - прямой путь к говнокоду(lkz рутинных проектов, это скорее всего будет работать, но вот дальше, создаст кучу проблем).
5.2. Кусочки кода должны быть универсальными - будет намного удобней с ними работать. Есть код, заполняющий таблицу из 10 строк, по ходу проекта, понимаем, нужно 25 строк и еще 2 столбца, потом 5 строк 5 столбцов и т.д. Все эти изменения должны решаться не переписыванием половины кода, а заменой двух переменных(в нашем случае, число строк/столбцов).
5.3.Кусок кода должен выполнять только одну задачу. Кроме прямой связи с пунктом выше, это относится и к уровню планирования. Единицы планирования должны быть единицами, так удобней с ними оперировать.
Pikabu - https://pikabu.ru/story/_7790900
Reddit - https://www.reddit.com/r/Pikabu/comments/jhvuqx
Я пересмотрел формат, теперь в подобных/больших постах будут только основные моменты, так же они будут разбиты по пунктам для удобной навигации. Посты дополняющие/раскрывающие план, будут на этом канале.
Не всем удобно читать за пределами телеги, поэтому у больших постов будет краткое содержание(которе удобно здесь же и сохранить и использовать как список учебных материалов).
План изучения программирования| Часть 1 (кратко)
1-4: об уч. материалах
5,6: о самом процессе программирования
1. Для начала, нужен синтаксис, самые основы. Свейгарт[Автоматизация рутинных задач с помощью Python] - идеальный вариант, не перегруженный, понятный, с интересными задачами, к тому же, по пути задаваемым книгой и будет дальнейшее движение этого плана.
2.Чтобы понять процесс программирования, для начала надо его увидеть. https://www.youtube.com/watch?v=vpyWbpdk3Xs - уникальный пример, где автор показывает процесс мышления при написании программы. Можно считать видео ориентиром, когда подобный способ понят, понят и сам процесс программирования.
Почему автоматизация рутины?
Что бы как можно раньше прикоснуться к процессу программирования. Это не строгое ограничение, скорее рекомендация на какие задачи стоит обратить внимание в самом начале. Книга Свейгарта породила огромную волну материалов по "автоматизации". Если вбить на ютубе "python automation", темы роликов будут от работы в Excel до знакомств в Tinder(десяток подобных видео, и алгоритм рекомендаций избавит от нехватки новых идей).
3. https://stepik.org/course/575 - курс по автоматизации тестирования, нам интересны первые две его части. Там про selenium - инструмент, для автоматизации в браузере(это про - зайти на страницу, заполнить форму, нажать кнопочки, оставить комент и т.д. и т.п.).
4. https://stepik.org/course/4519 - курс в котором учат гуглить, искать на StackOverflow, читать документацию и юзать библиотеки. Это тот самый подход, о котором не особо пишут в книжках, однако, это именно про такую - трушную практику.
Составляющие процесса программирования
Программист постоянно выстраивает структуру будущей программы, как бы выставляет какие то чекпоинты, идет по ним, создавая и заставляя эти куски функционировать как ему надо, можно не знать, как в точности, сделать определенный кусок, но важно понимать как его сделать(или где найти, как его сделать).
Подобный способ позволяет одновременно работать в двух плоскостях, на уровне планирования - взаимодействия с целыми кусочками кода(пускай даже не готовыми), и на уровне реализации - написания этих кусочков кода.
5.Уровень реализации. Оставим термин - 'кусочек', но по хорошему, его нужно подвести под какую то завершенную единицу кода(которой мы можем манипулировать на уровне планирования), скорее всего, на этом этапе - функцию.
5.1.Самое важное: Контроль происходящего
Ищем ответ на Stackoverflow, видим - понятный, но в 10 строк или не понятный, но небольшой, сразу хочется забрать, пригреть в своем коде. Так делать не стоит. Проблема в том, что на уровне планирования, контроль, не будет потерян(код что то делает, не знаем что именно, но знаем результат), но вот на уровне реализации - теряется, мы не понимаем что происходит, и это - прямой путь к говнокоду(lkz рутинных проектов, это скорее всего будет работать, но вот дальше, создаст кучу проблем).
5.2. Кусочки кода должны быть универсальными - будет намного удобней с ними работать. Есть код, заполняющий таблицу из 10 строк, по ходу проекта, понимаем, нужно 25 строк и еще 2 столбца, потом 5 строк 5 столбцов и т.д. Все эти изменения должны решаться не переписыванием половины кода, а заменой двух переменных(в нашем случае, число строк/столбцов).
5.3.Кусок кода должен выполнять только одну задачу. Кроме прямой связи с пунктом выше, это относится и к уровню планирования. Единицы планирования должны быть единицами, так удобней с ними оперировать.
Кусок кода закрывает три задачи, понимаем, что одна из них не нужна, или наоборот, хотим перенести в начало, изменить и т.д. Придется вынимать ее оттуда, делать новый кусок кода, обращаться к нему, в местах, где до этого обращались к старому и т.д. - много лишних действий(чем меньше действий - тем лучше).
6. Уровень планирования. Какого-то строго перехода/переключения, с одного уровня на другой - нет(понимание придет на практике). Главное помнить - этап планирования происходит постоянно, он не заканчиваться блок схемой/псевдокодом, он параллелен написанию кода.(в 'большой' версии поста следующие 2 пункта основаны на примере, здесь - только вывод)
6.1. Не нужно рассматривать сложную задачу как одно целое, если сложно - выносим в подзадачу то, что сложность создает. Выделение подзадач - процесс динамический, мы можем начать поиска общего способа, и работая от него, все больше приближаться к конечному варианту нашего решения.
6.2. Постановка подзадач исходя из - "по идее, каким то образом это можно сделать" - нормальная идея. Подзадачи рассматриваем отдельно, после соединяем, это особенно уместно, когда сложность подзадачи, заставляет нас довольно сильно углубляться в механизм работы чего либо, на время отходя от самой задачи.
6. Уровень планирования. Какого-то строго перехода/переключения, с одного уровня на другой - нет(понимание придет на практике). Главное помнить - этап планирования происходит постоянно, он не заканчиваться блок схемой/псевдокодом, он параллелен написанию кода.(в 'большой' версии поста следующие 2 пункта основаны на примере, здесь - только вывод)
6.1. Не нужно рассматривать сложную задачу как одно целое, если сложно - выносим в подзадачу то, что сложность создает. Выделение подзадач - процесс динамический, мы можем начать поиска общего способа, и работая от него, все больше приближаться к конечному варианту нашего решения.
6.2. Постановка подзадач исходя из - "по идее, каким то образом это можно сделать" - нормальная идея. Подзадачи рассматриваем отдельно, после соединяем, это особенно уместно, когда сложность подзадачи, заставляет нас довольно сильно углубляться в механизм работы чего либо, на время отходя от самой задачи.
Вышла вторая часть - ‘плана изучения программирования’.
Pikabu - https://pikabu.ru/story/_7869855
Reddit - https://www.reddit.com/r/Pikabu/comments/k4nj7z
Это не совсем самостоятельная часть плана, скорее небольшое дополнение к предыдущему посту. Пока, что бы было меньше путаницы, пускай это будет 2 часть. Главное - ее можно пропустить, на ход плана она не влияет. Со следующей части начнется computer science, и мы на время отойдем от python(но после cs, к нему вернемся), поэтому, в каком то смысле, эта часть сглаживает этот резкий переход.(почему такой резкий переход - есть в полной версии, здесь, напомню краткая)
План изучения программирования| Часть 2 (кратко)
Жалел, что не поделился этими 2 ссылками в прошлом посту, они сложнее - выбивались подхода, о котором писал выше
1.https://stepik.org/course/512 - курс по питону, для тех кто прошел основы. Стоит посмотреть хотя бы начало - там небольшой ввод в само устройство языка.
2.https://youtu.be/g6zzZxxifAw - один из лучших каналов для изучающих python. Ссылка на видео, где разбирают исходники одной python библиотеки. Отдельно стоит отметить стримы с code review.
3. DRY [Don't repeat yourself(не повторяйся)]
Не повторяйтесь, скорее всего это не нужно. Если в коде, подряд повторяется одно и тоже - нужен цикл, если повторяется, но в разных местах - нужна функция.
4. Псевдокод/блок схемы/комментарии нужны чтобы помогать
Именно помогать, а не мешать/раздражать/напрягать. Странная тенденция в некоторых курсах - буквально под каждую задачу заставляют делать эту, зачастую не нужную подготовку. Как, то что придумано для удобства может навязываться? Это просто бессмысленно.
Очень естественным путем становится понятно зачем нужно все вышеперечисленное(те же, комментарии - ровно в тот момент, когда сам себе впервые задаешь вопрос - "почему/как/что я здесь написал?"), и если надобности в этом нет - то стоит задать вопрос "действительно ли задача этого требует?".
5. Самый верный способ понять 'что не так/где проблема' - построчный 'проход' кода(смотрим и объясняем себе же, что конкретно происходит в каждой строке)
6. Программирование всегда про рациональный подход
Если в программировании, на первый взгляд, что-то кажется не рациональным, стоит взглянуть на всю систему в целом, с большой вероятностью, из виду упущен какой то важный момент.
К примеру, существование какой то распространенной практики всегда рационально, иначе она бы не распространилась. Возьмем те же, стандарты оформления кода(стиля), крайне удобная штука, но видно это будет, когда начнется работа с большим количеством кода(особенно чужого).
7. Язык программирования это инструмент, книги/курсы по япам это инструмент для изучения инструмента
Вроде бы, очень очевидная мысль. Но, на практике, отношение к уч.материалам противоположное - будто существует один, самый правильный вариант и нужно, сначала долго его искать, потом учить именно по строго определенной книге/курсу/методу. Как будто, это не один из вариантов(инструментов), а единственно возможный.
Если инструмент работает плохо, его надо менять. Определенные инструменты подходят под определенные задачи(материал подан отлично, за исключением одной главы, это может сильно затормозить, поскольку все вводы в ЯПы по одному сценарию(рациональный подход), можно получить те же знания из другого источника, а не топтаться на месте).
Pikabu - https://pikabu.ru/story/_7869855
Reddit - https://www.reddit.com/r/Pikabu/comments/k4nj7z
Это не совсем самостоятельная часть плана, скорее небольшое дополнение к предыдущему посту. Пока, что бы было меньше путаницы, пускай это будет 2 часть. Главное - ее можно пропустить, на ход плана она не влияет. Со следующей части начнется computer science, и мы на время отойдем от python(но после cs, к нему вернемся), поэтому, в каком то смысле, эта часть сглаживает этот резкий переход.(почему такой резкий переход - есть в полной версии, здесь, напомню краткая)
План изучения программирования| Часть 2 (кратко)
Жалел, что не поделился этими 2 ссылками в прошлом посту, они сложнее - выбивались подхода, о котором писал выше
1.https://stepik.org/course/512 - курс по питону, для тех кто прошел основы. Стоит посмотреть хотя бы начало - там небольшой ввод в само устройство языка.
2.https://youtu.be/g6zzZxxifAw - один из лучших каналов для изучающих python. Ссылка на видео, где разбирают исходники одной python библиотеки. Отдельно стоит отметить стримы с code review.
3. DRY [Don't repeat yourself(не повторяйся)]
Не повторяйтесь, скорее всего это не нужно. Если в коде, подряд повторяется одно и тоже - нужен цикл, если повторяется, но в разных местах - нужна функция.
4. Псевдокод/блок схемы/комментарии нужны чтобы помогать
Именно помогать, а не мешать/раздражать/напрягать. Странная тенденция в некоторых курсах - буквально под каждую задачу заставляют делать эту, зачастую не нужную подготовку. Как, то что придумано для удобства может навязываться? Это просто бессмысленно.
Очень естественным путем становится понятно зачем нужно все вышеперечисленное(те же, комментарии - ровно в тот момент, когда сам себе впервые задаешь вопрос - "почему/как/что я здесь написал?"), и если надобности в этом нет - то стоит задать вопрос "действительно ли задача этого требует?".
5. Самый верный способ понять 'что не так/где проблема' - построчный 'проход' кода(смотрим и объясняем себе же, что конкретно происходит в каждой строке)
6. Программирование всегда про рациональный подход
Если в программировании, на первый взгляд, что-то кажется не рациональным, стоит взглянуть на всю систему в целом, с большой вероятностью, из виду упущен какой то важный момент.
К примеру, существование какой то распространенной практики всегда рационально, иначе она бы не распространилась. Возьмем те же, стандарты оформления кода(стиля), крайне удобная штука, но видно это будет, когда начнется работа с большим количеством кода(особенно чужого).
7. Язык программирования это инструмент, книги/курсы по япам это инструмент для изучения инструмента
Вроде бы, очень очевидная мысль. Но, на практике, отношение к уч.материалам противоположное - будто существует один, самый правильный вариант и нужно, сначала долго его искать, потом учить именно по строго определенной книге/курсу/методу. Как будто, это не один из вариантов(инструментов), а единственно возможный.
Если инструмент работает плохо, его надо менять. Определенные инструменты подходят под определенные задачи(материал подан отлично, за исключением одной главы, это может сильно затормозить, поскольку все вводы в ЯПы по одному сценарию(рациональный подход), можно получить те же знания из другого источника, а не топтаться на месте).
https://pikabu.ru/story/_7878526
https://www.reddit.com/r/Pikabu/comments/k7zowk
Как то я уже делал пост-список учебных материалов для изучающих python, они не были в рамках какого то плана, просто разделены на 3 уровня сложности.
Вышла новая версия того поста. Прибавились пункты из 2 последних частей "плана изучения программирования". Еще несколько книг/курсов, о которых до этого не писал.
Все в одном месте, думаю это удобно, время от времени, по ходу плана буду делать подобные посты.
https://www.reddit.com/r/Pikabu/comments/k7zowk
Как то я уже делал пост-список учебных материалов для изучающих python, они не были в рамках какого то плана, просто разделены на 3 уровня сложности.
Вышла новая версия того поста. Прибавились пункты из 2 последних частей "плана изучения программирования". Еще несколько книг/курсов, о которых до этого не писал.
Все в одном месте, думаю это удобно, время от времени, по ходу плана буду делать подобные посты.
https://pikabu.ru/story/_8003435
Вышла 3 версия списка уч. материалов. На этот раз, только об основах(мне кажется, наиболее востребованная тема), добавил пару ссылок, перегруппировал прошлые, сделал отдельный пункт о том, как все это надо изучать.
Именно в таком виде, пост мне кажется наиболее правильным, поэтому, это финальная версия, и следовательно - последняя. Думаю, что все это хорошо дополнит пост о том, как делать проекты(скоро он выйдет), и в каком то смысле, получится гайд из 2 частей, о том как учить основы питона.
Вышла 3 версия списка уч. материалов. На этот раз, только об основах(мне кажется, наиболее востребованная тема), добавил пару ссылок, перегруппировал прошлые, сделал отдельный пункт о том, как все это надо изучать.
Именно в таком виде, пост мне кажется наиболее правильным, поэтому, это финальная версия, и следовательно - последняя. Думаю, что все это хорошо дополнит пост о том, как делать проекты(скоро он выйдет), и в каком то смысле, получится гайд из 2 частей, о том как учить основы питона.
Про цепи Маркова и Как делать учебные проекты.
Перед тем, как рассказывать об интересных идеях для проектов, я подумал, надо бы расписать как их вообще делать.
Как то я уже писал о цепи Маркова(но не с точки зрения самостоятельного изучения). Не вдаваясь в математику, эта штука может генерировать разное. Разумеется цепь маркова не может в содержание, но зато может в форму(ее иногда выдают за нейронку, хотя это абсолютно не так).
Для примера, прогнал через нее небольшое количество(≈50-100) цитат Аристотеля(алгоритм работает до символа точки, т.е. выдает по предложению), из осмысленного она сгенерировала:
Шутка есть самый верный признак дружбы.
Свойство добродетели состоит, скорее, в досуге.
Разум - это довольство собою.
Благодарность быстро стареет.
(из 20 примерно 3 удачных(15%), но никаких условий, кроме остановки на символе точки нет, можно эту цифру значительно повысить, к примеру, исключить слишком короткие предложения(меньше 2 слов), убрать их подаваемых данных слишком отличающиеся по стилю, и т.д и т.п)
Хотя рассматриваем все на примере цепи маркова, сами шаги везде одинаковы.
1. Понять как эта штука работает.
Цепь Маркова, в данном случае, очень показательна. Она не то, чтобы сильно известна, придется проделать небольшую работу по исследованию/изучению, но при этом, она достаточно понятным образом работает.
Пока, в код не лезем(это важно!). Цель этого шага - понять как эта штука работает, и мочь воспроизвести пошагово это процесс(словами объяснить или нарисовать простенькую схемку). Разумеется идем в гугл. Знаете английский - будет сильно проще(особенно, речь о формате, когда что то сложное объясняют на пальцах, на англе. подобного в разы больше).
Мне кажется, лучшее объяснение цепей Маркова написал Alexander Dejeu
Оригинал: https://hackernoon.com/from-what-is-a-markov-model-to-here-is-how-markov-models-work-1ac5f4629b71
Перевод: https://tproger.ru/translations/markov-chains/
2. Реализация.
Вот здесь псевдокод/блоксхемы, как никогда уместны. Набрасываем шаги, от которых и будем отталкиваться. Для цепи маркова - 2 шага: 1 - делаем данные удобными для алгоритма, 2 - алгоритм идет по данным(сам алгоритм считает следующий шаг на основе настоящего,игнорируя предыдущие). Далее отталкиваемся от этих шагов.
Важно сосредоточится именно на реализации ключевых шагов. Над всякой мелочью, из разряда - как будет оформлен вывод финального результат, надо думать в последнюю очередь.
Это станет понятно на практике, но все же напишу, нет никакого смысла - подавать данные, той же сложности и тем же способом, что и финальном проекте, главное репрезентативность. Т.е. понять насколько хорошо работает код, можно и без пары сотен цитат древнегреческого философа, для цепи маркова, к примеру, подойдет набор цифр 101010123456.
3. Code review
Ревью кода - архиважная вещь, наверно самая большая потеря в самостоятельном изучении. Но все равно, неплохой идеей, будет смотреть ревью чужого. Дело в том, что ошибки плюс/минус у всех похожи. И читая о чужих о чужом коде, можно узнать многое о своем.
Хороший пример крутого code review: https://codereview.stackexchange.com/questions/193419/markov-chains-to-generate-text
Запрос в гугле: code review + markov chain + python, скорее всего выдаст первым сайт выше(этот сайт относить к той же сети, что и stackoverflow)
4. А как(и почему, именно так) сделали другите?
Я не рекомендую, при самостоятельном изучении(особенно на ранних этапах), искать реализации до того, как сделана своя. Уж очень велика вероятность, что один из вариантов покажется наиболее правильным, и весь дальнейший процесс выстроится вокруг чужого решения.
Это имеет мало смысла в учебных проектах, поскольку одна из причин их делать - научиться переводить свои идеи в код(а чтобы они стали своими, сначала нужно понять принцип работы(п.1), а потом самостоятельно выстроить реализацию(п.2)).
Но после своей реализации, исправления в ней ошибок, на этапе, когда основа для будущего проекта уже готова, это весьма полезная штука.
Перед тем, как рассказывать об интересных идеях для проектов, я подумал, надо бы расписать как их вообще делать.
Как то я уже писал о цепи Маркова(но не с точки зрения самостоятельного изучения). Не вдаваясь в математику, эта штука может генерировать разное. Разумеется цепь маркова не может в содержание, но зато может в форму(ее иногда выдают за нейронку, хотя это абсолютно не так).
Для примера, прогнал через нее небольшое количество(≈50-100) цитат Аристотеля(алгоритм работает до символа точки, т.е. выдает по предложению), из осмысленного она сгенерировала:
Шутка есть самый верный признак дружбы.
Свойство добродетели состоит, скорее, в досуге.
Разум - это довольство собою.
Благодарность быстро стареет.
(из 20 примерно 3 удачных(15%), но никаких условий, кроме остановки на символе точки нет, можно эту цифру значительно повысить, к примеру, исключить слишком короткие предложения(меньше 2 слов), убрать их подаваемых данных слишком отличающиеся по стилю, и т.д и т.п)
Хотя рассматриваем все на примере цепи маркова, сами шаги везде одинаковы.
1. Понять как эта штука работает.
Цепь Маркова, в данном случае, очень показательна. Она не то, чтобы сильно известна, придется проделать небольшую работу по исследованию/изучению, но при этом, она достаточно понятным образом работает.
Пока, в код не лезем(это важно!). Цель этого шага - понять как эта штука работает, и мочь воспроизвести пошагово это процесс(словами объяснить или нарисовать простенькую схемку). Разумеется идем в гугл. Знаете английский - будет сильно проще(особенно, речь о формате, когда что то сложное объясняют на пальцах, на англе. подобного в разы больше).
Мне кажется, лучшее объяснение цепей Маркова написал Alexander Dejeu
Оригинал: https://hackernoon.com/from-what-is-a-markov-model-to-here-is-how-markov-models-work-1ac5f4629b71
Перевод: https://tproger.ru/translations/markov-chains/
2. Реализация.
Вот здесь псевдокод/блоксхемы, как никогда уместны. Набрасываем шаги, от которых и будем отталкиваться. Для цепи маркова - 2 шага: 1 - делаем данные удобными для алгоритма, 2 - алгоритм идет по данным(сам алгоритм считает следующий шаг на основе настоящего,игнорируя предыдущие). Далее отталкиваемся от этих шагов.
Важно сосредоточится именно на реализации ключевых шагов. Над всякой мелочью, из разряда - как будет оформлен вывод финального результат, надо думать в последнюю очередь.
Это станет понятно на практике, но все же напишу, нет никакого смысла - подавать данные, той же сложности и тем же способом, что и финальном проекте, главное репрезентативность. Т.е. понять насколько хорошо работает код, можно и без пары сотен цитат древнегреческого философа, для цепи маркова, к примеру, подойдет набор цифр 101010123456.
3. Code review
Ревью кода - архиважная вещь, наверно самая большая потеря в самостоятельном изучении. Но все равно, неплохой идеей, будет смотреть ревью чужого. Дело в том, что ошибки плюс/минус у всех похожи. И читая о чужих о чужом коде, можно узнать многое о своем.
Хороший пример крутого code review: https://codereview.stackexchange.com/questions/193419/markov-chains-to-generate-text
Запрос в гугле: code review + markov chain + python, скорее всего выдаст первым сайт выше(этот сайт относить к той же сети, что и stackoverflow)
4. А как(и почему, именно так) сделали другите?
Я не рекомендую, при самостоятельном изучении(особенно на ранних этапах), искать реализации до того, как сделана своя. Уж очень велика вероятность, что один из вариантов покажется наиболее правильным, и весь дальнейший процесс выстроится вокруг чужого решения.
Это имеет мало смысла в учебных проектах, поскольку одна из причин их делать - научиться переводить свои идеи в код(а чтобы они стали своими, сначала нужно понять принцип работы(п.1), а потом самостоятельно выстроить реализацию(п.2)).
Но после своей реализации, исправления в ней ошибок, на этапе, когда основа для будущего проекта уже готова, это весьма полезная штука.
Главное - анализировать разные подходы, это может показаться сложным, разумеется это вопрос опыта, но начать можно с выделения каких то особенностей, к примеру - этот код быстрее, тут можно без ооп, здесь намного понятней и т.д и т.п.
Что из этого можно сделать?
Цепи Маркова - настоящий простор для интересных идей. К тому же, они довольно эффектно работают, и скажем так, опережают ожидания.
Генерация текста без нейронок - довольно интересный челлендж, и честно сказать, увлекательное занятие. Итог похож на просмотр фокуса, понимаешь что магии нет(цепи Маркова не могут в смысл), но результат все равно восхищает.
Довольно интересный вариант: чат-бот, с анализом тональности(т.е. программа оценивает эмоциональный окрас сообщений собеседника) Обе эти темы относятся к задачам обработки естественного языка(Natural Language Processing). Крутой курс об этом: https://youtu.be/5BVebXXb2o4 [англ.] 6 уроков, как раз включая цепь маркова и тональность текста.
Разумеется, можно генерировать не только текст, программе все равно что за данные ей подаются. Один из самых примечательных вариантов - музыка. К слову, по запросу “markov chain music” гугл на первой же странице выдает ссылки на университетские статьи.
В самом простом варианте можно подать алгоритму аккорды, в самом сложном - ноты(хотя лучше результат, будет на сгруппированных, типа триолей, а не на отдельных, там вообще может получится бесконечный перебор двух нот).
Вообщем, применение цепей Маркова - необъятная и очень интересная тема, куча возможностей для экспериментов и крайне занимательная штука.
#идеи_для_проектов #цепь_маркова
Что из этого можно сделать?
Цепи Маркова - настоящий простор для интересных идей. К тому же, они довольно эффектно работают, и скажем так, опережают ожидания.
Генерация текста без нейронок - довольно интересный челлендж, и честно сказать, увлекательное занятие. Итог похож на просмотр фокуса, понимаешь что магии нет(цепи Маркова не могут в смысл), но результат все равно восхищает.
Довольно интересный вариант: чат-бот, с анализом тональности(т.е. программа оценивает эмоциональный окрас сообщений собеседника) Обе эти темы относятся к задачам обработки естественного языка(Natural Language Processing). Крутой курс об этом: https://youtu.be/5BVebXXb2o4 [англ.] 6 уроков, как раз включая цепь маркова и тональность текста.
Разумеется, можно генерировать не только текст, программе все равно что за данные ей подаются. Один из самых примечательных вариантов - музыка. К слову, по запросу “markov chain music” гугл на первой же странице выдает ссылки на университетские статьи.
В самом простом варианте можно подать алгоритму аккорды, в самом сложном - ноты(хотя лучше результат, будет на сгруппированных, типа триолей, а не на отдельных, там вообще может получится бесконечный перебор двух нот).
Вообщем, применение цепей Маркова - необъятная и очень интересная тема, куча возможностей для экспериментов и крайне занимательная штука.
#идеи_для_проектов #цепь_маркова
Приветствую, недавно канал преодолел отметку в 1000 подписчиков, это что-то за пределами всех возможных ожиданий
Спасибо всем, кто подписался
Спасибо всем, кто рекомендует канал
Это невероятно мотивирует, будем дальше расти и развиваться(100% выходим на регулярный выход постов, накопилась куча интересных ссылок на уч.материалы, заметок/набросков будущих больших постов, еженедельных рубрик и прочих интересных штук)
Спасибо всем, кто подписался
Спасибо всем, кто рекомендует канал
Это невероятно мотивирует, будем дальше расти и развиваться(100% выходим на регулярный выход постов, накопилась куча интересных ссылок на уч.материалы, заметок/набросков будущих больших постов, еженедельных рубрик и прочих интересных штук)
CS50 | Введение в искусственный интеллект с python
Перевод - https://youtu.be/nDCFajF49U4
Оригинал[плейлист] - https://www.youtube.com/watch?v=WbzNRTTrX0g&list=PLhQjrBD2T382Nz7z1AEXmioc27axa19Kv&ab_channel=CS50
Ссылка выше - перевод первой лекции(на данный момент переведено 4 лекции из 7) из курса по ИИ, следующего за cs50, как говорит сам Дэвид Мэлан(тот самый профессор, легендарный лектор CS50): “этот курс начинается там, где заканчивается основной cs50”, кстати видео с приглашением на курс, где он это и говорит, тоже переведено - https://youtu.be/vKPdq0xDeXk
Даже не знаю нужно ли что-то говорить про качество, это великолепно, это гарвардский CS50. Меня всегда поражало насколько правильно, последовательно и интересно они подают сложные темы, еще больше меня поражает колл-во этих тем (просто откройте описание к ролику, там есть таймкоды).
Отдельный респект автору перевода. Это титанический труд, невероятного качества перевод, как и написано выше, таймкоды, буквально на все темы в лекции, код удобно выложен на github(ссылка там же, где и таймкоды). И к сожалению, незаслуженно малое число просмотров.
Если вы прошли основы питона, посмотрели CS50, и хотите дальше углубится в изучении computer science(не говоря уже, об изучении ИИ) и python, то этот курс подходит как нельзя лучше.
P.S. Это не первое “ответвление” от cs50 о котором я пишу, на канале есть пост о курсе посвященном gamedev https://t.me/tobeprog/8 [он без перевода]
#CS50 #академ_подход #курс #перевод
Перевод - https://youtu.be/nDCFajF49U4
Оригинал[плейлист] - https://www.youtube.com/watch?v=WbzNRTTrX0g&list=PLhQjrBD2T382Nz7z1AEXmioc27axa19Kv&ab_channel=CS50
Ссылка выше - перевод первой лекции(на данный момент переведено 4 лекции из 7) из курса по ИИ, следующего за cs50, как говорит сам Дэвид Мэлан(тот самый профессор, легендарный лектор CS50): “этот курс начинается там, где заканчивается основной cs50”, кстати видео с приглашением на курс, где он это и говорит, тоже переведено - https://youtu.be/vKPdq0xDeXk
Даже не знаю нужно ли что-то говорить про качество, это великолепно, это гарвардский CS50. Меня всегда поражало насколько правильно, последовательно и интересно они подают сложные темы, еще больше меня поражает колл-во этих тем (просто откройте описание к ролику, там есть таймкоды).
Отдельный респект автору перевода. Это титанический труд, невероятного качества перевод, как и написано выше, таймкоды, буквально на все темы в лекции, код удобно выложен на github(ссылка там же, где и таймкоды). И к сожалению, незаслуженно малое число просмотров.
Если вы прошли основы питона, посмотрели CS50, и хотите дальше углубится в изучении computer science(не говоря уже, об изучении ИИ) и python, то этот курс подходит как нельзя лучше.
P.S. Это не первое “ответвление” от cs50 о котором я пишу, на канале есть пост о курсе посвященном gamedev https://t.me/tobeprog/8 [он без перевода]
#CS50 #академ_подход #курс #перевод
YouTube
HARVARD CS50 - "Поиск" - Лекция 0: Искусственный Интеллект с Python на русском (2020)
Введение в Искусственный Интеллект с Python для Начинающих: https://stepik.org/a/193579/pay?promo=055a59c1eac05151 Курс: "Поколение Трансформеров": Нейросети для Естественного Языка (NLP)
Вне Свифта (Россия, Беларусь): https://stepik.org/a/175490
Свифт (Все…
Вне Свифта (Россия, Беларусь): https://stepik.org/a/175490
Свифт (Все…
Может сложиться впечатление, что этот канал об изучении исключительно python, но это не так, он в целом, об изучении программирования. Никакой привязки к определенному языку нет.
Питон отличный выбор первого япа, к тому же именно о нем выходил большой пост про уч.материалы. Поэтому, по крайней мере, пока что, будет превалировать питон, но и на другие япы иногда будем посматривать. Пост ниже - первый о JS.
Не знаю как скоро, но обязательно выйдет ряд постов про уч.материалы для разных языков(по типу уже существующего поста про уч.материалы для python).
Скорее всего, первым будет Си, знаю что для многих это странный выбор и вообще мало интересный ЯП. Именно поэтому, и хочу о нем рассказать, объяснить зачем его вообще нынче учить и почему он настолько любим программистами.
Питон отличный выбор первого япа, к тому же именно о нем выходил большой пост про уч.материалы. Поэтому, по крайней мере, пока что, будет превалировать питон, но и на другие япы иногда будем посматривать. Пост ниже - первый о JS.
Не знаю как скоро, но обязательно выйдет ряд постов про уч.материалы для разных языков(по типу уже существующего поста про уч.материалы для python).
Скорее всего, первым будет Си, знаю что для многих это странный выбор и вообще мало интересный ЯП. Именно поэтому, и хочу о нем рассказать, объяснить зачем его вообще нынче учить и почему он настолько любим программистами.
Выразительный JavaScript
Оригинал - https://eloquentjavascript.net/
Перевод - https://karmazzin.gitbook.io/eloquentjavascript_ru/
Один из самых примечательных вводов в ЯП. Отличная книга, много кода, много примеров, все хорошо объяснено, отдельно хочется отметить главы-проекты, чего только стоит проект - создание маленького языка программирования.
Важная деталь - темп повествования может быть слишком уж быстрым(что называется - 'галопом по Европам'). Это особенность многих вводов в ЯПы, в этом нет ничего страшного, но для совсем начинающих это может стать проблемой(обычно, говорят что подобные уч.материалы для продвинутых начинающих).
Если есть какое то понимание питона, и что важнее - программирования, особых проблем быть не должно. В любом случае, решается все просто - параллельным прохождением уч.материала где разжевывают все мелочи.
#книги #JS #перевод
Оригинал - https://eloquentjavascript.net/
Перевод - https://karmazzin.gitbook.io/eloquentjavascript_ru/
Один из самых примечательных вводов в ЯП. Отличная книга, много кода, много примеров, все хорошо объяснено, отдельно хочется отметить главы-проекты, чего только стоит проект - создание маленького языка программирования.
Важная деталь - темп повествования может быть слишком уж быстрым(что называется - 'галопом по Европам'). Это особенность многих вводов в ЯПы, в этом нет ничего страшного, но для совсем начинающих это может стать проблемой(обычно, говорят что подобные уч.материалы для продвинутых начинающих).
Если есть какое то понимание питона, и что важнее - программирования, особых проблем быть не должно. В любом случае, решается все просто - параллельным прохождением уч.материала где разжевывают все мелочи.
#книги #JS #перевод
karmazzin.gitbook.io
Introduction | Выразительный Javascript
Для того, чтобы собрать все посты в одном месте(например, чтобы на них было удобнее ссылаться), решил перепостить сюда несколько больших постов, не выходивших ранее на этом канале.
Python, основы | что читать/смотреть | как правильно использовать уч.материалы
Учебные материалы разделены на 3 разных подхода, деление это весьма условное, но с ним будет удобнее объяснить какие то моменты.
1. Автоматизация рутины
1.1. Автоматизация рутинных задач с помощью Python, Свейгарт - сильно отличается от других вводов в Python(да и не только, в python). Дело в подходе к практике: вы сразу учитесь делать полезные штуки(как говорит книга, автоматизировать свою рутину), а не стандартные абстрактные задачи, служащие исключительно для закрепления материала.
Кроме того, что это, рациональный способ изучения python(язык позволяет быстро сделать что то интересное/полезное/работающие, почему бы не использовать эту приятную, и довольно впечатляющую возможность). Это в принципе, правильный способ изучения программирования, именно программирования, а не просто синтаксиса языка.
1.2. https://stepik.org/course/575 - курс по автоматизации тестирования, нам интересны первые две его части(в рамках изучения питона). Там про selenium - инструмент, для автоматизации в браузере(это про - зайти на страницу, заполнить форму, нажать кнопочки, оставить комент и т.д. и т.п.). О нем рассказано в книге Свейграта, но нужна практика. В этом курсе ее много и подана она отлично.
1.3 Огромное кол-во туториалов по автоматизации. Книга Свейгарта породила целую волну материалов по "автоматизации". Если вбить на ютубе "python automation", то темы роликов будут от работы в Excel до знакомств в Tinder(десяток подобных видео, и алгоритм рекомендаций избавит от нехватки новых идей).
2. Более классический подход
Большинство программистов начинало именно так - хороший толстенький томик ввода в яп. В большинстве случаев, вам будут рекомендовать именно этот, можно сказать, проверенный годами подход.
2.1. Книги, которые мне кажутся наиболее удачными представителями 'классического' подхода:
- Лутц, Изучаем Python. Наверно самая рекомендуемая и популярная книга по питону. Может оказаться несколько перегруженной для начинающих(в этом нет ничего страшного), в таком случае стоит выбрать один из вариантов ниже.
3 замечательные книги, немного разные по стилю(можно выбрать что ближе), во всех 3 очень хорошая подача, именно для начинающих
-Изучаем Python. Программирование игр, визуализация данных, веб-приложения, Мэтиз Эрик
-Программирование на Python 3. Подробное руководство, Марк Саммерфилд
-Программируем на Python, Доусон Майкл
2.2. https://stepik.org/course/67 - тот самый курс, его рекомендуют в каждом посте про изучение python, а если его там не окажется, то о нем вспомнят в комментах. Очень популярный(430к учащихся), возможно самый популярный курс по python на русском.
Звучит несколько иррационально, но в программировании, популярность учебного материала - верный признак качества. Правда работает это тогда, когда популярность - следствие рекомендаций уже ставших программистами(именно подобные отзывы и стоит искать при подборе уч. материалов). Поэтому, на туториалы с миллионами просмотров, из разряда ‘‘выучимся кодить за 15 минут’’ - правило не распространяется.
3. Академический подход
Кроме ряда очевидных положительных сторон, есть одна особенность(тоже положительная), которая сильно влияет на процесс изучения - подразумевается предварительная подготовка студентов(даже если, курс читается с нуля). И тут речь не столько о предмете, сколько о способностях к усвоению материала. У вузов есть система отбора, у хороших - довольно жесткая, к тому же высшее образование, в принципе и не претендует быть чем то простым(например, если что то можно объяснить за 10 минут, то это не буду растягивать на 2 часа).
3.1.
https://youtu.be/KdZ4HF1SrFs Алгоритмы на Python 3
https://youtu.be/fgf57Sa5A-A Практика программирования на Python 3
Два замечательных курса(МФТИ) Тимофея Хирьянова. Одни из лучших лекции по Python, и скорее всего, лучшие на русском.
3.2. Если все хорошо с английским, довольно интересный вариант:
https://youtu.be/nykOeWgQcHM -1 лекция из MIT 6.
Учебные материалы разделены на 3 разных подхода, деление это весьма условное, но с ним будет удобнее объяснить какие то моменты.
1. Автоматизация рутины
1.1. Автоматизация рутинных задач с помощью Python, Свейгарт - сильно отличается от других вводов в Python(да и не только, в python). Дело в подходе к практике: вы сразу учитесь делать полезные штуки(как говорит книга, автоматизировать свою рутину), а не стандартные абстрактные задачи, служащие исключительно для закрепления материала.
Кроме того, что это, рациональный способ изучения python(язык позволяет быстро сделать что то интересное/полезное/работающие, почему бы не использовать эту приятную, и довольно впечатляющую возможность). Это в принципе, правильный способ изучения программирования, именно программирования, а не просто синтаксиса языка.
1.2. https://stepik.org/course/575 - курс по автоматизации тестирования, нам интересны первые две его части(в рамках изучения питона). Там про selenium - инструмент, для автоматизации в браузере(это про - зайти на страницу, заполнить форму, нажать кнопочки, оставить комент и т.д. и т.п.). О нем рассказано в книге Свейграта, но нужна практика. В этом курсе ее много и подана она отлично.
1.3 Огромное кол-во туториалов по автоматизации. Книга Свейгарта породила целую волну материалов по "автоматизации". Если вбить на ютубе "python automation", то темы роликов будут от работы в Excel до знакомств в Tinder(десяток подобных видео, и алгоритм рекомендаций избавит от нехватки новых идей).
2. Более классический подход
Большинство программистов начинало именно так - хороший толстенький томик ввода в яп. В большинстве случаев, вам будут рекомендовать именно этот, можно сказать, проверенный годами подход.
2.1. Книги, которые мне кажутся наиболее удачными представителями 'классического' подхода:
- Лутц, Изучаем Python. Наверно самая рекомендуемая и популярная книга по питону. Может оказаться несколько перегруженной для начинающих(в этом нет ничего страшного), в таком случае стоит выбрать один из вариантов ниже.
3 замечательные книги, немного разные по стилю(можно выбрать что ближе), во всех 3 очень хорошая подача, именно для начинающих
-Изучаем Python. Программирование игр, визуализация данных, веб-приложения, Мэтиз Эрик
-Программирование на Python 3. Подробное руководство, Марк Саммерфилд
-Программируем на Python, Доусон Майкл
2.2. https://stepik.org/course/67 - тот самый курс, его рекомендуют в каждом посте про изучение python, а если его там не окажется, то о нем вспомнят в комментах. Очень популярный(430к учащихся), возможно самый популярный курс по python на русском.
Звучит несколько иррационально, но в программировании, популярность учебного материала - верный признак качества. Правда работает это тогда, когда популярность - следствие рекомендаций уже ставших программистами(именно подобные отзывы и стоит искать при подборе уч. материалов). Поэтому, на туториалы с миллионами просмотров, из разряда ‘‘выучимся кодить за 15 минут’’ - правило не распространяется.
3. Академический подход
Кроме ряда очевидных положительных сторон, есть одна особенность(тоже положительная), которая сильно влияет на процесс изучения - подразумевается предварительная подготовка студентов(даже если, курс читается с нуля). И тут речь не столько о предмете, сколько о способностях к усвоению материала. У вузов есть система отбора, у хороших - довольно жесткая, к тому же высшее образование, в принципе и не претендует быть чем то простым(например, если что то можно объяснить за 10 минут, то это не буду растягивать на 2 часа).
3.1.
https://youtu.be/KdZ4HF1SrFs Алгоритмы на Python 3
https://youtu.be/fgf57Sa5A-A Практика программирования на Python 3
Два замечательных курса(МФТИ) Тимофея Хирьянова. Одни из лучших лекции по Python, и скорее всего, лучшие на русском.
3.2. Если все хорошо с английским, довольно интересный вариант:
https://youtu.be/nykOeWgQcHM -1 лекция из MIT 6.
0001 Introduction to Computer Science and Programming in Python) - знаменитый МТИ(Массачусетский технологический институт), ввод в сам язык и cs одновременно.
4. Что с этим всем делать?
4.1. Все вышеперечисленный варианты, решают задачу - изучить питон с 0(неважно, что где-то больше практики/теории, где-то учебный материал сильно выйдет за рамки основ или наоборот будет исключительно в них т.д. и т.п.). К тому же, они все - топовые представители своего формата. Поэтому, можно выбрать, буквально любой(какой больше по вкусу, да даже случайный), и это должно сработать.
Если выбрать только условного Лутца(а не начать с автоматизации, закрепив потом курсами или академ. подходом), ничего страшного не случится, хотя это и довольно сложный вариант. Но говорить, что подобное не сработает - неправильно(повторюсь, многие буквально так и начинали).
4.2. Но можно и оптимизировать процесс, предугадав какие то проблемы, и решив их до наступления. Вариант который кажется, наиболее удачным:
Начать с автоматизации, это наиболее мягкий вход для новичков. Также, он решает проблему - 'непонимания процесса программирования', когда, ученик вроде бы и изучил основы синтаксиса, но в само программирование все еще не может.
После Свейгарта, можно, как минимум, научится с помощью кода закрывать, как говорит книга, свою рутину. Мб не столь впечатляющий круг задач, но это уже настоящее программирование. К тому же, если будет принято решение дропнуть процесс(будем реалистами, это случается часто), то как минимум, останется очень полезный навык.
Вторым шагом, надо закрепить изученное и закрыть пробелы(а их будет достаточно). В качестве ориентира, с которым стоит сверятся, отмечая, что пока не ясно - Лутц(настольная книга на все время изучения). Основным учебным материалом любой вариант из п.2. - п.3. Важный момент, их можно комбинировать, к примеру смотреть цикл лекций, одновременно проходя курс на степике и читая книгу, ничего страшного в этом нет, путаницы это не создаст, более того это может упростить и улучшить процесс.
4.3. Существует куча других отличных книг/курсов, и далеко не 2 вуза выкладывают свои лекции, более того, можно выдумать, куда более сложный способ изучения, и он может быть вполне рабочим. Но нужно ли все это? Меня смущает обилие списков с кучей учебных материалов, которые забывают упомянуть одну важную штуку - для того, чтобы выучить основы программирования, и мочь что-то сделать используя определенный яп, всего пары названий из подобного списка будет достаточно.
5. После основ(не зависит от выбранного подхода)
Ряд учебных материалов, изучение которых, на раннем этапе, сильно поднимет уровень.
5.1. https://youtu.be/vpyWbpdk3Xs Уникальный пример, где автор показывает процесс мышления при написании программы. Будет позитивной практикой, время от времени пересматривать и отмечать что-то новое, трекать свой прогресс. Можно считать видео ориентиром, когда подобный способ понят, понят и сам процесс программирования.
5.2. https://stepik.org/course/4519 - курс в котором учат искать на StackOverflow, читать документацию и юзать библиотеки. Это тот самый подход, о котором не особо пишут в книжках, однако, это именно про такую - трушную практику. В каком то смысле, здесь учат делать, как в видео выше.
5.3. https://stepik.org/course/512 - курс по питону, для тех кто прошел основы. Стоит посмотреть хотя бы начало - там небольшой ввод в само устройство языка, стек вызовов, пространство имен, области видимости и прочее.
5.4. CS50
Этот Гарвардский курс ввода в computer science полезно посмотреть всем начинающим программистам.
P.S. Программирование - это не про колл-во прочитанных книг и пройденных курсов, оно про практику. Уч. материалы - это инструменты, они помогут прояснить какие то моменты, но ту самую практику за изучающего не сделают. Можно до бесконечности искать уч. материалы, проходить их, иметь кучу сертификатов, сделанных упражнений из конца главы и переписанного кода с туториалов, но так и не мочь программировать. По сути, просто отодвигать саму практику, это на самом деле, довольно бессмысленно.
4. Что с этим всем делать?
4.1. Все вышеперечисленный варианты, решают задачу - изучить питон с 0(неважно, что где-то больше практики/теории, где-то учебный материал сильно выйдет за рамки основ или наоборот будет исключительно в них т.д. и т.п.). К тому же, они все - топовые представители своего формата. Поэтому, можно выбрать, буквально любой(какой больше по вкусу, да даже случайный), и это должно сработать.
Если выбрать только условного Лутца(а не начать с автоматизации, закрепив потом курсами или академ. подходом), ничего страшного не случится, хотя это и довольно сложный вариант. Но говорить, что подобное не сработает - неправильно(повторюсь, многие буквально так и начинали).
4.2. Но можно и оптимизировать процесс, предугадав какие то проблемы, и решив их до наступления. Вариант который кажется, наиболее удачным:
Начать с автоматизации, это наиболее мягкий вход для новичков. Также, он решает проблему - 'непонимания процесса программирования', когда, ученик вроде бы и изучил основы синтаксиса, но в само программирование все еще не может.
После Свейгарта, можно, как минимум, научится с помощью кода закрывать, как говорит книга, свою рутину. Мб не столь впечатляющий круг задач, но это уже настоящее программирование. К тому же, если будет принято решение дропнуть процесс(будем реалистами, это случается часто), то как минимум, останется очень полезный навык.
Вторым шагом, надо закрепить изученное и закрыть пробелы(а их будет достаточно). В качестве ориентира, с которым стоит сверятся, отмечая, что пока не ясно - Лутц(настольная книга на все время изучения). Основным учебным материалом любой вариант из п.2. - п.3. Важный момент, их можно комбинировать, к примеру смотреть цикл лекций, одновременно проходя курс на степике и читая книгу, ничего страшного в этом нет, путаницы это не создаст, более того это может упростить и улучшить процесс.
4.3. Существует куча других отличных книг/курсов, и далеко не 2 вуза выкладывают свои лекции, более того, можно выдумать, куда более сложный способ изучения, и он может быть вполне рабочим. Но нужно ли все это? Меня смущает обилие списков с кучей учебных материалов, которые забывают упомянуть одну важную штуку - для того, чтобы выучить основы программирования, и мочь что-то сделать используя определенный яп, всего пары названий из подобного списка будет достаточно.
5. После основ(не зависит от выбранного подхода)
Ряд учебных материалов, изучение которых, на раннем этапе, сильно поднимет уровень.
5.1. https://youtu.be/vpyWbpdk3Xs Уникальный пример, где автор показывает процесс мышления при написании программы. Будет позитивной практикой, время от времени пересматривать и отмечать что-то новое, трекать свой прогресс. Можно считать видео ориентиром, когда подобный способ понят, понят и сам процесс программирования.
5.2. https://stepik.org/course/4519 - курс в котором учат искать на StackOverflow, читать документацию и юзать библиотеки. Это тот самый подход, о котором не особо пишут в книжках, однако, это именно про такую - трушную практику. В каком то смысле, здесь учат делать, как в видео выше.
5.3. https://stepik.org/course/512 - курс по питону, для тех кто прошел основы. Стоит посмотреть хотя бы начало - там небольшой ввод в само устройство языка, стек вызовов, пространство имен, области видимости и прочее.
5.4. CS50
Этот Гарвардский курс ввода в computer science полезно посмотреть всем начинающим программистам.
P.S. Программирование - это не про колл-во прочитанных книг и пройденных курсов, оно про практику. Уч. материалы - это инструменты, они помогут прояснить какие то моменты, но ту самую практику за изучающего не сделают. Можно до бесконечности искать уч. материалы, проходить их, иметь кучу сертификатов, сделанных упражнений из конца главы и переписанного кода с туториалов, но так и не мочь программировать. По сути, просто отодвигать саму практику, это на самом деле, довольно бессмысленно.
Нет никакого смысла, искать правильный способ начать учить язык(тратить на это кучу времени), нужно просто подобрать самый удобный инструмент, сосредоточится на практике, если после, знаний категорически не хватает(для реализации практики), нужно снова подобрать самый удобный инструмент и получить их.
В одном из постов, я приводил пример про комментарии в коде, в некоторых курсах, буквально, заставляют их писать под каждый хеловорлд. Это вызывает, разве что, раздражение. Можно в сотый раз попытаться объяснить их важность, однако, зачем они нужны, станет понятно и без этого. Очень естественным образом, на практике - ровно в тот момент, когда сам себе впервые задашь вопрос - "почему/как/что я здесь написал?"
В одном из постов, я приводил пример про комментарии в коде, в некоторых курсах, буквально, заставляют их писать под каждый хеловорлд. Это вызывает, разве что, раздражение. Можно в сотый раз попытаться объяснить их важность, однако, зачем они нужны, станет понятно и без этого. Очень естественным образом, на практике - ровно в тот момент, когда сам себе впервые задашь вопрос - "почему/как/что я здесь написал?"
Что значит программировать, и почему многие не понимают этот процесс
Приветствую, этот пост - небольшое дополнение к посту про уч.материалы. Точнее, к 2 пунктам из того поста, я особо не акцентировал на них внимание(пост был о другом), но именно они, могут стать решением, чуть ли не самой большой проблемы на этапе изучения программирования.
Проблема - непонимание самого процесса программирования. Мне кажется, она является чертой, определяющей получится ли в разработку или нет. Именно за ней, скрывается ситуация, когда учебный материал пройден, но изучивший абсолютно не умеет программировать, т.е. писать программы, решающие какие либо задачи, выходящие за пределы типовых описанных в уч. материале.
Утрированный пример - есть менеджер, абсолютно не понимающий в разработке, и при этом стоящий над разработчиком(так быть, разумеется, не должно). Как он видит процесс работы программиста?
Программист смотрит документацию(он что ее не выучил?), это еще что, он буквально гуглит какие то решения(точно ничего не знает) и смотрит чужой код(ну это уже за гранью наглости), да и к тому же в конце его всегда ждут ошибки(и почему его вообще взяли?) и вообще пол дня сидит, бороду чешет уставившись в экран.
Очевиден сюр подобных умозаключений. Понятное дело, никто так не думает, и менеджеров таких нет, но если уменьшить градус бреда, то так ли далек этот утрированный пример от отношения к разработке за пределами it?(напомню, новички именно за этими пределами)
Программирование, безусловно, техническая профессия(наверно даже, самая техническая), однако, описанное выше не особо ложится на представление о чем строгом и точном. К примеру, вы бы точно не хотели лететь на самолете который разрабатывают в расчете сопровождения после выпуска, будут допиливать и исправлять ошибки, после каждого полета.
Довольно интересно наблюдать, как сами разработчики пытаются подобрать понятную метафору для этого процесса, к примеру, нередки сравнения с творчеством(если хочется покопаться в теме метафор, то довольно интересно это описывает Макконнелл, во 2 главе “Совершенного кода”)
Получается интересный набор - странные свойства процесса, сравнения от которых вопросов становится лишь больше, но при этом невероятная эффективность и производительность(даже менеджер из утрированного примера должен это заметить).
При этом, со стороны программистов, эти свойства, эти описания и вообще сам процесс настолько очевидны/логичны/правильны, что об этом как будто бы, нет смысла даже говорить.
Немного про сам процесс
Важно понять, программирование - не выученный синтаксис языка, программирование - умение решать задачи. Не решение задачек из книжки, или курса, а умение решать свои задачи с помощью кода(немного отдает пафосом - но это, про то как думать в некой сложной системе, недостаточно просто ее выучить).
Программист как бы постоянно выстраивает структуру будущей программы, выставляет какие то чекпоинты и идет по ним, создавая и заставляя эти куски функционировать как ему надо, можно даже не знать, как в точности, сделать определенный кусок, но важно понимать как его сделать.
Сложность - в умении выстроить эту структуру, это и отличает хорошего программиста, он куда более элегантен в своих решениях, но сам метод одинаковый. С одинаковыми побочками - вне зависимости от уровня, разработчик так же вылавливает и исправляет ошибки, и так же может посмотреть какое то решение, но повторюсь, хороший - делает это куда более эффективно.
Именно такой подход и порождает “странные” свойства самого процесса, по идее, именно на нем и стоит сосредоточиться. Но вместо этого, учебные материалы зачастую берут другой вектор - вместо того, чтобы учить программированию, они зачастую учат просто синтаксису(думаю это очевидно, но на всякий случай напишу, я не говорю о том, что учить синтаксис не нужно, это просто нелепо).
Зачастую, самому процессу программирования уделяют(если вообще уделяют) очень мало внимания. Нопо сути, яп - лишь инструмент, можно сказать переменная, а сам процесс программирования - постоянная.
Приветствую, этот пост - небольшое дополнение к посту про уч.материалы. Точнее, к 2 пунктам из того поста, я особо не акцентировал на них внимание(пост был о другом), но именно они, могут стать решением, чуть ли не самой большой проблемы на этапе изучения программирования.
Проблема - непонимание самого процесса программирования. Мне кажется, она является чертой, определяющей получится ли в разработку или нет. Именно за ней, скрывается ситуация, когда учебный материал пройден, но изучивший абсолютно не умеет программировать, т.е. писать программы, решающие какие либо задачи, выходящие за пределы типовых описанных в уч. материале.
Утрированный пример - есть менеджер, абсолютно не понимающий в разработке, и при этом стоящий над разработчиком(так быть, разумеется, не должно). Как он видит процесс работы программиста?
Программист смотрит документацию(он что ее не выучил?), это еще что, он буквально гуглит какие то решения(точно ничего не знает) и смотрит чужой код(ну это уже за гранью наглости), да и к тому же в конце его всегда ждут ошибки(и почему его вообще взяли?) и вообще пол дня сидит, бороду чешет уставившись в экран.
Очевиден сюр подобных умозаключений. Понятное дело, никто так не думает, и менеджеров таких нет, но если уменьшить градус бреда, то так ли далек этот утрированный пример от отношения к разработке за пределами it?(напомню, новички именно за этими пределами)
Программирование, безусловно, техническая профессия(наверно даже, самая техническая), однако, описанное выше не особо ложится на представление о чем строгом и точном. К примеру, вы бы точно не хотели лететь на самолете который разрабатывают в расчете сопровождения после выпуска, будут допиливать и исправлять ошибки, после каждого полета.
Довольно интересно наблюдать, как сами разработчики пытаются подобрать понятную метафору для этого процесса, к примеру, нередки сравнения с творчеством(если хочется покопаться в теме метафор, то довольно интересно это описывает Макконнелл, во 2 главе “Совершенного кода”)
Получается интересный набор - странные свойства процесса, сравнения от которых вопросов становится лишь больше, но при этом невероятная эффективность и производительность(даже менеджер из утрированного примера должен это заметить).
При этом, со стороны программистов, эти свойства, эти описания и вообще сам процесс настолько очевидны/логичны/правильны, что об этом как будто бы, нет смысла даже говорить.
Немного про сам процесс
Важно понять, программирование - не выученный синтаксис языка, программирование - умение решать задачи. Не решение задачек из книжки, или курса, а умение решать свои задачи с помощью кода(немного отдает пафосом - но это, про то как думать в некой сложной системе, недостаточно просто ее выучить).
Программист как бы постоянно выстраивает структуру будущей программы, выставляет какие то чекпоинты и идет по ним, создавая и заставляя эти куски функционировать как ему надо, можно даже не знать, как в точности, сделать определенный кусок, но важно понимать как его сделать.
Сложность - в умении выстроить эту структуру, это и отличает хорошего программиста, он куда более элегантен в своих решениях, но сам метод одинаковый. С одинаковыми побочками - вне зависимости от уровня, разработчик так же вылавливает и исправляет ошибки, и так же может посмотреть какое то решение, но повторюсь, хороший - делает это куда более эффективно.
Именно такой подход и порождает “странные” свойства самого процесса, по идее, именно на нем и стоит сосредоточиться. Но вместо этого, учебные материалы зачастую берут другой вектор - вместо того, чтобы учить программированию, они зачастую учат просто синтаксису(думаю это очевидно, но на всякий случай напишу, я не говорю о том, что учить синтаксис не нужно, это просто нелепо).
Зачастую, самому процессу программирования уделяют(если вообще уделяют) очень мало внимания. Нопо сути, яп - лишь инструмент, можно сказать переменная, а сам процесс программирования - постоянная.
Именно поэтому, многие разрабы скажут, что абсолютно неважно с какого языка начнешь учить, и могут даже предложить достаточно экзотический вариант(сразу на ум приходит легендарная книга из 80-ых, написанная в MIT, где яп - lisp), главное - понять сам процесс.
Как же понять этот самый процесс?
Вернемся к тем 2-ум пунктам из поста про уч.материалы, но перед этим, пару слов о питоне и почему вообще, это один из лучших вариантов первого япа.
Он простой, при этом позволяет очень быстро писать сложные программы или их рабочие прототипы, т.е. как можно быстрее прийти к тому самому процессу программирования. Также можно ограничить круг задач, тем самым еще ускорив этот переход(в посте про уч. материалы - все что связано с автоматизацией рутины(п.1.)).
1. Чтобы понять процесс программирования, для начала надо его увидеть.(увидеть процесс программирования и досконально понять код - разные вещи, нам нужно именно само мышление).
https://www.youtube.com/watch?v=vpyWbpdk3Xs серия видео, где показан именно тот самый процесс мышления при написании программы.
Будет позитивной практикой, время от времени пересматривать и отмечать что-то новое, трекать свой прогресс. Можно считать видео ориентиром, когда подобный способ понят, понят и сам процесс программирования.
2. https://stepik.org/course/4519 курс в котором учат гуглить, искать на StackOverflow, читать документацию, и юзать библиотеки. Это тот самый подход, про такую - трушную практику. В каком то смысле, здесь учат делать, как в видео выше.
Забавная штука насчет этого курса, пару раз видел реакцию, из разряда - “какой ужас, в нем ищут ответы на StackOverflow”. Это идеально иллюстрирует то самое “непонимание процесса” из начала поста.
Программирование всегда про рациональный подход
Есть еще один важный момент, касаемый странных свойств процесса - программирование всегда про рациональность.
Лучше раньше об этом узнать(и принять), отпадет куча вопросов и сохранится куча нервов. Рациональность - в буквальном смысле слова, всегда выбираем более выгодный вариант.
Многих новичков смущает, что в тех же ЯПах есть проблемы/неудобства, о которых все знают(и обсуждают), но, кажется, ничего по этому поводу не делают. Во-первых - это не так, ЯПы постоянно прогрессируют/исправляются, иногда плавно, иногда весьма радикально(когда Python разошелся на 2.x и 3.x версии). Во-вторых, не всегда исправление - рациональный вариант, к примеру, если оно коснется чего то глубокого, после него придется затратить кучу ресурсов(переписать огромное количество кода), учитывая 'наслоение' технологий друг на друга, это может, стать невыполнимой задачей.
Если в программировании, на первый взгляд, что-то кажется не рациональным, стоит взглянуть на всю систему в целом, с большой вероятностью, из виду упущен какой то важный момент.
К примеру, существование какой то распространенной практики всегда рационально, иначе она бы не распространилась. Возьмем те же, стандарты оформления кода(стиля), крайне удобная штука, но видно это будет, когда начнется работа с большим количеством кода(особенно чужого).
Как же понять этот самый процесс?
Вернемся к тем 2-ум пунктам из поста про уч.материалы, но перед этим, пару слов о питоне и почему вообще, это один из лучших вариантов первого япа.
Он простой, при этом позволяет очень быстро писать сложные программы или их рабочие прототипы, т.е. как можно быстрее прийти к тому самому процессу программирования. Также можно ограничить круг задач, тем самым еще ускорив этот переход(в посте про уч. материалы - все что связано с автоматизацией рутины(п.1.)).
1. Чтобы понять процесс программирования, для начала надо его увидеть.(увидеть процесс программирования и досконально понять код - разные вещи, нам нужно именно само мышление).
https://www.youtube.com/watch?v=vpyWbpdk3Xs серия видео, где показан именно тот самый процесс мышления при написании программы.
Будет позитивной практикой, время от времени пересматривать и отмечать что-то новое, трекать свой прогресс. Можно считать видео ориентиром, когда подобный способ понят, понят и сам процесс программирования.
2. https://stepik.org/course/4519 курс в котором учат гуглить, искать на StackOverflow, читать документацию, и юзать библиотеки. Это тот самый подход, про такую - трушную практику. В каком то смысле, здесь учат делать, как в видео выше.
Забавная штука насчет этого курса, пару раз видел реакцию, из разряда - “какой ужас, в нем ищут ответы на StackOverflow”. Это идеально иллюстрирует то самое “непонимание процесса” из начала поста.
Программирование всегда про рациональный подход
Есть еще один важный момент, касаемый странных свойств процесса - программирование всегда про рациональность.
Лучше раньше об этом узнать(и принять), отпадет куча вопросов и сохранится куча нервов. Рациональность - в буквальном смысле слова, всегда выбираем более выгодный вариант.
Многих новичков смущает, что в тех же ЯПах есть проблемы/неудобства, о которых все знают(и обсуждают), но, кажется, ничего по этому поводу не делают. Во-первых - это не так, ЯПы постоянно прогрессируют/исправляются, иногда плавно, иногда весьма радикально(когда Python разошелся на 2.x и 3.x версии). Во-вторых, не всегда исправление - рациональный вариант, к примеру, если оно коснется чего то глубокого, после него придется затратить кучу ресурсов(переписать огромное количество кода), учитывая 'наслоение' технологий друг на друга, это может, стать невыполнимой задачей.
Если в программировании, на первый взгляд, что-то кажется не рациональным, стоит взглянуть на всю систему в целом, с большой вероятностью, из виду упущен какой то важный момент.
К примеру, существование какой то распространенной практики всегда рационально, иначе она бы не распространилась. Возьмем те же, стандарты оформления кода(стиля), крайне удобная штука, но видно это будет, когда начнется работа с большим количеством кода(особенно чужого).
Этот пост - содержание/меню канала. Мне не очень нравится, как выглядят такие посты в закрепе канала, поэтому раз в месяц будут ссылаться на него(примерно с тем же интервалом он будет пополняться).
upd: 08.05.2021
у основных постов появилась видеоверсия на youtube
заново запущена серия - ‘план изучения программирования’
добавлены новые посты
Основы:
Python, основы | что читать/смотреть | как правильно использовать уч.материалы - https://t.me/tobeprog/29
upd. Видеоверсия - https://youtu.be/cqyluq__UOU
Что значит программировать, почему многие не понимают этот процесс(и как эту проблему решить) - https://t.me/tobeprog/32
upd. Видеоверсия - https://youtu.be/jXyFCLnN06c
upd. Видео Самый ПОЛЕЗНЫЙ Github репозиторий| создание с нуля СЛОЖНОЙ технологии https://youtu.be/000-NvdYPMg
upd. Где найти хороший roadmap/план изучения/список учебных материалов - https://t.me/tobeprog/51
Посты про проекты(идеи для проектов):
Как делать интересные проекты из скучных - https://t.me/tobeprog/13
Про цепи Маркова (и немного про то, как делать учебные проекты) - https://t.me/tobeprog/22
upd. Roguelike игры - https://t.me/tobeprog/38
Серия постов, с планом по изучению программирования
upd. (Видеоверсия, поскольку серия запущена заново и произошел сдвиг нумерации(сразу несколько частей в одном видео), то это теперь “часть 1”)
План изучения программирования | Python | Часть 1 - https://youtu.be/J8MLsG1_bu8
Прошлая версия:
Первая часть - ‘плана изучения программирования’. - https://t.me/tobeprog/16
Вторая часть - ‘плана изучения программирования’. - https://t.me/tobeprog/18
Небольшие посты(к примеру, в которых рассказывается об интересных уч.материалах), добавлять не буду, для них есть хэштеги.
upd: 08.05.2021
у основных постов появилась видеоверсия на youtube
заново запущена серия - ‘план изучения программирования’
добавлены новые посты
Основы:
Python, основы | что читать/смотреть | как правильно использовать уч.материалы - https://t.me/tobeprog/29
upd. Видеоверсия - https://youtu.be/cqyluq__UOU
Что значит программировать, почему многие не понимают этот процесс(и как эту проблему решить) - https://t.me/tobeprog/32
upd. Видеоверсия - https://youtu.be/jXyFCLnN06c
upd. Видео Самый ПОЛЕЗНЫЙ Github репозиторий| создание с нуля СЛОЖНОЙ технологии https://youtu.be/000-NvdYPMg
upd. Где найти хороший roadmap/план изучения/список учебных материалов - https://t.me/tobeprog/51
Посты про проекты(идеи для проектов):
Как делать интересные проекты из скучных - https://t.me/tobeprog/13
Про цепи Маркова (и немного про то, как делать учебные проекты) - https://t.me/tobeprog/22
upd. Roguelike игры - https://t.me/tobeprog/38
Серия постов, с планом по изучению программирования
upd. (Видеоверсия, поскольку серия запущена заново и произошел сдвиг нумерации(сразу несколько частей в одном видео), то это теперь “часть 1”)
План изучения программирования | Python | Часть 1 - https://youtu.be/J8MLsG1_bu8
Прошлая версия:
Первая часть - ‘плана изучения программирования’. - https://t.me/tobeprog/16
Вторая часть - ‘плана изучения программирования’. - https://t.me/tobeprog/18
Небольшие посты(к примеру, в которых рассказывается об интересных уч.материалах), добавлять не буду, для них есть хэштеги.
Готовлю много постов, первые будут уже завтра: библиотеки, идеи для проектов и даже gamedev немного затронем.
Уже некоторое время думал над тем, чтобы попробовать формат видео, кроме того, что это - банально удобно(не читать, а врубить видео на фоне и заниматься своими делами), в будущем я думал попробовать формат стримов(к примеру, я как то писал, что code review в прямом эфире - страшно недооцененный и очень полезный контент).
Сегодня выдалось свободное время - решил запилить, к сожалению, как я не изощрялся, записать хоть сколько нибудь нормальный звук без хорошего микрофона не вышло. Пока микрофон едет ко мне, воспользовался услугами диктора. Само видео - озвучка последнего большого поста.
Это все в рамках такого, скорее эксперимента. Поэтому не нужно к этому относиться серьезно, но все же критика очень приветствуется. Я крайне далек от всей этой ютюбной истории, лепил, что называется по лекалам(к примеру, поставил игру на бэк видео, это странно, но вроде бы все так делают и т.п.).
Небольшая просьба - оцените видео, если не нравится, смело ставьте диз, я точно не обижусь, это наоборот, даст мне понимание нужно ли продолжать всю эту историю с видео.
https://youtu.be/jXyFCLnN06c
Уже некоторое время думал над тем, чтобы попробовать формат видео, кроме того, что это - банально удобно(не читать, а врубить видео на фоне и заниматься своими делами), в будущем я думал попробовать формат стримов(к примеру, я как то писал, что code review в прямом эфире - страшно недооцененный и очень полезный контент).
Сегодня выдалось свободное время - решил запилить, к сожалению, как я не изощрялся, записать хоть сколько нибудь нормальный звук без хорошего микрофона не вышло. Пока микрофон едет ко мне, воспользовался услугами диктора. Само видео - озвучка последнего большого поста.
Это все в рамках такого, скорее эксперимента. Поэтому не нужно к этому относиться серьезно, но все же критика очень приветствуется. Я крайне далек от всей этой ютюбной истории, лепил, что называется по лекалам(к примеру, поставил игру на бэк видео, это странно, но вроде бы все так делают и т.п.).
Небольшая просьба - оцените видео, если не нравится, смело ставьте диз, я точно не обижусь, это наоборот, даст мне понимание нужно ли продолжать всю эту историю с видео.
https://youtu.be/jXyFCLnN06c
YouTube
Что значит ПРОГРАММИРОВАТЬ, почему многие не понимают этот процесс
Канал в телеге - https://t.me/tobeprog
Ссылки из видео:
https://youtu.be/vpyWbpdk3Xs - “Программирование на Python” с канала “Стас Волик”
https://stepik.org/course/4519 - курс со степика "Python для решения практических задач"
Книги:
"Совершенный код"…
Ссылки из видео:
https://youtu.be/vpyWbpdk3Xs - “Программирование на Python” с канала “Стас Волик”
https://stepik.org/course/4519 - курс со степика "Python для решения практических задач"
Книги:
"Совершенный код"…
ursina engine
Простой опенсорсный игровой движок, который может в 3d и к тому же, работает на питоне.
Такие штуки, лучше сразу смотреть в действии. https://youtu.be/DHSRaVeQxIk [англ.]- достаточно подробный туториал, отдельный респект - прежде чем переходить к написанию “клона minecraft”, немного объясняются основы самого движка(для меня загадка, почему подобное не стало правилом хорошего тона во всех туториалах).
Объективно - впечатляет, механика строительства уложенная в 30 строк кода. Эти 30 строк - один из примеров, выложенных самим автором движка, в видео выше его как бы разбирают и дописывают. Другие примеры есть на github, их разбор, а также некоторые технические моменты о движке, можно посмотреть в видео - https://youtu.be/aCpBzdciU0o [англ.]
Вся документация, а также несколько туториалов есть на офф. сайте - https://www.ursinaengine.org/documentation.html
У движка есть канал на ютуб, на нем всего два видео, трейлер движка и показ внутриигрового редактора уровней - https://youtu.be/Zn9aCWyoG-I
Пока, движок не очень известен(как мне кажется, в этом случае, популярность - вопрос времени), и уч. материалов по нему очень мало. В любом случае, он развивается, к тому же проект достаточно интересный, время от времени буду чекать куда все движется.
#gamedev #python
Простой опенсорсный игровой движок, который может в 3d и к тому же, работает на питоне.
Такие штуки, лучше сразу смотреть в действии. https://youtu.be/DHSRaVeQxIk [англ.]- достаточно подробный туториал, отдельный респект - прежде чем переходить к написанию “клона minecraft”, немного объясняются основы самого движка(для меня загадка, почему подобное не стало правилом хорошего тона во всех туториалах).
Объективно - впечатляет, механика строительства уложенная в 30 строк кода. Эти 30 строк - один из примеров, выложенных самим автором движка, в видео выше его как бы разбирают и дописывают. Другие примеры есть на github, их разбор, а также некоторые технические моменты о движке, можно посмотреть в видео - https://youtu.be/aCpBzdciU0o [англ.]
Вся документация, а также несколько туториалов есть на офф. сайте - https://www.ursinaengine.org/documentation.html
У движка есть канал на ютуб, на нем всего два видео, трейлер движка и показ внутриигрового редактора уровней - https://youtu.be/Zn9aCWyoG-I
Пока, движок не очень известен(как мне кажется, в этом случае, популярность - вопрос времени), и уч. материалов по нему очень мало. В любом случае, он развивается, к тому же проект достаточно интересный, время от времени буду чекать куда все движется.
#gamedev #python
YouTube
Creating Minecraft in Python [with the Ursina Engine]
A basic tutorial on how to create Minecraft in Python by using the Ursina Game Engine. This also includes a general introduction to the engine itself.
Timestamps:
0:00 - Intro
1:24 - The basics of Ursina
15:49 - Creating Minecraft style blocks
35:25 - Creating…
Timestamps:
0:00 - Intro
1:24 - The basics of Ursina
15:49 - Creating Minecraft style blocks
35:25 - Creating…