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 код, я чуть не ушел в запой.

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

★★★
Ответ на: комментарий от Int0l

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

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

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

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

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

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

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

все примеры были приведены и были сцылки. зойчем вы не могёте в абстгакция?! ви таки пгитвогяетесь? наука изучает то что неизвестно заведомо, это смысл науки, он априорный.

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

наука изучает то что неизвестно заведомо

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

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

Коллега, а зачем? Неплохой инструмент для поколения смуззи. Можно кодить руками и головой, причем одновременно. И оно даже заработает (sic!). Нодажс так вообще годнота, без шуток имхо:)

Или как обычно, джаст фор лулз?

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

тут народ ждёт постов про дшыз или жабосткрипт. аминь

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

Можно кодить

Можно, но смузихлебам чего-то не хватает. Две руки, две ноги, две жопы... Но должно быть что-то еще важное.

anonymous
()

так транслируй common lisp в js, многие так и делают(нормальный язык в js), будешь в редакторе херачить common lisp, а он сразу в браузере будет выполнятся, и не надо ни каких долгих сборок, перезагрузок страницы, нового ввода данных и т.п.

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

Точно. Им не хватает своего, нескучного ЯП, а так же славы и величия, которые они жаждут обрести через свой собственный ЯП в влажных розовых снах про пони.

anonymous
()

А что ты хотел от несуществующего языка под две худшие ОС cовременности (chrome и firefox)?

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

t184256 ★★★★★
()

Что характерно, CL в списке языков, компилируемых в wasm, нет: https://github.com/appcypher/awesome-wasm-langs , а значит в будущем для него места нет. И слава богу.

anonymous
()
Ответ на: комментарий от Int0l
  1. Сфера Римана эквивалента комплексной плоскости.

  2. шутка про пращуров плоскоземельцев моложе отбытия Римана к Валькириям.

  3. Сократ тот ещё шутник.

anonymous
()

Думал, тут про JS и борщелисп, а здесь пол-треда унылое помахивание х*ями друг другу от Int0l и ugoday. Мде.

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

Есть у меня 1 проект на angular 1.5, сейчас собрать его на другой машине уже возможности нет. Если сервак умрет, умрет и это сранное поделие.

Есть у меня проект на python, писан еще на версии 2.6 и запустить его сейчас не составит труда.

Я тут недавно vuejs решил потыкать, helloworld в 200 мегабайт это сильно!

Нынешний фронт это кромешный ад, где раком лебедь щуку.

Армин х-и не скажет

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

дебажа JS код, я чуть не ушел в запой

разве это не нормальное состояние тех, кто пишет на JS ?

next_time ★★★★★
()

Ловсан, зачем ты кусаешь своих братьев по разуму?

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

Ну вот, результат работы ужалёных С++ом в жопу налицо. Потому что они и на С++ так же кодили сракой кверху, но С++ такого не прощает. Поэтому винят его а не себя.

У нас вот есть QML. Тоже успели пожалеть что выбрали модное и молодежное решение вместо QWidgetов.

anonymous
()

Ты как тот охранник в Остине Пауэрсе которого каток задавил...

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

а можно пример антинаучной гипотезы?

«Все люди смертны». Её невозможно ни доказать ни опровергнуть за конечный промежуток времени.

monk ★★★★★
()
11 июня 2019 г.

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

Давно пытаемся:

https://jlongster.com/Stop-Writing-JavaScript-Compilers--Make-Macros-Instead https://www.sweetjs.org/ https://github.com/lantiga/ki

….

Вангую, что webassembly улучшит ситуацию: https://github.com/google/schism

Но вот что до сборок кода бабелями, которая у всех ломается… Просто совет: делайте модульную, изолированную архитектуру и используйте монорепы. Инкапсулируйте конфиги и апи простых модулей. Если ваш модуль автономен, прост и у него зафиксирована версия дев-скриптов - дык он нормально соберётся и ч-з год! Или его просто будет пофиксить.

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

Так не надо ныть, мол у из-за JS что-то не работает - ведь «волшебных» ошибок не бывает. У любой ошибки есть причина ( - автор) - увидеть которую мешает только избыточная сложность кода. Дык и не пишите сложный код, пишите простой.

Модулей в NPM слишком много? Но вот кто заставляет ВСЁ это использовать? И уж тем-более монолитные фреймворки…

Ну и да, кстати говоря, спешу сообщить, что для современного js-кода на веб-компонентах и lit-html, для мажорных браузеров сборщик вообще может оказаться не нужен, минификатор только, ES6 уже таки почти «нормальный» язык.

