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

    +161

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    # coffee script
    d = 1 - Math.pow(d,n) * Math.pow((1/d -1),n)
    
    // java script
    d = 1 - Math.pow(d, n) * Math.pow(1 / d(-1), n);

    почему не любят кофескрипт, выпуск -дцатьпервый. потому что нельзя просто скопипастить формулу и не поймать Uncaught TypeError: number is not a function

    Запостил: makc3d, 22 Ноября 2014

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

    • Плата за вызов без скобок... Поди как у хаскеля - вызов функции имеет наибольший приоритет? f x + f y парсится как f(x) + f(y)?
      Ответить
      • не вникал почему. если убрать скобки - Math.pow(1/d -1,n) - работает правильно
        Ответить
        • вак, нет, скобки не при делах, я просто пробел между d и минусом случайно убрал
          Ответить
      • Не, тут похоже на унарный минус, который доставляет много удовольствия, особенно, если считать что-то не совсем тривиальное. Т.е. я подозреваю, что Math.pow((1 / d) - 1, n) дал бы желаемый результат.
        Ответить
        • >Не, тут похоже на унарный минус, который доставляет много удовольствия,
          Не знаю кто вас минуснул, но на этом минусе даже бомжественный хацкель ломается.
          http://ideone.com/ui77nf
          http://ideone.com/bcNPl5
          Ответить
      • Зачем вообще было всё кромсать и плодить недопитоны, не понимаю. Достаточно было добавить в жс нужный сахар, типов по вкусу, может что-нибудь запретить (например, присваивание в условиях) - и всё, готов язык.
        Ответить
        • Не трожь присваивание в условиях!
          Ответить
          • Не буду, они мне нравятся. Это ж я так для примера, рассуждая о тех, кто пилит свой язык из-за того, что исходный не устраивает.
            Ответить
        • > Достаточно было добавить в жс нужный сахар, типов по вкусу, может что-нибудь запретить
          Соглашусь, но мне кажется в жс сахара не нужно сверх того что уже там есть.
          Надо делать его более строгим, убирать, запрещать (допустим for~in эксперимент провалился. давайте его просто выпилим). Тогда и копипастная совместимость будет.
          Насчёт типов — ну если сделать крутецкий автовывод в рамках всех этих varов, ну и санитайзеры всякие, дабы сыпало побольше полезных ворнингов из коробки.
          Ответить
          • что не так с фор-ин?
            Ответить
            • Неюзабельный же. Что для массивов, что для объектов.
              Ответить
              • обычный цикл по ключам, как бы. в идеале, конечно, было бы нечто вроде for (key, value in object), но то мелочи
                Ответить
                • > обычный цикл по ключам, как бы
                  Если бы они сдуру не додумались смешать в кучу словарь и объект - может и был бы обычным.
                  Ответить
                  • есть примеры, когда он захватывает что-то лишнее?
                    Ответить
                    • Если кто-то додумается нафигачить методов в прототип Object'а - будут.
                      Ответить
                  • Проблема. Притом серьёзная. Вот только обхода словаря точно не касается - перечислимые свойства в Object.prototype сродни переопределению undefined - все слышали, но идиотов не находилось. А вот с has, get, set всё плохо http://habrahabr.ru/post/216997/#dict-and-object-prototype.
                    Ответить
                • Да, как в Go:
                  for key, value := range oldMap { ... }
                  Ответить
              • Для использования с массивами он и не предназначен. С объектами - вполне юзабелен. Если у кого-то перечислимые свойства в прототипе - это у него не из того места руки растут, да и hasOwnProperty никто не отменял.
                Ответить
                • >да и hasOwnProperty никто не отменял.
                  > if (Object.prototype.hasOwnProperty.call (obj, prop)) { //в каждом forе
                  Оооочень удобно.

                  Плюс for-in сам по себе медленный потому что вынужден ходить по всей цепочке прототипов. Я уж молчу о порядке обхода.
                  Ответить
                  • Я ссылочку выше с подробным разбором привёл, повторяться не буду. hasOwnProperty в каждом блоке не нужен, если знаешь, что это словарь. На большинстве платформ for-in, если hasOwnProperty не проверять, быстрее Object.keys - оптимизация движка - флажок есть ли перечислимые свойства у прототипа.
                    Ответить
                    • >Я ссылочку выше с подробным разбором привёл, повторяться не буду
                      В стиле я пеарю свою либу и ищу работу на волан-де-сайте?
                      Ответить
                      • Именно, учитесь :)
                        Ответить
                      • Злой Вы. Всё же, не новую систему счисления с утилитами, любезно написанными сочувствующими программистами, а свой титанический труд человек пиарит.
                        Ответить
                        • Ответить
                          • Ответить
                            • Ответить
                              • мне пришло с текстом:

                                - У гугла уже давно blink/v8 вместо webkit/jsc
                                - В том смысле что в гугле тоже лояльно относятся к лицам нетрадиционной ориентации.
                                Ответить
                                • Вы - автор поста. Потому вам приходит. Остальным только уведомление об ответе на коммент.
                                  Ответить
        • А вот и нет. Нужно было ввести спецификацию виртуальной машины, сделать ей референс имплементацию, компилятор под нее из JS и подождать три года. Через три года под нее появились бы компиляторы из пары десятков языков, и каждый мог бы выбрать себе что-нить по вкусу.
          Ответить
          • >Через три года под нее появились бы компиляторы из пары десятков языков, и каждый мог бы выбрать себе что-нить по вкусу.
            Доооо.
            Не буду ничего прогнозировать, просто исхожу из опыта прошлых лет.
            Вот точно так же многим (в т.ч. и мне) виделось десяток лет назад будущее LLVM.
            Запилят отличный кроссплатформенный асм, и через три года появятся ну если не десятки языков, то уж точно пара качественных замен морально устаревших сишке и крестам, чтоб каждый мог бы выбрать себе диалект по вкусу.

            И какова же реальность? Клей помер, питушня не взлетела.
            А сишка с крестами поныне властвуют миром.
            Потому просто рекомендую всем жс-хейтерам смириться с тем фактом что жаваскрипт с нами очень надолго, брать и изучать его по мере сил.
            Ответить
            • Ну тут просто у рынка есть двигатели же. Достаточно гуглу с мудилафундейшен и мокрософтом договориться о спецификации (можно в рамках W3C) и машина будет готова. Это ничуть не сложнее чем пилить новую версию ECMA-262. Причем гугл-то уж точно портанет под нее парочку языков. Да и MS наверняка портанет.

              JS изначально очень гнилой. Лечить его себе дороже. Если люди пишут скриптовый язык А который компилируется в другой скриптовый язык (Б) то это значит что язык Б настолько омерзителен, что люди не хотят на нем писать!

              Ну очевидно же.
              Ответить
              • >>Достаточно гуглу с мудилафундейшен и мокрософтом договориться о спецификации
                Слово «Достаточно» резко упрощает задачу.
                Есть еще яблоко недоеденное и пара игроков помельче, но не об этом речь.
                Они об видео/аудио в HTML5 так и не смогли договориться.
                А вы говорите специфицировать новый язык и vm.
                Я вас уверяю что как только они запилят эту машину, на неё с разных сторон посыпятся уникальные и очень важные «расширения», и мы получим.

                Опять же я исхожу из фактов, и прошлого а не своих ничего не решающих хотелок как рациональнее было бы поступить.
                Ответить
                • Но как-то же они двигают HTML5 и css3, правда?
                  И новые версии JS как-то выпускают.
                  Ответить
                  • >И новые версии JS как-то выпускают.
                    И что? Выпустили 1.7
                    Генераторы-итераторы, десруктивное присваивание, yield, let и другие полезные фичи js 1.7,1.8 никто кроме FF не поддерживает.
                    Это ж лебедь, рак и щука.
                    Мозилла рвётся в облака, хром пятится назад, а ишак тянет в проприетарную воду.
                    Ответить
                    • А Опере вечная память. Аминь.
                      Ответить
                      • Last version release: (26 сентября 2014)

                        hm..)
                        Ответить
                        • http://get.opera.com/pub/opera/win/
                          Index of /pub/opera/win/
                          ...
                          1217/                                      22-Apr-2014 12:42

                          Родился Ленин в солнечном апреле,
                          Когда звенела музыкой капель.
                          И землю нашу сделали добрее
                          Апрель и Ленин, Ленин и апрель.
                          Ответить
                          • Лежал-лежал и зарелизился.

                            И все же хоронить -- это нетскейкп. Опера стабильно держит свои 5% рынка)
                            Ответить
                            • Было 5% и даже больше в 2013 году (по данным Wikimedia, например). Теперь уже полтора процента в мире. В РБ и в Цеевропе Оперой пользовался каждый третий, но и там её доля стала падать.
                              Ответить
                              • Интересно, чому так?

                                Она относительно стабильна, весит меньше хрома, много чего умеет, и неплохо проходила ACID тест..
                                Ответить
                                • Тому що из Opera Software по неясным причинам уволили всех, кто писал её движок. А пидарасы, пришедшие в компанию, подпилили сервер автообновлений и теперь вместо неё ставится Хром, если вовремя автообновление не выключить.
                                  Ответить
                                  • Страхи-то какие.
                                    А можно пруф?

                                    Просто неясно чем такое поведение можно объяснить кроме грибов
                                    Ответить
                                    • Можно зайти на opera.com, почитать блог разработчиков и убедиться. Но для ленивых оставлю ссылки на волан-де-сайт:
                                      http://habrahabr.ru/company/opera/blog/169239/
                                      http://habrahabr.ru/post/169867/
                                      Ответить
                                      • Вот зачем же Вы вебкит хромом назвали?
                                        Ответить
                                        • Если что-то жрёт память, как Хром; игнорирует веб-стандарты, как Хром; имеет такой же неудобный UI, как у Хрома; внутри содержит Хром, то скорее всего это и есть Хром.

                                          Там ведь не только Вебкит. Там все кишки от Хром(иум)а. Даже Maxthon содержит хоть что-то своё. А при переходе с Оперы на Хромооперу как минимум теряется почтовый клиент и вся переписка, нажитая за пятнадцать лет.
                                          Ответить
                                          • И закладки вроде бы.
                                            Ответить
                                            • >И закладки вроде бы.
                                              Не гоните. Это же высшая степень подлости.
                                              Как хорошо что я никогда не юзал его.
                                              Ответить
                                          • Ну в таком случае это всё же не хром, а нечто на движке хромиума (как яндекс браузер же?).

                                            В целом идея перейти на опенсурсный движок и не плодить свой -- хорошая. Но вот что с пользователями они так поступили -- это хуево, кнечно
                                            Ответить
                                            • Кстати, очень подозрительно, что Хромоопера появилась вскоре после того, как в Яндекс-браузере появилась заветная кнопка «Турбо». Уж не его ли новая команда Оперы обработала напильником?

                                              P.S. И да, снова напомню Maxthon и Lunascape, содержащие несколько движков, между которыми можно переключаться, и собственный UI.
                                              Ответить
                                  • >А пидарасы подпилили сервер автообновлений и теперь вместо неё ставится Хром, если вовремя автообновление не выключить.
                                    MWA-HA-HA-HA-HA!!!
                                    То о чём так много говорилось.
                                    Ответить
                                    • Самое интересное, что чтобы загладить свою вину, компания Opera Software выпустила нечто под названием Opera Mail 1.0. Это нечто содержит в себе внутренности Оперы на Presto, но без адресной строки в UI. Т. е. нельзя просто так взять и открыть сайт в новой вкладке.

                                      Но при этом Opera Mail содержит gstreamer и прочую питушню. Ну а чо, вдруг кто-то пришлёт письмо в формате HTML5 с видеоклипами. Почтовый клиент должен уметь отображать даже такое письмо.
                                      Ответить
                                      • Как это не звучит парадоксально, но Оперу погубил closed-source.
                                        Думаю в противном случае уволенная команда нашла бы другие источники финансирования и продолжила бы пилить интересный браузер с уникальными фичами.
                                        Ответить
                                  • >из Opera Software по неясным причинам уволили всех, кто писал её движок.
                                    Чую что к этому чёрному делу приложились грязные лапы гугля.
                                    Ответить
                      • Кстати многие как-то игнорируют блядский сафари, однако это чрезвычайно вредный браузер, там где хром с лисой спокойно отрисовывают страницу, на сафари она ломается и от пользователей жалобы.
                        То какой-то security-policy глючный, что запрещает чего-то и нихера не работает.

                        Лучше б он издох наконец, вместо оперы.
                        Ответить
                        • [quote]
                          на сафари она ломается и от пользователей жалобы.
                          То какой-то security-policy глючный, что запрещает чего-то и нихера не работает.
                          [/quote]
                          Расскажите подробнее, пожалуйста, иначе очень похоже на "я не люблю %some_product%, у меня что-то где-то когда-то с ним не работало"
                          Ответить
                          • >То какой-то security-policy глючный, что запрещает чего-то и нихера не работает.
                            >Расскажите подробнее, пожалуйста, иначе очень похоже ....
                            http://stackoverflow.com/questions/1144894/safari-doesnt-set-cookie-but-ie-ff-does
                            http://stackoverflow.com/questions/408582/setting-cross-domain-cookies-in-safari

                            http://stackoverflow.com/questions/23261301/required-attribute-not-work-in-safari-browser

                            На блядском маке ессно.
                            Еще с localStorage какие-то траблы помню были. Короче много жалоб на этот пидорский браузер, Тимкуки всякие его писали.
                            Ответить
                            • 1) куки при редиректе? а что говорит RFC?
                              2) хм, и правда говено
                              3) бага, да. Но нет такого браузера, который бы поддерживал все атрибуты.

                              Safari говно, но на самом деле любой браузер говно в той или иной степени
                              Ответить
                              • >куки при редиректе? а что говорит RFC?
                                Домен тот же.
                                Unverifiable transactions typically arise when a user agent automatically requests inlined or embedded
                                   entities or when it resolves redirection (3xx) responses from an
                                   origin server.  Typically the origin transaction, the transaction
                                   that the user initiates, is verifiable, and that transaction may
                                   directly or indirectly induce the user agent to make unverifiable
                                   transactions.
                                
                                   When it makes an unverifiable transaction, a user agent must enable a
                                   session only if a cookie with a domain attribute D was sent or
                                   received in its origin transaction, such that the host name in the
                                   Request-URI of the unverifiable transaction domain-matches D.
                                
                                   This restriction prevents a malicious service author from using
                                   unverifiable transactions to induce a user agent to start or continue
                                   a session with a server in a different domain.  The starting or
                                   continuation of such sessions could be contrary to the privacy
                                   expectations of the user, and could also be a security problem.


                                Да это только то что я вспомнил навскидку.

                                >но на самом деле любой браузер говно в той или иной степени
                                Понятно. Но почему в остальных браузерах работает вполне сносно, а с сафари столько боли?!
                                На ишак новый мало серъезных жалоб не помню, в основном сафари и хром.
                                Ответить
                          • Могу рассказать подробнее. Недавно яблочники решили, что пора бы начать поддерживать ES6. И поддержали, да так, что лучше бы не поддерживали. Array#find, Array#findIndex игнорируют дырки в массивах. Array#fill работает только с массивами. Добавили коллекции типа Map, Set, WeakMap. Ну как добавили... Коллбэк forEach вместо 3 аргументов принимает только 1 или 2. Итераторы есть, вот только большая часть из них фэйковая - [].keys() и подобные возвращают объекты... без метода next. Ну и тому подобный пиздец.
                            Ответить
                            • Это такая спецификация ES6 хреновая или так хреново её яблоко поддержало?
                              Ответить
                              • Конечно же спецификация! Как вы могли подумать, что в Церкви Святого Стива могут делать плохой продукт? Если они что-то реализуют не по спецификации - составители этой неверной спецификации обязаны переписать её под яблоко.
                                Ответить
                                • Я вовсе не считаю что в эппл не могут лажать.
                                  Просто Ecma-262 то еще мутное говно.
                                  Ответить
                                  • А яббл умудряется испортить даже говно. Это ж уметь нужно :)
                                    Ответить
                                    • >А яббл умудряется испортить даже говно.
                                      Там же одни тимкуки работают. Это хуже антимидаса.
                                      В гугле тоже лояльно к ним относятся, не настолько конечно, но движок один и тот же.

                                      А вот на Айка давеча нападали злобные пидарасы, призывая бойкотировать Firefox, что как бы намекает для какой категории людей сделан каждый из браузеров.
                                      Ответить
                                      • У гугла уже давно blink/v8 вместо webkit/jsc. А за Айка обидно.
                                        Ответить
                                        • Blink на основе webkit, это его ответвтление, потому движок не один и тот же, да, но они очень близки.
                                          И факта положительного отношения к лицам нетрадиционной ориентации это не отменяет.
                                          Ответить
                                          • Зато v8 с jsc не связан, да и blink постепенно от тёмного прошлого уходит. Гуглогомосятину я не оправдываю, но всё же с этим у них не так страшно, как в яббле. Хотя связь с качеством продукта прямая.
                                            Ответить
                                            • >Гуглогомосятину я не оправдываю, но всё же с этим у них не так страшно, как в яббле. Хотя связь с качеством продукта прямая
                                              Именно!
                                              Ответить
                        • Не проверял (моё знакомство с Сафари длилось минут пять, после чего я эту тормозную глючь удалил к чертям), но в интернетах говорят, что Сафари принудительно использует DNS-сервера Эппла, которые тормозят и часто падают, из-за этого элементы страниц, размещённые на некоторых CDN, не скачиваются и не отрисовываются.
                          Ответить
                          • О safari под какую ОС идет речь?

                            Я видел safari на Mac OS и оно не использовало сервера Apple, потому как ходило на наши интранет сайты, коие в серверах Apple даже не резолвятся)

                            Жопа там была с HTTPS: какой-то из алгоритмов не поддерживался (DSA, чтоли) а жабий keytool генерил (по-умолчанию) сертификаты именно с таким алгоритмом, и в итоге сайт по https открывался ВЕЗДЕ кроме сафари) Может быть про то и речь.
                            Ответить
                            • Глючит Safari на Windows, причём у всех, причём на HTTP безо всяких SSL/TLS.

                              Тут можно сослаться на глючный порт эппловских библиотек на Windows и поспорить о том, что извращённее: Safari/Windows или IE/MacOS.
                              Ответить
                              • Safari на Windows не нужен. Дело скорее всего в кривом порте, да.

                                Кстати, IE for Mac действительно существовал года так до 2004го.
                                Ответить
                    • Ну и говно же это ваше клиент-сайд программирование:)
                      Ответить
                      • Как же это волшебно. Это же кроссплатформенный код. Один код... для всех...

                        не для всех.
                        Ответить
                        • Почти один, почти для всех. Все JSные либы от JQuery до _somthng_to_js_compiler (типа доблестного GWT) обещают хегдлить 95% проблем несовместимости
                          Ответить
                      • Вот закопают ie8-9, может быть и начну серьезно изучать фронтенд... А пока - да ну его в жопу.
                        Ответить
                        • Можно подумать что от этого JS станет менее отвратительным)

                          Хотя в целом ситуация лучше конечно. Проклятый IE 6 уже никого не волнует, можно верстать боль-мень семантически, всякие сетки вроде бутстрапа появились (ждем felxmodel везде), вокруг JS выросли всякие JQuery, ангуляры итд. Но гниль внутри осталась.
                          Ответить
                          • Ну не менее отвратительным, но хотя бы юзабельным. Заодно префиксное дерьмо типа -webkit и -moz поуляжется.

                            В ie8 ведь даже indexOf в массивах нет...
                            Ответить
                            • Дерьмо будет всегда, потому что каждый пытается поддержать крутую фичу прежде, чем её пропихнут в стандарт.

                              Имхо проблема Js не в indexOf, а в:
                              1) Отсутствии неймспейсов
                              2) Отсутствии понятия модуля/пакета (вытекает из пункта один)
                              3) Невнятных типах и невнятных правилах их преобразования
                              4) Плохой поддержке обычного класс-бейзд ООП

                              Как-то так)
                              Ответить
                              • > Отсутствии неймспейсов
                                Ну 1-2 с горем-пополам пофиксили заворачиванием в функции и AMD. Осталось дождаться, пока все либы так обернутся и перестанут срать в глобалки...

                                Типы и их преобразования ужасны, да. Стандартная либа - аналогично. Кучи важных функций не хватает. В новых версиях, правда, поюзабельней стало. Но пока старое дерьмо не умрёт - придётся юзать прослойки и обёртки.

                                > класс-бейзд ООП
                                Да тут объектов и методов то нет, какие нахрен классы? :)
                                Ответить
                                • 1-2) AMD это хорошо (сам юзаю requirejs), но хочется что *спецификация* языка требовала от среды выполнения поддержки этого, причем не "вот в новом стандарте который вот вот станет популярен" а *изначально* (как в других языках)

                                  Объекты можно эмулировать (равно как и классы) но это очень больно и сложно.
                                  Ответить
                              • Проблем больше, на много больше, но эта тема уже много раз поднималась. Но если уж, решили возобновить:

                                * Отсутствие коллекций, строительных блоков для коллекций (т.е. итераторов, как минимум).
                                * Отсутствие элементов метапрограммирования (не все возможно, да и не нужно пихать в стандартную библиотеку, имея хорошие инструменты метапрограммирования, можно было бы и ООП на любой вкус запилить, и анонимные функции по-короче описывать и т.п.)
                                * Отсутствие инструментов помогающих интерпретатору / компилятору в понимании кода (таких, которые бы позволили, возможно ценой менее обобщенного кода писать код более еффективный).
                                * Безопасность, политики безопасностей, контраткы и т.д. просто отсутствуют.
                                * Низкоуровневая билбиотека для создания графических компонент.
                                * Ну и по мелочам:
                                + возможность обрабатывать разные исключения по-разному.
                                + поддержка разнообразных популярных медиа форматов (картинки, музыка, видео).
                                + другой базовый численный тип (а лучше два - безразмерные целые и безразмерные псевдовещественные).
                                + существующее ООП упразднить (можно либо вообще без него и дать на откуп библиотекам, либо взять за основу что-то более вменяемое, вариантов хватает).
                                + строительные блоки для многопоточности.
                                + существующий набор типов и отношения между ними вообще бессмыслица полная. Заменить на что-нибудь более продуманое.
                                + специальные условия для вызова eval.
                                + система библиотек которые не нужно скачивать каждый раз при просмотре страницы (включая возможность компиляции в байткод по желанию пользователя).
                                + интерфейс к базам данных (очень жаль, что локал сторидж победил вебдб, но может он еще вернется).
                                Ответить
                                • Два пункта из этого списка могут быть реализованы сторонними библиотеками так как зависят от среды (2Д графика (канвас) есть в вебе, а вот БД там нет чаще всего).

                                  Но реализовать это не так-то просто потому что нет ни модулей ни репозитория.

                                  К примеру в перле в стандартной либе тоже ничего такого нет, но есть стандрты де-факто вроде DBI, коие ставятся с репозитория.

                                  С остальной частью согласен.
                                  Ответить
                                  • Канвас не удовлетворяет по нескольким причинам:
                                    + текста в нем как такогового нету (только нарисовать, а поредактировать - никак).
                                    + хотелось бы, чтобы АПИ был все-таки немного более высокоуровневый, и векторный. Ну, чтобы события мышки не были таким геморроем.
                                    + поддержка CSS.
                                    Ответить
                                    • Ну вот в Хорошем Языке сделали бы либу, работающую поверх канваса, и она по-тихоньку стала бы стандартом де-факто.

                                      На самом деле и сейчас можно ее разработать, распостранять через npm, компилировать requirejs итд, но это все какие-то третесторонние конструкции, к языку отношения не имеющие.
                                      Ответить
                                • >* Отсутствие коллекций, строительных блоков для коллекций (т.е. итераторов, как минимум).
                                  +1. Сильно не хватало.
                                  >* Отсутствие элементов метапрограммирования
                                  В принципе возможно, но не особо нужно.

                                  >* Отсутствие инструментов помогающих интерпретатору / компилятору в понимании кода
                                  >+ другой базовый численный тип (а лучше два - безразмерные целые и безразмерные псевдовещественные).
                                  Вроде компиляторы и так справляются. Некоторые вещи потихоньку вводятся. Те же типизированные массивы:
                                  https://developer.mozilla.org/en-US/docs/Web/JavaScript/Typed_arrays

                                  >+ существующее ООП упразднить (можно либо вообще без него и дать на откуп библиотекам, либо взять за основу что-то более вменяемое, вариантов хватает).
                                  >+ существующий набор типов и отношения между ними вообще бессмыслица полная. Заменить на что-нибудь более продуманое.
                                  Согласен.
                                  Ответить
                                  • Какой-то странный и бестолковый дизайн. Нафига нужно столько массивов, и почему это нельзя было сделать в одном с readByte, readShort и т.д.? Я себе на секунду представил пытку пытаясь предугадать какой из четырех массивов будет быстрее в зависимости от того, как фишка ляжет в конкретном файле который нужно распарсить, и от того, то ли мне прийдется чаще клеить байты в шорты, то ли делить шорты на байты.
                                    Ответить
                                    • > readByte, readShort
                                      В Node.js в Buffer как раз всяких readInt16LE и товарищей понаделали.
                                      Ответить
                                      • Ну так это естесственный подход, существующий практически везде, где есть потоки / нужно читать из них двоичные данные. Зачем нужно было придумывать что-то такое? чтобы можно было написать [] вместо getX()? Как-то мне кажется, что это не равноценная замена.
                                        Ответить
                          • Вот, недавно игрался с js: http://jsfiddle.net/06hkhy4L/8/

                            Вроде бы и забил на старые ие - так все равно дерьмо вылезло: пришлось -webkit добавлять из-за сафари на айпаде.
                            Ответить
                            • Ну вообще говоря толстые клиент-сайдеры используют препроцессоры, и на чистом CSS давно уже не пишут.

                              И все это хендлится один раз: ты пишешь transform, а препроцессор разворачивает в нужное.
                              -----

                              Обратите внимание, опять же: люди придумали декларативный язык чтоб из него компилироваться в другой декларативный язык. Причем половина людей пишет на одном языке, а вторая половина на другом (а третья половина на остальных семи существующих препроцессорах). Ну не пиздец-ли? Такое только в вебе бывает в 2014 году
                              Ответить
                              • >люди придумали декларативный язык чтоб из него компилироваться в другой декларативный язык. Причем половина людей пишет на одном языке, а вторая половина на другом (а третья половина на остальных семи существующих препроцессорах). Ну не пиздец-ли?
                                Полный. У меня МЕТАПРОГРАММИРОВАНИЕ.
                                Ответить
                              • > люди придумали декларативный язык чтоб из него компилироваться в другой декларативный язык.
                                > Такое только в вебе бывает в 2014 году

                                Лолчто? autotools.
                                Ответить
                        • Заменить js на питон IE уже не страшен.
                          Ответить
                        • ну как закопали?
                          Ответить
    • Каппуччино?
      Ответить
    • Говнокофескрипт пытается сделать говнопрограммирование на говноязыке говножаваскрипт менее говнистым.
      Ответить

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