1. JavaScript / Говнокод #19984

    +4

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    $ nodejs
    > var buffer = new ArrayBuffer(2);
    undefined
    > var uint16View = new Uint16Array(buffer);
    undefined
    > var uint8View = new Uint8Array(buffer);
    undefined
    > uint16View[0]=0xff00
    65280
    > uint8View[1]
    255
    > uint8View[0]
    0

    https://developer.mozilla.org/en/docs/Web/JavaScript/Typed_arrays
    endianness - теперь и в жабаскрипте. Почти как union

    Запостил: j123123, 11 Мая 2016

    Комментарии (15) RSS

    • > 19984
      На что-то это точно обязано намекать.
      Ответить
    • > Почти как union

      ренундантно. нужно просто пользоваться ассемблером.
      Ответить
      • Писать скрипты для браузера на ассемблере. Всегда мечтал
        Ответить
        • хотя иногда это можно делать, только для этого надо эксплоит применять, и чтоб браузер был с уязвимостью.
          Ответить
          • https://en.wikipedia.org/wiki/WebAssembly
            https://en.wikipedia.org/wiki/Asm.js

            они под ассемблером понимают нечто другое. и union'ов похоже не умеют. поэтому хак сверху может быть и не так глуп.
            Ответить
    • Можно будет в жабаскриптах определять остро или тупоконечность, и потом вызывать или одну или другую функцию, в зависимости от этого. А еще там ведь говнофлоаты есть в этом Typed arrays, и порядок кусков в флоате (где мантисса, где экспонента и где знаковый бит) не определено, как и не определено, какой порядок байт в мантиссе, экспоненте
      https://github.com/lattera/glibc/blob/master/sysdeps/ieee754/ieee754.h
      https://en.wikipedia.org/wiki/Endianness#Floating-point
      Although the ubiquitous x86 processors of today use little-endian storage for all types of data (integer, floating point, BCD), there have been a few historical machines where floating point numbers were represented in big-endian form while integers were represented in little-endian form.[16] There are old ARM processors that have half little-endian, half big-endian floating point representation for double-precision numbers: both 32-bit words are stored in little-endian like integer registers, but the most significant one first. Because there have been many floating point formats with no "network" standard representation for them, there is no formal standard for transferring floating point values between diverse systems. It may therefore appear strange that the widespread IEEE 754 floating point standard does not specify endianness.

      Короче, жабаскриптики теперь можно делать непереносимыми, зависящими от машинного представления плавучки и прочего говна
      Ответить
      • Джсбляди соснуле, в общем
        Ответить
        • шо, опять?!
          Ответить
          • и самое смешное, что джс сосёть более эффективно (и параллельно на многих процах/корках) чем большинство некомпилируемых языков.
            Ответить
            • Нихуя удивительного. С его-то популярностью и массовостью использования, человеко-года, затраченные на оптимизячиние этого говна уже over 9000! Только некомпилируемым его сложно назвать, ибо JIT everywhere.
              Кстати, да. разные браузеры сосут с разной эффективностью исполнения JS
              Ответить
    • Давно уже.

      >Uint16Array
      А говорили же умные дяди: единственная полезная структура данных - массив.
      В старом-добром js кроме массивов (ассоциативных в т.ч.) ничего ценного в общем-то и нету.
      Ответить

    Добавить комментарий