До 30 ноября

Скидки до 81 000 руб и вторая профессия в подарок!

Главная | Все статьи | Дневник студента

Упражнения для дрессированных шимпанзе или как я перестал бояться и полюбил webpack

Время чтения статьи ~3 минуты
Статья написана студентом Хекслета. Мнение автора может не совпадать с позицией редакции
Упражнения для дрессированных шимпанзе или как я перестал бояться и полюбил w... главное изображение

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

Была проблема выбора, всё ценное и важное, и необходимо вчера, но прочитал пост Петра «Frontend. На пол пути к первому проекту» и понял, что курс «JS: Функциональное программирование» это моё.

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

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

Согласен темы вроде рекурсии, возврат функций из функций и каррирование вызвали некую заминку, но только заминку. Рекурсия была рассмотрена простая, а не как любят на собеседованиях, хитрые рекурсия на 2-3 самовызова функций, которые возвращают другие функции и переменные берут из замыкания и надо найти ошибку. Я думаю рассмотрения алгоритма быстрой сортировки усилила бы тему рекурсии. Там 2 рекурсивных вызова одно и той же функции, но число тех, кто сдал последующее упражнение сильно бы упало.

Я всё думал, почему студенты так не любят функциональное программирование, испытание «Числа Черча» показало почему. Итак, числами Черча называются натуральные числа, реализованные посредством анонимных функций. Числа 0, 1, 2, 3 – это всё рекурсивные функции.

Zero  = s => z => z

One   = s => z => s (z)

Two   = s => z => s (s (z))

Three = s => z => s (s (s (z)))

Всё есть функция. Забудьте про условия, циклы – это для слабаков, только функция и рекурсия :-) Сложение, умножение, деление, вычитание – это функция.

Succ = n = > (s => z => n (s) (s (z)))

Add = n => m => m (Succ) (n)

Mul = n => m => m (Add (n)) (Zero)

На числах Чёрча я понял, что функционального программирования должно быть в меру. :-) Я осознал, что функциональное программирование не так страшно, как о нём рассказывают, более страшное функциональное проектирование. Но эта тема в этом курсе не рассматривалась совсем, так как мало бы кто из новичков выжил :-)

И ещё я все упражнения делаю в phpStorm, обычно написал код, объединил через gulp и всё приложение готово, но в уроках появилась директива import. И я понял gulp мне больше не друг, с импортами он работает от слова «никак», надо переходить на webpack. С webpack у меня отношения какие-то напряженные, я создаю свою сборку по какому-нибудь уроку из ютуба, но стоит добавить что-то своего и всё умирает в муках. Но в этот раз я действовал хитрее набил в Гугле «webpack generator» и вуаля первая же ссылка https://createapp.dev/ даёт генератор конфига веб-пака, то чего там нет devServer, HtmlWebpackPlugin легко нашлось в официальной документации https://webpack.js.org/concepts/ Вот так я перестал бояться и полюбил webpack :-)

Следующий курс «JS: Настройка окружения» тоже курс подготовительный, для шимпанзе, ещё не знающих дрессировки. :-) По прохождении курса я теперь могу опубликовать свою библиотеку на npmjs, узнал про npx и обобщил свои текущие знания.

Шимпанзе

Сейчас прохожу курс «JS: Архитектура фронтенда». А вот это серьезный курс. Большинство курсов по архитектуре почему-то сводятся к MVC, иногда добавляют микросервисы и всё, а вот как правильно запроектировать приложение на чистом JS, про это нигде нет. А про автоматное программирование тоже какая-то всеобщая амнезия среди программистов. Спасибо за этот курс автору Кириллу.

Запомнилось одно упражнение «Процессы и автоматы, их описывающие». Я реализовал формочку через конечный автомат, у меня на компьютере все тесты проходят, а на виртуальной машине Hexlet часть тестов нет, я переделал по-другому, опять не проходят. Плюнул посмотрел решение Кирилла с потерей баллов, вставил его решение в виртуальную машину и его решение тесты тоже не прошло :-) Я нажал кнопку «Сброс» и все тесты прошлись. Вот такой программный глюк стоил мне 2 дня потраченной жизни.

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

Оригинальная публикация.

Аватар пользователя Олег Гребенёв
Олег Гребенёв 30 января 2020
3
Рекомендуемые программы
профессия
Осваивайте разработку веб-страниц, оживляйте дизайн макетов, публикуйте сайты и приложения. Отслеживайте ошибки в интерфейсе и устраняйте их
10 месяцев
с нуля
Старт 28 ноября
профессия
Обучитесь разработке бэкенда сайтов и веб-приложений — серверной части, которая отвечает за логику и базы данных
10 месяцев
с нуля
Старт 28 ноября
профессия
Выполняйте ручное тестирование веб-приложений, находите ошибки в продукте. Узнайте все о тест-дизайне.
4 месяца
с нуля
Старт 28 ноября
профессия
Научитесь разработке веб-приложений, сайтов и программного обеспечения на языке Java, программируйте и используйте структуры данных
10 месяцев
с нуля
Старт 28 ноября
профессия
новый
Собирайте, анализируйте и интерпретируйте данные, улучшайте бизнес-процессы и продукт компании. Обучитесь работе с библиотеками Python
9 месяцев
с нуля
Старт 28 ноября
профессия
Занимайтесь созданием сайтов, веб-приложений, сервисов и их интеграцией с внутренними бизнес-системами на бекенд-языке PHP
10 месяцев
с нуля
Старт 28 ноября
профессия
Создание веб-приложений со скоростью света
5 месяцев
c опытом
Старт 28 ноября
профессия
Обучитесь разработке визуальной части сайта — фронтенда, а также реализации серверной — бэкенда. Освойте HTML, CSS, JavaScript
16 месяцев
с нуля
Старт 28 ноября
профессия
Разработка бэкенд-компонентов для веб-приложений
10 месяцев
с нуля
Старт 28 ноября
профессия
новый
Организовывайте процесс автоматизации тестирования на проекте, обучитесь языку программирования JavaScript, начните управлять процессом тестирования
8 месяцев
c опытом
Старт 28 ноября