Как стать автором
Обновить
17
0
Роман Ахмадуллин @saggid

Программист, ну и немного того, немного сего.

Отправить сообщение

Как раз недавно писал перевод статьи о каррировании в рамде. С нею всё становится ещё удобнее.

Я лично мало что понял из вашего сообщения, а как оно работает в рамде — описано в этой статье ) Большего я лично не знаю. Может кто-то более знающий придёт подскажет.

Если их время уже прошло — то каким образом вы пишете код сейчас?

Спасибо, очень полезный совет) прошу прощения за долгий ответ, забыл ответить.

Да я тот еще задрот как бы. Меня все устраивает в целом. Прекрасный сервис. Мне честно не важно что там можно сделать в настройках игры, я на стим как потребитель смотрю)

Сколько лет пользуюсь стимом — один кайф, можно сказать. О как, оказывается всё так ужасно с ним, ну спасибо что прояснили)

Я бы наверное так сказал: мотивация — это отдельная большая тема, и она как раз не является неким "личностным качеством" человека. Скажем, вы можете легко увидеть разницу между ленивым и усердным персонами, если посадите их работать над одним проектом. Можно будет увидеть, что в одних и тех же условиях один делает больше, а другой делает меньше. Вот и вся метрика, как-бы. Я писал об этом.


А мотивация — это дело полезное в целом, да. В том смысле, что хорошо если руководитель стремится замотивировать своих сотрудников премиями и справедливой оценкой их труда. Но это тема отдельная и в рамки этой статьи не входит) Надеюсь вы поняли меня.

Я ваш посыл понял ещё в вашем первом сообщении, спасибо за разъяснения. Своё мнение о "мотивации" я тоже разъяснил, надеюсь что и вы меня поняли. Спасибо.

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


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


Короче, не надо так к словам придираться, и не думаю что если я там слово "мотивация" нигде не упомянул, то я никого ни в чём сегодня не замотивировал)

Почитайте статью более внимательно, вы уже третий, кто говорит о том, о чём в ней и рассказывается.

Ну с этим вашим сообщением я вовсе и не спорю) Однако. Во всех этих вариациях развития событий способности усердно делать своё дело, оптимизировать процессы и гибко мыслить будут только увеличивать КПД человека)

Опять про усердие… В статье всё расписано на эту тему, почитайте внимательно пожалуйста. Текста-то всего ничего.

Одно другому не мешает, технические никуда деваться не собираются, и вчера кстати я запостил сразу две статьи, эту и "техническую") Я считаю что важно объяснить и эти моменты, в особенности новичкам. Как там ваш ларавел-коллектив кстати поживает?) Сто лет не видел вас, не общался.

Вот кстати да, думал, добавлять или нет ещё одно качество в список, видимо надо было все-таки добавить.


Внимательность тоже важно развивать.


В статье уже написан ответ на ваш вопрос.

Я тоже очень хотел бы узнать это) Видимо снова какой-то академический термин.

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


Давайте расставим точки над i и завершим всё это, ибо у меня уже вообще нет никакого желания хоть что-то писать на хабр. У меня действительно нет опыта на mobx, но что намного более важно — у меня нет уже никакого желания кому-то что-то здесь доказывать. Поэтому, заключим:


  1. mobx лучше redux
  2. redux странная поделка, от которой нет пользы
  3. похоже, что функциональщину никто не умеет писать хорошо

На свои оскорбления, явные или неявные, желаю вам ответить перед своим Господом в День Суда. Это уже дело не моё, мне ни в ответ оскорблять не хочется, ни вообще обсуждать это желания нет. Есть более важные и ценные дела в этом мире, на которые я хотел бы потратить своё время.


Если я кому-то принёс чем-то пользу — я этому рад. В остальном же, у меня своя дорога, которая меня полностью устраивает. Что касается вас — то это ваше личное дело, чем заниматься, как общаться, что писать, что не писать. Я себя на этой дороге не вижу. До свидания.

Потому я и прошу — покажите мне хороший, поддерживаемый код. Я хочу тоже научиться такой писать.

Да, вот кстати, на эту тему забыл ещё кинуть пару примеров, правда на англицком.


Обрабатываем логи вместе с Ramda и трансдюсерами
Используем Ramda вместе с Redux


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

изначально решает меньше проблем и предоставляет меньше возможностей
Аргументируйте

Что аргументировать после того что было уже написано? Я уже объяснил всё наверху, как вы читали? Давайте я процитирую сам себя:


