26 Июля 2020

Разнообразие

Разнообразие Машина, Фото на тапок, Автомобильные номера

И номера как на подбор

Python | Для изучающих программирование. Часть 2 , лучший симбиоз учебных материалов, как перейти к большим проектам

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

Мой канал в телеге - https://t.me/tobeprog , там о самих методах обучения и обзоры на материалы.


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


Важно отметить, это не учебный план, хотя здесь и будут указаны этапы. Само сочетание, учебных материалов, может показаться странным. Хотя они, очень популярны, по отдельности, но я мало где видел, именно, их сочетание. Мы начинаем с простых/бытовых прикладных задач, проходим через cs и заканчиваем вводом в архитектуру.


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


1. Автоматизация рутинных задач с помощью Python, Свейгарт | понимание ЯП как инструмента


В посте Python | Для изучающих программирование. Часть 1 я уже объяснял, почему это идеальное начало. Это все еще так, но здесь мы рассмотрим другую сторону.


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


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


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


2. CS50 | Пишем меньше, смотрим глубже.


оригинал - https://www.youtube.com/user/cs50tv

перевод - https://www.youtube.com/watch?v=SW_UCzFO7X0


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


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


Почему же, не стартануть с CS50 сразу? Питон через автоматизацию даст нам кучу проектов, набьет руку, и приучит к коду. Новые техники ложатся на отработанную основу. Ко всему прочему, сам курс пойдет куда легче, основы уже есть из питона, т.е. меньше распыления и сосредоточенность на конкретных проблемах.


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


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


К примеру, статья Питера Норвига, где он пишет интерпретатор языка Lisp на python:

Оригинал - http://norvig.com/lispy.html

Перевод - https://habr.com/ru/post/115206/


Я уже писал о репозитории с кучей подобных туториалов - Для изучающих программирование. Часть 0. Где найти идеи и реализации сложных проектов . Единственный минус, все на английском, переводы придется искать самостоятельно(название самого материала + habr), некоторые материалы не переведены.


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


3. Петцольд | Действительно сложные системы


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


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


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


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


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


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

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

Немного родного Крыма

Немного родного Крыма Крым, Природа, Фотография, Море, Лес, Ночь, Длиннопост
Немного родного Крыма Крым, Природа, Фотография, Море, Лес, Ночь, Длиннопост
Немного родного Крыма Крым, Природа, Фотография, Море, Лес, Ночь, Длиннопост
Немного родного Крыма Крым, Природа, Фотография, Море, Лес, Ночь, Длиннопост
Немного родного Крыма Крым, Природа, Фотография, Море, Лес, Ночь, Длиннопост
Немного родного Крыма Крым, Природа, Фотография, Море, Лес, Ночь, Длиннопост
Немного родного Крыма Крым, Природа, Фотография, Море, Лес, Ночь, Длиннопост
Немного родного Крыма Крым, Природа, Фотография, Море, Лес, Ночь, Длиннопост
Показать полностью 8

Люди, собака это не игрушка!

Листал Авито и наткнулся на очередное объявление о выбросе животного, в связи с появлением ребёнка. Когда уже люди усвоят то, что покупка животного это взвешенное решение. Человек заводит себе друга на 12-15 лет, а в редких случаях на все 20. Как же бесят такие индивиды. Накупят карманных собачек ради красивых фоток, а потом выбрасывают при появлении новой игрушки - ребёнка.

Люди, собака это не игрушка! Собака, Декоративные собаки, Предательство, Продажа, Домашние животные, Шпиц, Авито, Скриншот
Показать полностью 1

Новый уровень борьбы

В подслушано моего города выложили данные фото.

Новый уровень борьбы с закладками.

Новый уровень борьбы Закладки, Подслушано, Наркотики, Длиннопост
Новый уровень борьбы Закладки, Подслушано, Наркотики, Длиннопост
Показать полностью 2

Котенок ищет семью

Я, котенок, родился 3 месяца назад в подвале. Я, полосатый с белыми лапками. У меня есть братья и сестры, я самый мелкий, мы немножко дикие. Все было хорошо, но у меня заболели глаза (вирусный герпес), воспалились, и я ничего не вижу. А значит, я скоро умру от голода. Полтора месяца назад заболел мой брат, он тихо лежал под кустом и умирал от голода, а потом исчез. Его забрали в семью, вылечили. Неужели мне не найдется семья? Я так не хочу умирать. Живу в СПб, метро Черная речка, подвал. Точный адрес, любящим хозяевам.

Сосна

Сосна Сосна, Эволюция, Безысходность, Длиннопост

Эта хвойная херня жила ещё миллионы лет до нас. И проживёт ещё миллионы после нас.

И насрать ей на глобальное потепление. Также ей насрать на выдвижение Путина или Трампа.

Как-то на моём любимом болоте прокладывали теплотрассу. Спилили сосны.

Афигеть, как я удивился. Сосны в диаметре сантиметров 30, а по годовым кольцам им больше 130 лет.

Мучались, бедняги, но росли.

Я тоже у себя на участке посадил сосну. Ща пойду, сфотографирую.

Сосна Сосна, Эволюция, Безысходность, Длиннопост

И осенью с удивлением обнаружил - под ней подзелёнки выросли.

Сосна Сосна, Эволюция, Безысходность, Длиннопост

Я не грибник, я споры не рассеивал под сосной.

Я к тому, что за миллионы лет эволюции.....

Сосна сама решает, как ей лучше.

Не я.

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

Сможете найти на картинке цифру среди букв?

Справились? Тогда попробуйте пройти нашу новую игру на внимательность. Приз — награда в профиль на Пикабу: https://pikabu.ru/link/-oD8sjtmAi

Сможете найти на картинке цифру среди букв? Игры, Награда

Если бы у меня был личный самолет

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

Отличная работа, все прочитано! Выберите