Pull to refresh

Comments 51

Я прошу прощения, но эта информация есть во всех учебниках по языкам, в которых есть ссылочные типы, от С++ до джавы. Неужели в js это появилось только недавно и об этом мало кто знает?
П.С. Комментарий без сарказма и попыток оскорбить кого-либо.
Нет, это было всегда, просто есть такой сомнительный тренд в наше время — писать капитанские статьи по JS
Ну они получше, чем высеры «редакторов Хабра» с кучей ошибок и полным непониманием темы своей писанины.

Ну что ж… Поздравляю, вы освоили основы ООП ссылочного типа.

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

Во всём этом смущают теги. high performance? Perfect code? Вы уверены?

Серия «я познаю мир». По-моему, такому место на medium.

напротив же. На Медиуме статьи гораздо серьезнее.
И это означает автоматически хороший материал?

Я не понимаю хабр. За что плюс автору но минус мне? Автор перевёл какую-то дичь но снимает с себя ответственность говоря что это перевод и статья не моя. Всё претензии к источнику. Так не надо переводить такое и тем более постить такой мусор на хабре.

Я не снимаю ничего с себе, это раз (В любой момент могу просто скрыть из публикаций). Во-вторых, я перевел статью поскольку посчитал её полезной сообществу (но вижу что здесь ппц сколько грамотных набежало, каждый со своим мнением...). И в-третьих, прежде чем поливать окружающих грязью, убедитесь что сами хоть чего-то полезного обществу выдаете, ну кроме оригинальной критики. image
Мопед не мой. Я просто разместил объяву.
Тоже кстати удивляет. По мне так рассказать самостоятельно в разы проще, чем перевести, и если уж переводишь — то из глубокого уважения к автору и признания оригинальности его идей.
У меня противоположное мнение сложилось за годы чтения медиума.
На медиуме намного больше статей в абсолютных числах и попадаются очень даже неплохие, но средний уровень примерно как у этой.
На хабре, конечно, тоже уровень статей неуклонно падает, но пока еще уровня медуима не достиг.
Скорее, на dev.to
Там недели не проходит, чтобы кто-нибудь не написал очередной гайд по map, filter и reduce
Просто на медиуме аудитория реагирует более адекватно. Там нет такого, чтобы каждый комментатор мнил себя крутым рецензентом со своей колокольни. Уровень подготовки читателей может быть абсолютно разным.

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

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

Дело не в адекватности. Какой смысл писать статью о том, что до тебя уже тысячу раз написали в любом учебнике "Язык… для начинающих"? Тем более, что эта статья – пример того, как не надо объяснять материал. Почему не надо использовать присваивание пустого массива? А что, если мне как раз не надо затронуть остальные переменные, которые ссылаются на этот массив?


Нормальный учебник напишет в принципе о том, что есть условная передача по ссылке и по значению, а выводы типа этой статьи обучаемый должен сделать сам. В крайнем случае, можно задать наводящий вопрос. Иначе надо ждать следующую статью, "Почему не надо удалять все содержимое объекта, переназначая его на {}?", а то в этой статье как-то недостаточно подробно описан этот момент.

Какой смысл писать статью о том, что до тебя уже тысячу раз написали в любом учебнике «Язык… для начинающих»?

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

А что, если мне как раз не надо затронуть остальные переменные, которые ссылаются на этот массив?

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

Согласен. Только если это выбранная наугад статья для тренировки навыков перевода, то, во-первых, стоит вспомнить такое понятие как "перевод в стол", а во-вторых, я считаю, что хабр – это не то место, где стоит рассчитывать на помощь в отработке навыков перевода как на первоочередную цель публикации статьи. Одно дело – корявый (в силу отсутствия опыта) перевод отличной технической статьи (на техническом ресурсе), другое дело – корявый же перевод посредственной статьи.


Другое дело, если переводчик считает, что это статья достойна того, чтобы поделиться ей с аудиторией хабра, а не просто вытащил ее наугад из рандомайзера медиума. Но в этом случае моя претензия сводится к другому – я считаю, что эта статья посредственная, она говорит о вещах, которые тысячу раз до этого освещались куда как лучше, и вообще делает акцент совсем не на том, что полезно для начинающего разработчика. Потому что правильный ответ на вопрос "Почему не надо удалять все элементы массива, переназначая его на []?" должен звучать так: потому что это не удаление элементов массива, а присвоение переменной нового значения.


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

Думаю так люди развиваются.

А почему обязательно на хабре?


потом делятся мнениями в статьях

Зачем? В статьях нужно чем-то достойным делиться, а не мнениями.

Критерии достойного? По-моему это все субъективно, так же как и мнения.
Ну как минимум это должно быть что-то отличное от того, что написано в каждом первом учебнике

Лично я считаю достойным статьи то, что нельзя нагуглить на русском языке.

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

