LINUX.ORG.RU

11-е правило Гринспуна, о котором он предпочел умолчать

 , ,


0

1

Любая достаточно сложная программа на Javascript содержит заново написанную, неспецифицированную, глючную и медленную реализацию половины языка Common Lisp.

Нет, ну вы видели современную экосистему JS?

NPM, Webpack, Babel - метациклические компиляторы и интерпретаторы JS, на основе конфигов.

Vue/React/Angular - фреймворки с доменноспецифичными метаязыками и декларативными макросами поверх API браузеров.

И что самое главное, это представляет собой сущий кромешный непроходимый пиздец.

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

Народ, у меня на работе фронт собирается медленнее, чем на прошлой работе собирался С++ код, представляющий собой огромную обвязку над FFmpeg.

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

И главное, все это говно на порядок сложнее в изучении и понимании, чем SICP, спецификация Common Lisp, Dragon Book и Ахо/Ульман - вместе взятые.

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

Фронтендщики, хватит! Остановитесь!

FFmpeg — c + asm. Вот тебе и ответ. Будь там в составе какая-нибудь шляпа на шаблонах, картина была бы несколько иной.

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

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

Давайте, сделайте достойную альтернативу на лиспе, я уверен многие оценят.

Clojure давно есть и он хороший.

Common Lisp есть ещё более давно, и он ещё более хороший, но речь тут не про языки, а про фронтенд.

Gentooshnik ★★ ()

Это адски тормозит, иногда просто не работает, и уж точно постоянно глючит.

Ты сишком много хочешь от хипсторов. Требовать от них вменяемый проект - это как требовать от кошки высшее образование. Они не в состоянии. У них ничего не возникает в голове, когда они видят, сколько говна тащит их новая модная хернюшка.

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

Не надо ничего изучать. Возьми и перепиши нормально.

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

Clojure(Script) это как раз фронтендовая тема. Там более надёжный live reload за счёт неизменяемых структур данных и общей функциональности языка. Там advanced compilation которая может удалять неиспользуемый код и инлайнить вызовы, оставляя от подключенных библиотек самый минимум, не то что стремная минификация npm'щиков. Прозрачный interop с любой js-библиотекой. Возможность написать весь проект на одном языке, буквально используя одну и ту-же кодовую базу и на бэке и на фронте. React и ClojureScript это вообще match made in heaven.

poe ()

неспецифицированную, глючную и медленную реализацию половины языка Common Lisp.

Если она «неспецифицированная», то почему тогда Common Lisp? Common List это конкретная спецификация. Либо «неспецифицированную», либо не Common Lisp.

А неглючных и немедленных реализаций Common Lisp не бывает.

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

И почему все считают jquery дико тормозным? Видел тормозящий код на jquery, там, конечно же, селектор по классу в цикле, хранение переменных в DOM, и т.д. А всё что от него надо - html, ajax, и селекторы - он выполняет вполне сносно.

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

Потому, что 99.9999% кодеров на jquery не умеют делать код для SPA: чистить за собой в jquery — сложно. Отсюда утечки памяти на ровном месте.

Если SPA не нужно — есть более простые решения, чем jquery.

А всё что от него надо - html, ajax, и селекторы - он выполняет вполне сносно.

$.Deferred тормозит by design и разработчики jquery считают это ок, ajax убогий по сравнению с axios (и ненужный при наличии нативного fetch), селекторы не нужны если ты изначально не хранишь ничего в DOM.

Поддерживать код >20к строк на jquery — нереально.

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

Ну руками сделай ajax, getElementById и всё остальное.

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

anonymous ()

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

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

Да я про то, что всё нужное от jquery можно очень легко написать самому и позаворачивать в какие-нибудь функции

Вот с этого и начинается мета-адок.

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

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

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

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

yyk ★★★★★ ()

Вообще, тред человека который путает человеческий фактор с качеством языка. Я не спорю JS - плохой язык. Но объективно он ничем не хуже Python, Ruby или любого друго мейнстримового языка. Почему-то примером плохого JS приводят говнокод.

