LINUX.ORG.RU

Критика реакционной клики разрабов «ECMA6 в продакшне»

 , ,


3

4

НЕМИНУЕМО РАЗГРОМНАЯ КРИТИКА КЛИКИ СТОРОННИКОВ «КОМПИЛЛИРОВАТЬ ECMA6 В ПРОДАКШНЕ!!»

РАЗГРОМ. ЧАСТЬ 1.

Сторонники компиляции ECMA6 предлагает использовать код из под т.н. джаваскрипт компилятора транслирующего код из ECMA6 в текущий браузерный ЖС-стандарт-франкенштейт, даже поверх всяких оптимайзеров, умных минификаторов, улучшайзеров. Крайние радикалы из этой клики делают это в самом браузере.

ИХ ПРЕДЛОЖЕНИЕ — они хотят глючно компилить, глючный ECMA6 в глючный браузерный ЖС. Глюков еще добавят все что они хотят иметь дальше в их т.н. пайплайне. Тот-же оптимайзейр (google cloud optimizer) от гугла производит код который даже в самом chrome от гугла не работает в половине случаев.

Единственное решение которое работает в каком либо размерном коммерческом проекте это: писать фронтенд код от руки — что видит разраб, то и работает в браузере.

ЖСу более чем свойственно ломаться незаметно. Дебаг какой либо нетривиальной ошибки перерастает в дебаг самого браузера в GDB. В случае тихого глюкания ECMA6 компилятора, нахождение ошибки вынуждает останавливать всю команду, откатывать код на недели.

РАЗГРОМ. ЧАСТЬ 2.

«Компилированный ЖС» — это код с сотней зависимостей который имеет сотни путей как по разному глючить с разными комбинациями «жс компиляторов», браузеров, версий node и v8fpm. Разбирая зависимости проекта вы часто натыкаетесь на такие перлы в README: «do not use with Babel,» «Does not work with polyfills a,b, and c,» «works on node 0.6, but not 0.10 and I don't know, nor want to know why,» «works on chrome with flags a,b,c and compile parameter z,» «works natively on Safari, you are free to port it to another browser if you want so.»

Каким макаром интерпретируемый язык всего с 33 кивордами и 160 нативными функциями может иметь различия в реализации простейших арифметических функций и ООП алгоритмов плохо понятно.

Вскоре после появления оных умников на любом проекте, у вас будет разукрашенная таблички с зависимостями каждой версией браузера, «компилятора», и версиями рабочих версий зависимостей.

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

РАЗГРОМ. ЧАСТЬ 3.

Массированное использование «компилированного» ЖС приводит к многомегабайтным кусками минифицированного кода на самых простых проектах.

Толк от использование больших сторонних библиотек превышает в разы какую либо пользу от того что какой то выскочка-умник-соплежуй может что то написать без них — дайте волю одному их таки распустить руки когда такой попросит «давайте я вам запиздярю quicksort на JS» и через месяц у вас в репе будет еще 20 таких же криво-косо велосипедов. Продакшн левел библиотек под ECMA6 кот наплакал. Все будут писать с нуля сами горе-ECMA6-пионеры за ваши деньги, и в процессе неизбежно переходить к велосипедостроению.

Имеющийся код на кодопомоях NPM это ассорти из:

  • библиотек однострочников
  • библиотек написаны фиг знает кем, 6 лет назад, кто не отвечает на email
  • библиотек которые имеют зависимости на несколько страниц
  • просто нерабочего кода
  • забинденного кода который не компиллиться чем либо кроме msvc
  • библиотек удаленных/потерянных/переименованных
  • кода под trapware лицензиями
  • кода который не будет работать с тулчейном горе-ECMA6-пионерии и который они будут переписывать за ваши деньги

Ревизионисты-сторонники компиляции ECMA6 обычно говорят — «чистый, быстрый код без костылей фреймворков и jQuery. ECMA6, эжайл, бауэр это будущее.» Мы говорим — ИХ hello world В ПОЛ МЕГАБАЙТА. ШВАБРУ ИМ В ОЧКО, А НЕ БУДУЩЕЕ!

РАЗГРОМ. ЧАСТЬ 4.