b11111000000
()

вебмакаки незнают, что бывает по-другому. они не остановятся.

system-root ★★★★★
()
Ответ на: комментарий от ggrn

Вот ты увидел где-то на гитхабе 200 мебиграм говнокода и сделал выводы? Ок. А у меня в продакшене кроссбраузерные web-компоненты, написанные с семантикой React (но без React) и Elm-архитектурой (но без Elm): встроенный на тысячах сайтов виджет (20Кб), или настройки-админка к нему (43Кб). И то и другое, кстати, включая встроенные SVG. И вот кстати, конфига императивного сборщика НЕТ ВООБЩЕ, только есть необходимые декларативные настройки типа `.browserlistrc`. И техники, которые я использую, они скоро будут мейнстримом. Если уже не стали, пока я это сообщение пишу. Вещи склонны превращаться в свои противоположности.

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

Но вот вы, последователи секты Страуструпа, покайтесь! Ибо сказано, что там где есть ++, есть и --.

b11111000000
()

Давайте сделаем достойную альтернативу вебу. Чтобы со страницами, разметкой, ссылками, вот этим вот всем.

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

А у меня в продакшене кроссбраузерные web-компоненты

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

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

Давайте сделаем достойную альтернативу вебу. Чтобы со страницами,
разметкой, ссылками, вот этим вот всем.

EMACS же

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

Только вот по факту уже не ты решил, что там должно быть. Базара нет, сделаешь свой гипертекстовый фидонет, тогда напишешь нам спеки - что, и как нам на нём делать.

Кстати да, воинствующие апологеты «нормальных» языков для web: Вот действительно, ну давайте, расскажите нам, как правильно делать гибко расширяемые интерфейсы для клиент-серверных приложений на ооп-шечке? Вы же ещё не пытались ни разу, вы же не лезли со своим квадратно-гнездовыми иерархиями классов в web? И вас ни разу не стучало головой об их избыточность, тяжеловесность и непригодность!

Эксперименты британских учёных показали, что лучшей архитектурной моделью для построения масштабируемых интерфейсов в асинхронной среде является теория категорий. В частности, ELM-архитектура. И вы хоть лопните от антиjs-пафоса, но React-подобные библиотеки для декларативного определения слоя View сейчас уже везде, вплоть до EMACS: https://github.com/ebpa/tui.el - потому что это просто пишется, понятно читается и быстро работает.

А то, что JS был настолько «убогим» языком, так это только сыграло на руку прогрессу. Как тут уже в каментах упомянули - туда пришлось «затащить» всё это наше чисто-функциональное реактивное декларативное программирование. Которое вдруг всем «упёрлось».

Но почему? Из-за убогости JS? Не-а. Это всё сообразно запредельной сложности сути глобальной задачи - связать воедино гениальный мозг миллионов безумных пользователей, их рандомные устройства и браузеры, асинхронную среду, 99% вероятность стороннего конфликтующего кода в рантайме и самую любимую часть - постоянно меняющиеся требования заказчика, и как следствие - необходимость создания абсолютно масштабируемого и поддерживаемого кода. Вот всё это разом - методологиям из «реального сектора» программирования - тупо не по силам, несмотря на весь их пафос к «фронтенду», что проверялось с самого начала веб. Если точнее, платой является тяжеловесность и сложность.

На деле, всё это хозяйство банально не описывается иерархией и не впихуемо в набор методов. Ибо являет собой охуительно сложный нелинейный процесс. Как-раз чтобы контролировать этот процесс, нам и придётся определять наборы правил, ограничений и соотношений. Для чего, собственно, и оказывался нужным целый ряд ЯЗЫКОВ (*ML/JSX/CSS/SVG/GQL/ETC...), т.е. метапрограммирование. Которое во фронте действительно сейчас активно (и криво) применяется - на что, в свою очередь, как-бы намекает ТС в своём посте.

Однако получается, что оно оказалось необходимым? По факту, индустрия постоянно изобретает языки, как бы мы к этому не относились. Да, лучше бы они это делали в рамках syntax-rules...

Именно из-за особенной одарённости (властью) ряда квадратноголовых, нам приходится кодить всё это дело не аналогом Scheme и не на TCL, а вот этим вашим ECMАSCRIPT - с «нормальным», т.е. жабовидным, синтаксисом, и соответственно - без нормальных макросов.