Давайте по пункта. Что касается реакта - а что именно имеется ввиду? На самом деле реакт - шаблонизатор. И пока вы не применяете паттер для которого он не был создан или не пытаетесь сделать что-то кроме компонент на нём - всё хорошо. Зачем вы пытаетесь с игрушечным микроскопом исследовать звездное небо?

По ангуляру - никто не гарантировал совместимость с 1 версией, о чем писали. По сути ветка 2.х - это другой фреймворк, который построен на тех же идеях. Давайте говорить, что Python гавно, потому что 2 и 3 версия слабо совместимы. Ну или С++ 11 код не компилируется нормально под какой-нибудь Builder C++, если юзать новые фишки языка.

Далее, по NodeJS. На самом деле по нему очень мало специалистов. Мало кто знает как работает V8, но каждый не зная пытается писать. И получается то, что у вас. Мои сервисы на ноде живут уже больше нескольких лет. Я ни разу ничего не менял, ни разу не было проблем с совместимостью. Почему? Просто надо работать не 12 часов, а головой. Плюс - не пытаться пилить на ноде то, для чего она не предназначена. У неё есть узкий круг задач, зачем вы пытаетесь на ней делать что-то другое? Тем более не зная инструмента. ПРимер простой - мой хороший друг ждал исполнения Promise по setTimeout, мутировал в первом данные, а во втором использовал. Вина ноды? Никак нет. Вина человека.

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

В общем - очередной вброс. Без конкретики. Простой пук в пространство.

silver-bullet-bfg ()
Ответ на: комментарий от silver-bullet-bfg

Вообще, тред человека который путает человеческий фактор с качеством языка.

Соглашусь, что инструмент не виноват, что его вложили в лапки верстальщиков. Но о чем думали браузероделы запиливая такой расхристанный скриптовый язык? Да ни о чем, на коленке херак и в продак. Никто не рассчитывал, что вы начнете лепить сложную ui логику на этом.

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

Ты же уже согласился, что проблема в людях - не?

Но о чем думали браузероделы запиливая такой расхристанный скриптовый язык?

О простом языке для простого манипулирования Dom-ом, строками, массивами, словарями. Они должны были его урезать как SQL? Для кодеров нагородили бы jsORM-ов )) Не думаю, что было бы лучше. Вон, понаписывали кучу трансляторов из других языков в js - хоть один обогнал по популярности js?

yyk ★★★★★ ()

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

359!

perl5_guy ()
Ответ на: комментарий от silver-bullet-bfg

Давайте говорить, что Python гавно, потому что 2 и 3 версия слабо совместимы.

Давайте говорить, зачем стесняться. Правда пистонов только два, а какой там сейчас ангуляр актуален? 18-й? Твои отсылки к другому говну в стиле «а у вас негров линчуют» просто смехотворны. Все эти пистоны можно легко игнорировать, а от расчудесного жопаскрипта никуда сейчас не деться.

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

Мне как пользователю хочется побыстрее прекратить их страдания. Как заказчику хочется кровькишки, но я сдерживаю зверя в себе. Просто усыпить бедолаг ящетаю, а хренакты сжечь и посыпать солью пожарище.

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

Система на жопаскрипте управляет строительством? Мама, роди меня обратно! А, стоп, это всего лишь сраная бюрократия. Ну тогда норм, две жопы нашли друг друга.

anonymous ()

а причём тут js? сейчас, чтоб простое текстовое сообщение отправить по скайпу или какомунить вотсап, то нужна железка, которая мощнее суперкомпов 20летней давности. тоже js виноват? «не люди такие - время такое» (c) +)))

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

сейчас, чтоб простое текстовое сообщение отправить по скайпу или какомунить вотсап, то нужна железка, которая мощнее суперкомпов 20летней давности. тоже js виноват?

А кто тогда?

ugoday ★★★★★ ()