Все статьи | Блог студента

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

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

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

Ментальная карта

Была проблема выбора, всё ценное и важное, и необходимо вчера, но прочитал пост Петра «Frontend. На пол пути к первому проекту» https://ru.hexlet.io/blog/posts/frontend-na-pol-puti-k-pervomu-proektu и понял, что курс «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
Рекомендуемые программы

С нуля до разработчика. Возвращаем деньги, если не удалось найти работу.

Иконка программы Фронтенд-разработчик
Профессия
Разработка фронтенд-компонентов веб-приложений
8 декабря 8 месяцев
Иконка программы Python-разработчик
Профессия
Разработка веб-приложений на Django
8 декабря 8 месяцев
Иконка программы PHP-разработчик
Профессия
Разработка веб-приложений на Laravel
8 декабря 8 месяцев
Иконка программы Node.js-разработчик
Профессия
Разработка бэкенд-компонентов веб-приложений
8 декабря 8 месяцев
Иконка программы Верстальщик
Профессия
Вёрстка с использованием последних стандартов CSS
в любое время 5 месяцев
Иконка программы Java-разработчик
Профессия
Разработка приложений на языке Java
8 декабря 10 месяцев
Иконка программы Разработчик на Ruby on Rails
Профессия
Новый
Создает веб-приложения со скоростью света
8 декабря 5 месяцев