Если вы хороший разработчик, вы оптимизируете правильные места.
Это поиск баланса между читаемостью и эффективностью. Если вам нужно реверснуть небольшую строку, то сплит-реверс-джоин работает так же быстро, как и что угодно ещё — там разница на уровне пары миллисекунд. При этом смысл кода понимается беглым взглядом, меньше, чем за секунду. Давайте напишем цикл:
var str = '12345';
var reversed = '';
var l = str.length;
while(l--){
reversed += str[l];
}
— и чтобы понять, что делает этот код, понадобится секунд 5.
И так везде. Если вы пишете очень критичное место (вроде сравнения v-dom в таблице на миллион пунктов), то да, его нужно оптимизировать всеми силами и средствами, потому что какая–нибудь мелочь может привести к разницы в полсекунды. Если разницы нет, то и смысла нет — выбирайте, что читаемее.
Во-первых, хаки с ~indexOf, ~~ и |0 действительно удобны когда ты пишешь код на коленке, или тебе нужно например по-быстрому что-то проверить или что-нибудь такое. Вставить в конец |0 гораааздо быстрее и проще, чем писать Math.floor(, затем переносить кусок в конец кода и ставить ). И |0 это одна из самых удобных вещей, что я вообще использую когда пишу код по-быстрому на коленке для себя :)
Это случай, когда над кодом работаешь только ты, и всё в нём понимаешь, хочу заметить.
Во-вторых, на самом деле писать !!value или +value или value|0 вместо Boolean(value) / Number(value) / Math.floor(value) совсем не ухудшает читаемость если ты знаешь, что это. Думаю, что про !!value, +value и value + '' знают примерно все, а вот использовать |0 в каком-то реальном коде естественно содержит много минусов вроде того, что тебе придётся предупреждать всех читающих код, что такие конструкции значат.
Согласен с ответом wearethevoid выше. Да, именно так, другой язык — другое мышление, прямого соответствия нет.
Если хотите примеров, то вот что-то такое например:
— Когда ты завтра придёшь, я могу в этот момент быть перепачкан в краске
— Почему?
— К моменту твоего прихода я буду уже некоторое время рисовать
Но я бы сказал, что вот эта вот табличка из 12 времён — это неудачная попытка формализовать язык. Люди просто общаются, иногда объединяя конструкции will, have, be, это просто несколько часто используемых выражений вместе, а потом кто-то пришёл и сказал «давайте каждую такую комбинацию считать отдельным tense». Вот вам и все возможные комбинации, 12 штук
Ещё типичнейший пример это Future in the Past, которое зачем-то отдельное время, хотя на самом деле это просто использовали глагол will в прошедшем. «Я ему сказал, что я буду рисовать» — «I told him I would draw». А некоторые таблички ещё выделяют be going to и разные модальные глаголы как отдельные tense, ещё прибавляют сюда пассивы, и времён становится чуть ли не под полсотни.
Да, видел что-то подобное.
Ээ, а что сложного в пассиве? Он отличненько существует и в русском ведь. И построение вроде тоже долго объяснять не нужно, все пассивы строятся как be + Ving в активе
Здесь тоже море стереотипов, только с обратной стороны. Увы, возводить этот подход в абсолют тоже ни к чему хорошему не приводит, на своём опыте знаю.
Типичнейший стереотип — про детей или вот это вот:
Future Perfect Continuous (я сам не имею ни малейшего понятия, как оно строится),
Вы ведь поймёте, если я скажу I will have been painting, верно? Более того, в определённой ситуации вы и сами сможете такое составить. Потому что есть своя внутренняя взаимосвязь между словами will, have, be, -ing, свой смысл, который они составляют вместе, и вы можете не иметь никакого понятия, что это называется Future Perfect Continuous, но запросто понимать и даже строить такие конструкции.
Проблема в том, что мнемотехника в случае языков это действительно костыль. Образы, увы, забываются. Ну не сможете вы, запомнив 10к образов, пробегать по ним по всем хотя бы еженедельно. Я уже не говорю о том, что говорить / понимать, вытаскивая слова из дворца памяти, вряд ли получится.
Поэтому образы — это такой промежуточный этап, вроде как по-быстрому перенести словарь в голову, чтобы потом учить из него слова в любой свободный момент времени.
Насколько знаю, ребята, заучившие десятки тысяч после запятой, повторяют их все практически ежедневно, тратят на это уйму времени, а после рекорда сразу же забывают.
Это поиск баланса между читаемостью и эффективностью. Если вам нужно реверснуть небольшую строку, то сплит-реверс-джоин работает так же быстро, как и что угодно ещё — там разница на уровне пары миллисекунд. При этом смысл кода понимается беглым взглядом, меньше, чем за секунду. Давайте напишем цикл:
— и чтобы понять, что делает этот код, понадобится секунд 5.
И так везде. Если вы пишете очень критичное место (вроде сравнения v-dom в таблице на миллион пунктов), то да, его нужно оптимизировать всеми силами и средствами, потому что какая–нибудь мелочь может привести к разницы в полсекунды. Если разницы нет, то и смысла нет — выбирайте, что читаемее.
Во-первых, хаки с ~indexOf, ~~ и |0 действительно удобны когда ты пишешь код на коленке, или тебе нужно например по-быстрому что-то проверить или что-нибудь такое. Вставить в конец |0 гораааздо быстрее и проще, чем писать Math.floor(, затем переносить кусок в конец кода и ставить ). И |0 это одна из самых удобных вещей, что я вообще использую когда пишу код по-быстрому на коленке для себя :)
Это случай, когда над кодом работаешь только ты, и всё в нём понимаешь, хочу заметить.
Во-вторых, на самом деле писать !!value или +value или value|0 вместо Boolean(value) / Number(value) / Math.floor(value) совсем не ухудшает читаемость если ты знаешь, что это. Думаю, что про !!value, +value и value + '' знают примерно все, а вот использовать |0 в каком-то реальном коде естественно содержит много минусов вроде того, что тебе придётся предупреждать всех читающих код, что такие конструкции значат.
Кинет ошибку
Матрица — это тензор, частный случай
Если хотите примеров, то вот что-то такое например:
— Когда ты завтра придёшь, я могу в этот момент быть перепачкан в краске
— Почему?
— К моменту твоего прихода я буду уже некоторое время рисовать
Но я бы сказал, что вот эта вот табличка из 12 времён — это неудачная попытка формализовать язык. Люди просто общаются, иногда объединяя конструкции will, have, be, это просто несколько часто используемых выражений вместе, а потом кто-то пришёл и сказал «давайте каждую такую комбинацию считать отдельным tense». Вот вам и все возможные комбинации, 12 штук
Ещё типичнейший пример это Future in the Past, которое зачем-то отдельное время, хотя на самом деле это просто использовали глагол will в прошедшем. «Я ему сказал, что я буду рисовать» — «I told him I would draw». А некоторые таблички ещё выделяют be going to и разные модальные глаголы как отдельные tense, ещё прибавляют сюда пассивы, и времён становится чуть ли не под полсотни.
Ээ, а что сложного в пассиве? Он отличненько существует и в русском ведь. И построение вроде тоже долго объяснять не нужно, все пассивы строятся как be + Ving в активе
Типичнейший стереотип — про детей или вот это вот:
Вы ведь поймёте, если я скажу I will have been painting, верно? Более того, в определённой ситуации вы и сами сможете такое составить. Потому что есть своя внутренняя взаимосвязь между словами will, have, be, -ing, свой смысл, который они составляют вместе, и вы можете не иметь никакого понятия, что это называется Future Perfect Continuous, но запросто понимать и даже строить такие конструкции.
Интересно, расскажите
| _ _|
/`ミ _x 彡
/ |
/ ヽ ノ
/ ̄| | | |
| ( ̄ヽ__ヽ_)_)
\二つ
Только вот жаль, это не очень прояснило обычные паттерны его использования.
Поэтому образы — это такой промежуточный этап, вроде как по-быстрому перенести словарь в голову, чтобы потом учить из него слова в любой свободный момент времени.
Насколько знаю, ребята, заучившие десятки тысяч после запятой, повторяют их все практически ежедневно, тратят на это уйму времени, а после рекорда сразу же забывают.