Что мы теряем сразу, отбрасывая "быдлокодерский редакс"?
  • возможность осмотреть историю изменения состояния всего хранилища, в том числе путешествовать по ней и возможность быстрой реализации отмены изменений в приложении
  • более ясную структуру, в которой есть конкретные чистые функции, изменяющие хранилище (редюсеры), и функции, которые занимаются сайд эффектами (экшены и мидлверы), вместо этого будем писать… ну наверное какие-то приколюхи, кто во что горазд, как я понимаю. В итоге будем иметь 100500 вариаций каждого компонента проекта, ибо никто нас не ограничивает в этом. С каждой из них, конечно же, разбираться надо будет отдельно, в отличии от "быдлокодерского" редакса, в котором каждый проект практически однотипен и сразу понятен любому, кто изучил док-цию к редаксу
  • возможность писать мидлверы, которые могли бы реагировать на изменение хранилища и делать что-то полезное, вроде вызовов api или логирования, или ещё чего угодно




На тему магии.


Давайте я более подробно разверну вышенаписанную цитату того человека, который пишет на mobx и в том числе имеет свой небольшой бойлерплейт для него. Вы скорее всего статьи mobx не пишете и бойлерплейт для него не имеете, по крайней мере его слова будут более объективны в какой-то степени.


Он пишет в своей статье в одном из разделов под названием 3 Reasons Not to Use MobX:


Too much freedom
Redux is a framework that provides strict guidelines on how you write state code. This means you can easily write tests and develop maintainable code. MobX is a library and has no rules on how to implement it. The danger with this is that it’s very easy to take shortcuts and apply quick fixes that can lead to unmaintainable code.

Hard to debug
MobX’s internal code “magically” handles a lot of logic to make your application reactive. There’s an invisible area where your data passes between the store and your component, which makes it difficult to debug when you have a problem. If you change state directly in components, without using @actions, you’ll have a hard time pinpointing the source of a bug.

There could be a better alternative to MobX
In software development, new emerging trends appear all the time. Within a few short years, current software techniques can quickly loose momentum. At the moment, there are several solutions competing with both Redux and Mobx. A few examples are Relay/Apollo & GraphQL, Alt.js and Jumpsuit. Any of these technologies has the potential to become the most popular. If you really want to know which one is best for you, you’ll have to try them all.

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


Всмысле «молиться»? Я никогда не молился, оно просто работает.

Это как в Руби тоже всё "просто работает"? А потом оттуда уходят разрабы со словами о сообществе: I’m pretty damn sure that my proposals would end up being drastically downvoted. Monkey-patches? C’mon, not a problem, we love our 10.years.ago! New abstractions? Who needs that, Rails is SIMPLE!. Суть в том, что сейчас оно, возможно, работает, но в один прекрасный момент начнутся проблемы из-за магии, из-за которых вы проведёте 5 часов в дебаге и, надеюсь, сможете найти корень проблемы. А может и не сможете, прям как те авторы "говяной функциональщины", о которой вы ранее писали.


Подмена понятий. MobX не использует манки-патчинг.

Я где-то писал что он его использует? Помимо монки патчинга в мире есть другие заклинания, и он использует их. Мне это не нравится, я не склонен доверять магии просто изначально, и для меня такая методика работы — это и есть говнокод. Видимо, мы сейчас приходим к тому, что для каждого из нас понятие "говнокода" — это уже субьективная вещь, вам нравится магический mobx, мне нравится более явно работающий redux.


То есть это про MobX выходят десятки статтей «как я сделал МобХ совсем другим»?

Господи, да просто потому что mobx в сотни раз менее популярен чем redux, всё. Был бы популярнее — имел бы точно такое же кол-во статей про варианты организации кода. Конечно в мелочах можно писать по-разному, но вы же понимаете, что основа остаётся той же самой: редюсеры, хранилище и экшены. Основа не меняется и легко улавливается.


Скажите, вы пользовались MobX? Видимо, нет. Потому что я Редаксом пользовался. И прекрасно знаю, что каждый пишет кто во что гаразд.

Я-то не пользовался, но авторы вышепроцитированных статей его использовали, да и мой опыт говорит о моей нелюбви к магии.


Он не хвалит архитектуру или подход МобХ. Он признает, что по цифрам он быстрее его поделки. И что?

Опять спорите. Это указание на его в целом желание добра и mobx в том числе. Если бы он занимался "наглым пиаром" своего говяного поделия, он наверное написал бы что-то мерзкое про mobx, вместо чего-то хорошего? Он таким не занимается, потому что, скорее всего, целей таких и не имел, а вам просто кажется.


Наверное PHP поунижать успели за «говнокодинг», наверное тоже уверены, что он никому нинужен
Но ведь первые версии и правда были не очень.

Ну блин, и первые версии mobx тоже были не очень, я вполне уверен. Сейчас уже 4-я мажорная ветка развивается. Однако дело в том, что на PHP уже начиная с ерсии 5.3, которая вышла в 2009, можно было писать нормальные качественные проекты, чем люди и занимались. Но множество других продолжают называть PHP "говёным поделием" даже сегодня, в 2018-м году.


