Тут не исправить уже ничего, Господь, жги! Войти !bnw Сегодня Клубы
dev
> Непопулярное мнение: JavaScript единственный язык, который сделал правильные числа. 64 бита, которые одновременно и целое до 53-х бит, и с плавающей точкой если больше. Ну просто подумайте: в какой жизненной ситуации вам нужны целые больше 53-х бит? Это 9*10^15, девять ебучих квадриллионов, девять тыщ триллионов то есть. Чтобы представлять что? Вокруг нас просто нет предметов в таком количестве (кроме размера node_modules). Девять тыщ терабайт, если в байтах. То есть 53 бита достаточно каждому. Даже в указателях только 48 используется (хаха, а вы что, думали 64? Щас). Ну а иметь один числовой тип вместо двух как будто тоже гениально? Все в выигрыше, никто не пострадал. Почему же тогда подход JS не нравится «настоящим программистам»? Да потому что все остальные наловчились в 64 бита рассовывать разное, нужно им это или не нужно. То есть по сути единственная причина, почему это неудобно, это другие языки, которые пришли раньше и у которых конвенция другая. Они может все 64 бита и не используют, но _потенциально_ могут, и в итоге приходится под них подстраиваться. А нужно наоборот, чтобы все подстраивались под JavaScript (который на самом деле IEEE 754 double-precision float, если вам так больше нравится). Но как же битовые операции, скажете вы? Как мне всякие там сдвиги считать? Ну чувак, битовые операции на числах это страшный хак, раз уж мы о типах заговорили. Они должны на байтах делаться, а не на числах. А всякие int64/uint64 это от лукавого. Должен быть только number64.
#1088F6 / @bga_ / 331 день назад

Давно уже на amd64 процессорах 57 битов адреса в виртуальной памяти; автор - некрофил и костылятор, пытающийся оправдать негибкость языка, в котором нельзя чётко выбрать числовой тип под задачу.
#1088F6/M06 / @l29ah / 331 день назад

единственный

Как минимум с ходу могу вспомнить ещё Lua. Причём в последних версиях number тип двойственный, при определённых условиях это 64-битный integer.

The type number uses two internal representations, or two subtypes, one called integer and the other called float. Lua has explicit rules about when each representation is used, but it also converts between them automatically as needed (see §3.4.3). Therefore, the programmer may choose to mostly ignore the difference between integers and floats or to assume complete control over the representation of each number. Standard Lua uses 64-bit integers and double-precision (64-bit) floats

3.4.3 – Coercions and Conversions

Bitwise operators always convert float operands to integers. Exponentiation and float division always convert integer operands to floats. All other arithmetic operations applied to mixed numbers (integers and floats) convert the integer operand to a float

#1088F6/FXL / @nle-floppa / 214 дней назад
ipv6 ready BnW для ведрофона BnW на Реформале Викивач Котятки

Цоперайт © 2010-2016 @stiletto.