javascript :: языки программирования :: it-юмор :: картинка с текстом :: geek (Прикольные гаджеты. Научный, инженерный и айтишный юмор)

картинка с текстом javascript языки программирования it-юмор geek 
картинка с текстом,javascript,языки программирования,it-юмор,geek,Прикольные гаджеты. Научный, инженерный и  айтишный юмор
Подробнее

картинка с текстом,javascript,языки программирования,it-юмор,geek,Прикольные гаджеты. Научный, инженерный и айтишный юмор
Еще на тему
Развернуть
Ебанет
Должно.
'1'+1=11
Да что тут непонятного, " - " применяется только к числам, по этому строка "5" приводится к числу и из 5 вычитается 2.
" + " применяется как к числам для сложения, так и к строкам для конкатенации, первый операнд строка"5", значит применяем конкатенацию, приводя 3 к строке и получаем "53".
А последний пример комбинация из двух первых по сути, только к двум применяется унарный оператор " - ", "2" приводится к числу 2, добавляется отрицание -2, приводится опять к строке "-2", а потом конкатенируется с "5"!
Но лучше бы я стал проституткой...
Да я-то понимаю, но если код на тысячи строк, то каждый раз вчитываться в подобное и прикидывать в голове - теряешь кучу времени.
А если у тебя там еще не константы, а пара переменных, которые пришли из разных мест через несколько слоев вызовов функций, то это, вообще, поле чудес с попыткой угадать "5" там было или 5.
Ебанет
весь фронт в труху
'2' + 2
mordog mordog 21.10.202217:39 ответить ссылка 1.8
22
перейдем сразу к классике
https://www.destroyallsoftware.com/talks/wat
У меня уже защитный механизм от плохих ситкомов - закадровый смех вызывает отвращение
3IKMbIX 3IKMbIX 21.10.202218:14 ответить ссылка -7.4
но тут-то он искренний
Но это вовсе не закадровый смех. Это смех аудитории, это было живое выступление.
dadv dadv 22.10.202201:40 ответить ссылка 1.8
бля, это было охуительно! есть ещё?
'22'
imhosep imhosep 21.10.202218:03 ответить ссылка -1.3
а вот хуй знает, какого оно будет типа.
Очевидно, что если получилось не 4, то string
Raline Raline 21.10.202218:34 ответить ссылка -1.0
Ну, зачем так усложнять?
let pidor = +traps + +memes;
Khorosho Khorosho 21.10.202218:42 ответить ссылка -0.3
let it = bee
петь на сей мотив, а не битлов
Обязательно ебанёт.
minmatar minmatar 21.10.202221:58 ответить ссылка -0.2
Большая чясть механизма определяет тип данных на каждом этапе сложения.
ViAyayay ViAyayay 21.10.202217:36 ответить ссылка 7.5
Ищет в npm библиотеку для сложения чисел
Если npm install add-two-integers не сработало - то всё, числа складывать не удаётся, слишком сложная задача, на неё даже никто модуль не написал ещё.
keltar keltar 21.10.202217:47 ответить ссылка 2.7
Так только джун ответит. Опытный фронтенд сделает запрос на бэк, а дальше это проблема разработчиков, на фронте всё работает
Сначала посмеялся, потом представил что правда будут дёргать бэк для складывания чисел, и посмеялся ещё раз. Спасибо! :-D
keltar keltar 21.10.202218:21 ответить ссылка 2.9
Ох, если бы это были шутки
Я как-то видел код, где число переводили строку. И дергали для этого бэк.
можно создать div, дальше двумя циклами напичкать его спанами и в конце узнать кол-во спанов внутри дива.
Просто наберите в консоли 0.1+0.2 и поймете почему
> 0.1+0.2
<• 0.30000000000000004
>
ixekon ixekon 21.10.202217:50 ответить ссылка 3.4
Но fixed point math сильно проще чем то, что на картинке. Даже на js. Другой вопрос, что надо вовремя понять, что тебе надо fixed point.
keltar keltar 21.10.202217:54 ответить ссылка -0.4
Числа с плавающей точкой это адъ и Израиль не только в JS. Ноги растут от стандарта обработки и записи этих чисел в память компьютера.
"Стандарт обработки"?! Не знаю с какой планеты ты достал компьютер, но у нас тут это все упирается в, мать его, физический принцип хранения и передачи данных. Который в свою очередь растет из фундаментальной науки, дискретной математики, на основе которой и были созданы компьютеры.
frenzy frenzy 21.10.202218:50 ответить ссылка 0.2
IEEE 754 - стандарт работы с двоичными числами с плавающей точкой. Почти вся вычислительная техника сегодня следует этому стандарту. Это не единственный стандарт цифровой арифметики и далеко не единственный возможный. Никакая фундаментальная наука не запрещает нам использовать троичные/четверичные вычислительные машины (не решит проблему точности) и другие способы представления дробного числа в памяти машины. Просто есть стандарт, и ему следуют для совместимости и переносимости программ.
Никто, конечно же, не мешает.
Но в реальном мире процессоры поддерживают работу с дробными числами только в этом формате. Потому если ты хочешь другой, то будь готов реализовывать его руками(ну или брать либу), и будь готов к критической просадке производительности, если тебе нужно много арифметики. Потому что тебе всю блядскую арифметику придется делать самому.
И, на самом деле, абсолютно везде, где идёт работа с деньгами, то есть, дробные числа это суммы денег, всё делается именно таким образом. Потому что точность там намного важнее скорости.
А, скажем, просчёт сцены для игры - на неточных, но быстрых флоатах.
Дроби это далеко не обязательно floating point. Никто не отменял fixed point, что собственно всегда и используется для денег.
dadv dadv 22.10.202201:51 ответить ссылка 0.9
Не всегда.
У тебя может быть несколько процессов с разной точностью. По обстоятельствам, не зависящим от тебя. Грубо говоря, где-то используется точность до цента, а где-то до сотой доли цента. Несмотря на то, что физически десятых и сотых долей цента не существует, в расчётах они могут участвовать. И внешние сервисы могут использовать различную точность, и тебе нужно с ними коммуницировать.
Есть также сервисы, которые в протоколе указывают, сколько знаков после запятой используется, и это число изменяемое в зависимости от специфики.
Так что - нет, нихуя оно не фиксед в общем случае.
Не надо путать визуализацию с внутренним представлением. Показываться они могут до цента или до сотой доли цента, а финансовые вычисления - до пятого знака после запятой. И fixed point это формат хранения и правила операций. По сути, значение в fixed point это три целых числа: до запятой, после запятой и фиксированный порядок. И по сути это целочисленная арифметика.
dadv dadv 22.10.202202:59 ответить ссылка 0.9
Я ниже написал.
Точка может плавать. Никто не гарантирует одинаковый порядок, это невозможно для общего случая. Разве что для одной валюты, и одного типа операций.
Ну и ты прав, по сути, всё равно это переводится в целые, считается в них, но всё равно надо везде и всегда помнить, где эта сраная точка, для каждой операции, когда стыкуются два разных процесса с разной точностью(вычисление процента и фактическое движение по счёту, например), и стыковка с внешними сервисами.
Всё нужно считать до пятого знака.
dadv dadv 22.10.202211:47 ответить ссылка 0.9
Нет, это опасно. Особенно если ты работаешь не с одной валютой и сложными выебонами.
Надо тебе посчитать 1.257% от суммы, и ты уже теряешь точность со своими 5 знаками.
Не бывает быстрых вычислений без потери точности, вопрос лишь в правилах округления. Но я вообще имел в виду рубли. Вычисления с fixed point до пятого знака дают удовлетворительную точность.
dadv dadv 22.10.202213:19 ответить ссылка 0.9
Ну так если цель "удовлетворительная" точность, то вообще флоаты. Они дают ошибку в последнем знаке, и только на единицу в одном вычислении. В варианте "только 5 знаков", ошибка может быть в 6 знаке, что на несколько порядков больше, чем в последнем во флоате.
Но, да. Я работал со всеми валютами, кроме рубля - он сейчас забанен везде.
> Они дают ошибку в последнем знаке

