PRO курс

JS: Программирование, управляемое данными

2603 сообщения в сообществе 2815 учащихся

В течение этого курса мы будем писать собственную карточную игру и знакомиться с такими важными концепциями программирования, как пользовательские типы, динамическая диспетчеризация по типу, позволяющая писать ёмкий, универсальный код, полиморфизм, передача сообщений между сущностями и, конечно, основы важнейшей темы — объектно-ориентированного программирования. Также мы перейдем к разработке через тесты (test driven development).

Подготовительный курс

JS: Последовательности

Уроки курса

  • 1

    Введение

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

    Игровой дизайн: карточный бой

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

    тесты

    упражнение

  • 3

    Инверсия

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

    тесты

    упражнение

  • 4

    Помеченные данные

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

    тесты

    упражнение

  • 5

    Диспетчеризация по типу. Аддитивность.

    Понять, что такое аддитивные программы и как динамическая диспетчеризация поможет нам строить такие программы. Разобраться, что такое диспетчеризация в контексте программирования и типов.

    тесты

    упражнение

  • 6

    Объекты

    Познакомиться с объектами в контексте современного, общепринятого понятия объектно-ориентированного программирования. Понять, как динамическая диспетчеризация дала возможность работать с объектами в ООП.

    упражнение

  • 7

    Нативные объекты

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

    тесты

    упражнение

  • 8

    Классы

    Познакомиться с классом — структурой, которая позволяет создавать объекты. Рассмотреть механизм создания новых объектов с помощью 'new'.

    тесты

    упражнение

  • 9

    Полиморфизм

    Познакомиться с понятием полиморфизма в языках программирования. Разобрать три типа полиморфизма.

    тесты

    упражнение

Автор

Кирилл Мокевнин

Сооснователь и технический директор образовательного проекта Hexlet. Программирует с 2007 года. За это время прошел путь от разработчика до технического директора и управляющего отдельным подразделением (филиалом). Управлял командами, в которых больше 50 разработчиков. Программирует на языках: elixir, clojure, javascript, php, ruby. Со-организатор конференции nastachku.ru. Вимер. Топит за DevOps и автоматизированные тесты.

Впечатления

Решение учителя было весьма неожиданным (сам подход) :)

Потратил на задачку 1,5 часа. Никуда не заглядывал и не подглядывал, но на теорию день ушло. И когда очередной раз нажал проверить и мое решение прошло и даже похоже на решение учителя кончено радости не было предела)) Хочу дать совет, который не является истиной в последней инстанции) тем кто расстраивается и у кого опускаются руки, хотя про это много раз уже говорили но повторюсь: курс построен прекрасно все об этом говорят и все это знаю, но наш мозг так устроен, что когда мы переходим к новой теме и начинаем слушать лекцию и читать текст наш мозг сперва привыкает к новому тексту и визуализированной информации, а уже потом начинает обрабатывать смысл всего сказанного. Если взять эту конкретную тему, то я раз 15 пересмотрел видео и перечитал текст прежде чем мой мозг перестал отвлекаться на красивые кружочки и успокаивающий голос лектора(если бы он не был таким классным программистом, то был бы хорошим работником call-center))) и потом когда для мозга все это стало не в новинку, то он начинает переваривать смысл и у кого как, но у меня со скоростью асфальтоукладчика(зато сразу и без повторений) и затем задача и тема прекрасно усваивается и все спокойно решается, будьте терпеливы!

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

Маленькая подсказка всем - не забывайте, что функция должна всегда что-то возвращать, даже если внутри неё тоже функция ;)

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

Это шикарно! Спасибо, ребята, за головомойку! 2 дня я ломал голову на даче, мысленно рисуя, что должно быть в итоге. Алгоритм выработал верный, без подсказок обошелся. Но отладка... Копал полдня не в ту сторону, на два раза всё переписал. Уххх, круто!

продолжительность
22 часа
награда
57 баллов
Получить доступ к курсу