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
перейдем сразу к классике
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;
let it = bee
петь на сей мотив, а не битлов
Обязательно ебанёт.
Большая чясть механизма определяет тип данных на каждом этапе сложения.
Ищет в npm библиотеку для сложения чисел
Если npm install add-two-integers не сработало - то всё, числа складывать не удаётся, слишком сложная задача, на неё даже никто модуль не написал ещё.
Так только джун ответит. Опытный фронтенд сделает запрос на бэк, а дальше это проблема разработчиков, на фронте всё работает
Сначала посмеялся, потом представил что правда будут дёргать бэк для складывания чисел, и посмеялся ещё раз. Спасибо! :-D
keltar keltar 21.10.202218:21 ответить ссылка 2.9
Ох, если бы это были шутки
Я как-то видел код, где число переводили строку. И дергали для этого бэк.
можно создать div, дальше двумя циклами напичкать его спанами и в конце узнать кол-во спанов внутри дива.
Просто наберите в консоли 0.1+0.2 и поймете почему
> 0.1+0.2 <• 0.30000000000000004 >
Но 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 до пятого знака дают удовлетворительную точность.
Ну так если цель "удовлетворительная" точность, то вообще флоаты. Они дают ошибку в последнем знаке, и только на единицу в одном вычислении. В варианте "только 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. На больших числах (даже целых, не дробных), которые я просто складывал, оно умудрялось считать неправильно.
С decimal таких проблем нет.
так это работает в подавляющем большинстве языков, а не только в JS
Ага, а пуфон ещё и неявно маскирует это дело как-будто всё норм, хотя на самом деле погрешность спокойно себе копится.
На этом изображении мы видим как два ассамблериста правят прошивку для микроконтролера.
Scallop Scallop 21.10.202217:59 ответить ссылка 4.2
в дырке - баги
А в руке костыль
В руке дебаггер
Щуп осцилла
Аппаратные, недокументированные
Хороший список всякого безумия в JS с объяснением, почему так:
What the f*ck JavaScript?
A аналогичной фотографии специалистов по машинному обучению вообще не существует.
Справедливо
natot natot 21.10.202221:24 ответить ссылка 0.0
Да ну фигня какая-то. Точно уже есть модуль, делающий это. Может даже всего-то в 500кб размером.
Так это квантовый компьютер, и он складывает вообще все возможные пары чисел
Не так. Он складывает все пары мнимых чисел без проблем. А потом получает два натуральных числа и падает с сегфолтом.
Кэп? Нельзя 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.
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