Когда этим ревизионистам вменяют то что они пустили проект под откос, они предложат:

  • «Если размер такая проблема, давайте мы используем google cloud compiler — там умный мащин лёнин» — после этого ваши QA будут дебагить запутанный кода и тратить по дню на один баг.
  • «Если баги такая проблема, давайте мы вам напишем debugging harness и прочие дебагилки внутри кода» — после этого они растратят недели на это. После этого же, баги продолжают появляться — они не были покрыты их дебагилками.
  • «Давайте тогда мы вставим дебагилку туда куда мы ее еще не вставили» — опять тратят неделю — баг был не там. Работа методом тыка продолжается. Недели уходят, баг в конце концов найден, теперь осталось найти еще 20.
  • «Давайте мы используем нэйтив юнит тэст» — вы, как опытный разраб прерываете пионеров на словах «юнит тэст в фронтенде» в конце концов понимая их лунатичность. Строгим голосом говорите - все разминифицируем, смотрим что работает и не работает после вашего тулчейна, строка в строку, ИСПОЛНЯТЬ!
  • «Давайте мы попробуем новый ЖС компи...» — «ВЫ УВОЛЕНЫ!,» с шваброй в одном месте умника выпроваживают из здания, вы вздыхаете. Решено оставить всех жуниоров неиспорченных ревизионистами-реакционерами, зашвабрить архитектов и синиоров пришедших с ним. Начинается многомесячный процесс переписки всего и вся на нормальный браузерный жс, разрядка в коллективе, а вам еще надо запилить фичалист на 20 страниц.

Разрабы всех стран, присоединяйтесь к революционному разгрому реакционерской-ревизионистской шайки «компиллируемый ECMA6 в продакшне». Всех кто пробормочет — «ЖС тулчейк» в краску.

https://s11.postimg.org/51t5set2r/struggle_session.jpg



Последнее исправление: Ni2 (всего исправлений: 2)

Надеюсь на то, что придёт WebAsm и принесёт нормальные фреймворки (подобные десктопным) в Web.

И эти костыли вроде компиляции/минификации Js отпадут вместе с макаками.

EXL ★★★★★
()

с шваброй в одном месте умника выпроваживают из здания

Хеппи-енд однако)

bread
()
Ответ на: комментарий от Vit

Что случилось-то?

Что случилось больше всего описано в части 4

Ni2
() автор топика
Ответ на: комментарий от bread

Проблемы такого рода не лечатся санитарами, только живительный эвтаназепам.

redgremlin ★★★★★
()

уверен обойдутся и без тебя.

dima1981
()

Браво! Браво! Вангую либо удаление, либо тред на 10+ страниц.

Deleted
()

В чем проблема просто использовать ES6? Поддержка старого говна? Ну так это ваши проблемы 🐔

ritsufag ★★★★★
()
Последнее исправление: ritsufag (всего исправлений: 1)

Крайние радикалы из этой клики делают это, на лету в браузере

Забыл про высшую касту, пишущих сразу на es6 под последний хром

makoven ★★★★★
()
Ответ на: комментарий от makoven

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

ОП-пост tl/dr, очередные вскудахи вместо прикладного программирования, удел геев и нытиков.

emptykiev
()

Неосилятор порвался.

Deleted
()

Уговорил, соловей, не собирался и не буду использовать, если только мне оно не понадобится. :) А так, никто же не заставляет прямо всё бросить и компелять, компелять. Если фитча будет настолько проблемной, как ты её описываешь, люди не станет ею пользоваться.

PHPFan
()
Ответ на: комментарий от emptykiev

даже не задумывался о пользователях старых версий.

Хороший годный бизнесмен))

bread
()
Ответ на: комментарий от emptykiev

когда понял что в сафари не работает

Для пользователей сафари выводишь плашку «Ваш браузер г**но. Поставьте нормальный браузер»

makoven ★★★★★
()
Ответ на: комментарий от makoven

Забыл про высшую касту, пишущих сразу на es6 под последний хром

Пейсатели хомпаг что ли? Или кого еще посетители в принципе не интересуют?

bread
()
Ответ на: комментарий от makoven

Для пользователей сафари выводишь плашку «Ваш браузер г**но

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

bread
()

Откуда такая любовь к швабрам и задницам других людей? В детстве с тобой случился несчастный случай?

anonymous
()
Ответ на: комментарий от bread

поддержка старых браузеров стоит денег и времени разработчиков. и как правило хороших денег. особенно если речь про поддержку какого-нибудь IE8.

в то же время количество таких клиентов не высоко, а прибыль от них еще ниже.

и если писатель homepage еще может позволить себе поддержку и тестирование странички чуть ли не в lynx, то бусинесс выкинет поддержку старого хлама сразу же, как только она перестанет быть рентабельной.

Ford_Focus ★★★★★
()

Мы говорим — ИХ hello world В ПОЛ МЕГАБАЙТА. ШВАБРУ ИМ В ОЧКО, А НЕ БУДУЩЕЕ!

