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

    +160

    1. 1
    2. 2
    3. 3
    window.alert = function(){
            events.event(arguments[0],arguments[1],arguments[2],arguments[3],arguments[4]);
        }

    И это - в продакшене. Писано - для военных

    Запостил: Teddy_Brown, 15 Сентября 2011

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

    • >Писано - для военных
      >window.alert
      Рота, подъёёёём!
      Ответить
    • мдя... events.event.apply(this, arguments); ?
      Ответить
      • было. не во всех браузерах работает.
        Ответить
        • oO, как это apply не во всех браузерах работает?
          Ответить
        • Жесть. Это входит в стандарт ECMAScript. В каком браузере это не работает?
          Ответить
          • ВНЕЗАПНО
            В IE
            Ответить
            • Indian Explorer
              Ответить
            • опередили. хотел сказать: НЕ ГОВОРИТЕ ЧТО В IE оО

              МС вообще славятся изобретением альтернативных стандартным решений
              Ответить
              • ... и тут в Microsoft узнали по JS ...
                Ответить
                • ... и сделали VBScript и JScript
                  Ответить
                  • ...и устало лицо мое от фейспалмов
                    Ответить
                  • Конкуренция должна быть всегда =)
                    Ответить
                    • конкуренция, но не извращения.
                      извращения нужны в других сферах.
                      Ответить
                      • Ну а чем плохо изобрести свой яваскрипт с блекджеком и шлюхами?
                        Ответить
                        • Гугл так и сделал.
                          http://www.extremetech.com/computing/95417-google-announces-dart-programming-language
                          Ответить
                        • JQuery, roman-kashitsyn
                          Но зачем?
                          Ответить
                          • Пока не могу привести аргументы. Мне лично нравится JavaScript.
                            Ответить
                            • мне тоже.
                              у нас и так есть проблемы с кроссбраузерностью. к чему их преумножать?
                              Ответить
                              • Гугл несчитается с кроссбраузерностью. Для них существует один браузер - google chrome, который стремительно набирает популярность.
                                Ответить
                                • тогда чем они лучше мелкомягких?
                                  Ответить
                                  • У них поисковый движок получше. И браузер не такой убогий.
                                    Ответить
                                  • Они действуют не так явно =) И обоснуйте, за что минус? я неправду сказал?
                                    Ответить
                                    • я не минусовал, но думаю, что вы преувеличиваете. Они считают, что если их язык и вправду будет хорош, разработчики других браузеров сами захотят добавить его поддержку. Мне правда, пока не ясно, что даст этот Dart. К тому же, есть coffee script...
                                      Ответить
                                      • Может я и преувеличил положение дел на данный момент, но все к тому и идет, очевидно же)
                                        Ответить
                              • развернем-ка лесенку!
                                Ответить
                            • На счет браузера - соглашусь. получше чем у ИП Балмер.
                              Ответить
                          • > Teddy_Brown (Но зачем?)
                            всё дело в "блек джеке"
                            Чей язык популярнее - тому всё, остальные пусть бреются
                            Ответить
                          • Главная проблема JavaScript'a - отсутствие возможности организовать код, из нее вытекает очень много чего еще. Для создания сложных приложений нужно уметь разделить работу между несколькими программистами, тестировать отдельные участки кода чтобы оперативно находить несоответствия, кроме того, модульность - это еще и экономия, т.как подталкивает к повторному использованию кода (т.е. модули делаются более универсальными). Не смотря на то, что в других языках пакеты, например, формально не нужны, они очень способствуют порядку в больших проектах.
                            В других языках модульность достигается либо тем, что код пишется в классах, и класс представляет собой отдельную группу функций отвечающих за один конкретный сектор, либо в пакетах, либо в пространствах имен, либо и то и другое и третье :) В JavaScript'e это такая одна большая простыня, в которой уже на вторую неделю коллективного авторства наступает полнейший хаос.
                            Вторая главная проблема - нежелание авторов языка исправлять ошибки и удалять неправильные решения. Кроме того, JavaScript это архаизм, если не сказать анахронизм. В том смысле, что в программировании за последние полтора десятка лет было сделано много чего, и много концепций было пересмотрено... JavaScript находится в своей нише, где у него нет конкурентов и не с чем сравнить - и он просто `не в курсе' про то, что происходит вокруг.
                            JavaScript принципиально не собирается исправлять существующие ошибки даже при том, что `отцы-основатели' их признают. Тот же Брендан Ейк признавался, что например == оператор был, собственно, ошибкой, сляпанной на скорую руку... но поезд уже ушел. Если послушать Вольдамара Хорвата, что он говорил про ES5 и ES6 - остается только посочувствовать JavaScript писателям, т.как у них даже надежды на светлое будущее нет. Там, как в анекдоте, если врач сказал в морг, значит в морг.
                            Ответить
                            • Да, тут я с вами согласен. С другой стороны, многие механизмы (пространства имён, область видимости, ООП) можно организовать средствами самого языка (тут, как мне кажется, ощущается родство с Lisp Scheme, в котором многие парадигмы можно реализовать минимальными средствами самого Scheme). Однако одно дело, когда эти механизмы присутствуют на уровне языка и совсем другое дело, если каждый должен заново изобретать велосипед.
                              Ответить
                            • что делать, совместимость... если вдруг переделать JS, то веб рухнет с таким грохотом, что потом не отстроить...
                              Сейчас это понимают и уже идут путем организации песочницы нормальных ЯП, типа NativeClient
                              Ответить
                              • Да не такая уж и проблема проапдейтится... ее кстати пытались решить в ES5... но не получилось. Т.е. нужно было бы, чтобы можно было указывать версию, и тогда уже хоть сколько угодно развивайся, коль скоро нужная версия поддерживается, все будет работать. А не поддерживается - проблемы разработчика. Просто не менять проще и надежнее, чем менять.
                                NaCL - это не язык, это рантайм, что-то типа CLR, или Флеша, для него можно на разных языках писать. Это собственно, предлагали давным давно сделать и для JS, стандартизировать байткод, а не язык... Но в коммитете по стандартизации дискуссии еще хуже чем на говнокоде, и ровно столько же здравого смысла. Кроме того, не смотря на `отркытость' стандартов, ими управляют вендоры браузеров, при том, что у каждого есть, фактически, право вета. Так что стандарт превращается по-тихоньку в венигрет из всего что в разное время понапридумывали разные его учасники. Но ничто никогда не выбрасывается и даже не переделывается. Еще проблема в том, что, положа руку на сердце, JS недоязык, языком, в полном смысле его делают API браузеров, или любого другого оркужения, которое его выполняет. И это, например, делает невозможным создание стандартной библиотеки, например, как части языка. У языка нет единого провайдера компонент (типа как asdf / gems / easy_install и т.п.), что подталкивает к велосипедостроительству, разброду и шатаниям.
                                Ответить
                                • Да что там говорить про провайдера компонент, если у него даже библиотеки ввода/вывода стандартной нет... Зато встраиваемый.
                                  Ответить
                                  • Мои пять ервоцентов:
                                    1. Не надо ждать от языка того, на что он не рассчитан
                                    2. генерить говно можно на любом языке.
                                    Ответить
                                  • Какой ввод/вывод? Откуда и куда? Стандартного ввода/вывода в браузере нет, к файлам доступ запрещён.
                                    Ответить
                        • Да не туда разворачиваем!
                          Ответить
                      • Хоть как их назови. Лучше ослик от этого не станет. Садбаттру.
                        Ответить
      • Я выяснил почему у этого хлопчика не работала events.event.apply(this, arguments);
        он так this и писал, вместо реального контекста (в данном случае - events)
        то есть у него должно было получиться events.event.apply(events, arguments);
        Ответить
    • >И это - в продакшене
      ПРОДАКШАНОПРОБЛЕМЫ
      Ответить

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