Скидки до 20% + 2-ая профессия бесплатно и подарки на 50 000₽

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

"Изобретение велосипедов" для закрепления своих знаний

Время чтения статьи ~1 минута
Статья написана студентом Хекслета. Мнение автора может не совпадать с позицией редакции
"Изобретение велосипедов" для закрепления своих знаний главное изображение

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

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

Не уделив этому должного внимания, я решил «повысить» свой скилл и начал решать задачи с помощью итеративного процесса. И опять, спустя какое-то время, я вдруг понял, что теперь решать задачи с помощью рекурсивного процесса стало сложнее, потому что мой мозг как будто перестроился. Про циклы я вообще молчу – то, что казалось мне самым простым, вдруг стало самым сложным.

Я снова вернулся к рекурсивному процессу, и, как вы поняли, прежние подходы стали «размываться» :)

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

Вот так выглядит код:

const stringLength = (str) => {
  const iter = (n) => {
    if (str[n] === undefined) {
      return n;
    }
    return iter(++n);
  };
  return iter(0);
}; 

Реализация простейших свойств и методов JavaScript хорошо закрепляет полученные знания – по крайней мере, я надеюсь, что это хоть чуть-чуть напоминает “настоящее” программирование в офисе.

Аватар пользователя user9009
user9009 27 января 2020
1
Похожие статьи
Рекомендуемые программы
профессия
Верстка на HTML5 и CSS3, Программирование на JavaScript в браузере, разработка клиентских приложений используя React
10 месяцев
с нуля
Старт 26 декабря
профессия
Программирование на Python, Разработка веб-приложений и сервисов используя Django, проектирование и реализация REST API
10 месяцев
с нуля
Старт 26 декабря
профессия
Тестирование веб-приложений, чек-листы и тест-кейсы, этапы тестирования, DevTools, Postman, SQL, Git, HTTP/HTTPS, API
4 месяца
с нуля
Старт 26 декабря
профессия
Программирование на Java, Разработка веб-приложений и микросервисов используя Spring Boot, проектирование REST API
10 месяцев
с нуля
Старт 26 декабря
профессия
новый
Google таблицы, SQL, Python, Superset, Tableau, Pandas, визуализация данных, Anaconda, Jupyter Notebook, A/B-тесты, ROI
9 месяцев
с нуля
Старт 26 декабря
профессия
Программирование на PHP, Разработка веб-приложений и сервисов используя Laravel, проектирование и реализация REST API
10 месяцев
с нуля
Старт 26 декабря
профессия
Программирование на Ruby, Разработка веб-приложений и сервисов используя Rails, проектирование и реализация REST API
5 месяцев
c опытом
Старт 26 декабря
профессия
Программирование на JavaScript в браузере и на сервере (Node.js), разработка бекендов на Fastify и фронтенда на React
16 месяцев
с нуля
Старт 26 декабря
профессия
Программирование на JavaScript, разработка веб-приложений, bff и сервисов используя Fastify, проектирование REST API
10 месяцев
с нуля
Старт 26 декабря
профессия
новый
Git, JavaScript, Playwright, бэкенд-тесты, юнит-тесты, API-тесты, UI-тесты, Github Actions, HTTP/HTTPS, API, Docker, SQL
8 месяцев
c опытом
Старт 26 декабря