Вот с этим согласен целиком и полностью. А остальное выглядит как попаболь.

l0stparadise ★★★★★
()

Критика реакционной клики разрабов «ECMA6 в продакшне»

ЯННП.

Deleted
()

компиллируемый ECMA6 в продакшне

А что реально зная ECMA6 устроиться в 32 года фронтенд джуном?

Deleted
()
Ответ на: комментарий от Ford_Focus

поддержка старых браузеров стоит денег и времени разработчиков. и как правило хороших денег. особенно если речь про поддержку какого-нибудь IE8.

Компиляция в ES5 стоит денег? Чудные новости. Про IE8 тут речи нет, речь всего лишь о том, чтобы хипстодевы немного уважали пользователей актуальных браузеров, не делая упоротого допущения, что у всех стоит распоследний хром. Впрочем, поддержку IE8 и т.п. тоже никто не будет дропать просто так ради удобства макак, не льсти себе.

bread
()
Ответ на: комментарий от bread

Сам хром ECMA6 без костылей пока не может. Если был бы тест а-ля acid 3 для жс, хром бы имел около 70% (в большей степени из за глюканутых стандартных методов.)

оопный аспект ecma6 работает в какой то степени даже в ie11

Ni2
() автор топика
Ответ на: комментарий от EXL

Минификация не нужна, когда есть http gzip ;)

ism ★★★
()
Ответ на: комментарий от makoven

Ну судя по caniuse es6 уже нормально поддерживается всеми браузерами

Так что можно писать на нём

ism ★★★
()
Ответ на: комментарий от bread

Впрочем, поддержку IE8 и т.п. тоже никто не будет дропать просто так ради удобства макак, не льсти себе.

На все ie кроме 11, уже лет 4 как все забито и дропнуто. Даже опция с табличкой «браузер г.но, используй хром» рассматривается для реальных коммерческих приложений. Но проблема тут в самом хроме, даже с ним нормально Ecma6 native летать не будет, а так бы так и сделали бы.

Разрабы хрома ламеры с шести и семизначными зарплатами.

Ni2
() автор топика

А теперь всё это перепишите на русском языке.

tommy ★★★★★
()

Всё, что я не осилил - говно.

anonymous
()
Ответ на: комментарий от Ni2

Разрабы хрома ламеры с шести и семизначными зарплатами.

Да ну, а может это с комитетом ECMA не все ладно, что вбросили столько фич сразу одномоментно. Теперь расскажи мне, почему вы не можете просто отдавать ES5? Пишите, отлаживайте хоть на брейнфаке, никто не ограничивает. Но юзеру извольте отдать код, который все актуальные брацзеры смогут прожевать. Это что, рокет сайнс? Про то чтобы просто писать на ES5 я уж не заикаюсь. Хотя что такого, ведь жс он же такой классный, правда? Или он только с прошлого года классный?

bread
()
Ответ на: комментарий от bread

Теперь расскажи мне, почему вы не можете просто отдавать ES5

Вот я про это и говорю. Завелись умники, им ненравился браузерный жс, им нужно было компилить es6 в es5 3 разными транспиляторами, препроцессорами и улучшайзерами, проект пошел под откос, их выгнали.

Ni2
() автор топика
Ответ на: комментарий от bread

Компиляция в ES5 стоит денег?

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

ну скажем history api. можно соорудить полуаналог из говна и палок, но это займёт время.

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

просто ты живешь в своём манямирке, где некие «хипстодевы» пишут под последний хром.

даже сайт-визитку за тритыщи рублёв (хз сколько они сейчас стоят на самом деле) прогонят через все _актуальные_ браузеры

если же что-то не работает в актуальном браузере (даже если это IE11), то это баг, а не фича, и было бы совсем неплохо во имя мира во всём мире сообщить об этом в саппорт, прикрепив скрин с багом. или видос, если скриншот не передаёт суть проблемы. даже на linux это займёт от силы 5 минут, включая время на установку ffmpeg и гугление e-mail саппорта.

Впрочем, поддержку IE8 и т.п. тоже никто не будет дропать просто так ради удобства макак, не льсти себе.

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

а если ВДРУГ ВНЕЗАПНО им не нравятся получаемые технические задания, просто меняют место работы. это довольно просто, если ты живешь в большом городе.

и да, я с web-разработкой на данный момент никак не связан. но при необходимости могу узнать про «модные течения»

Ford_Focus ★★★★★
()
Ответ на: комментарий от Ni2

То есть менежер проектов был настолько глуп, что не увидел как ктото решил делать лажу