Я искренне считаю, что редакс — найбольший провал фронтенда

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


Я честно думал, что это — хороший инструмент. Пока не начал его использовать, пока не начал читать статьи о нем

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


Но я уверен, что код на Редаксе — априори говёный.

Снова начинается желание доказать, что одно говно, другое не говно. Да и это чистая субьективщина. Я уже достаточно написал про редкас, мне опять самого себя цитировать и здесь? Вот в этом проблема. Я почти уверен, что если я приведу вам любой код, который не будет в вашем стиле — вы назовёте его "априори говёным". Ну и какой смысл тут общаться? Почему я вообще должен вам что-то доказывать в такой манере общения, когда вы называете всё, чего я придерживаюсь — "говёным поделием"? Вы понимаете, что культуры напиания кода могут быть разными? И каждая культура эффективна в той или иной мере. Мы с вами никогда не договоримся, если не будет этого понимания.


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


Каждый раз хочется закончить обсуждение, но каждый раз вы заставляете лезть объяснять вам всё, иногда цитируя себя же самого, что я писал ранее. Извините, наверное это всё-таки последний мой ответ вам. Время ценная штука, я уже потратил целый час на написание этого текста. Мог бы заняться чем-то более полезным. Цените время людей и цените своё время в том числе. До свидания.

Я честно его прошерстил пару раз и исправил всё, что заметил, но я такой же простой смертный, как и многие другие. Можете написать сюда или в личку свои замечания, два простых смертных всегда лучше одного. Воспринимайте это как помощь друг другу в полезном деле.

Давайте я напишу вам один раз одно большое сообщение, подробно разъясняющее пару некоторых важных моментов, на которое впоследствии буду просто отправлять вас и подобных вам людей, чтобы не повторяться.


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


Альтернативой redux вы назвали mobx. Хорошо хоть не ту mvc-приколюху из соседней статьи от ненавистника редакса, в которой вызывается forceUpdate на каждое изменение. Я посмотрел на mobx, вижу, что в основе идея практически та же самая: inject + observer вместо connect у редакса, классы-сторы, вместо экшенов и единого хранилища у редакса. Вижу что он более простой и изначально решает меньше проблем и предоставляет меньше возможностей, при этом работает он на основе внутренней магии, т.е. мы доверяемся заклинаниям разрабов mobx и должны молиться, что всё просто будет хорошо. Мне уже на этом моменте не слишком всё нравится, особенно после распиаренного "убийцы пыхи" Ruby, авторы которого столько сил потратили на пропаганду монки патчинга, из-за чего потом стали терять даже core-контрибьютеров больших проектов. Спасибо, я лично лучше на пхп останусь: явное лучше неявного.


Ну да вернёмся к mobx. Что мы теряем сразу, отбрасывая "быдлокодерский редакс"?


  • возможность осмотреть историю изменения состояния всего хранилища, в том числе путешествовать по ней
    и возможность быстрой реализации отмены изменений в приложении
  • более ясную структуру, в которой есть конкретные чистые функции, изменяющие хранилище (редюсеры), и функции, которые занимаются сайд эффектами (экшены и мидлверы), вместо этого будем писать… ну наверное какие-то приколюхи, кто во что горазд, как я понимаю. В итоге будем иметь 100500 вариаций каждого компонента проекта, ибо никто нас не ограничивает в этом. С каждой из них, конечно же, разбираться надо будет отдельно, в отличии от "быдлокодерского" редакса, в котором каждый проект практически однотипен и сразу понятен любому, кто изучил док-цию к редаксу
  • возможность писать мидлверы, которые могли бы реагировать на изменение хранилища и делать что-то полезное, вроде вызовов api или логирования, или ещё чего угодно

И это как минимум. Я просто глубоко не вдавался в различия. Ну да, зато "быдлокодерской функциональщины" у нас в проекте больше не будет. Да, можно ещё закинуть в mobx-проект плагин mobx-state-tree и получить в итоге практически тот же redux, но на заклинаниях, и после этого молиться, чтобы вся эта смесь не заглючила в один прекрасный день, когда нам неожиданно придётся разбираться в магии mobx'а. Но вообще, зачем было изначально уходить от редакса, если к нему всё равно в итоге приходим?


Давайте почитаем цитаты людей, сравнивающих mobx и redux. Я почитал три статьи (1,2,3) на эту тему. Я надеюсь, вы способны воспринимать другие мнения людей из этого мира, не может же быть, наверное, что вы на этом земном шаре — самый умный и знаете 100% больше других? Давайте приведём некоторые цитаты из вышеуказанных статей:


И вот, что я думаю в вопросе выбора между, MobX и Redux. Если вы в процессе изучения React и его экосистемы, если вы только планируете начать свой путь во front-end и ищете работу над проектом на React, изучайте Redux, практикуйте Redux, он повсюду, он везде.

