Вползаем в айти. Часть 3. Основы работы с терминалом + первая программа
Это продолжение серии уроков, прошлый был тут:
Еще есть видео версия вот тут:
Как я и обещала, я буду вечно отвлекаться на соседние темы. Сегодня говорим про терминал. Во-первых, научиться им пользоваться даже на начальном уровне полезно для общего понимания компьютера. Во-вторых, многие думают, что пользоваться терминалом сложно, и освоить его способны только настоящие хакеры.
Мы все привыкли к красивым окошкам, мы любим с заботой разложенные кнопочки и плашки. Но они существовали не всегда. Когда Гейтс и Джобс были еще молоды, компьютеры не были столь популярны — терминал был основной формой взаимодействия. Компьютер был нужен инженерам и ученым, и, кстати говоря, терминал целиком отвечал их требованиям.
Создание красивых окошек — это хороший маркетинговый ход, позволивший дойти компьютерам в дома обычных людей. Это здорово и удобно.
Это удобно, когда вам нужно почитать статьи в интернете, полистать фотки или поиграть в игры. Но, если вам, например, нужно сделать одно и то же действие сотню раз (обрезать фотки, стереть лишние пробелы в тексте и т.п.), и вы, вздохнув, сели тратить свое время и вручную заниматься этой нудной работой — ровно в этот момент где-то в мире точно расплакался один программист. Потому что из терминала это все — при должном умении — делается в несколько нажатий клавиш.
Хорошая новость состоит в том, что освоить терминал не так и сложно. В целом, спустя какое-то время многие соглашаются, что общение с терминалом зачастую получается более человечным и интуитивным, чем общение с привычными красивыми графическими приложениями.
Не очень хорошая новость состоит в том, что научиться пользоваться терминалом, не пользуясь терминалом, не получится. Соррян.
Ладно, пора заканчивать с пустой болтовней. Сегодня мы научимся всему необходимому, чтобы писать и запускать программы.
Терминал работает в интерактивном режиме. Сложно.
Для начала давайте разберемся, что такое интерактивный режим. В прошлый раз мы постоянно что-то писали питону, он нам тут же отвечал и снова ждал чего-нибудь новенького. Если не усложнять, это как раз оно и есть. Постоянный диалог в формате вопрос-ответ. Терминал работает абсолютно по тому же принципу.
Когда мы открываем терминал, он сразу начинает ждать от нас указаний. Об этом нам говорит уголок на конце. Мы можем сказать ему любую чушь, он, наверное, наругается на нас в ответ, но потом все равно покажет тот же самый значок на конце, как бы говоря — ну ладно, спроси чего-нибудь еще. То есть, уголок говорит нам — печатай.
Кстати, сколько людей читает мои посты, при этом сидит на маке или линуксе? Особенно на линуксе. Вам особый привет, расскажите, зачем вам это нужно, пожалуйста 🙂
В общем, если такие найдутся, я запилю отдельный пост. Дело в том, что команды терминала сильно отличаются для винды и не-винды. Сегодня всё будет про терминал Windows, чтобы большинству было проще. Если что, в видео версии есть скриншоты с примерами для других систем.
Стоит разобраться в главной идее терминала. На самом деле, он не просто ждет от нас указаний. Он еще выполняет роль проводника. В каждый момент времени мы по сути находимся в какой-то папке в нашей операционной системе.
На скрине выше видно, что я нахожусь на диске С в папках Users\olyat.
Первая полезная команда говорит — скажи, что тут лежит. Пишется dir, расшифровывается как directory. Она покажет нам список всех файлов и папок, которые у нас тут есть.
Помимо этого, она показывает нам нечто странное. Точки. Одну и две. Если мы создадим новую папку, она будет абсолютно пустой, в ней мы все равно увидим эти самые точки. Волшебства тут нет. Одной точкой папка называет саму себя. То есть, это такой псевдоним. Зачем это надо? К примеру, какая-то программа просит нас дать полный путь от корня до нашей папки. Нам лень его печатать, но мы можем отдать точку, точка сама подменится на полный путь до текущего места. Удобно.
Две точки — тоже очень полезная штука. Это псевдоним для папки, которая находится над нами. Вообще, вся эта структура с файлами и папками напоминает дерево.
Для удобной работы нам нужно научиться попадать в нужную папку. Какая папка будет нужной? Та, которую вы создадите для всех своих экспериментов.
Чтобы попасть в нашу директорию, для начала нужно написать имя диска, двоеточие и клавишу Enter.
Нам очень сильно упростит задачу клавиша tab. По каждому щелчку она будет предлагать варианты из тех файлов и папок, что там есть. Как итог, печатать почти не нужно. Папки разделяются между собой обратным слешом. Когда мы попадем в нужное место, стоит еще разок прочитать, где же мы находимся.
Если у вас что-то не выходит — вы можете попробовать пошагово переходить из папки в папку, каждый раз говоря cd и имя, и так постепенно вы придете в нужное место.
У наших волшебных точек есть еще одно удобное применение. Вернем нашу Супер крутую картинку назад. Я даже сделала гифку для наглядности 🙂
То есть, две точки поднимают нас на 1 уровень выше в папку “Самое важное”, а затем мы говорим, что хотим спуститься в папку к котикам. Обязательно потренируйтесь с этим! Попробуйте побродить по своему компьютеру. Важно понимать, что в операционной системе Windows много дисков. Каждый диск — это свое отдельное дерево, и выходит, что Windows — это целый лес. Для того, чтобы найти нужное место, надо сперва выбрать корень нужного дерева, то есть имя диска, а уже затем передвигаться к желанному месту.
Теперь, когда мы понимаем, где мы находимся, что есть в нашей папке, умеем передвигаться по всем директориям — настало время окончательно подготовиться к следующему занятию. Давайте создадим папку — пока что по-простому, привычным всем способом. (Но если вы очень прониклись идеей освоить терминал — используйте mkdir и имя папки)
Теперь откроем блокнот, который мы поставили в прошлый раз, и, как я уже советовала, сразу сохраним файл.
Напоминаю — расширение .py. Имя можно сделать любым. в рамках адекватности.
Есть такая команда в питоне — print. В интерактивном режиме она была не нужна. Помните — все, что мы писали, говорилось нам в ответ. Сейчас мы попробуем написать свою первую программу. Она будет храниться в файле, и вы сможете запустить ее в любой момент. Если в этом файле просто написать число или текст, то внешне ничего не произойдет. А вот команда print напечатает нам все, что мы ей скажем, в наш терминал.
После слова print необходимо ставить круглые скобки, а наша фраза обязательно должна быть в кавычках. Вы ведь помните прошлый урок?
Не забываем снова сохранить наш файл напоследок.
Давайте наконец-то подведем итоги занятия.
Откроем в терминале нужную папку.
Ураа! Оно работает! Поздравляю с первой полноценной программой на питоне.
В прошлый раз мы говорили просто python, и запускался интерактивный режим, который до бесконечности ждал от нас новых указаний. Сейчас помимо слова python мы также передали имя программы. Программа выполнилась, и питон целиком завершил свою работу.
В следующих постах я буду делать весь уклон на суть кода, а про терминал говорить толком не буду. Хотя и буду его использовать для запуска. Если у вас возникнут проблемы с терминалом — пожалуйста, перечитайте пост. Если проблема не решится — обязательно пишите об этом в комментариях.
Найдены дубликаты
И что тебя интересует в bash?
Терминал в быту вы уже давно не найдёте. То, что вами подается как терминал, называется » командная строка эмулятора MS-DOS» и к терминалам не имеет абсолютно никакого отношения.
даже в линуксе эта конструкция называется «эмулятором терминала».
Пардон, уже 3 часть, но сиськи будут?
зачем нам cmd? Лучше уже сразу bash
А вам вопросы можно задавать — поможете?
Пробую поставить PyQT5 под винду (Пишу на питоне под *nixом, там проблем с установкой пакетов нет.
Так вот — проблема с виндой (К сожалению приходится использовать и её).
При import PyQt5 предсказуемая ошибка: no module name
Скачиваю PyQT, конфигурю под винду:
python configure.py -p win32-g++
А теперь вопрос, чем делать make и make-insall
Пробовал miniGW — мэйк собирается, но при инстале выпадают ошибки по файлам.
Пробовал make с WinAVR — ситуация та же.
VS с командной строкой нет.
Подскажите, чем вы собираете исходники для питоновких пакетов под винду?
Можно задавать! Я буду рада помочь, если я в силах.
Я тоже часто мучаюсь с Windows, и для основной работы предпочитаю пользоваться другими ОС. Соответственно, опыта Python + Windows у меня почти нет, я его начала получать только недавно, когда начала писать статьи и снимать видео.
Судя по описанию, у вас проблема не с тем, чем делать make (я собираю minGW, как и вы).
Если ваша цель — поставить данную библиотеку, то советую вам снести все что, что криво поставилось, а затем в терминале написать
Я, к великому сожалению, не могу дать гарантий, сработает ли у вас. Каждая винда уникальна в своих проявлениях. Но у меня сработало. Пруф в фото 🙂
Вообще, всевозможные менеджеры типа pip или conda очень удобны. Рекомендую.)
Вот я тормоз-то, ведь решение для винды на поверхности.
Спасибо (Единственно, пришлось дописывать ключи на проксю, но это уже мелочи).
А можно обнаглеть в край и поинтересоваться:
Нет ли у вас в pdf «Python 3 и PyQt 5. Разработка приложений» Прохореноко?
Именно PyQt5, т.е. предыдущая книга в pdf довольно распространена.
p.s. Понимаю, что вопрос не очень корректен
На здоровье! Рада, если помогла.
Книжки у меня, к сожалению, нет.
Одно самолюбование и бесцельный пиздёшь с левыми картинками и типа «юмором». Вся суть укладывается в 1 маленький абзац с правильным названием: «какие команды в консоле я знаю». Про то, что является терминалом, мэнфрэймы — ни слова. Просто тупой высер. Нечего сказать — показывай сиськи, нет сисек — иди на хуй. Расписанная поебень гуглится за 30 секунд. Вывод — адрессаты данного высера олигофрены. Автор — их предводитель.
Самоучитель по командам DOS в 2017 году. Ностальжи .
ващет там Hello world! на пайтоне.
Вы знаете, я обычно очень лоялен ко всем, кто делает какие-либо обучающие уроки, ибо считаю, что образование и развитие — хорошо! Но в интернете есть очень много уроков, которые выполнены на гораздо более высоком уровне. Мало самому разбираться в данной сфере, нужно еще уметь подать материал, а Вы к сожалению делать этого не умеете. Ни письменно, ни на видео. Только не обижайтесь, возможно для Вас это зона роста.
Более того, выучить синтаксис != быть программистом. Вам уже писали, что лучше начинать с математики, алгоритмов и более базисных тем. И я солидарен с этими людьми. Вы говорили, что учились в ШАД, а значит у Вас неплохая математическая подготовка. Воспользуйтесь этим.
Особенно Макса рекомендую, работал с ним, шикарный специалист. Но там порог входа очень высокий, а математических курсов опять же дофига.
а подскажите хорошие математические курсы)
Короче, как я понял, кто юзает GUI тот ламер и лошара.
-Нет, ты не можешь просто умножать строки! -Python goes brrrrrrrrrr!
6. Повторить
Как быстро стать python разработчиком
Как выучить python || План обучения с нуля
Всем привет. Решил поделиться планом обучения python с нуля и до приемлимого уровня.
Python в данный момент является одним из самых популярных и востребованных языков программирования в мире.
рейтинг языков программирования: https://pr-cy.ru/news/p/7809-reyting-yazykov-programmirovani.
А некоторые области, например обучение нейронных сетей, полностью завязаны на Python . Плюс многие считают его лучшим для старта в программировании, поэтому Python сейчас изучают в школах.
Итак рекомендую начать обучение с прочтения книги «Byte of Python « или по русски укус питона. Это очень маленькая книжка, прочтение которой не отнимет у вас много времени, но зато вы уже сможете получить знания об основах языка. Все кратно и по делу.
Ссылка: https://wombat.org.ua/AByteOfPython/#id10
Далее стоит закрепить полученные знания в курсе на сайте stepik : «Поколение Python»: курс для начинающих
После этого курса стоит немного уделить времени алгоритмам, в этом нам поможет книга “Грокаем аглоритмы”, все примеры в этой книге так же разбираются на языке пайтон, что очень удобно для нас.
После книги про алгоритмы возвращаемся на stepik и проходим курс «Python: основы и применение.» Здесь вы еще больше погрузитесь в язык. изучите классы, попробуете поработать с различными АПИ. В общем будет чем заняться.
Ссылка: https://stepik.org/course/512/syllabus
После этого курса я рекомендую пару недель уделить только решению различных задач по программированию. Для этого существует множество сайтов, я оставлю ссылки на все в описании. Выбирайте какой больше понравится. Лично мне больше всех понравился chekio. Знаю, что многие любят codewars.
Сайты где можно порешать задачки Python:
Вне зависимости от того какой сайт вы выберете, рекомендую начинать с более простых задач, и решать по 3-5 штук в день. Так же после решения, вам будет позволено посмотреть как эту задачу решили другие участники. Почти всегда это будет сделано более элегантным или продвинутым способом. В общем на решениях других людей тоже можно многое почерпнуть.
Далее стоит ознакомиться с ютуб каналом Computer science center
Здесь уже рассматривают продвинутые техники языка. Очень рекомендую к ознакомлению.
Если вам больше нравится читать книги, то вместо этого курса могу порекомендовать книгу «Python. К вершинам мастерства.»
Еще есть вот такой курс от Яндекса.
Так же не забываем постоянно решать задачки с сайтов, чтобы постоянно была практика.
При среднем темпе обучения, на все эти шаги у вас уйдет 3-4 месяца.
На этом этапе уже можно спокойно начать погружаться в выбранную Вами сферу, будь это веб программирование с помощью фреймворков джанго, фласк или может быть датасаенс. Это уже выходит за рамки данного поста. То как стать датасаентистом, мы разбирали в этом посте:
Так же эти ресурсы могут быть вам полезны:
Книга: Изучаем Python. Том 1 | Лутц Марк
Книга: Изучаем Python. Том 2 | Лутц Марк
Книга: Доусон М. Программируем на Python.
Лекции от Тимофея Хирьянова — https://www.youtube.com/playlist?list=PLRDzFCPr95fLuusPXwvOP.
Книга: Автоматизация рутинных задач с помощью Python: практическое руководство для начинающих
У нас есть чатик в телеграмме где мы обсуждаем с подписчиками различные вопросы, залетай к нам! https://t.me/DataScienceGuy
Python | Для изучающих программирование. Часть 1
Приветствую, прошлый пост сохранили более 70 раз, это очень круто.
Также, спасибо, подписчикам, вас почти 10, цифра весьма скромная, но две недели назад я вообще не думал, что на меня кто то будет подписан, мотивирует.
Еще я завел канал в телеге — https://t.me/tobeprog , там будет о самих методах обучения и обзоры на материалы. Здесь же, будет еженедельный дайджест.
Я сомневался, делать ли этот выпуск дайджеста, он что ли немного «банален». Несколько довольно известных материалов, к тому же, о большинстве я уже писал. Но, это отличные материалы, которые полезны новичкам, поэтому, я посчитал, что будет полезно их сгруппировать, добавив небольшие пояснения.
В посте, будет распределение материалов по уровню сложности, но это не учебный план. Почему так, и вообще касательно планов, методов изучения, выбора языка для старта и прочего, я уже делал два больших поста. Возможно, они будут полезны и ответят на какие то вопросы:
1. Самые основы: Автоматизация рутинных задач с помощью Python, Свейгарт + миллион туториалов
Идеальный вариант для начала. Книга сосредоточена на практике, решении всякой мелкой рутины. Эти маленькие решения хорошо компонуются в уже основательные программы, которые вполне себе закрывают проблемы, как говорит книга — рутинные задачи. При таком подходе нет нехватки проектов, постоянная практика и понимание, что язык это просто инструмент.
Сама книга породила огромную волну материалов по «автоматизации» на python. Если вбить на ютубе «python automation», то темы роликов будут от работы в Excel до знакомств в Tinder.
Это может показаться смешным, но когда код сам играет в динозаврика в Google Chrome(это одно из популярных видео), новичок ощущает какую то «крутость» возможных программ. Этот, чисто психологический момент на ранних этапах весьма мотивирует.
По идее, должны быть еще какие то курсы/книги с которых стоит начать. Я посмотрел несколько популярных, и особых преимуществ перед книгой Свейгарта не увидел. Те же темы, те же основы, но нет такого упора на практику. Хорошо иметь несколько источников, но посоветовать что то конкретное не могу, тут наверно стоит смотреть на саму подачу автора/лектора и выбирать что ближе.
https://stepik.org/course/512 — очень хороший курс по питону, для тех кто прошел основы. Стоит посмотреть хотя бы начало — там небольшой ввод в само устройство языка, стек вызовов, пространство имен, области видимости и прочее.
https://stepik.org/course/4519 курс в котором учат гуглить, искать на StackOverflow, читать документацию и юзать библиотеки. Это тот самый подход, о котором не особо пишут в книжках, однако, это именно про такую — трушную практику.
На этом этапе, встанет вопрос со сложными проектами. Я уже писал про build-your-own-x — репозиторий с кучей туториалов сложных проектов — Для изучающих программирование. Часть 0. Где найти идеи и реализации сложных проектов
На этом же этапе, стоит начать почитывать разные материалы о том, как писать «хороший» код. Особенно хорошо, если на изучаемых реализациях начнут явно прослеживаться недавно вычитанные принципы.
После него, уже можно топать на собеседование(на самом деле, далеко не каждый джун сможет пройти этот курс), потому что более глубокого курса, по крайней мере в ру сегменте, я не видел.
Хотя это про язык с самых его основ, он не для новичков, а для уже программистов, к примеру, решивших выучить новый язык или углубить понимание питона. Он сложный, даже очень сложный, но при этом абсолютно потрясающий, разобрано вообще все. Его стоит посмотреть каждому, кто решил связаться с питоном.
Есть более новая запись курса, но эта — 2015 года, мне нравится больше.
Научиться программировать
Там было о том, что планы изучения программирования для новичков зачастую игнорируют проблемы новичков. Как пример рассматривалось проблема не понимания самого процесса программирования.
Именно за ней скрывается ситуация, когда какой то учебный материал пройден, но при этом человек абсолютно не умеет программировать, т.е. писать программы, решающие какие либо задачи, выходящие за пределы типовых описанных в учебном материале.
В короткой перспективе, эта проблема может зарубить весь процесс изучения, например, когда какой то учебный материал пройден, выучены основы, но при этом абсолютно не получается писать программы, сложные задачи вызывают проблемы.
Но даже при проскоке этого этапа, сама проблема всплывет, но чуть позднее, как полагается в самый неподходящий момент. Надо понимать, что программирование — крайне рациональная штука. Если существуют какие то практики, то они появились, как необходимое решение каких то проблем. И не понимание процесса, его сути, ведет к не понимаю этих самых практик.
Это конечно крайне спорный вопрос, но все же, один из труднейших этапов карьеры программиста — ее начало. Тот момент, когда придется с этими практиками взаимодействовать(для успешного процесса, их нужно именно понять) и станет решающим, показав получится ли дальше в разработку.
Далее о том как решать эту проблему, что делали мы, советы и примеры практики. Изначально планировалось сначала описать методы обучения, а уже после пройтись по самой проблеме, но получилось, что все пересекается, поэтому идет вперемешку. Также не лишним будет упомянуть, что советы выстроены на основе опыта введения группы учеников, однако, я постарался убрать этот момент преподавания и всегда говорить про самостоятельный вариант изучения.
1. Самое очевидное — для того чтобы понять процесс программирования, для начала надо его увидеть. В самостоятельном изучении, этот пункт вызовет значительные затруднения(на всякий случай напишу, увидеть процесс программирования и досконально понять код — разные вещи, нам нужно именно само мышление, а вникать в этот процесс можно не понимая кода вообще).
https://www.youtube.com/watch?v=vpyWbpdk3Xs наверно, уникальный пример, где автор показывает именно тот самый процесс мышления при написании программы, к сожалению, в ру сегменте я больше ничего подобного не нашел
https://stepik.org/course/4519 курс в котором учат гуглить, искать на StackOverflow, читать документацию, и юзать библиотеки. Это тот самый подход, о котором не особо пишут в книжках, однако, это именно про такую — трушную практику. Разумеется, в этом случае, нужно не просто смотреть, для чего стоит хотя бы немного знать python. К сожалению, курс небольшой.
2. Важно чтобы ученик понимал куда движется, какую конкретную задачу решаем на определенном этапе. Может показаться что «научиться программировать» — абстрактная задача. Но приведем ее к форме — пока не понял и не научился решать задачи, методом как из видео выше(разумеется не такие сложные и большие), не научился и программировать.
3. На данный момент, найти хорошие учебные материалы — не проблема. Однако, часто в разных топах не очень подходящие новичкам книги. Проблема в перегруженности, т.е. они больше напоминают справочник, чем учебник.
Явный сигнал подобного — скучность. Это не значит что материал должен быть поверхностным, идеальный вариант — когда хочется преодолевать трудности, что бы узнать, что будет дальше. Хороших книг/курсов много, если скучно — лучше сразу менять.
Пример — «Код» Петцольда. По неизвестной мне причине, у многих новичков слово «архитектура» вызывает ассоциации с перфокартами, чем то старым и заросшим паутиной. Однако, ситуация резко меняется после первой главы «Кода», достаточно сложная тема увлекает просто потому что книга интересно написана.
Более популярный пример — CS50(К слову, CS50 и «Код» Петцольда — идеальное сочетание. CS50 мало про архитектуру, а Код отлично ложится на ввод в computer science).
4. Можно выбрать любой язык, это не столь важно. Однако, для наших целей лучше всего подойдет Python. Он позволяет очень быстро писать сложные программы или их рабочие прототипы, т.е. как можно быстрее прийти к тому самому процессу программирования.
Автоматизация рутинных задач с помощью Python, Свейгарт — интересный вариант с которого можно начать. Книга сосредоточена на практике, решении всякой мелкой рутины. Достать из текста данные, заполнить форму, разослать email-ы и т.д. и т.п. Подобную мелочь можно компоновать в большие программы, это довольно большой шаг в сторону «научиться программировать», тем более учитывая, что это может быть первая книга по программированию.
https://stepik.org/course/512 — очень хороший курс по питону, для тех кто прошел основы, стоит посмотреть хотя бы начало — там небольшой ввод в само устройство языка, стек вызовов, пространство имен, области видимости и прочее.
5. План обучения должен быть динамическим, сложно контролировать скорость обучения и менять материалы в зависимости от нее самостоятельно, но хотя бы подтягивать новые учебные материалы в ваш план стоит. Дайджестов учебных материалов полно(хотя бы тот, который я вроде начал и планирую продолжать), да и просто самостоятельно найденные материалы могут оказаться очень к месту. Пример курса который я нашел случайно:
https://youtu.be/auK3PSZoidc — урок из курса MIT 6.S095 Programming for the Puzzled — наверно лучшее объяснение бэктрекинга, объясняют через решение судоку. Объяснять подобные методы сложно, тем более привязать интересные задачи. Курс справляется на ура. Он на python, и отлично впишется когда основы языка и какие то основы cs пройдены.
6. Насмотренность/начитанность — тут все очевидно, смотрим хороший код, изучаем, анализируем. Самостоятельно начинаем с туториалов — в нулевом выпуске моего дайджеста была ссылка на репозиторий с кучей туториалов сложных проектов на разных япах.
7. Ревью кода — архиважная вещь, наверно самая большая потеря в самостоятельном изучении. Можно идти на разные форумы, есть стримы где авторы делают ревью присланного кода, но если в начале не хочется показывать код или его вообще нет, все равно неплохой идеей будет смотреть ревью чужого.
https://codereview.stackexchange.com/questions/204863/caesar. — код ревью шифра цезаря, ищется за секунду, при этом новичок может вынести пару важных вещей.
8. Как делаем практику мы, напомню, что мы только на середине пути(3 месяца), многое еще предстоит.
Опишу на примере: на этой неделе, я дал на разбор цепи маркова, не будем вдаваться в мат аппарат, важно лишь, что с помощью этой штуки можно генерировать разное. Алгоритм идет по данным, считая следующий шаг на основе настоящего и игнорируя предыдущие. Разумеется цепь маркова не может в содержание, но зато может в форму.
Для примера, прогнал через нее небольшое количество цитат Аристотеля, из осмысленного она сгенерировала:
Шутка есть самый верный признак дружбы.
Свойство добродетели состоит, скорее, в досуге.
Разум — это довольство собою.
Благодарность быстро стареет.
Именно смешные повадки людей против немногих хороших людей против множества дурных против немногих хороших.
Поступать правильно можно только человеку выказать свою честность.
Ну и огромное количество просто бессмысленного мусора.
Первый этап — объяснить что такое цепь маркова. На этом этапе код не важен, нужно понять сам принцип работы. Ребята примерно набрасывают не сам код, а грубо говоря составные части будущей программы. Относительно цепей маркова — часть должна обрабатывать данные, делая из них удобною для прохождения структуру, другая должна по этой структуре идти, считая следующий шаг на основе настоящего и игнорируя предыдущие. Это может быть псевдокод, какая то схема или даже объяснение на словах, главное — понимание сути будущей программы.
Второй этап — смотрим реализации, это может статья, урок, просто код, главное, чтобы источников было несколько и они значительно отличались. Нужно, чтобы ученики проанализировали разные подходы. Это может показаться сложным для новичков, но они довольно быстро начнут выделять какие то особенности, например, этот код работает быстрее, тут можно без ооп, здесь намного понятней и т.д.
Третий — пишут свою реализацию. Даем тесты, если все ок, следующий шаг.
Четвертый — самое интересное, грубо говоря основа проекта готова, нужен сам проект. Происходит питч идей в общий чат. Важно что бы идеи обсуждались, дополнялись или критиковались(этого очень сложно добиться) участниками. В этом процессе количество идей увеличивается многократно.
Пару простеньких примеров:
У нас есть любитель рогаликов, он сразу загорелся идеей сделать систему диалогов, добавив простейшую реализацию анализа тональности текста(прописанная база хороших/плохих слов), в зависимости от которой цепи Маркова подается(хорошая/плохая база ответов), забавно выглядит, когда гневный диалог, вдруг резко меняет тон, поскольку цепь Маркова сгенерировала что то положительно-нейтральное. Разумеется это не окончательный проект, все допиливается, подключение дополнительного собеседника(их n колл-ва) к этому диалогу, изменение самих баз по ходу диалога ну и т.д. в любом случае это становится похоже на довольно интересный учебный проект.
Генерация музыки, достаем из MIDI файла условный реквием Моцарта и на его основе генерируем новый. Простая идея, но очень широкое поле для экспериментов. К примеру можно взять разные произведения или даже разных музыкантов в одном стиле, после чего продублировать в данные для цепи то, что мы хотим услышать в большей мере(к примеру, добавить больше Баха), это очень упрощенная идея весов. Разумеется на выходе будет великолепная какофония, но это лишь добавляет задачу — сделать правильные данные для генерации.
Источник статьи: http://pikabu.ru/story/vpolzaem_v_ayti_chast_3_osnovyi_rabotyi_s_terminalom__pervaya_programma_4804293