Конечно, может быть ситуация, когда на тебе едут всю жизнь или не благодорят за помощь. Но тут немного другая история, на мой взгляд. Корень моего возмущения — это то, что в такой плевой вещи (подумаешь, конкурс на маленький js сниппет) — люди и то видят какой-то подвох и ищут проблемное место вместо простого "спасибо, интересная статья" или хотя бы просто "очень красиво получилось".
Да, безусловно, автор не написал этот шейдер, и да, безусловно, этот шейдер тут по сути и делает вау-эффект. Но автор не выехал на этом на крутую работу и не забыл упомянуть откуда он его, в конце концов, взял. Просто любой из нас — натура творческая, в той или иной степени. И все вот эти конкурсы и маленькие победы — они с целью нашей же мотивации развиваться дальше. А это надо поощерять в людях, пусть даже в этом конкретном примере не все, что сделано — сделано автором.
Все-таки нет, все-таки по вашей логике нельзя себе приписывать какое-то творение, если оно не создано полностью собственноручно. По-вашему, никакой фреймворк не имеет прав на существование — ведь он всего-лишь оболочка для каких-нибудь DOM API итд. А если сравнивать пропорционально — сколько умественных усилий потрачено, например, на написание "сжатой галактики" и, например, того же Реакта — то тут вполне сравнимая аналогия — логика Реакта тоже несравнимо мала относительно логики тех же браузерных движков и их API. Ну так тогда давайте скажем все дружно — Дэн, какого ты приписываешь себе Реакт, это ж не Реакт вовсе — это просто обертка над API. Если вы думаете, что API это не тот же шейдер, то вынуждет вас поправить: никаких различий между ними нет. Это third-party код, что там, что тут. Просто в API это все завернуто в интерфейс. А тут — просто имплементация без интерфейса.
Заслуга в чем? Это не конкурс по шейдерам, это конкурс по минимизации кода с достижением впечатляющего результата. Если бы автор это на канвасе сам рисовал — какая разница? Канвас это тоже API браузера, а не его личная — значит и использовать, по вашей логике, нельзя.
Если вы про то, что filter и map можно завернуть в тот же reduce или про то, что isNumber не выносить за условие — то это бред, это не повышает производительность написания продукта ни разу. Если про что-то другое — поясните.
Омг, серьезно? Он что, продавал это за деньги, воруя чьи-то наработки или что? Это все на энтузиазме и просто заставляет подумать как достичь впечатляющего результата, исходя из практического ничего. Вот из-за таких умников как вы, в России жопа и пи*дец, так как никто никого не любит, не мотивирует и не видит в ближнем своем друга, а видит только возможность докапаться и наехать.
Лол, насчет длины массива это плохой совет, согласен, а вот насчет того, что между фор и форич нет разницы это бред. Во-первых, начнем с того, что фор гибче форича в плане брейка. Форич не брейкнешь просто так. Во-вторых, это функция, это отдельный LE-обьект в виде ее хвоста и прочий кложур. Ну а в третьих, это не микрооптимизация. Это как раз дохрена какая оптимизация. Дело в том, что часто почему то разрабы думают, что если там не ядерная физика под капотом какой-то функции, то вроде бы и все норм, оптимизировать не надо. Только вот одна функция может вызывать другую, а та третью и в конце концов случается, что одна какая-то маленькая функция, внутри которой форич, вызывается милион раз во время скрипта. И как раз если бы там был фор, то, возможно этот миллион работал бы быстрее. Безусловно, фор это императивщина. И не надо ее писать везде или писать нечитаемые циклы. Но, бл*дь, не надо их бояться.
Скорее проблема здесь в том, что эти советы (некоторые из них) бесполезны. Например тот же кеш длины массива — это делают все движки уже на фоне и так. Также про то, что ~~ или другие битовые операции снимают дробную часть. Это верно, но нигде не сказано, что это не то же самое, что Math.floor. Диапазон чисел для Math.floor гораздо шире, чем для операторов и использовать его (тот или иной оператор) можно только тогда, когда на 100% знаешь, что число не будет слишком большим.
Омг, если вам кажется, что такой код трудно читать, значит вы код наверное вчера писать начали. Я просто поражаюсь когда какой-то сниппет, едва ли на 1% труднее примеров с MDN начинают поливать грязью, что, мол, такое читать невозможно. Просто фейспалм вызывает такое. Нет, я не говорю, что надо писать сразу обфусцированную хреновину, но, епрст, закешировать длину массива в цикле — это каждому школьнику известно и читается очень просто. Если для вас, конкретно, нет — то это не "нечитаемый код", а малый опыт чтения кода или малый опыт работы с этим языком.
Интересно, гляну. Насчет переменных — так все равно же у них есть какой-то кеш или что-то вроде infer tree для такого. Почему бы переменные в ифе тоже не расчитывать..?
Спасибо, да, как раз хочу попробовать пересесть на TS и забыть про flow раз и навсегда. Насчет переноса условия прямо внутрь if я в курсе, но в этом и суть — бывают условия громоздкие или не совсем очевидные, в таком случае надо их выносить в отдельную переменную с ясным названием, которая позволит просто читать и понимать такой код.
Что-то подобное я читал от инсайдера гугла, какой-то экс-программист писал как у них там тоже так же вот устроено. Но продукты гугла на голову серьезнее и эффективнее фейсбука.
Flow для меня ассоциируется с болью. Работал на нем какое-то время, но элементарные вещи эта штука не понимает. Или я тупой. Вообще не люблю продукты фейсбука, много хайпа, мало пользы.
Вот знаете, вроде и обидеть не хочется, но и приятного после прочтения тоже мало чего рождается. Зачем нам эти мысли вслух? Зачем вы начинаете копаться в языке не прочитав ничего по нему? Ведь вы даже азов не выучили. Просто представьте если бы кто-то сравнивал Норвежский язык и Русский — но без словарей, без этимологии итд, просто так. Смотрите — здесь слово похоже, но значит оно совсем другое — как так? Есть спецификация, либо читаете ее и вопросов больше не рождается, либо хотя бы каких-нибудь Илью Кантора, Акселя Раушмайера, Дмитрия Сошникова, Кайла Симпсона, Дугласа Крокфорда… Материалов в нашу JS-эру пруд пруди. Нет, надо взяться, наковырять на авось какой-то несуразицы. Так ладно бы вы это в файлик на рабочем столе сохранили и вернулись к нему со здравыми мыслями когда лень уйдет и появится желание читать мануалы/спеку. Так нет, надо накатать на Хабр, ведь это же бложек куда грех не написать. :(
Вот не хочется бомбить, но прямо читать такое больно.
Ничего не понял, прочитав до конца. Причем тут Ада? Чем классический не раздутый хеллоу-ворлд плох для новичка? Новичек он поэтому и новичек, что потом только узнает про все остальное, а не сейчас.
Странная статья.
Ага, согласен, ну тогда:
По спеке вроде не надо нью у Array конструктора — поведение одинаковое — что без, что с.
Еще проще:
Конечно, может быть ситуация, когда на тебе едут всю жизнь или не благодорят за помощь. Но тут немного другая история, на мой взгляд. Корень моего возмущения — это то, что в такой плевой вещи (подумаешь, конкурс на маленький js сниппет) — люди и то видят какой-то подвох и ищут проблемное место вместо простого "спасибо, интересная статья" или хотя бы просто "очень красиво получилось".
Да, безусловно, автор не написал этот шейдер, и да, безусловно, этот шейдер тут по сути и делает вау-эффект. Но автор не выехал на этом на крутую работу и не забыл упомянуть откуда он его, в конце концов, взял. Просто любой из нас — натура творческая, в той или иной степени. И все вот эти конкурсы и маленькие победы — они с целью нашей же мотивации развиваться дальше. А это надо поощерять в людях, пусть даже в этом конкретном примере не все, что сделано — сделано автором.
Все-таки нет, все-таки по вашей логике нельзя себе приписывать какое-то творение, если оно не создано полностью собственноручно. По-вашему, никакой фреймворк не имеет прав на существование — ведь он всего-лишь оболочка для каких-нибудь DOM API итд. А если сравнивать пропорционально — сколько умественных усилий потрачено, например, на написание "сжатой галактики" и, например, того же Реакта — то тут вполне сравнимая аналогия — логика Реакта тоже несравнимо мала относительно логики тех же браузерных движков и их API. Ну так тогда давайте скажем все дружно — Дэн, какого ты приписываешь себе Реакт, это ж не Реакт вовсе — это просто обертка над API. Если вы думаете, что API это не тот же шейдер, то вынуждет вас поправить: никаких различий между ними нет. Это third-party код, что там, что тут. Просто в API это все завернуто в интерфейс. А тут — просто имплементация без интерфейса.
Мде, печаль. С TS не работал, но думал это только Flow такой.
Заслуга в чем? Это не конкурс по шейдерам, это конкурс по минимизации кода с достижением впечатляющего результата. Если бы автор это на канвасе сам рисовал — какая разница? Канвас это тоже API браузера, а не его личная — значит и использовать, по вашей логике, нельзя.
Если вы про то, что filter и map можно завернуть в тот же reduce или про то, что isNumber не выносить за условие — то это бред, это не повышает производительность написания продукта ни разу. Если про что-то другое — поясните.
Омг, серьезно? Он что, продавал это за деньги, воруя чьи-то наработки или что? Это все на энтузиазме и просто заставляет подумать как достичь впечатляющего результата, исходя из практического ничего. Вот из-за таких умников как вы, в России жопа и пи*дец, так как никто никого не любит, не мотивирует и не видит в ближнем своем друга, а видит только возможность докапаться и наехать.
Никому и никогда не советую внедрять Flow в свой проект )
https://flow.org/try/#0PTAEHsFsHNQRgFAG04BpQDsCuAbH6BmAXQDoAzASxwBcBTAJwAoNQBeAPlGoE8AHW8GUxtWrUAHJskAEYNxAShKQAhr2ZtOLAFTwADPISGQEGKABMCAMbgMAZ2qghY5gC5Q9+hQywAPpiwyDPIaoADeCACQ1nYOFLYAcgGy9GxcfAJCLKJikklyCKCFoPS01Fj0LHGJgSkA-MI6cLqgbhgIAL6GQA
Лол, насчет длины массива это плохой совет, согласен, а вот насчет того, что между фор и форич нет разницы это бред. Во-первых, начнем с того, что фор гибче форича в плане брейка. Форич не брейкнешь просто так. Во-вторых, это функция, это отдельный LE-обьект в виде ее хвоста и прочий кложур. Ну а в третьих, это не микрооптимизация. Это как раз дохрена какая оптимизация. Дело в том, что часто почему то разрабы думают, что если там не ядерная физика под капотом какой-то функции, то вроде бы и все норм, оптимизировать не надо. Только вот одна функция может вызывать другую, а та третью и в конце концов случается, что одна какая-то маленькая функция, внутри которой форич, вызывается милион раз во время скрипта. И как раз если бы там был фор, то, возможно этот миллион работал бы быстрее. Безусловно, фор это императивщина. И не надо ее писать везде или писать нечитаемые циклы. Но, бл*дь, не надо их бояться.
Скорее проблема здесь в том, что эти советы (некоторые из них) бесполезны. Например тот же кеш длины массива — это делают все движки уже на фоне и так. Также про то, что ~~ или другие битовые операции снимают дробную часть. Это верно, но нигде не сказано, что это не то же самое, что Math.floor. Диапазон чисел для Math.floor гораздо шире, чем для операторов и использовать его (тот или иной оператор) можно только тогда, когда на 100% знаешь, что число не будет слишком большим.
Омг, если вам кажется, что такой код трудно читать, значит вы код наверное вчера писать начали. Я просто поражаюсь когда какой-то сниппет, едва ли на 1% труднее примеров с MDN начинают поливать грязью, что, мол, такое читать невозможно. Просто фейспалм вызывает такое. Нет, я не говорю, что надо писать сразу обфусцированную хреновину, но, епрст, закешировать длину массива в цикле — это каждому школьнику известно и читается очень просто. Если для вас, конкретно, нет — то это не "нечитаемый код", а малый опыт чтения кода или малый опыт работы с этим языком.
К сожалению, очень очень близко.
Интересно, гляну. Насчет переменных — так все равно же у них есть какой-то кеш или что-то вроде infer tree для такого. Почему бы переменные в ифе тоже не расчитывать..?
Спасибо, да, как раз хочу попробовать пересесть на TS и забыть про flow раз и навсегда. Насчет переноса условия прямо внутрь if я в курсе, но в этом и суть — бывают условия громоздкие или не совсем очевидные, в таком случае надо их выносить в отдельную переменную с ясным названием, которая позволит просто читать и понимать такой код.
Что-то подобное я читал от инсайдера гугла, какой-то экс-программист писал как у них там тоже так же вот устроено. Но продукты гугла на голову серьезнее и эффективнее фейсбука.
Flow для меня ассоциируется с болью. Работал на нем какое-то время, но элементарные вещи эта штука не понимает. Или я тупой. Вообще не люблю продукты фейсбука, много хайпа, мало пользы.
Как можно так тупить?
https://flow.org/try/#0MYewdgzgLgBAHjAvDAFGAXDMBXAtgIwFMAnGAHxmmIEswBzASkxwJKQD4YBvAKAEhQkWNQgA5PEVLIoATwAOhEADMsSRMgDkLSRv7UVKEeNbEG3fn2KEo2YmFUAqGAEYADPwC+-KzbswATO5ePDxwKM4MQA
Или вот так?
https://flow.org/try/#0NoRgNAdgrgNjYGYC6A6AZgSxgFwKYCcAKCAAgF4A+E7ATwAdcB7NE0s9kgcmgFsAjApwCUKHgEM6xclVIAqEiAAMQoA
Одни люди делают системы, другие эти системы используют.
Вот знаете, вроде и обидеть не хочется, но и приятного после прочтения тоже мало чего рождается. Зачем нам эти мысли вслух? Зачем вы начинаете копаться в языке не прочитав ничего по нему? Ведь вы даже азов не выучили. Просто представьте если бы кто-то сравнивал Норвежский язык и Русский — но без словарей, без этимологии итд, просто так. Смотрите — здесь слово похоже, но значит оно совсем другое — как так? Есть спецификация, либо читаете ее и вопросов больше не рождается, либо хотя бы каких-нибудь Илью Кантора, Акселя Раушмайера, Дмитрия Сошникова, Кайла Симпсона, Дугласа Крокфорда… Материалов в нашу JS-эру пруд пруди. Нет, надо взяться, наковырять на авось какой-то несуразицы. Так ладно бы вы это в файлик на рабочем столе сохранили и вернулись к нему со здравыми мыслями когда лень уйдет и появится желание читать мануалы/спеку. Так нет, надо накатать на Хабр, ведь это же бложек куда грех не написать. :(
Вот не хочется бомбить, но прямо читать такое больно.
Ничего не понял, прочитав до конца. Причем тут Ада? Чем классический не раздутый хеллоу-ворлд плох для новичка? Новичек он поэтому и новичек, что потом только узнает про все остальное, а не сейчас.
Странная статья.