На практике, мы имеем успешные проекты всех типов. Маленькие и большие. И на Redux и на MobX.

Redux сегодня, это как азбука для React разработчика. А Mobx, опциональное знание для интересующихся.

3 Reasons Not to Use MobX:
1. Too much freedom
2. Hard to debug
3. There could be a better alternative to MobX

Для начала mobx, несмотря на то что его сравнивают с другими библиотеками как библиотека для управления состоянием, не предоставляет практически никаких удобств для работы с состоянием за исключением вызова обновления компонентов реакта

Я понял, что mobx — это интересная штука, спасибо за это. Но говорить, что redux — это говно, а mobx — это идеал — тоже неправильно как-бы. Как минимум, мы видим, что проблемы имеются в том числе и у mobx, а вероятность написать кучу говнокода, особенно если ты только начинаешь фронтенд-карьеру — намного выше. Соответственно, мы тут изначально обсуждали, где будет больше говнокода — получается, что говнокода всё-таки будет больше именно вместе с mobx, а не с redux'ом.


Я вот считаю, что Редакс стал таким популярным за счет пиара его автора

Забавно кстати, тот же автор редакса хвалит в том числе и mobx в своём же твиттере. Опять наглый пиар!.. Суда на них нет, одни пропагандисты-обманщики..


Как мы видим, как всегда нет в реальном мире "говёного редакса" и "идеального mobx'а". Всё гораздо более сглаженно, и хорошие стороны есть и у первого, и у второго решения. И в реальности почти всегда бывает именно так.


Что очень важно для меня лично, и надеюсь, что когда-нибудь станет важным и для вас в том числе: подобное поведение встречается в СНГ слишком часто. Мне трудно жить в таком обществе. В большинстве своём, люди не способны оценивать всё умеренно, спокойно и с уважением. Они постоянно перелетают из одной крайности в другую. От любви до ненависти один шаг, как говорится. Сегодня вы топите за mobx и императивный код, завтра "прозреете" и начнёте топить за какой-нибудь HypeX, а всё остальное называть "говнокодерством".


У вас может уже и было подобное ранее, а? Наверное PHP поунижать успели за "говнокодинг", наверное тоже уверены, что он никому нинужен. Правда Laravel вот нынче имеет больше звёзд на гитхабе, чем Rails и Django (42 146 vs 39 345 vs 33 221). Да и Facebook, Vk, Wikipedia, Badoo, и прочие спокойно применяют PHP в своих проектах уже многие годы, никуда не собираясь мигрировать, а разрабы Slack вообще пишут в своём блоге о том, что PHP сейчас — это в целом лучший вариант для написания нового веб-проекта. Опять, наверное, наглый пиар разрабов PHP.


Я в своё время писал о Riot.js на хабре — меня точно также закидывали говном в комментариях. Это правда не помешало мне применить его в разработке двух больших международных проектов и одном своём личном. Да и сейчас он остаётся моим личным любимчиком для написания небольших решений в силу своей простоты.


Это я всё пишу к тому, что такой "экстермизм" в своих убеждениях, подобным вашим, когда один инструмент возвышается до небес, а другой втаптывается всеми правдами и неправдами на уровень "говёного поделия" — это больше от невежества и страстей, чем от нормального знания.


Вы же сейчас пытаетесь топить вообще против всякой функциональщины, притягивая за уши "доказательства" оттудова и отсюдова — откуда угодно, лишь бы доказать свою точку зрения. Неужели вы действительно уверены в том, что любой код, написанный в функциональном стиле — априори говёный? Вам самому не кажется это утверждение глупым? Неужели нельзя написать говнокод в императивном стиле? Вы что, не видели на своём веку такого? Так чего удивительного в том, что на функциональной логике тоже можно написать говнокод?


Вас бесит функциональщина за то, что она не решает все проблемы мира и даже не объясняет смысл жизни? Я с вами вообще не спорю на эту тему. Программирование — это всегда поиск компромиссов. Я не фанат функциональщины, не фанат редакса, не фанат реакта, не фанат ООП, императивщины и любого другого X. Я стараюсь изучать этот мир и применять то, что наиболее рационально в конкретной ситуации.


Я пишу статьи о Ramda для общего образования, чтобы знать, как она работает. Чтобы поэкспериментировать с нею в будущем. И если она докажет свою эффективность и полезность — то я скорее всего буду применять её в своих проектах. Даже если на хабре найдётся тысяча людей, которые из-за страстей своих назовут её говёным поделием, как назвали ранее массу других инструментов, признанных, при этом, всем остальным миром как доказавшие свою эффективность.


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

Информация

В рейтинге
Не участвует
Откуда
Уфа, Башкортостан(Башкирия), Россия
Дата рождения
Зарегистрирован
Активность

Специализация

Специалист
Senior