Короче, запарили гнать на язык браузеров. Как будто в браузере больше ничё стрёмного нет... Вот конкретно JS в ситуации с адом ни при чём. Уже спасибо Айху за функции первого порядка!

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

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

HTTP 0.9, только не-гипертекст гонять по другим протоколам.

туда пришлось «затащить» всё это наше чисто-функциональное реактивное декларативное программирование. Которое вдруг всем «упёрлось».

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

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

Да пофиг на язык, я гоню на наличие этого языка! В современном браузере стремно все, потому что это давным давно не «браузер», это кривая и убогая ОС.

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

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

Я понимаю, сам стебу этот момент. Но. Правда всё-таки в том, что сейчас это уже таки компоненты, тут хоть на базе VirtualDOM, хоть на базе понтов google или w3c:

<Popup><Message>Превед LOR!</Message></Popup>

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

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

Базара нет, сделаешь свой гипертекстовый фидонет, тогда напишешь нам спеки - что, и как нам на нём делать.

RTFM Xanadu

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

CLOS, MOP, CLIM

Вы же ещё не пытались ни разу, вы же не лезли со своим квадратно-гнездовыми иерархиями классов в web?

не нужны

На деле, всё это хозяйство банально не описывается иерархией и не впихуемо в набор методов.

о чём Теодор Холм Нельсон говорит уже лет как 60. но никто его не слушал, а тот кто слушал — ниасилил.

Ибо являет собой охуительно сложный нелинейный процесс.

не нужно

Как-раз чтобы контролировать этот процесс, нам и придётся определять наборы правил, ограничений и соотношений.

нужно. а реализовать это можно и поверх того же CLOS

Из-за убогости JS? Не-а. Это всё сообразно запредельной сложности сути глобальной задачи - связать воедино гениальный мозг миллионов безумных пользователей, их рандомные устройства и браузеры, асинхронную среду, 99% вероятность стороннего конфликтующего кода в рантайме и самую любимую часть - постоянно меняющиеся требования заказчика

какого хрена она такая рандомная и конфилктующе меняющаяся, даже асинхронно? эта ерунда в надстройках из-за плохого проектирования самой лоховской архитектуры этого вашего веба, самой базы. более сложная архитектура этой базы — реплицируемого распределённого векторного гипертекстового Xanadu привела бы к более простым и понятным приложениям, в надстройках.

есть базис, a есть надстройка. и если надстройка говно — может быть, с базисом что-то не так?

Как будто в браузере больше ничё стрёмного нет...

там как раз ВСЁ зело стрёмное.

начиная от линейного одномерного текста, который приводит к невпихуемым иерархиям системных холархий, через DOM который зело убог и в таком виде тупо не нужен (а нужны многомерные гиперпространства Xanadu ZigZag DB), через затычки к DOMу-2 , чтобы оно хоть что-то могло (а нужно совсем не это, а 10 принципов Xanadu), ну и для кучи протокол без поддержки состояний и хранения сессии, до кучи чтобы упороться окончательно.

ведь можно же было нормальным образом запилить этот ваш Xanadu векторный гипертекстовый WEB — как WEB Дональда Кнута + клиент-серверный Xanadu + лисп для объектного CLOS-a с рефлексией и интроспекцией в духе CLIM + MUMPS с многомерными глобалами и транзакциями + какой-то GOPHER VR для хранения + какой-то торрент для репликаций между мумпсами.

ну и наконец, сейчас бровсер векторного гипертекстового — тупо смотрелка, с программируемым DOM-ом.

а должен быть многомерный редактор, из структуральнейших.

с произвольными настраиваемыми гиперпространствами, как в Джонни Мнемонике. и тогда 10500 различных приложений не нужны — нужны applitudes для многомерных гиперструктур.

ну и скриптовать это всё в духе литературного программирования.

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

HTTP 0.9, только не-гипертекст гонять по другим протоколам.

да банального гофера хватит. в последних версиях протокола были формы, анкеты и настраиваемые запросы, для REST-like API вполне хватило.

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

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

вообще та идея, что в классическом вебе Бернерса-Ли:

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

2. ресурсы по гиперссылкам — это не полноценные документы документно-ориентированной БД, а жалкая затычка к файловой системе, со всеми её костылями

3. изменение ресурсов (документов) производится не транзакциями, а затычками и через жопу

4. нет банального структурного редактора на основе транзакций, для поддержания целостного изменения документов, без конфликтов. 640 килобайт блокнота с XML-ным супом из тегов хватит всем!