Только вот для плавающей точки последний знак это могут быть сотни. Не сотые доли, а сотни.
dadv dadv 22.10.202217:13 ответить ссылка 0.9
Я, с некоторым опытом в финансах, если честно, вообще с трудом представляю себе понятие "удовлетворительная точность". Наши регуляторы за такую хуйню выебут и высушат. Нельзя просто так взять, и отбросить сумму денег при расчете в большинстве случаев. Даже если эта сумма для одной транзакции типа маленькая.
На сотнях миллионов транзакций получается нихуя не маленькая.
Удовлетворительная это, очевидно, удовлетворяющая правилам проведения финансовых вычислений.
dadv dadv 22.10.202217:27 ответить ссылка 0.0
И, насчёт быстрых вычислений.
Пока ты в рамках одного фин процесса, с одной валютой и требованиями, у тебя обычные лонги(в инты может не влезть), и просто рядом тусуются настройки количества знаков, валюты, и отэтовсе. Сами расчеты быстрые, бо целочисленные - пока мы в одной "системе координат".
Но на стыке (внутри, или для внешнего сервиса), где могут быть разные настройки той же точки, приходится это учитывать и конвертировать. По разным правилам - где-то и округление идёт, но чаще нет, там уже от конкретики зависит.
Попробую на пальцах простой пример, без конкретики.
Смотри.
Если у нас перевод денег со счёта на счёт, то точность - до минимальной расчётной единицы валюты. Обычно это 2 знака от целого значения в валюте(2.55 доллара), и 0 знаков от количества в минимальных единицах(255 центов). Впрочем, подлянка и тут в том, что у валют это разное количество. Например, у венгерского форинта нет "копеек", минимальная единица это сам форинт.
Но если ты считаешь комиссию, или другой процент, то у тебя точность - это (порядок разницы минимальной единицы к основной) + 2 +(максимальное количество знаков после запятой в сумме процентной ставки).
То есть, для доллара, и только целых процентов, это 2+2+0. Для форинта, когда процент возможен типа 1.5 - это 0+2+1.
Причем весь финансовый мир сидит в excel, где тоже флоаты, и не жужжит. А программистам видите ли неудобно.
itury itury 21.10.202219:55 ответить ссылка 0.6
На эксель в лучшем случае отчёты. Подсчёт денег давно не на экселе, и флоатов там давно нет. Уже дохуя лет как.
Кстати вспомнилось, android calculator встроенный где-то в ~android 4. Не заморачивались ребята и просто считали в double. На больших числах (даже целых, не дробных), которые я просто складывал, оно умудрялось считать неправильно.
keltar keltar 21.10.202218:28 ответить ссылка 1.3
С decimal таких проблем нет.
Egregor Egregor 21.10.202218:40 ответить ссылка -2.1
так это работает в подавляющем большинстве языков, а не только в JS
Ага, а пуфон ещё и неявно маскирует это дело как-будто всё норм, хотя на самом деле погрешность спокойно себе копится.
AjiTae AjiTae 21.10.202219:47 ответить ссылка 0.0
На этом изображении мы видим как два ассамблериста правят прошивку для микроконтролера.
Scallop Scallop 21.10.202217:59 ответить ссылка 4.2
в дырке - баги
А в руке костыль
В руке дебаггер
Щуп осцилла
Аппаратные, недокументированные
Хороший список всякого безумия в JS с объяснением, почему так:
What the f*ck JavaScript?
fokk fokk 21.10.202218:00 ответить ссылка 0.0
A аналогичной фотографии специалистов по машинному обучению вообще не существует.
rorudo rorudo 21.10.202218:28 ответить ссылка 0.1
Справедливо
natot natot 21.10.202221:24 ответить ссылка 0.0
Да ну фигня какая-то. Точно уже есть модуль, делающий это. Может даже всего-то в 500кб размером.
wataru wataru 21.10.202219:02 ответить ссылка 1.1
Так это квантовый компьютер, и он складывает вообще все возможные пары чисел
Не так. Он складывает все пары мнимых чисел без проблем. А потом получает два натуральных числа и падает с сегфолтом.
Кэп? Нельзя 2 int переменной сложить?
В жабаскрипте нету двух int переменных. Есть просто 2 переменных, а инт они, или нет - ты не знаешь. Плюс, в джаваскрипте сложить можно что угодно с чем угодно, но результат может быть неожиданный.
Прикольно, а в чём смысл?
Я не знаю.
Это добавляет геморроя проверки типа каждый раз, если надо писать нормально, а не "хуяк, хуяк, и так сойдёт", добавляет геморроя при чтении кода(блять, какой же тип сука ожидается у этой ахуительной функции???), добавляет геморроя в виде stupid undefined behavior в рантайме, когда пришло что-то не то, обработалось странным образом без ошибок в какую-то дичь, и успешно улетело дальше.
Но этим мало того, что пользуются, некоторые это любят, и даже тащат на сервер. Повбывав бы.
Меня ещё "веселит" что есть возможность явно определить тип переменной
Типа:
var result:Int = 1;
И в рантайме это может быть проигнорировано
Типа:
var num1:Int = 1;
var num2:Int = 1;
var result:Int = num1 + num2; // получится 11

