Несмотря на то что react изобрел виртуальный дум со слоганом что реальный дум медленный, а виртуальный быстрый потому что он сравнивает только деревья объектов в памяти, а в реальном думе обновляет только измененные части, в реальности мы не можем при любом обновлении данных в приложении вызвать это сравнение виртуального дума для всего приложения потому что это медленно.
Это не так, если использовать иммутабельность, чистые функции и мемоизацию (для исключения перерендера самого VDOM когда исходные данные не поменялись). С иммутабельностью достаточно легко перендерить только поменявшиеся части, достаточно сравнить ссылки при траверсинге структуры вглубь!
Monadic-style computation без синтаксической поддержки со стороны языка — это всегда печально и неудобно. В Haskell есть do-нотация. В JavaScript, к примеру, когда появились Promises (это по сути монады для асинхронных вычислений), все очень страдали, пока не появился async/await синтаксис для них.
А вообще мне дико странно видеть, что в языке принципиально нет поддержки исключений, но при этом также нет никакого вменяемой альтернативы этому (типа монад с поддержкой на уровне синтаксиса). Мне кажется, это какой-то неправильный язык для неправильных пчел. My 2 cents.
Да, я советовал тому челу его попробовать, но он сказал что тот валится с out-of-memory-error, т.к. он запускает свой проект на amazon tiny instance, а там памяти как на калькуляторе...
Ох, как раз недавно столкнулись с такой бедой, когда «скрипя сердцем» решили дропнуть ES5-транспилирование в нашем проекте — и выяснили, что в популярных фронтенд фреймворках, типа Nuxt, в конфиге babel-loader тупо захардкодено исключение node_modules из сборки. И включить это назад там не так-то просто бывает. Разработчики же этого Nuxt вообще не понимают, зачем кому-то может понадобиться импортировать ES6 модуль — мол, «я ни разу не видел не пред-транспилированного модуля, а значит, этого не бывает».
Причём ломается это все в итоге даже не в браузере пользователя — слава богу, основные браузеры уже умеют в ES6 — а на таких замечательных и непременных штуках в тулчейнах девелоперов, как Uglify или Google Closure Compiler. Которые в 2017 году до сих пор не умеют даже в классы, какое там async/await...
К счастью, нашу либу в основном юзают из Node, поэтому это оказалось не так страшно. Но и там нашлись свои приколы: поле engine в package.json, судя по всему, не работает так, как многие думают. С его помощью вы не сможете запретить устанавливать ваш пакет в ранние версии Node (где ещё не появился, скажем, async/await). Раньше в NPM был флаг engineStrict, но теперь его убрали. И, убрав поддержку ES5 в своем проекте, мы столкнулись с тем, что многие юзеры до сих пор сидят на доисторических версиях Node и совсем не понимают, почему после npm update у них всё вдруг перестало работать...
В целом многие JS девелоперы вообще не понимают что такое Babel и как его настраивать. Вот например тут человек целый день провозился с настройкой вебпака, в итоге обматерил меня и мой проект, и написал свой собственный аналог :)
Транспилирование библиотек должно умереть, конечно же — т.к. ES модули позволяют импортировать только ту часть кода, которая реально используется (tree shaking). В ином случае, чтобы достичь подобного, приходится разбивать большие модули на миллион маленьких микромодулей (в пределе — до уровня отдельных функций), что крайне неудобно в плане поддержки...
Брокман говорит, что научиться такому умению для ИИ – задача тривиальная, и она никогда не была основной для исследований в OpenAI. Он говорит, что институтский бот справился бы и без информации от API, но «он просто потратил бы гораздо больше времени на приобретение навыков зрения, которое и так работает, так в чём же тогда смысл?»
Нет, имеется в виду именно stake, в смысле денег. Это очень важно в свете перехода на алгоритм proof-of-stake (PoS), где хакер смог бы получить слишком много влияния благодаря украденным деньгам.
Так а вы представьте, что функция не известна. Есть большой набор данных, и нужно найти относительно простую функцию, которая наиболее хорошо их описывает. Алгоритм обучения подгоняет коэффициенты, пока такое приближение не будет найдено с достаточной степенью соответствия.
f(x) = w1' * tanh(w1 * x + b1) +… + w5' * tanh(w5 * x + b5) + b
Сделал визуализатор — можно потаскать за точки и увидеть эту аппроксимацию наглядно. Фиолетовые линии это линейные функции (w1 * x + b1), оранжевые — взвешенные гиперболические тангенсы (w * tanh (..)). Красное — итоговая сумма.
Веса у тангенсов задаются расстоянием между точками (чем больше, тем больше вес):
> из js можно заиметь доступ к видеокарте
WebGL
Крипто-котики.
Замечательная статья, спасибо!
Хм-м, наверное, всё же единице?
Вероятно, имелось в виду что-то такое, а не typeof:
Это не так, если использовать иммутабельность, чистые функции и мемоизацию (для исключения перерендера самого VDOM когда исходные данные не поменялись). С иммутабельностью достаточно легко перендерить только поменявшиеся части, достаточно сравнить ссылки при траверсинге структуры вглубь!
Подробнее можно почитать в моей статье на хабре.
Костыльно-ориентированное программирование.
Monadic-style computation без синтаксической поддержки со стороны языка — это всегда печально и неудобно. В Haskell есть do-нотация. В JavaScript, к примеру, когда появились Promises (это по сути монады для асинхронных вычислений), все очень страдали, пока не появился async/await синтаксис для них.
А вообще мне дико странно видеть, что в языке принципиально нет поддержки исключений, но при этом также нет никакого вменяемой альтернативы этому (типа монад с поддержкой на уровне синтаксиса). Мне кажется, это какой-то неправильный язык для неправильных пчел. My 2 cents.
Ещё есть бранч в uglify, называется uglify-es, тот тоже якобы может ES6, но я сам не пробовал..
Да, я советовал тому челу его попробовать, но он сказал что тот валится с out-of-memory-error, т.к. он запускает свой проект на amazon tiny instance, а там памяти как на калькуляторе...
Ох, как раз недавно столкнулись с такой бедой, когда «скрипя сердцем» решили дропнуть ES5-транспилирование в нашем проекте — и выяснили, что в популярных фронтенд фреймворках, типа Nuxt, в конфиге babel-loader тупо захардкодено исключение
node_modules
из сборки. И включить это назад там не так-то просто бывает. Разработчики же этого Nuxt вообще не понимают, зачем кому-то может понадобиться импортировать ES6 модуль — мол, «я ни разу не видел не пред-транспилированного модуля, а значит, этого не бывает».Причём ломается это все в итоге даже не в браузере пользователя — слава богу, основные браузеры уже умеют в ES6 — а на таких замечательных и непременных штуках в тулчейнах девелоперов, как Uglify или Google Closure Compiler. Которые в 2017 году до сих пор не умеют даже в классы, какое там async/await...
К счастью, нашу либу в основном юзают из Node, поэтому это оказалось не так страшно. Но и там нашлись свои приколы: поле
engine
вpackage.json
, судя по всему, не работает так, как многие думают. С его помощью вы не сможете запретить устанавливать ваш пакет в ранние версии Node (где ещё не появился, скажем, async/await). Раньше в NPM был флагengineStrict
, но теперь его убрали. И, убрав поддержку ES5 в своем проекте, мы столкнулись с тем, что многие юзеры до сих пор сидят на доисторических версиях Node и совсем не понимают, почему послеnpm update
у них всё вдруг перестало работать...В целом многие JS девелоперы вообще не понимают что такое Babel и как его настраивать. Вот например тут человек целый день провозился с настройкой вебпака, в итоге обматерил меня и мой проект, и написал свой собственный аналог :)
Транспилирование библиотек должно умереть, конечно же — т.к. ES модули позволяют импортировать только ту часть кода, которая реально используется (tree shaking). В ином случае, чтобы достичь подобного, приходится разбивать большие модули на миллион маленьких микромодулей (в пределе — до уровня отдельных функций), что крайне неудобно в плане поддержки...
Хм-м..
Делал как-то либу для логгинга, которая умеет ANSI цвета выводить в Chrome DevTools (ну и еще кучу всего):
https://github.com/xpl/ololog
Мб пригодится кому.
Ну нет, множества это уже структуры ;)
Нет, имеется в виду именно stake, в смысле денег. Это очень важно в свете перехода на алгоритм proof-of-stake (PoS), где хакер смог бы получить слишком много влияния благодаря украденным деньгам.
> Чтобы построить график известной функции
Так а вы представьте, что функция не известна. Есть большой набор данных, и нужно найти относительно простую функцию, которая наиболее хорошо их описывает. Алгоритм обучения подгоняет коэффициенты, пока такое приближение не будет найдено с достаточной степенью соответствия.
Сделал визуализатор — можно потаскать за точки и увидеть эту аппроксимацию наглядно. Фиолетовые линии это линейные функции (
w1 * x + b1
), оранжевые — взвешенные гиперболические тангенсы (w * tanh (..)
). Красное — итоговая сумма.Веса у тангенсов задаются расстоянием между точками (чем больше, тем больше вес):
https://www.khanacademy.org/computer-programming/function-approximation-editorvisualizer/5512363205263360
> Во-первых, криптовалюта ZCash не считается официльным ..
Вы точно не путаете Zerocoin (ZCoin) и ZCash? Это совершенно разные проекты.