5. ссылочная целостность, функциональные зависимости? не, не слышали. ссылки в никуда — вот наш девиз! файловая система же. чего вы датабазно ругаетесь.

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

это by design такой. так и задумывалось, изначально убогим.

ведь было же Xanadu, где в 11 принципах Xanadu это всё было озвучено.

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

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

Вот я и говорю, EMACS же )

PS за напоминание о Xanadu спасибо... Но вот такой вопрос, у них сайт концептуально такой уёбищный или просто?

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

это патаму что ты за файрфоксину ни рубля не отчислил. менеджер румяным чем-то графики чертил по стенам — зря что ли? а ты не рубля не отчислил.

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

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

просто. да, и прототип на жаваскрипте убог по сравнению с десктопным opengl-ным. а вообще там редактор должен быть.

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

Вот я и говорю, EMACS же )

ну да. только буфера должны быть не текстом, а ОО в духе CLOS и McCLIM (скорее CLIMACS на CL клон Zwei чем EMACS столманоугодный).

ну и это скорее всё-таки многомерные глобалы мумпса, чем файлы-блобы, неструктуированный поток байт.

так что FUSE обёртку к MUMPS-ам надо писать, где какой-нибудь YottaDB глобал через псевдофайловый интерфейс с Emacs org-mode babel редактировать.

ну или Guile Skribilo с AST S-expressions, с макросами для представления документов.

anonymous
()

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

2x2=4

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

какого хрена она такая рандомная и конфилктующе меняющаяся, даже асинхронно?

Потому что это реальность, Люк, а не мамкин борщ.

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

Вот ты сам задумайся, какой конкретно из уровней модели OSI имеешь ввиду под «базой»?

более сложная архитектура этой базы — реплицируемого распределённого векторного гипертекстового Xanadu привела бы к более простым и понятным приложениям, в надстройках.

Воистину )

есть базис, a есть надстройка. и если надстройка говно — может быть, с базисом что-то не так?

Да, например с базисом искусственной дуальности: базис/надстройка, фронтенд/бэкенд, web/десктоп! Пойми, у создателей Xanadu мэйнфрейм в голове. Мы то не в 60х живём, а в мире разных переплетённых, очень разных технологий, где в т.ч. браузеры, это да - в т.ч. и сандбокс для запуска приложений , в т.ч. распределённых, и не только на базе протокола HTTP, и это явно достаточноудобный и безопасный способ (если браузеру не доверять) И да, для программирования, это _достаточно_ удобная среда - ведь очевидно, что иначе она бы не существовала вовсе.

Я с детства программировал 2d графику на десктопах (c БК,ZX,ЕС), умею это делать на любом языке, но сейчас я искренне предпочту браузер для тех же целей, т.к. на десктопе и близко не окажется той универсальности, удобства, контроля, а главное - простоты, и соответственно - массовости создания простых вещей (которых достаточно), а главное - аудитории.

И я не спорю с частью тезиса о фундаментальном несовершенстве web. Но так можно говорить и о несовершенстве человеческой природы. Это типа достаточно естественное «несовершенство» к текущему моменту. К тому же, всё трансформируется и развивается уже и так достаточно (слишком!) быстро, чтобы вот кто-то мог искренне требовать деконструкции интернета, массового апгрейда на Hurd и Netsukuku... Ибо даже любую свою проприетарную Хунаду, разложенцы могут гонять внутри обычной сети, и уж точно ей нужен нормальный сайт, иначе оно хунада и есть.

b11111000000
()
Ответ на: комментарий от LINUX-ORG-RU

Эмм, аргументация куртизанки ::)

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

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

Вот ты увидел где-то на гитхабе 200 мебиграм говнокода и сделал выводы? Ок

Ты норкоман или как? Причем тут реакт? Какой elm? Что и куда ты несешь? Причем тут гитхаб?

ggrn ★★★★★
()

Согласен, это истинный ад на Земле. У нас код на жабе собирается в 2 раза быстрей чем простая ангуляр-админка на пару страниц.

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

согласен, но 1 сек собирается Hyperapp-админка. Lit-html вообще не требует сборки для мажорных бро. Нормальные браузерные модули уже год как официально не требуют сборки:

import @cdn/bit/etc/welcome-2019.js

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

Причем тут реакт?

Не знаю, не использую

Какой elm?

Строгий

Что и куда ты несешь?

Добра тебе

Причем тут гитхаб?

Там программы лежат?

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