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

    −51

    1. 1
    2. 2
    3. 3
    4. 4
    function addTemplates(tpls) {
      window.templates = window.templates || {};
      extend(window.templates, tpls);
    }

    Индусский код на примере vk.

    Запостил: dralyuk, 23 Ноября 2016

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

    • Где здесь ГК?
      Ответить
      • В пизде твоей матери-проститутки, которую вся голытьба Сенной площади пердолила в три хуя по кругу за пачку "Роллтона".
        Ответить
      • писать на чистом JS уже ГК
        Ответить
        • Я вот пару дней назад собеседовал такого. Что можете рассказать о наследовании в js? Ничего. Для чего у нас hasOwnProperty? Не знаю. Чем отличается function foo от var foo = function? Не знаю.
          Пиздуй писать снежинки на своём жквери, уже как раз сезон.
          Ответить
          • Совершенно никакой связи нету между использованием нормальных инструментов и пониманием работы JS.
            Программисты на нормальных ЯП обычно знают что такое SP или BP, например, но это не мешает им писать на плюсах, правда? На ассемблере они не пишут

            JS это единственный высокоуровневый ЯП который блевотен до такой степени, что в него компилируется кто угодно: от кофескрипта и тайпскрипта до котлина и джавы, потому что на чистом js с его прекрасным "наследованеим" никто писать не хочет.

            Ну кроме конечно всякого вебшлака, для которого мир делится на "JS"и "жуквери"
            Ответить
            • Ну так я о том, что "чистый js = гк" - хуита того же рода.
              Есть, на минуточку, заказчики, которые хотят, чтобы всё было написано руками, без сторонних библиотек. И я их прекрасно понимаю, потому что если это какая-то чувствительная отрасль, при следующем аудите их выебут за то, что используется jquery, подгружаемый, не дай боже, через CDN. Просто по формальным признакам. И вот тут наступает время для таких вот велосипедов, ну а там может быть как ГК, так и хорошие решения, в зависимости от команды.
              Насчёт блевотности JS - да, местами есть, и я уже здесь на эту тему отписывался, но как по мне, так кофискрипт в этом плане ещё хуже. Остаётся TS, у которого вероятно большое будущее.
              Да, и чтобы два раза не вставать. Прототипное наследование блевотным может назвать только тот, кто дрочил пять-семь лет на плюсы, а это - отдельная каста.
              Ответить
              • И да, минусовать собеседника в твоём с ним треде - моветон.
                Ответить
              • >> "чистый js = гк" - хуита того же рода.
                Это не хуита, а правда: чистый JS крайне неудобен для проектов больше хеллоуворлда, и радоваться ему может только тот, кто больше никакого языка не пробовал.

                Вот именно потому и появилось так много всего, что компилируется в JS.

                В JS отвратительно все: начиная от отсутствия IDE со статическим анализом (даже для ПХП он есть!) и заканчивая вырвиглазным синтаксисом из лесенок.

                >> аудите их выебут за то, что используется jquery, подгружаемый, не дай боже, через CDN
                Почитай про компиляцию JS, узнаешь что не обязательно что-то куда-то подгружать.

                >>Остаётся TS
                Остается еще туева хуча: https://github.com/jashkenas/coffeescript/wiki/list-of-languages-that-compile-to-js

                >> Прототипное наследование блевотным может назвать только тот
                ..кто хоть раз в жизни попробовал нормальное наследование, и кто знаком с паттернами и best practices которые есть не только в плюсах, но и в C#, Java, даже в Python, и только в JS их нет. Именно потому любой проект на JS выглядит как говно.

                Не существует никакой причины писать на чистом JS да еще и без библиотек для проекта уровня VK.
                Ответить
                • >начиная от отсутствия IDE со статическим анализом (даже для ПХП он есть!)
                  Для фитона они тоже есть, тем не менее, пользоватсья можно или супертормозным pycharm, или каким-нить ipython в со-со-соснольке. О соснольке уровня браузерной для фитона только мечтать можно.

                  >и заканчивая вырвиглазным синтаксисом из лесенок.
                  Это не проблема ecmascript как такового, а проблема отсутствия синтаксиса async/await в языке, который в основном используется для асинхронного программирования.
                  Ответить
                  • >>Для фитона они тоже есть, тем не менее, пользоватсья можно или супертормозным pycharm

                    ну поставь xmx 2048 и не будет тормозить:) Важно что они, по крайней мере, есть. Иеще python tools for visual studio.

                    А все IDE для JS обычно тупые как пробки, ибо JS стат. анализу не подвластен.

                    >>Это не проблема ecmascript как такового, а проблема отсутствия синтаксиса async/await в языке

                    Лол) "Это не проблема языка, а проблема отсутствия в нем средств". Согласен)
                    Ответить
                    • >ну поставь xmx 2048 и не будет тормозить:)
                      Даже на некрожелезе? Все иде у меня нормально работают кроме pycharm.

                      >Важно что они, по крайней мере, есть.
                      Почему ты говоришь о них во множественном числе?

                      Ecmasctipt await не нужен, т.к. он не привязан к браузеру и следовательно к асинхронному программированию.
                      Ответить
                      • >>Даже на некрожелезе?
                        Конечно нет. Поставь себе 16Гб ram, выдели из них 2Гб на pycharm и он залетает.

                        >>Все иде у меня нормально работают кроме pycharm.
                        орлы? Поставь себе visual studio 2015, пожалуйста.

                        >>Почему ты говоришь о них во множественном числе?
                        1) pycharm
                        2) Python Tools for Visual Studio

                        >>Ecmasctipt await не нужен, т.к. он не привязан к браузеру и следовательно к асинхронному программированию.

                        лол, ты правда думаешь что асинхронное программирование нужно только в браузере?
                        А десктоп реактивный? А сервер с кооперативкой?

                        Как ты думаешь, зачем async/await завезли в питона и c#?
                        И кстати в ES6 он есть

                        PS: вообще средств много: https://en.wikipedia.org/wiki/Futures_and_promises

                        Они даже в ерланге есть
                        Ответить
                        • Ну 12 у меня шла явно пошустрее шарма.

                          >2) Python Tools for Visual Studio
                          Есть причины это ставить? Плагин для платной ide? Чем она лучше хотя бы pydev?

                          ecmascrpti *может* существовать без асинхронного программирования, в браузере это невозможно.

                          >А десктоп реактивный?
                          Што?

                          >питона
                          Веб-серваки

                          >c#
                          Гуй (попробуй найти программу,которая не виснет, если открывается файл по сети).

                          >И кстати в ES6 он есть
                          И кстати, где твой ES6?
                          Ответить
                          • >>Есть причины это ставить?
                            да, погугли

                            >>Што?

                            https://en.wikipedia.org/wiki/Reactive_programming

                            >>попробуй найти программу,которая не в

                            любая программа, автор которой умеет асинхронное IO. Бля, даже win32api умеет.

                            >>И кстати, где твой ES6?
                            пока нигде
                            Ответить
                            • >да, погугли
                              Неа. Сюда неси.

                              >любая программа, автор которой умеет асинхронное IO.
                              Названия давай мне, блядь.

                              >пока нигде
                              АТО.
                              Ответить
                              • >>Неа. Сюда неси.
                                https://code.visualstudio.com/docs/languages/python

                                >>любая программа, автор которой умеет асинхронное IO.
                                Explorer.exe начиная с семерки

                                >>АТО.
                                Ты решил вернуться на родину и защищать её с оружием в руках? Похвально!
                                Ответить
                                • Что ты принес, блядь, где причины? Чем это лучше pydev, яспрашиваю?

                                  >Explorer.exe начиная с семерки
                                  Целая одна программа?

                                  >Ты решил вернуться на родину и защищать её с оружием в руках? Похвально!
                                  Проще пожертвовать денег на какую-то хуйню, из которой русню будут крошить на корм собакам.
                                  Ответить
                                  • >>Что ты принес, блядь, где причины? Чем это лучше pydev, яспрашиваю?
                                    А ты умеешь английский? Ты почитал про комплишен там? Видео посмотрел?

                                    >>Целая одна программа?
                                    Ты просил пример -- я тебе его дал. Предполагаю что многие контролы так делают, и потому там целая плеяда программ
                                    Ответить
                                    • Тебе слово pydev вообще знакомо? Это такой плагин для эклипса. В автокомплит даже npp умеет кое-как.
                                      Захуй покупать когда даже pycharm можно официально бесплатно юзать.

                                      >Предполагаю
                                      Не надо тут мне. Я тебе в 5 раз больше примеров приведу где так не делают.
                                      Ответить
                                    • >Quickly see methods, class members, and documentation.
                                      Ты автокомплитом и апидоком похвастаться пришел, и это в платной ide?
                                      Ответить
                                      • >> это в платной ide?
                                        Completely free Python support within Visual Studio.
                                        Ответить
                                        • >within Visual Studio.
                                          С каких пор бесплатной VS стало можно пользоваться?
                                          Ответить
                                          • >>С каких пор бесплатной VS
                                            Не знаю, у меня стоит бесплатный Express. Решарпера под него нет конечно, но комплишен есть и компилятор работает
                                            Ответить
                                            • Ну я для питона vs не юзал, но для c# без решарпера никак, да и бесплатная ide сама по себе днище, по-моему.
                                              Ответить
                                              • Почему никак? Комплишен работает вполне себе.

                                                >>да и бесплатная ide сама по себе днище, по-моему.
                                                лол почему?
                                                Ответить
                                                • Потому что это работает хуже ctrl+1 в дефолтовом эклипсе.

                                                  >лол почему?
                                                  Уже не помню, но осадочек остался.
                                                  Ответить
                                                  • >>Уже не помню, но осадочек остался.


                                                    --Никогда не носите синие свитера. Только мудаки носят синие свитера. Я один раз носил синий свитер
                                                    --и?
                                                    --Уже не помню что случилось, но осадочек остался.
                                                    Ответить
                                                    • А ты хочешь чтобы я тебе помнил все косяки софта что я когда-то видел? Каких-то фич не хватало, которые для жавы были наверняка в бесплатных ide.
                                                      Ответить
                                            • Воу-воу, паринь, ты из какого года? Уже давно есть VS Community Edition, и на неё таки ставится решарпер (ну правда за решарпер сам нужно заплатить). Express версии вроде закончились в 2008, или я что-то путаю...
                                              Ответить
                                              • У меня ессть экспресс 2010, чяднт?
                                                Ответить
                                                • Ну значит в 2010 и закончились. Я к тому, что есть уже коммьюнити эдишн, на которую и аддоны ставятся, и вообще.
                                                  Ответить
                                                  • https://www.microsoft.com/ru-ru/SoftMicrosoft/vs2015ExpressforW10.aspx

                                                    , !
                                                    Ответить
                  • Я же рассказал тебе про го. Посмотри на него - для юзерспейсных потоков асинк/авейт не нужен. Хватит уже форсить этот стремный костыль из сишарпа, который зачем-то скопипастили в петон.
                    Ответить
                    • >Я же рассказал тебе про го.
                      Хде? о_О
                      Дай конкретный пример.
                      Ответить
                      • http://govnokod.ru/21160#comment358458

                        Пример чего тебе? Синхронный код выглядит одинаково не зависимо от того, выполняется он в обычном потоке или в зеленом. Так же, как ядро снимает обычный поток с выполнения, когда тот делает блокирующий read на сокете, рантайм го снимает зеленый поток с выполнения, когда тот делает read на сокете из гошного пакета net.
                        Что тут объяснять-то надо? Для контекст-свитча не нужен специальный синтаксис. Его вообще быть видно не должно.
                        Ответить
                        • Где ты мне рассказал за го, я не понял?

                          Молодец, а теперь переделай все api js под это. Кстати, пару примерчиков из го не помешало бы.
                          Ответить
                          • >>всё JS api

                            так вот же: https://github.com/gopherjs/gopherjs

                            было: document.write("Hello world!");
                            стало: js.Global.Get("document").Call("write", "Hello world!")

                            Выглядит парашненько, но если сгенерить прокси то проблем не будет
                            Ответить
                          • > Где ты мне рассказал за го, я не понял?
                            По ссылке я открыл тебе существование этого языка. Или надо было туториал пересказать?

                            > а теперь переделай все api js под это
                            От апи с асинк/авейт оно будет отличаться только отсутствием этих самых асинков и авейтов.

                            > Кстати, пару примерчиков из го не помешало бы.
                            Я тебе википедия чтоли? Загугли.
                            Ответить
                            • Не, ртфмить сам иди. Или давай ответы на мои вопросы, или дуй в хуй.

                              >От апи с асинк/авейт оно будет отличаться только отсутствием этих самых асинков и авейтов.
                              И существующий код не сломается?

                              >Я тебе википедия чтоли? Загугли.
                              Ты сюда го притащил и что-то утверждаешь?
                              Ответить
                              • Сам дуй.

                                > Ты сюда го притащил и что-то утверждаешь?
                                Да.
                                Ответить
                                • Ну так неси пруфы или дуй в хуй, я за тебя должен угадывать что ты имеешь в виду?
                                  Ответить
                                  • Да он сам го в глаза не видел

                                    Очевидно же

                                    На фоне Хуесты даже ты выглядишь адекватно
                                    Ответить
                • Да, ты еще забыл инфраструктурную проблему - охуительную ситуацию с библиотеками и повторным использованием кода.
                  Ответить
                  • Да, модульности в языке нет (в питоне есть, кстати).
                    Модульность там только на уровне рантаймтов (require.js итд).

                    "Повторное использование" примерно такое же, да: "скопируй с форума":)
                    Ответить
                    • Не только модульности, но и менеджера пакетов.
                      Ответить
                      • Менеджер есть -- npm.
                        Но нет стандартного способа описывать депенденсы
                        Ответить
                        • Да? Как использовать твой npm из браузера?
                          В js пространства имен для начала хоть появились?
                          Ответить
                          • лобковые вши твоей мамки лишь в твоем пространстве имен, проверь
                            Ответить
                          • Нет? О какой модульности может идти речь без пространств имен?
                            Ответить
                            • пространство имен это хорошо, но теоретически оно эмулируется как в плейнсишечке например.

                              Для модульности нужно уметь описывать модуль: его ID и зависимости. Этого в js нет.

                              В браузере npm нету потому что это платформа: под нее нужно компилироваться и линковаться
                              1) npm всенужныепакеты
                              2) компилируем и линукуем весь твой код и пакеты статически в govna_kusok.js размером 10 мегабайт
                              3) грузим его в браузер
                              Ответить
                              • > под нее нужно компилироваться и линковаться
                                Што? Почему нельзя модули грузить как раньше по хттп?
                                Ответить
                                • А ты попробуй загрузить 764 модуля на страницу, и поймешь
                                  Ответить
                                  • покажи пример где это реально нужно
                                    Ответить
                                    • ну напиши чтонить серьезнее хелловорлда и узнаешь зачем нужно 10 сторонни модулей и 20 своих
                                      Ответить
                            • В JS есть словари, лексический контекст и возможность любую хрень пихнуть в лексический контекст.
                              Из анонимной функции с use strict ничего не утечёт наружу без явного указания.
                              На словарях можно собрать иерархию имён любой глубины.

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

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

                              А словари в питоне тоже есть)
                              Ответить
                              • > можно создать функцию внутри функции, или даже лямбду
                                (function(){
                                    function f1(){
                                      console.log('Безымянный модуль с двумя функциями');
                                   }
                                    function f2(){
                                      console.log('Питон так не умеет');
                                   }
                                   return {f1:f1, f2:f2};
                                });

                                > она ни с кем не будет конфликтовать
                                Будет. Модуль в лямбду не всунешь. Имя останется.
                                Ответить
                              • >В питоне два модуля могут конфликтовать просто потому, что имеют имена.
                                >В js два модуля могут не конфликтовать просто потому, что не имеют имен. правда не очень понятно как ими пользоваться.
                                Ахуеть лол :)
                                Ответить
                                • Второй бароп не понял как пользоваться и поправил комментарий. Даже не знаю, как он лямбды использовал, у них же имени нет. С литералами вобще капец. Ни имён, ни типа нет.

                                  Если у херни есть имя, есть ненулевая вероятность, что кто-то придумает другую сущность с тем же именем (input, raw_input например). Если у херни нет имени, его можно назначить или вставить херню в код напрямую.

                                  Вырожденный пример - скомпилировать все модули в один файл, передав их как аргументы мэйну:
                                  (function(Math, HTTP, myConcole3, js_py) {
                                        // main
                                        alert(Math.PI);
                                  })((function(){  return {PI: 3}; })(), (function(){ итак далее

                                  Преимущество в том, что пользователь (мэйн) даст имя модулю, а не сам модуль.
                                  Модуль не знает, с кем он будет конфликтовать, а мэйн точно знает, какие модули использует.
                                  Ответить
                                  • >Второй бароп
                                    Ясно, хуле я с тобой вообще разговариваю. Дебилы набежали.

                                    одинаковое имя у модулей или невозможно, или это быстро обнаружится.
                                    Ответить
                                    • Проблема в том что второй бароп не знает пайтон, и не знает что внутри функции можно объявить другую функцию, и импортнуть модуль внутри функции тоже можно под любым именем
                                      Ответить
                                      • > импортнуть модуль внутри функции тоже можно под любым именем
                                        Умник, снаружи имя модуля останется
                                        import huj as python

                                        А что это у нас за huj такой? Самоназвание модуля. Второй модуль huj приведёт к конфликту.
                                        >> одинаковое имя у модулей или невозможно, или это быстро обнаружится.
                                        Именно. А если модуль не определяет себе имя, таких ограничений нет.

                                        Когда менеджер пакетов языка позволяет загружать свой код, красивые имена быстро забиваются. Нормальные пакеты называют хер пойми как, первыми гуглятся пакеты школьников.
                                        Ответить
                                        • сразу видно что на pypi ты ни разу не был
                                          Ответить
                                          • Бля, сидите под своими учетками. Я не хочу разбираться кто из вас дебил а кто нет.
                                            Ответить
                                        • > Нормальные пакеты называют хер пойми как, первыми гуглятся пакеты школьников.
                                          Конфликт имен-то тут причем?
                                          Ответить
                                  • ох, бароп бароп.

                                    import main as huja_lisogo_a_ne_konflict
                                    Ответить
                                    • А что это у нас за main такой? Самоназвание модуля. Второй модуль main приведёт к конфликту если его импортировать с таким же именем.

                                      А если с другим -- то не приведет.

                                      И вообще: в JS _НЕТ_ средств описания модулей и _НЕТ_ способа их подключения
                                      Ответить
                                      • > И вообще: в JS _НЕТ_ средств описания модулей и _НЕТ_ способа их подключения
                                        Это только абстракция. В машинном коде _НЕТ_ средств описания модулей и _НЕТ_ способа их подключения.
                                        JS позволяет реализовать модули, питон позволяет реализовать модули. import в питоне и любом языке с eval - только ненужный сахарок для очевидного.
                                        Ответить
                                        • Причем тут машинный код?

                                          Если стандарт ЯП описывает понятие модуля, то можно создать модуль который будет работать всегда и везде, в независимости от фреймворков и внешних приблуд.

                                          В JS таких средств нет: require таким средством не является так как это не часть ЯП и не часть стандартной либы. В ES6 это пофиксили, но где тот ES6?

                                          А вообще лучше всего модульность реализована в сборках .NET.
                                          Там у каждого модуля есть четкий ID и четкие депенденсы.
                                          Ответить
            • >JS это единственный высокоуровневый ЯП который блевотен до такой степени
              вi просто его неправильно готовите, JavaScript: The Good Parts от крокфорда
              Ответить
              • The good parts: (далее следует референс по языку)

                Охуенно)
                Ответить
                • >не читал дальше оглавления
                  кек
                  Ответить
                • В общем, данный конкретный бароп не читал ни Крокфорда, ни Резига, ни даже этого чувака со сложнопроизносимой фамилией, который "Выразительный Javascript". Да вообще ничего, судя по всему, о javascript не читал. Nuff said.
                  Ответить
                  • Унылый пиздеж вместо конкретных примеров. Ты покажи как модуль на джаваскрипте сделать. Что, никак? То то.
                    Ответить
                    • Хуёдуль. Ты мне покажи, как твой петон в браузере запустить. Это будет посложнее, чем найти твоего папашу.
                      Ответить
                      • Sculp.js , например.

                        Как связана дерьмовость джс с браузером?
                        Ответить
                      • Skulpt точнее
                        Ответить
                        • Это какая-то херь, которая транслирует питон в жс, который и выполняется в браузере.
                          Есть TS, в котором (я уверен) есть модули, который тоже транслируется в жс и выполняется в браузере.
                          Я к тому, что каким бы говном жс не был, в браузере выполняется только он (ну и vbscript для особоых граждан).
                          С тем же успехом можно искать ООП и неймспейсы в сях. Но если я нидайбоже назову си говном, меня тут же отпиздят ногами многочисленные адепты. Вот и вся аналогия.
                          Ответить
                          • Адепты с лора?
                            Нормальные юзеры сишечки имхо должны четко знать ее область применения.
                            Ответить
                          • А я считаю си говном и не стесняюсь говорить об этом при любом удобном случае.
                            Ответить
                            • Посчитал тебя говном, жалкий неосилятор. Проверь
                              Ответить
                          • > каким бы говном жс не был, в браузере выполняется только он
                            Ох лол. Т.е. жопоскрипт жив только за счёт монополии на запуск в браузере?
                            Ответить
                            • Борманду доводилось тешить себя IntraWeb-ом?
                              Ответить
                              • Не, я не настолько мазохист, чтобы писать на делфи под веб.
                                Ответить
                                • Криптография на сишном препроцессоре — это ещё куда ни шло, но веб на дельфи — это явный перебор.
                                  Ответить
                                  • > Криптография на сишном препроцессоре
                                    Ну тут как бы челендж был...

                                    А веб на делфи - это как перекладывать навоз совочком.
                                    Ответить
                                  • А как насчет PHP на делфи?
                                    У борланда была среда, для разработки визуальных PHP приложений.
                                    Ответить
                            • Эм.. Ну вообще, как по мне - да. nodejs, wsh - это всё конечно клёво, но не будучи монополистом в браузерах JS уже или умер бы, или переродился бы во что-то другое, на что всякие баропы не выливали кучки своего личного мнения.
                              Ответить
                            • Ты америку для себя отрыл?
                              Ответить

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