Я прекрасно понимаю подобных авторов: они сделали для себя открытие, узнали что-то новое и им хочется поделиться с аудиторией, но тут им наваливают комментарии в стиле «да это уже сто раз обсуждалось в учебниках/блогах/мануалах». При этом есть странная вещь: почему-то критики сами нечасто создают годные статьи, которые бы достаточно раскрывали тему.
Спасибо за слова поддержки. Я бы даже поставил лайк, но мне завалили рейтинг)

Прекрасная логика. Не важно качество материала. Лишь бы было огромное количес во статей. А давайте я завтра опубликую статью в чем разница между var и let. Полезный вклад в сделаю в хабр?

Так напишите. Может, получится лучше, чем в сухой документации. Что является мерилом качества? Чье-то мнение? Типа, если кто-то это уже знает, то информация неактуальна и неинтересна? В свое время, когда я начинал изучать Java, я читал множество подобных статей, когда кто-то объяснял что-то своими словами. Да, порой статьи были не очень, но самое главное то, что в каждой статье было что-то, что было полезно для меня и что помогало мне понять непонятные вещи, написанные сухим языком.

Вы не поверите, но как раз по разнице между var и let недавно была статья на хабре.
Мне понравилась...

Я прекрасно понимаю подобных авторов: они сделали для себя открытие, узнали что-то новое и им хочется поделиться с аудиторией

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


почему-то критики сами нечасто создают годные статьи

Потому что годную статью создать трудно. Годных статей — крайне мало.

Я прекрасно понимаю подобных авторов: они сделали для себя открытие, узнали что-то новое и им хочется поделиться с аудиторией, но тут им наваливают комментарии в стиле «да это уже сто раз обсуждалось в учебниках/блогах/мануалах».

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


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


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


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

Иррелевантно обсуждению.
Вот видите, это как раз-таки и демонстрирует то о чём я писал выше. Вы пытаетесь сказать "сам дурак" практически переходя на личности. Это "аргумент" из серии Ad hominem. Рекомендую изучить на досуге.

UFO just landed and posted this here
UFO just landed and posted this here
А просто уйти на TypeScript – не? Всё равно ж приходится линтер гонять – так почему не использовать сразу компилятор, заодно ещё от пачки ошибок избавиться.
UFO just landed and posted this here
Сразу подмывает привести примеры из практики, где очищать массив/мапу/сет лучше именно через присваивание. Ровно по той же причине: кто уже получил этот массив – будет работать с тем, что получил, и не будет сюрприза. I — immutability!

Случай из статьи (мутабельный массив, ссылки на который хранятся где-то ещё) – imho достаточно редок, обращаешься с таким массивом, как с полным ночным горшком, и тут уж знаешь, что на него ссылки держат и присваивать его нельзя.

На js и прочем не кодю(жу), но мне было интересно.

UFO just landed and posted this here

JSPerf уже давно не считает бенчмарки правильно.

откуда инфа? как правильно?
посмотрел. чел сказал, что benchmark.js «считает» правильно. то есть что напишешь, то и «насчитает». нужно уметь писать микробенчи, но к способу измерения это отношения не имеет.

и какие альтернативы? нет их. кашу, которую jit нагенерил, сможет понять только разработчик этого jit + небольшая кучка гениев. а точность профилировщика в браузере недостаточна для микробенчмарков.

Все гораздо проще, чем вы думаете. Не надо юзать бенчмарки на jsperf, надо смотреть проблемные места конкретного приложения. В конкретном месте с конкретными условиями — и сразу все становится понятно, где и что надо оптимизировать. Профайлер в devtools показывает все очень наглядно.


Насчет benchmark.js, я, если честно, не помню, но там, на сколько я помню, суть не только в тестировщике, а скорее в самих тестах.


Прислушиваться к определенным техникам есть смысл, но не очень большой, если честно. Так как от релиза к релизу (v8) все это оптимизируется и выполняется по разному.

то что от релиза меняется всем (надеюсь) понятно. свежий пример: раньше hasOwnProperty() был самым тормозным способом проверки наличия свойства, а сейчас стал самым шустрым (что логично), по крайней мере в ff и ch.

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

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

Ну, пожалуй, определенную поверхностную картину такие бенчмарки, конечно, могут дать. Но надо держать в голове всегда, что это достаточно не точные тесты.

бенч составлен неправильно, потому что 800М оп/с — это 5 тактов процессора, т.е. движок JS выкинул создание и присвоение []. вот этот вариант точнее, хотя 100М оп/с — скорее всего тоже врет, уж слишком много:
https://jsperf.com/array-splice-vs-array-length-0/30
я бы поостерегся называть jsperf бенчмарком. Результаты, которые вы там получаете не стоят и выеденного яйца.
Хм, интересно: если удалять элементы массива с помощью [], старый массив останется в памяти, если на него нет ссылки? Его кто-нибудь грохнет?
Sign up to leave a comment.

Articles