ism ★★★
()
Ответ на: комментарий от tailgunner

Хороший жабаскриптер - мертвый жабаскриптер.

И в первую очередь необходимо утилизировать тех, кто тащит это на десктоп.

WereFox ★☆
()
Ответ на: комментарий от EXL

Приведу пример из реальной жизни. Есть контора, раньше вообще не занималась веб программированием, но со временем клиенты часто это стали хотеть и теперь веб программирование разных мастей у них 60%. Вот вы бы конкретно что стали делать на их месте, отказываться от заказов?

И другой пример. Есть два проекта, разные совсем, но оба можно выполнить что так что и иначе. Один выполнен в виде веб морды, которая имеет мобильную версию(ну то есть по факту 2е вёрстки + чуть больше работы над клиентской логикой) и один сервер для всех мобильных вёрсток и десктопа. Другой выполнен в виде сервера и для как ios так и android сделаны нативные версии. Так вот тот другой вышел дороже, и клиенты это знают. Получился другой чуть лучше, но не в разы. Плюс версия под android оказалась хуже(но это уже косяки нанятого разработчика). Но тот что только web намного дешевле поддерживать(в несколько раз, это происходит из-за того, что каждому разработчику надо платить, хоть и немного) и мало чем уступает, а порой и незаметно. Конечно, есть проекты где просто нельзя сделать адекватную web версию, но это другой вопрос.

ixrws ★★★
()
Ответ на: комментарий от Ni2

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

Сейчас писать на es5 - это мазохизм. Я на нем делаю только небольшие низкоуровневые библиотеки, которые отдельно опенсорсятся.

Vit ★★★★★
()
Ответ на: комментарий от legolegs

Что именно, разве оно не часть ecma6. То есть введут новый стандарт, в котором не будет function?:) и дропнут совместимость с прежними? Это какой-то новый путь, было интересно на него посмотреть!

ixrws ★★★
()
Ответ на: комментарий от Ford_Focus

себя в зеркале давно видел?

Че, сильно толстый, да? Постараюсь слегка похудеть к лету.

bread
()
Ответ на: комментарий от Vit

Сейчас писать на es5 - это мазохизм.

Так и запишем, писать на js - это мазохизм. Ведь ES5 это почти не замутненная классика, а то, что натащили потом отовсюду, ненужно (именно так пели евангелисты совсем недавно).

bread
()
Ответ на: комментарий от ixrws

То есть введут новый стандарт, в котором не будет function?

Почему бы и нет? Можно и проще: задепрекейтить, а потом выкинуть var. Или тоньше, изменить семантику var на let. Странно, что сразу так не сделали. Было бы гораздо веселее смотреть на корчи вебельщиков сейчас.

bread
()

Основная проблема объемов это отсутствие в ноде внятной поддержки «shared modules» Возможно просто неосилил, но хотелось бы иметь решение, когда каждый пакет не ставит свой лодаш, а все лежит в отдельном ресурсе типа node modules, причем все это без глобальных флагов. Пробовал зашарить все в общий каталог - пошли ошибки babel, webpack

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

Далее, с этим на выходе так или иначе справляется вебпак. Все бы в нем хорошо, да только сгенерированный «require» не очень красивое и очевидное решение плюс долго идет сборка, а в остальном приемлемо: заменяет зоопарк всяких инструментов.

Другая немаловажная проблема это необходимость при деплое развертывать зависимости, когда можно было деплоить одним пинком через DCVS хотя бы - т.е. билд не положить под контроль версий, хотя бы часть.

Было бы удобнее все же один раз положить под контроль версии и потом уже все деплоить т.е. сборку делать хотя бы в исходной точке, ну и уж потом при желании где то еще иметь возможность пересобрать так, чтобы можно было закоммитить при необходимости, влить в мейнстрим обратно так сказать ...

anonymous
()
Ответ на: комментарий от Ford_Focus

это конечно факт. но я слышал про одну ОС, 1% пользователей говорят...

AndreyKl ★★★★★
()
Ответ на: комментарий от bread

скажем, вроде поддержка javascript сводится к шимам. вот с html/css гораздо более удручающе дела обстоят.

ЗЫ . про новые апи я не подумал что то, да проблема js5 она глубже. сразу на ум приходят апи для работы с камерами отсутствующие в ие как класс, история...

AndreyKl ★★★★★
()
Последнее исправление: AndreyKl (всего исправлений: 1)

ЯННП, все современные браузеры поддерживают ES6, надо просто писать на нем и не надо ничего компилировать

annulen ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.