- 1
- 2
- 3
- 4
function addTemplates(tpls) {
window.templates = window.templates || {};
extend(window.templates, tpls);
}
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
−51
function addTemplates(tpls) {
window.templates = window.templates || {};
extend(window.templates, tpls);
}
Индусский код на примере vk.
someone 24.11.2016 10:23 # 0
proctologist 24.11.2016 10:43 # −4
barop 24.11.2016 17:35 # −3
bakagaijin 25.11.2016 00:33 # −1
Пиздуй писать снежинки на своём жквери, уже как раз сезон.
barop 25.11.2016 00:41 # +4
Программисты на нормальных ЯП обычно знают что такое SP или BP, например, но это не мешает им писать на плюсах, правда? На ассемблере они не пишут
JS это единственный высокоуровневый ЯП который блевотен до такой степени, что в него компилируется кто угодно: от кофескрипта и тайпскрипта до котлина и джавы, потому что на чистом js с его прекрасным "наследованеим" никто писать не хочет.
Ну кроме конечно всякого вебшлака, для которого мир делится на "JS"и "жуквери"
bakagaijin 25.11.2016 00:55 # +2
Есть, на минуточку, заказчики, которые хотят, чтобы всё было написано руками, без сторонних библиотек. И я их прекрасно понимаю, потому что если это какая-то чувствительная отрасль, при следующем аудите их выебут за то, что используется jquery, подгружаемый, не дай боже, через CDN. Просто по формальным признакам. И вот тут наступает время для таких вот велосипедов, ну а там может быть как ГК, так и хорошие решения, в зависимости от команды.
Насчёт блевотности JS - да, местами есть, и я уже здесь на эту тему отписывался, но как по мне, так кофискрипт в этом плане ещё хуже. Остаётся TS, у которого вероятно большое будущее.
Да, и чтобы два раза не вставать. Прототипное наследование блевотным может назвать только тот, кто дрочил пять-семь лет на плюсы, а это - отдельная каста.
bakagaijin 25.11.2016 00:56 # −1
barop 25.11.2016 01:11 # +2
Это не хуита, а правда: чистый 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.
3_14dar 25.11.2016 02:10 # +2
Для фитона они тоже есть, тем не менее, пользоватсья можно или супертормозным pycharm, или каким-нить ipython в со-со-соснольке. О соснольке уровня браузерной для фитона только мечтать можно.
>и заканчивая вырвиглазным синтаксисом из лесенок.
Это не проблема ecmascript как такового, а проблема отсутствия синтаксиса async/await в языке, который в основном используется для асинхронного программирования.
barop 25.11.2016 02:34 # 0
ну поставь xmx 2048 и не будет тормозить:) Важно что они, по крайней мере, есть. Иеще python tools for visual studio.
А все IDE для JS обычно тупые как пробки, ибо JS стат. анализу не подвластен.
>>Это не проблема ecmascript как такового, а проблема отсутствия синтаксиса async/await в языке
Лол) "Это не проблема языка, а проблема отсутствия в нем средств". Согласен)
3_14dar 25.11.2016 02:56 # 0
Даже на некрожелезе? Все иде у меня нормально работают кроме pycharm.
>Важно что они, по крайней мере, есть.
Почему ты говоришь о них во множественном числе?
Ecmasctipt await не нужен, т.к. он не привязан к браузеру и следовательно к асинхронному программированию.
barop 25.11.2016 03:00 # 0
Конечно нет. Поставь себе 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
Они даже в ерланге есть
3_14dar 25.11.2016 06:28 # 0
>2) Python Tools for Visual Studio
Есть причины это ставить? Плагин для платной ide? Чем она лучше хотя бы pydev?
ecmascrpti *может* существовать без асинхронного программирования, в браузере это невозможно.
>А десктоп реактивный?
Што?
>питона
Веб-серваки
>c#
Гуй (попробуй найти программу,которая не виснет, если открывается файл по сети).
>И кстати в ES6 он есть
И кстати, где твой ES6?
barop 25.11.2016 17:41 # −1
да, погугли
>>Што?
https://en.wikipedia.org/wiki/Reactive_programming
>>попробуй найти программу,которая не в
любая программа, автор которой умеет асинхронное IO. Бля, даже win32api умеет.
>>И кстати, где твой ES6?
пока нигде
3_14dar 25.11.2016 23:12 # 0
Неа. Сюда неси.
>любая программа, автор которой умеет асинхронное IO.
Названия давай мне, блядь.
>пока нигде
АТО.
barop 25.11.2016 23:16 # 0
https://code.visualstudio.com/docs/languages/python
>>любая программа, автор которой умеет асинхронное IO.
Explorer.exe начиная с семерки
>>АТО.
Ты решил вернуться на родину и защищать её с оружием в руках? Похвально!
3_14dar 25.11.2016 23:23 # 0
>Explorer.exe начиная с семерки
Целая одна программа?
>Ты решил вернуться на родину и защищать её с оружием в руках? Похвально!
Проще пожертвовать денег на какую-то хуйню, из которой русню будут крошить на корм собакам.
barop 25.11.2016 23:25 # 0
А ты умеешь английский? Ты почитал про комплишен там? Видео посмотрел?
>>Целая одна программа?
Ты просил пример -- я тебе его дал. Предполагаю что многие контролы так делают, и потому там целая плеяда программ
3_14dar 25.11.2016 23:31 # 0
Захуй покупать когда даже pycharm можно официально бесплатно юзать.
>Предполагаю
Не надо тут мне. Я тебе в 5 раз больше примеров приведу где так не делают.
3_14dar 25.11.2016 23:37 # 0
Ты автокомплитом и апидоком похвастаться пришел, и это в платной ide?
barop 25.11.2016 23:41 # 0
Completely free Python support within Visual Studio.
3_14dar 25.11.2016 23:44 # 0
С каких пор бесплатной VS стало можно пользоваться?
barop 25.11.2016 23:46 # 0
Не знаю, у меня стоит бесплатный Express. Решарпера под него нет конечно, но комплишен есть и компилятор работает
3_14dar 25.11.2016 23:51 # 0
barop 25.11.2016 23:53 # 0
>>да и бесплатная ide сама по себе днище, по-моему.
лол почему?
3_14dar 25.11.2016 23:55 # −1
>лол почему?
Уже не помню, но осадочек остался.
barop 25.11.2016 23:57 # +2
--Никогда не носите синие свитера. Только мудаки носят синие свитера. Я один раз носил синий свитер
--и?
--Уже не помню что случилось, но осадочек остался.
3_14dar 26.11.2016 03:53 # 0
bakagaijin 26.11.2016 17:05 # 0
guest 26.11.2016 17:07 # 0
bakagaijin 26.11.2016 18:26 # 0
guest 26.11.2016 18:41 # 0
, !
huesto 25.11.2016 02:41 # 0
3_14dar 25.11.2016 02:53 # 0
Хде? о_О
Дай конкретный пример.
huesto 25.11.2016 03:02 # 0
Пример чего тебе? Синхронный код выглядит одинаково не зависимо от того, выполняется он в обычном потоке или в зеленом. Так же, как ядро снимает обычный поток с выполнения, когда тот делает блокирующий read на сокете, рантайм го снимает зеленый поток с выполнения, когда тот делает read на сокете из гошного пакета net.
Что тут объяснять-то надо? Для контекст-свитча не нужен специальный синтаксис. Его вообще быть видно не должно.
3_14dar 25.11.2016 03:48 # 0
Молодец, а теперь переделай все api js под это. Кстати, пару примерчиков из го не помешало бы.
barop 25.11.2016 04:08 # 0
так вот же: https://github.com/gopherjs/gopherjs
было: document.write("Hello world!");
стало: js.Global.Get("document").Call("write", "Hello world!")
Выглядит парашненько, но если сгенерить прокси то проблем не будет
3_14dar 25.11.2016 04:23 # 0
AnalniyTerzatel 25.11.2016 04:51 # 0
huesto 25.11.2016 04:51 # 0
По ссылке я открыл тебе существование этого языка. Или надо было туториал пересказать?
> а теперь переделай все api js под это
От апи с асинк/авейт оно будет отличаться только отсутствием этих самых асинков и авейтов.
> Кстати, пару примерчиков из го не помешало бы.
Я тебе википедия чтоли? Загугли.
3_14dar 25.11.2016 04:59 # +1
>От апи с асинк/авейт оно будет отличаться только отсутствием этих самых асинков и авейтов.
И существующий код не сломается?
>Я тебе википедия чтоли? Загугли.
Ты сюда го притащил и что-то утверждаешь?
huesto 25.11.2016 05:19 # 0
> Ты сюда го притащил и что-то утверждаешь?
Да.
3_14dar 25.11.2016 06:23 # +1
guest 26.11.2016 04:35 # 0
Очевидно же
На фоне Хуесты даже ты выглядишь адекватно
3_14dar 26.11.2016 04:56 # 0
guest 26.11.2016 05:01 # 0
3_14dar 25.11.2016 02:11 # 0
barop 25.11.2016 02:34 # 0
Модульность там только на уровне рантаймтов (require.js итд).
"Повторное использование" примерно такое же, да: "скопируй с форума":)
3_14dar 25.11.2016 02:54 # 0
barop 25.11.2016 02:55 # 0
Но нет стандартного способа описывать депенденсы
3_14dar 25.11.2016 06:29 # +1
В js пространства имен для начала хоть появились?
guest 25.11.2016 07:46 # 0
3_14dar 25.11.2016 16:28 # 0
barop 25.11.2016 17:05 # 0
Для модульности нужно уметь описывать модуль: его ID и зависимости. Этого в js нет.
В браузере npm нету потому что это платформа: под нее нужно компилироваться и линковаться
1) npm всенужныепакеты
2) компилируем и линукуем весь твой код и пакеты статически в govna_kusok.js размером 10 мегабайт
3) грузим его в браузер
3_14dar 25.11.2016 23:10 # 0
Што? Почему нельзя модули грузить как раньше по хттп?
barop 25.11.2016 23:58 # 0
3_14dar 26.11.2016 00:17 # 0
guest 26.11.2016 05:02 # 0
barop 25.11.2016 23:59 # 0
Из анонимной функции с use strict ничего не утечёт наружу без явного указания.
На словарях можно собрать иерархию имён любой глубины.
В питоне два модуля могут конфликтовать просто потому, что имеют имена. В JS можно создать безымянный лексический контекст и использовать его как модуль, который не способен конфликтовать, правда не очень понятно как им пользоваться.
С другой стороны в питоне тоже можно создать функцию внутри функции, или даже лямбду и конечно же она ни с кем не будет конфликтовать.
А словари в питоне тоже есть)
barop 26.11.2016 00:16 # 0
> она ни с кем не будет конфликтовать
Будет. Модуль в лямбду не всунешь. Имя останется.
guest 26.11.2016 03:47 # +1
3_14dar 26.11.2016 00:19 # 0
>В js два модуля могут не конфликтовать просто потому, что не имеют имен. правда не очень понятно как ими пользоваться.
Ахуеть лол :)
barop 26.11.2016 00:35 # +1
Если у херни есть имя, есть ненулевая вероятность, что кто-то придумает другую сущность с тем же именем (input, raw_input например). Если у херни нет имени, его можно назначить или вставить херню в код напрямую.
Вырожденный пример - скомпилировать все модули в один файл, передав их как аргументы мэйну:
Преимущество в том, что пользователь (мэйн) даст имя модулю, а не сам модуль.
Модуль не знает, с кем он будет конфликтовать, а мэйн точно знает, какие модули использует.
3_14dar 26.11.2016 00:37 # 0
Ясно, хуле я с тобой вообще разговариваю. Дебилы набежали.
одинаковое имя у модулей или невозможно, или это быстро обнаружится.
barop 26.11.2016 00:41 # 0
barop 26.11.2016 00:51 # +1
Умник, снаружи имя модуля останется
А что это у нас за huj такой? Самоназвание модуля. Второй модуль huj приведёт к конфликту.
>> одинаковое имя у модулей или невозможно, или это быстро обнаружится.
Именно. А если модуль не определяет себе имя, таких ограничений нет.
Когда менеджер пакетов языка позволяет загружать свой код, красивые имена быстро забиваются. Нормальные пакеты называют хер пойми как, первыми гуглятся пакеты школьников.
barop 26.11.2016 00:57 # +1
3_14dar 26.11.2016 01:30 # +1
3_14dar 26.11.2016 01:30 # 0
Конфликт имен-то тут причем?
barop 26.11.2016 00:51 # 0
import main as huja_lisogo_a_ne_konflict
barop 26.11.2016 00:54 # 0
А если с другим -- то не приведет.
И вообще: в JS _НЕТ_ средств описания модулей и _НЕТ_ способа их подключения
guest 26.11.2016 01:07 # 0
Это только абстракция. В машинном коде _НЕТ_ средств описания модулей и _НЕТ_ способа их подключения.
JS позволяет реализовать модули, питон позволяет реализовать модули. import в питоне и любом языке с eval - только ненужный сахарок для очевидного.
barop 26.11.2016 01:11 # 0
Если стандарт ЯП описывает понятие модуля, то можно создать модуль который будет работать всегда и везде, в независимости от фреймворков и внешних приблуд.
В JS таких средств нет: require таким средством не является так как это не часть ЯП и не часть стандартной либы. В ES6 это пофиксили, но где тот ES6?
А вообще лучше всего модульность реализована в сборках .NET.
Там у каждого модуля есть четкий ID и четкие депенденсы.
nihau 25.11.2016 18:14 # +2
вi просто его неправильно готовите, JavaScript: The Good Parts от крокфорда
barop 25.11.2016 18:19 # 0
Охуенно)
nihau 25.11.2016 18:33 # 0
кек
barop 25.11.2016 21:24 # 0
nihau 25.11.2016 22:53 # 0
barop 25.11.2016 22:54 # 0
guest 26.11.2016 00:53 # 0
guest 26.11.2016 05:03 # 0
3_14dar 26.11.2016 05:10 # 0
guest 26.11.2016 17:08 # 0
bakagaijin 26.11.2016 17:12 # 0
guest 26.11.2016 17:27 # 0
bakagaijin 26.11.2016 18:23 # 0
guest 26.11.2016 18:34 # 0
Как связана дерьмовость джс с браузером?
guest 26.11.2016 18:34 # 0
bakagaijin 26.11.2016 18:48 # 0
Есть TS, в котором (я уверен) есть модули, который тоже транслируется в жс и выполняется в браузере.
Я к тому, что каким бы говном жс не был, в браузере выполняется только он (ну и vbscript для особоых граждан).
С тем же успехом можно искать ООП и неймспейсы в сях. Но если я нидайбоже назову си говном, меня тут же отпиздят ногами многочисленные адепты. Вот и вся аналогия.
3_14dar 26.11.2016 19:02 # 0
Нормальные юзеры сишечки имхо должны четко знать ее область применения.
guest 26.11.2016 19:06 # +1
guest 26.11.2016 19:49 # −2
guest 26.11.2016 19:57 # +1
bormand 27.11.2016 07:00 # +1
Ох лол. Т.е. жопоскрипт жив только за счёт монополии на запуск в браузере?
rotretS 27.11.2016 13:29 # 0
bormand 27.11.2016 13:35 # 0
roman-kashitsyn 27.11.2016 15:36 # +1
bormand 27.11.2016 15:39 # 0
Ну тут как бы челендж был...
А веб на делфи - это как перекладывать навоз совочком.
rotretS 27.11.2016 15:59 # 0
У борланда была среда, для разработки визуальных PHP приложений.
bakagaijin 27.11.2016 17:16 # 0
3_14dar 27.11.2016 18:41 # 0