Skip to content

Latest commit

 

History

History
22 lines (12 loc) · 8.27 KB

File metadata and controls

22 lines (12 loc) · 8.27 KB

Функционально-Лёгкий JavaScript

Введение

Ни для кого не секрет, что я являюсь адептом Функционально Программирования. И пропагандирую эти идеи, равно как и функционалные языки везде, где только могу. Стараюсь читать свежие научные статьи, изучать абстрактную алгебру в свое свободное (рабочее…) время :). И даже когда я пишу код на JavaScript, я никогда не использую нечистые выражения. Именно это в свое время привело меня к написанию Почти адекватного руководства по Функциональному Программированию от Профессора Фрисби. Да, такой вот я догматичный фанатик.

Однако, я не всегда был таким… Когда-то я был одержим объектами. Я любил это моделирование "реального мира". Я был изобретателем синтетических автоматов, идеально работающих черных ящиков. Создателем разумных марионеток, стучащий пальцамии по клавиатуре, чтобы дать им жизнь - этакий цифровой Папа Карло 1337 h4x0r. Тем не менее, за более чем 5 лет написания объектно-ориентированного кода, я никогда не был по настоящему удовлетворен результатом. Этот подход никогда не работал достаточно хорошо. Я чувствовал себя паршивым программистом. И совсем было потерял веру в то, что возможна простая и гибкая кодовая база приличного масштаба.

Тогда я решил попробовать что-то другое: функциональное программирование. Я начал баловаться функциональными идеями в своей повседневной работе и, к большому разочарованию моих коллег, не имел ни малейшего понятия о том, что я делал. Код, написанный мной в те дни, был ужасен. Монструозен. Настоящая цифровая помойка. Причиной было главным образом отсутствие цели, равно как и ясного видения того, чего же я пытался достичь. И у меня не было волшебного сверчка, который мог бы мне подсказать. Потребовалось много времени и много отвратительно написанных программ, чтобы понять, как эффективно работать с ФП.

Но теперь, после всего этого грязного исследования, я чувствую, что чистое функциональное программирование выполнило свое обещание. Читаемые программы существуют! Повторное использование существует! Я больше не изобретаю, а скорее открываю свои программы. Я превратился в настоящего детектива, раскрывающего тайный заговор, в пробковую доску, заполненную математическими доказательствами. В Кусто Цифровой Эпохи, записывающего наблюдения об этой странной земле во имя науки! Мой код все ещё не идеален, и мне все ещё есть чему поучиться, но я никогда ещё не был так доволен своей работой и её результатом.

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

Вы изучите "Функционльно-Лёгкую" парадигму, которую Кайл впервые применил для декларативного функционального программирования, обеспечивая баланс и взаимодействие с остальной экосистемой JavaScript. Вы поймете основу, на которой построено чистое функциональное программирование, без необходимости полностью и безоговорочно подписываться на эту парадигму. Вы приобретете навыки, необходимые для чтобы практиковаться и изучать мир ФП без необходимости переписывания существующего кода. Вы сможете сделать шаг вперед в своей карьере разработчика, не отступая и не теряя направления, как делал я много лет назад. И да возрадуются ваши коллеги!

Кайл - великий учитель, известный своей неустанной погоней за целостностью картины, не оставляющий в обучении пробелов и неясных мест, но при этом остающийся способным прочувствовать тяжелое положение ученика. Его стиль нашел отклик в индустрии, подняв качество преподавания JavaScript на новый уровень. Его работы занимают прочное место в истории, а также на панели закладок большинства JS разработчиков. Так что вы в хороших руках.

Функциональное программирование имеет много разных определений. К примеру, функциональный подход в Lisp сильно отличается от такового в Haskell. ФП в OCaml имеет крайне мало общего с ФП в Erlang. Вы даже можете найти несколько конкурирующих определений для его описания в JavaScript. Но все же все они имеют одну общую связь, объединяющую разрозненные опередления в единое ощущение, и эта книга определенно может его передать. Конечный результат возможно не будет считаться идиоматическим в определенных кругах, но знания, полученные здесь, непосредственно относятся и могут быть применены к любой разновидности ФП.

Эта книга - потрясающее место для начала вашего путешествия по миру Функционально Программирования. Удали это, Кайл...

-Brian Lonsdorf (@drboolean)