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)
Ответ на: комментарий от bread

жуткая бормотуха из говна мамонта

Что-то удобнее связки html+css для гуёв уже придумали?

Js довольно грамотно облагораживают в последнее время. Причесывают шероховатости. Class-ами органично засахарили прототипную модель.

Довольно изящно проделан путь callbacks -> promises -> generators -> async/await (одно так или иначе выражается через другое).

Всё странное на экране (типа инпутов) более не магия, а, в каком-то смысле, элементы со shadow dom внутри :)

Локальные переменные и функции, итераторы, шаблонные литералы, деструктивное присваивание и много других приятных нововведений.

передовых инновационных нанотехнологий типа риакта

Что ж там передового. Тот же монструозный ангуляр, только с обязательной компиляцией и смешиванием кода с разметкой. Редукс - тоже мне новинка. Бэкбон 10 лет назад умел стрелять объектами-событиями через глобальный листенер

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

Реально жесть. Только недавно улеглись лиспо-хаскелевские лямбда-срачи, но тут кому-то приспичило перенести весь этот бред в javascript. «Нитакие как все» котоморфисты нашли свою нишу и даже умудрились заразить своим безумием массы.

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

Что-то удобнее связки html+css для гуёв уже придумали?

Борланд, Tk

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

Что-то удобнее связки html+css для гуёв уже придумали?

Хм... Да что угодно удобней языка разметки гипертекста со стилями. Впрочем, неизвестно что ты подразумеваешь под «гуями». Если разноцветную свистопердящую страничку с прыгающими фотками, то да, на html+css такое проще сделать. Для всего остального любой тулкит выносит вебню вперед ногами.

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

Локальные переменные и функции, итераторы, шаблонные литералы, деструктивное присваивание и много других приятных нововведений.

Картина маслом: «Верстальщики открывают чудесный мир программирования».

bread
()

Жоэс должен умереть, как и весь остальной веб.

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

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

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

в треде теоретик, очевидно не пользовавшийся гуйней в том числе. идеальное состояние любого десктоп тулкита это гипертекст с разметкой (qml и т.п.).

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

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

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

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

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

алсо, смешивание кода с разметкой реакт язык не поворачивается назвать

Потомучто в среде реактивных запрещено так говорить. Обычно мне отвечают что-то типа «JSX - это расширение синтаксиса Javascript»

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

html - это расширение синтаксиса php (или наоборот) :)

makoven ★★★★★
()
Последнее исправление: makoven (всего исправлений: 1)
Ответ на: комментарий от makoven

Обычно мне отвечают что-то типа «JSX - это расширение синтаксиса Javascript»

jsx это сахар для выражения деревьев. То что ты тупой шольник, с застранными мозгами, никто и не сомневается. jsx решает конкретную проблему, тебе никто не мешает херачить деревья на ванильном js.

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

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

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

для выражения деревьев

Школьник ведь ты, если упускаешь то, что это деревья ОТОБРАЖЕНИЯ. Суть то не меняется. Это всё та же шаблонизация в перемешку с логикой. А это плохая практика.

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

Это всё та же шаблонизация в перемешку с логикой. А это плохая практика.

Про какую логику идет речь? Бизнес логика? Зачем ты ее мешаешь в компоненты? Реакт никаким боком не заставляет тебя это делать.

Логика отображения? Так она сцеплена с версткой и должна быть смешана.

Плохая практика это разделять сцепленные вещи и в реакте, файнали, это наконец-то сделано по человечески.

А ты анон, в плену предрассудков, это как мантра про goto.

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

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

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

И никто не задумался, что в нормальном gui эти деревья не нужны

Мм, это в каком нормальном гуе нет дерева виджетов?

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

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

Shadow ★★★★★
()
Последнее исправление: Shadow (всего исправлений: 1)
Ответ на: комментарий от emptykiev

идеальное состояние любого десктоп тулкита это гипертекст с разметкой (qml и т.п.)

Сравнил кое че с пальцем. Декларативное описание дерева виджетов предпочительно конечно, но вполне можно и без него обойтись, особенно если язык заточен под dsl (Tcl/Tk в пример). Проблема html в том, что оно принципиально нерасширяемо, никаких виджетов там нет (кроме прицепленных сбоку формочек) и средств для построения виджетов нет. Вот вы и костыляете чудовищные риакты, а до того долгие годы просто фигачили лапшу в обработчиках событий. Как завезут нормальную стандартизированную библиотеку виджетов, приходи и попытайся еще раз рассказать о величии html+css. Хотя срам html все равно прикрыть будет трудно.

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

Веб фронтенд - это квинтэссенция культуры героического преодоления последствий предыдущих преодолений.

Я все жду, когда они изобретут дельфи наконец. Заканчивалось второе десятелетие 21-го века...

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

Реакт как раз в нужную сторону. Когда появятся написанные на С процессоры JSX и typescript (как сейчас - sass)... Тогда все станет еще лучше.

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

но не перерисовывается целиком на каждый чих

Им же приходится эмулировать многооконную среду в рамках одного дерева, отсюда дикие пляски вокруг дома. В общем это все поломано от рождения. Но люди на полном серьезе считают, что так хорошо, правильно и _удобно_.

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

Просто я испытываю мучения, программируя веб фронтенд. Так как у меня angular, мне пришлось верстку делать в jade, а bootstrap виджеты рисовать в jinja2 на основе выхода wtforms.
Только после этого можно приступать к программированию ui без простыней хитровыдуманного кода.

И все равно мне придется собственные виджеты на основе canvas прибить гвоздями сбоку, потому что респонсивные размеры канвы можно делать только после рендеринга страницы!!!! Ненавижу. Говнище как оно есть.

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

а редукс вообще придумал eml, что не просто язык а отдельная платформа, рекомендую ознакомиться, кстати.

вы имели ввиду elm?

проблема с реактом (как и с эльмом) лично для меня в том что эту всю канитель верстальщик поддерживать не может. в то время как например ангуляр и нокаут позволяют верстальщику почти без слёз поддерживать код и вносить весьма значительные изменения.

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

потому что респонсивные размеры канвы можно делать только после рендеринга страницы

а нельзя что ли запихать в див, а канве прописать какой нибудь видтх=100%, height:100%?

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

У меня всё ещё осложнялось тем, что это директива ангуляра и при формировании DOM до рендеринга ещё оочень далеко...

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

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

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

Воркераунд полностью ломает идею первого ангуляра.

Shadow ★★★★★
()

Проблемы ЖС не от трансляции, а от армии мамкиных борщехлёбов, которые как разработчики дно, но с раздутым ЧСВ ибо индустрия их сейчас хочет, хотя и дело к закату вроде пошло. У меня в проекте есть трансляция в ES5, всё нормально, потому что разработчик знает язык и его проблемы, а не предлагает написать кучи г**на которые решат все проблемы.

chuppa
()

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

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

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

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

Лучей поноса тебе.

это штука чтобы сделать сайт лучше

4.2.

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