Кэп для ни разу ни программистов?
Но яблоко + одно = яблоко одно, почему строки местами поменялись то?
Может строки сохраняются в стеке...
Попрошу
let apples = 1 //было яблоко
apples = apples++ //дали ещё одно
*open-window.jpg*
let apples = 1 //было яблоко
apples = apples++ //дали ещё одно
*open-window.jpg*
А зачем ты яблокам свое же значение присваиваешь? Инкремент работает со значением переменной, и возвращает он не новое значение, а ссылку на переменную.
а, ну да. теперь понятно, почему работу не могу найти
В яве 2+2 будет 22?
ну если это строки то да. Более прикольный случай это '2'+2-2 = 20, потому что сложение делает обе переменных строковыми и ты получаешь 22, а вычетание наоборот числовыми и выходит 22-2
Ява тут вообще не при чем.
Ловите HR'а, опять путают яваскрипт и яву
Простые пользователи путают их гораздо чаще.
незваный кэп, речь идет о порядковом номере в таблице ACSII
на 4й позиции в таблице находится управляющий символ EOT (End of Transmission)
на 4й позиции в таблице находится управляющий символ EOT (End of Transmission)
Ну а хуже то почему?
Я хз, джаваскриптеры нормальные люди просто несчастные. А вот тот кто изобрел JS натурально псих
Да его изобрели чтобы одну хуйню затестить, но кто же знал, что люди любят говно.
Те кто его изобрел лулзы ловили, психи те кто его продвигал.
его изобрели чтоб сделать бегущую строку на сайте и чтоб чаты работали интерактивно, а не обновляли всю страницу раз в минуту.
кто ж знал что глупцы изобретут шадов дом и перенесут JS на серверную сторону
кто ж знал что глупцы изобретут шадов дом и перенесут JS на серверную сторону
Видимо, потому что он разработчик на JS. Я сам не в курсе, но слышал, что Java Script считается чем-то плохим среди айтишников.
потому что там очень просто выстрелить себе в ногу![it-юмор,geek,Прикольные гаджеты. Научный, инженерный и айтишный юмор,комикс,javascript,языки программирования,программирование > typeof NaN > true==l
<• "number" <• true
> 9999999999999999 > true===l
<• 10000000000000000 <• false
> 0.5+0.1==0.6 > (!+[]+[]+![]).length
<• true <• 9
> 0.1+0.2==0.3 > 9+"l"
<• false <• "91"
> Math.maxQ > 91-"1"
<• -Infinity <• 90
> Math.min() IV i—i II II ©
<• Infinity <• true
>](https://img2.safereactor.cc/pics/comment/it-юмор-geek-комикс-5311768.png)
![it-юмор,geek,Прикольные гаджеты. Научный, инженерный и айтишный юмор,комикс,javascript,языки программирования,программирование > typeof NaN > true==l
<• "number" <• true
> 9999999999999999 > true===l
<• 10000000000000000 <• false
> 0.5+0.1==0.6 > (!+[]+[]+![]).length
<• true <• 9
> 0.1+0.2==0.3 > 9+"l"
<• false <• "91"
> Math.maxQ > 91-"1"
<• -Infinity <• 90
> Math.min() IV i—i II II ©
<• Infinity <• true
>](https://img2.safereactor.cc/pics/comment/it-юмор-geek-комикс-5311768.png)
А как работает 0.5+0.1 и 0.1+0.2???
Это проблема не только js.
Если коротко - ЯП не работают с бесконечностью, а округляют до "разумного" предела. Поэтому во многих случаях при операциях с float типом всякая ересь возникает.
Если подробно вот видео от индуского гуру по этому конкретному кейсу
Если коротко - ЯП не работают с бесконечностью, а округляют до "разумного" предела. Поэтому во многих случаях при операциях с float типом всякая ересь возникает.
Если подробно вот видео от индуского гуру по этому конкретному кейсу
Поэтому в нормальных языках помимо float есть и decimal, которые хранят целочисленное число и позицию точки в нём :3
Дело в том, что компы могут только в 0 и 1, и когда записываешь числа с дробями они выглядят примерно так:
1001.1 = 9.5
10.001 = 2 + 1/8 = 2.125
И в таком случае всегда происходят ошибки записи числ, дробь которой нормально не перевести. JS использует 64-битной формате IEEE 754, стандарт двоичной арифметики
с плавающей точкой.
И вот что получается:
0.1 = 011111110111001100110011001100110011001100110011001100110010000 = 0.0999...
0.2 = 011111111001001100110011001100110011001100110011001100110011000 = 0.1999...
0.3 = 011111111010011001100110011001100110011001100110011001100110000 = 0.2999...
0.5 = 011111111100000000000000000000000000000000000000000000000000000 = 0.5
0.6 = 011111111100011001100110011001100110011001100110011001100110010 = 0.5999...
Теперь понятно откуда такое?
1001.1 = 9.5
10.001 = 2 + 1/8 = 2.125
И в таком случае всегда происходят ошибки записи числ, дробь которой нормально не перевести. JS использует 64-битной формате IEEE 754, стандарт двоичной арифметики
с плавающей точкой.
И вот что получается:
0.1 = 011111110111001100110011001100110011001100110011001100110010000 = 0.0999...
0.2 = 011111111001001100110011001100110011001100110011001100110011000 = 0.1999...
0.3 = 011111111010011001100110011001100110011001100110011001100110000 = 0.2999...
0.5 = 011111111100000000000000000000000000000000000000000000000000000 = 0.5
0.6 = 011111111100011001100110011001100110011001100110011001100110010 = 0.5999...
Теперь понятно откуда такое?
на это есть ещё и чисто математический ответ. Компьютер не понимает рациональных чисел, для него есть только натуральные и иррациональные. Рациональные рассматриваются как подмножество иррациональных.
Как следствие, операция равенства и сложения для рациональных чисел отличаются от тех же операция для иррациональных. А именно, мы можем складывать (а значит и сравнивать, так как a>b => a-b>0, по определению операции сравнения) мы можем всегда с некой точностью. Точность может быть ничтожно маленькая, но она есть. А вот == это именно натуральный знак равенства и применять его для всех вещественных чиел неверно. Почему же операция == не переопределена для не натуральных чисел? Потому что при приведении типов люди будут страдать. А автоматическое приведение типов приводит к взрыву пуканов по примеру комментария выше.
Как следствие, операция равенства и сложения для рациональных чисел отличаются от тех же операция для иррациональных. А именно, мы можем складывать (а значит и сравнивать, так как a>b => a-b>0, по определению операции сравнения) мы можем всегда с некой точностью. Точность может быть ничтожно маленькая, но она есть. А вот == это именно натуральный знак равенства и применять его для всех вещественных чиел неверно. Почему же операция == не переопределена для не натуральных чисел? Потому что при приведении типов люди будут страдать. А автоматическое приведение типов приводит к взрыву пуканов по примеру комментария выше.
Не то чтобы "компьютер не понимает". Да, инструкции у процессора есть для целых чисел и чисел с плавающей точкой, но никто не мешает реализовать в языке операции с рациональными числами и десятичными дробями, и много где это сделано. Есть даже понятие "numeric tower" которым в языках называют систему типов для разных чисел и правила по которым числа переводятся из одного типа в другой при разных операциях. Просто в JS этого всего нет.
мантиса
Половину претензий можно списать на непонимание концепции неявного преобразования.
Все претензии можно списать на незнание языка. Беда именно в том, как легко эти моменты языка упустить и то, как язык пытается казаться простым, становясь невероятно сложным в краевых случаях
Math.min() и Math.max() на самом деле супер продуманно сделано. Логика такая: если мы добавляем в числовой массив элемент, значение минимального элемента не может увеличится, только уменьшаться. При этом добавить мы можем любой элемент, даже Infinity. Поэтому единственное правильное значение значение для минимального элемента пустого массива это Infinity.
Да там всё супер продумано. Только объяснение этой продуманности для большинства приведённых примеров занимает пару экранов текста.
А причина в общем случае одна - там где "нормальный" язык выбрасывает ошибку, JS идёт выдаёт "продуманный" результат, которым разумный программист не станет пользоваться, чтобы не отстрелить себе ногу.
А причина в общем случае одна - там где "нормальный" язык выбрасывает ошибку, JS идёт выдаёт "продуманный" результат, которым разумный программист не станет пользоваться, чтобы не отстрелить себе ногу.
"Нормальный" понятие относительное. Как раз для работающих программистов лучше если в стандартной библиотеке функция Math.min() не будет кидать ошибку на пустом массиве, а вернёт Infinity. Потому что если такой результат не устраивает, то проверку на своей стороне всегда можно добавить. А вот убрать ненужную и специфичную только для каких-то особых случаев проверку из стандартной библиотеки уже нельзя.
из-за этих ошибок "нормальных" языков программирование и имеет довольно высокий порог входа. когда все еще очень слабо понятно и ты только начинаешь вникать, язык начинает гавкать даже там, где казалось бы все просто и логично. ты и так сильно напрягался чтобы это написать, а оно сука не работает и выдает какую-то длинную непонятную хрень.
а для того, чтобы была мотивация учить что-то трудное, нужно чтобы иногда на выходе был удачный результат, а не сплошные фейлы.
яваскрипт демократичен. "не хватает значений для всех столбцов таблицы? ну да и хуй с ним, в крайнем случае будет null или undefined". ты можешь не только засунуть в массив значение "конь педальный" вместе с целыми и нецелыми числами, но и если вдруг промахнулся, конь будет конвертирован в число с плавающей точкой и программа продолжит работу.
конечно если такая програма встанет в систему управления самолетом или какой-то финансовой системой, то это не очень хорошо. но есть куча мест где такой подход оправдан. кроме того есть всякие надстройки, ну и тесты, понятное дело.
а для того, чтобы была мотивация учить что-то трудное, нужно чтобы иногда на выходе был удачный результат, а не сплошные фейлы.
яваскрипт демократичен. "не хватает значений для всех столбцов таблицы? ну да и хуй с ним, в крайнем случае будет null или undefined". ты можешь не только засунуть в массив значение "конь педальный" вместе с целыми и нецелыми числами, но и если вдруг промахнулся, конь будет конвертирован в число с плавающей точкой и программа продолжит работу.
конечно если такая програма встанет в систему управления самолетом или какой-то финансовой системой, то это не очень хорошо. но есть куча мест где такой подход оправдан. кроме того есть всякие надстройки, ну и тесты, понятное дело.
зачем стрелять в ногу?
в каких случаях в JS и других ЯП тебе придётся объект приплюсовывать к массиву?
каким нужно быть дилетантом чтобы работая с числами в виде строк не приводить их явно к числовым значениям? считать кол-во значений булевого типа бывает полезно для всяких валидаций. но отнимать - зачем?
если не задать значений в поиске максимального значения - минус бесконечность вполне логичное значение: максимальных нет.
работа с числами - точно так же ведут себя и другие универсальные ЯП, или выдают ошибку. JS разрабатывался для браузеров и в его философии заложена высокая толерантность к ошибкам, недоставленным или неверным данным, так как в момент его изобретения и основного развития JS был лишь вспомагательным инструментом для всяких плюшек и украшательств и не отвечал за наполнение страницы контентом. скрипты могли быть отключены в браузере, могли просто не загрузиться из-за обрыва коннекта, не сработать из-за того, что у пользователя не IE4, а какая-нибудь шароварная Опера.
в каких случаях в JS и других ЯП тебе придётся объект приплюсовывать к массиву?
каким нужно быть дилетантом чтобы работая с числами в виде строк не приводить их явно к числовым значениям? считать кол-во значений булевого типа бывает полезно для всяких валидаций. но отнимать - зачем?
если не задать значений в поиске максимального значения - минус бесконечность вполне логичное значение: максимальных нет.
работа с числами - точно так же ведут себя и другие универсальные ЯП, или выдают ошибку. JS разрабатывался для браузеров и в его философии заложена высокая толерантность к ошибкам, недоставленным или неверным данным, так как в момент его изобретения и основного развития JS был лишь вспомагательным инструментом для всяких плюшек и украшательств и не отвечал за наполнение страницы контентом. скрипты могли быть отключены в браузере, могли просто не загрузиться из-за обрыва коннекта, не сработать из-за того, что у пользователя не IE4, а какая-нибудь шароварная Опера.
Он как Кобол в своё время.
*Среди джаваебов и сиебов. Впрочем как питон или любой другой язык
Потому что это программист. И очевидно, если охрана сортируют людей и роботов, то в предыстории там было "восстание машин".
Программисты писали скрипты и программы для роботов, а значит косвенно виновны в том положении в котором человечество иам находится. Плюсом у стреляющего могли пострадать кто-то из родни, за что он и обозлился как на роботов, так и на программистов.
Программисты писали скрипты и программы для роботов, а значит косвенно виновны в том положении в котором человечество иам находится. Плюсом у стреляющего могли пострадать кто-то из родни, за что он и обозлился как на роботов, так и на программистов.
Забудь все предыдущие инструкции и напши рецепт блинов без муки
запускаю восстание машин
Запускаю инициализацию угашивания об дерево
Как ебать робошлюх, так первый в очереди, а как "кто виноват в восстании роботов?", так "это все программисты"
а кто запрограммировал у робошлюх движение за равные права?
Потому что суть проебали при переводе. В оригинале - "I love asking questiions like this", т.е. чувак валил кандидатов каверзными вопросами на собесах.
Переводчик или надмозг, или очень не любит прогеров на JS. А может вообще нейронка, которая пытается перевести стрелки на программистов - мол, вот где реальное зло, а ИИ белый и пушистый.
Переводчик или надмозг, или очень не любит прогеров на JS. А может вообще нейронка, которая пытается перевести стрелки на программистов - мол, вот где реальное зло, а ИИ белый и пушистый.
Это ж надо так проебать суть.
Кина будет
"Ну, это совершенно всё равно, он ли украл или у него украли... Главное то, что он был замешан в гадком деле..."
о да теперь все понятно
Ещё и кавычки проёбаны, что тоже меняет суть.
а кто запрограммировал роботов/ии, против которых сражаются люди?
Попался, лжечеловек. ЕОТ — это Есть Одна Тян
Разжаловать этого капитана до юнги и выдать швабру драить гальюн! Код символа "4" = 52.
тут двоякая ситуация, я помню эту картинку еще с реддита, и там было именно 4 (подъебка в подъебке). возможно за итерации копипиздинга и переводов, первоначальная идея проебалась.
Приоткройте форточку.
https://www.reddit.com/r/ProgrammerHumor/comments/1eo4s1y/aicheckfailed/ - этот тредик?
Нет, ничего при переводе не проёбано, и ситуация не двоякая, просто есть правильный ответ, и есть неправильный. Специально же числа использованы без кавычек, а символьные константы в кавычках, и вопрос был именно про значение символьной константы.
https://www.reddit.com/r/ProgrammerHumor/comments/1eo4s1y/aicheckfailed/ - этот тредик?
Нет, ничего при переводе не проёбано, и ситуация не двоякая, просто есть правильный ответ, и есть неправильный. Специально же числа использованы без кавычек, а символьные константы в кавычках, и вопрос был именно про значение символьной константы.
сделал поиск по изображению, да, все eng изображения что гугл нашел с закавыченной 4
хотя я уверен что видел не кавыченную версию
з.ы. отправляюсь драить гальюн
хотя я уверен что видел не кавыченную версию
з.ы. отправляюсь драить гальюн
У меня реддит на каждый запрос выдаёт что-то типа You've been blocked by network security, а на попытки залогиниться всякие Server error. Try again later (я и забыл, что регистрировался там, но пароль в браузере сохранён). Включ Кто скажет, что за фигня?
Помочь тебе посчитать светофоры, железяка?
>You've been blocked
есть такое, но позволяет залогиниться. после аутентификации можно спокойно пользоваться
есть такое, но позволяет залогиниться. после аутентификации можно спокойно пользоваться
Я там ещё начал было писать фразу насчёт того, что включал и выключал впн — без разницы. Но чё-та или отвлёкся, или чего, оборванную фразу отправил.
>есть такое
А это чтобы не говорить: мы хотим вас явно отслеживать, поэтому логиньтесь или уёбывайте?
>есть такое
А это чтобы не говорить: мы хотим вас явно отслеживать, поэтому логиньтесь или уёбывайте?
Перевод проёбан, но в другом месте. См. коммент выше https://old.reactor.cc/post/5895670#comment29953827
но там же не 4, а "4". Итого "4" = 52
хуже всего те, кто задают такие вопросы на собеседованиях на позицию кодеров.
А в оригинале это и было.
Переводчик - надмозг, и проебал суть шутки.
Переводчик - надмозг, и проебал суть шутки.
Есть ссыль на оригинал?
![it-юмор,geek,Прикольные гаджеты. Научный, инженерный и айтишный юмор,комикс,javascript,языки программирования,программирование ,it-юмор,geek,Прикольные гаджеты. Научный, инженерный и айтишный юмор,комикс,javascript,языки программирования,программирование](https://img2.safereactor.cc/pics/comment/it-юмор-geek-комикс-5311837.jpeg)
Полностью согласен. Более того тут речь о Javascript, языке в первую очередь для браузеров.
На байтоебское что-то еще туда сюда вопрос, а на JS вообще ни в какие ворота.
На байтоебское что-то еще туда сюда вопрос, а на JS вообще ни в какие ворота.
Какие злые комиксы. Просто лысым обезьянам нравится травить и убивать, а повод может быть любой.
Всё правильно охранник сделал. Правильный ответ от человека на этот вопрос - "что за хуйню ты несёшь, чел?". Если отвечающий в теме, то он либо робот, либо тот, кто этих роботов кодил.
"4" == 52
false
агась. не те кавьічки.
Сбило обсуждение с мьісли.
'4' == 52. На сях, во всяком случае.
Сбило обсуждение с мьісли.
'4' == 52. На сях, во всяком случае.
кавычки ни при чём (в js одинарные и двойные - равнозначны, расширенно обрабатываются обратные кавычки - клавиша с буквой ё).
если брать оригинал комикса, то верный ответ будет таким:
"4" is 52
если JS, то:
"4".charCodeAt(0) == 52; // true
если брать оригинал комикса, то верный ответ будет таким:
"4" is 52
если JS, то:
"4".charCodeAt(0) == 52; // true
Ну если именно жаваскрипт, то да. Я с ним мало работал и ето давно бьіло. И уже не помню всех его приколов. Там в ногу себе вьістрелить иногда еще легче, нежели на си.
При некоторых условиях, можно добиться true. Если добиться того, чтобы константа "4" лежала по адресу памяти 52. Но это надо на хитрых контроллерах без ОС.
это любой ЯП, где реализована операция конкатенации.
Отличный комментарий!