Но пока что в топе по пиздецу кодинг на HAXE который потом конвертится в JS
Я пока над этим проджэктом работал - бухал жестко
А что вы на HaXe писали? И почему именно на HaXe?
joytt joytt 22.10.202200:24 ответить ссылка 0.0
Погуглил Haxe, то ли моя память глючит, то ли раньше он был HaXe.
joytt joytt 22.10.202200:25 ответить ссылка 0.0
Haxe, HaXe, HAXE, хакс
Я разные вариации встречал
Слот-машины(гэмблинг)
Там довольно большой проэкт был. Одних только погромистов 50+ шт
Там вообще весело было:
Изначально проэкт на чистом шарпе написан.
Потом шарповый код конвертится в Haxe
Потом хаксовый код конвертится в JS

Нахуя?
Насколько я понял, лид, который этот проект курировал пиздец как не любит юнити(изначально на неё планировали переписать)
И решил вот такое безобразие устроить
Уже 3й год как есть BigInt, который в определенном смысле даже лучше, чем встроенные целочисленные типы в строготипизированных языках, ибо он произвольной длины.
Ssipak Ssipak 22.10.202204:46 ответить ссылка 0.0
Прикольно
по большей части это примеры из разряда искусственных, которые в реале не делаются. хотя не так давно делал функцию клонирования записи, где надо собрать объект из пар [fieldname, value] разных типов. хотел пропустить через filter(n=>n) скипнуть null и [ ], заодно проебал все нули, а они были нужны. и долго не мог догнать в чем дело.
Только зарегистрированные и активированные пользователи могут добавлять комментарии.
Похожие темы

Похожие посты
e* \ ; -s Tomasz is building cloudash.dev 1d ^ npm install esllnt-conflg-airbnb '••'.K r Q 31 tn 683 5 023 ¿j»и ТТгТ lJ ■ R т-^И • ■ nTiiÏÏK'H'lilH i I 11 тш г П[»]| I Г* I ■ . V Я 1 I I в /»Il 1 хйшТ Щ ж Пш Hií»lMhHHil! |Д7 ijTTT [¡iff‘3’-’1’= Traceback (most recent call last) File "<pyshell#2>"1 line 1, in <mo •3-T TypeError: unsupported operand type(s) for 'str' and s» 4 in l <- false Programmer Memes @iammemeloper Without a doubt, the best programming language 11:09 PM -Sep28, 2023 121.6K ¡ews » let l = [1,2,3,4] <- undefined » 0 in l <- true » "0" in l <- true
подробнее»

javascript языки программирования программирование geek,Прикольные гаджеты. Научный, инженерный и айтишный юмор javascript programming languages programming geek

» 4 in l <- false Programmer Memes @iammemeloper Without a doubt, the best programming language 11:09 PM -Sep28, 2023 121.6K ¡ews » let l = [1,2,3,4] <- undefined » 0 in l <- true » "0" in l <- true
¡ndex.js JavaScript Moment 1 console log(018 == '018'); 2 console log(017 == ‘017'); 3 ■ Default: node index.js true false