LINUX.ORG.RU
ФорумTalks

Какие вы можете назвать революционные технологии ПО, созданные в последние 20 лет?

 , , ,


1

3

Я давно выдвигал теорию, что разработка софта скатилась в говно. Современный кодер не разрабатывает новый софт — современный кодер только клеет существующий.

Интервал 20 лет выбран не случайно — последние прорывные P2P технологии массово создавались 20 лет назад (Chord, Kademlia, eDonkey, BitTorent).

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

Сразу замечу, что «продавать настроенную инфраструктуру», оно же «облака» — это, мягко говоря, не новое решение. NoSQL СУБД — это шаг назад, с NoSQL БД начинались. Последние новые технологии искуственного интелекта появились в 90-х.

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

Какой стек, опыт, проекты?

У меня? Контроллеры, опердени на делфях, SPA вебня, на сихе БД ковыряю который год. Ну типа я не ограничиваю весь свой мир только проектами, в которых я интенсивно участвовал месяцами.

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

Да:
www.linux.org.ru/search.jsp?q=wordpress&range=ALL&interval=ALL&us...

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

Раньше про GoF и чистый код знали лишь энтерпрайз дядьки, теперь это наконец-то стало доходить до всех

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

В JS очень многое изменилось: JIT, куча нового API, PWA и WebAssembly. Вышел html5 и новые версии css, всякие технологии типа WebRTC

Ты преувеличиваешь значение JIT. В вебе большую часть нагрузки, как правило, берет на себя крестовый код, а не JS. То есть, DOM, CSS, и прочее. WAsm с появлением JIT-оптимизаторов, увы, стал ненужным, поскольку на asm.js ты можешь написать код с плюс-минус такой же производительностью, как и WAsm. И тогда единственный плюс WAsm по сравнению с asm.js — это упрощенная трансляция сишных программ на WAsm.

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

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

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

Благодаря этому стали возможными всякие deep_fake, колоризация и хороший upscale изображений и видео

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

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

Ты преувеличиваешь значение JIT. В вебе большую часть нагрузки, как правило, берет на себя крестовый код, а не JS. То есть, DOM, CSS, и прочее.

Шедевр мысли. Это как распарсить вообще?

atiradeon
()
Ответ на: комментарий от no-such-file

Ахах, ну ты и лошара. Т.е. ты даже из контекста не понял о чём речь?

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

Начнем с того что 2002 это как раз «последние 20 лет». А конкретно GAN описан в 2014

Да, на грани. Соглашусь, если убедишь, что это что-то значимое. Потому что дипфейки были еще в конце 90-х, а что еще нового можно сделать с помощью GAN?

AlphaZero использует даже не GPGPU, а специализированные тензорные процессоры

Суть достижения как бы не в этом

А в использовании глубоких нейронок вместо огромных баз партий. Но проблема в том, что этот подход чудовищно неэффективен.

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

Собираешь вопросы для собеседований?

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

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

Никто не мешает, но никто так не делает.

То есть веб плохой из-за того, что крайне функционален? Гениальная логика.

fernandos ★★★
()
Ответ на: комментарий от no-such-file

«автоматически подстраиваться под постоянно меняющуюся сеть»

Это было ещё в бородатом RIP

RIP — это только тупейший роутинг. И прежде всего онный опирается на отсутствие конфликтов IP. А что будет делать твой RIP, когда в сети появится два узла с одинаковым IP?

не понимаю, при чем тут графы Эйлера

Ну ок

Это называется «помолчу — сойду за умного». Зачем тогда ввязывался в дискусию?

асимметричная криптография

Старее поповой собаки

1977 самый-самый первый теоретический алгоритм. В случае криптографии есть проблема с тем, что нужны годы для проверки алгоритма. Точно так же элиптическая криптография разработана в конце 80-х, но начала применяться только в 2004-2005 годах. Причем, вспомни историю с теми же подписями PS, где соня ошиблась с реализацией элиптической криптографии, и в итоге любой школьник смог подписать игры для плойки.

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

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

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

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

leave тоже так думает. Это хорошее коммерческая позиция. поскольку весь безнес сводится к впариванию одного и того же прокисшего говна по кругу — и это нормально. Только я тред создавал про техническую сторону, а не коммерческую.

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

единственный недостаток всего этого —

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

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

«Песочность» такого бескрайнего монстра, как Google Chrome, очень сомнительна.

За хороший побег из этой песочницы много денег платят. И платят не очень часто. Значит работает.

По поводу V8 на самом деле аргумент корректный, но название неправильное — на самом деле это LuaJIT и 2005 год.

LuaJIT хорош, но всё же на мир влияет в первую очередь JS.

FRP — 1997 год. Весь смысл конкретно реакта для фейсбука заключался в формировке статичных страниц без перезагрузки. Вот и вся «магия». Революционно ли это? Не думаю.

Не знаю, при чем тут FRP.

React это:

  1. XML как часть языка. До React это делала Scala, но получилось не так хорошо, ну и из совсем другой области.
  2. Стили, как часть компонента. До React считалось, что нужно разделять разметку, логику и стили. React показал, что нужно наоборот держать их вместе, а разделять нужно компоненты.
  3. Сама концепция рендеринга, когда компонент возвращает DOM, а про то, как поменять предыдущую версию DOM в новую, думает уже фреймворк, причём, как оказалось, это очень даже быстро выходит, зачастую быстрей традиционных подходов.

А FRP, если ты имел в виду реактивщину, я в реакте и не видел. Там всё вполне себе императивно - юзер поменял что-то, мы в коллбэке это поймали, изменили состояние, поменяли UI.

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

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

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

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

Нет никакой разницы. У тебя просто другой определение готовности.

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

А мне чтобы назвать что-то иновацией нужно чтобы SpaceX на деле решила 1001 научно-инженерную проблему чтобы их многоразовые ракеты стали окупаемыми.

Конечно мою инновацию ты назовешь «а, это уже было сделано раньше».

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

Современные видеокодеки например, HEVC, VP9, AV1, может революционности особо нет, но жмут сильно лучше, чем их предшественники

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

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

Тред про то чтобы @byko3y гордился что жил в самое великое поколение во Вселенной, выпрыгивая из трусов в доказательствах что после него научный прогресс остановися, одни квир зумеры в Тиктоках косплеят Геншин Импакт и пьют ягу

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

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

Я тебе приведу элементарный пример: Zab/Raft. Ты скажешь, что это же почти Paxos, которому тыща лет. Но нет — оригинальный Paxos оказался практически бесполезен для распределенных комплюктерных систем по причине своей безумной медленности. Для парламента медлительность не была проблемой, но в распределенной БД это еще какая проблема. И решили ее только в Chubby (2006), а позже ZooKeeper и Raft.

При том, что, в общем-то, проблема удобного и достаточно универсального инструмента программирования распределенных БД до сих пор довольно хреново решена, хотя Erlang в этом плане впереди планеты всей. Но, блин, Erlang — это довольно молодая хреновина.

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

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

Jetty ★★★★★
()
Ответ на: Нейронные сети от Aber

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

Для меня до сих пор магией является то, что мой древний магнитофон обладал динамическим аналоговым шумоподавителем. И таки убирал шум. Нейросетки позволяют автоматизировать самые тупые действия, вроде писания шаблонного кода на питоне, но минимально сложную и/или нестандартную задачу решить они уже не в состоянии. Контуры объектов выделялись автоматически и раньше, при помощи более тупых алгоритмов. «Многократно поднять» она может только производительность тетки в ларьке фотопечати, и то только малую часть этой работы, поскольку большую часть времени она ничего не делает.

byko3y ★★★★
() автор топика
Ответ на: комментарий от no-such-file

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

Или слишком большие объемы мусорной инфы.

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

Это такая специфическая логика «админов-ветеранов» от IT: изобрести колесо - это было круто и прорыв, значит теперь все должны изобретать колесо. Сто пятьдесят раз. В день.

А все кто едут на двухколесном велосипеде в офис изобретать самолет - это очевидно пустоголовые хипстеры, которые даже банального колеса изобрести не могут…

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

Тем более что в самолете нету ничего инновационного. Во-первых у птиц всегда были крылья. И даже Леонардо да Винчи производил чертежи потенциального летательного аппарата. Смысл называть инооваций что-то из Реннесанса?

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

За хороший побег из этой песочницы много денег платят. И платят не очень часто. Значит работает

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

LuaJIT хорош, но всё же на мир влияет в первую очередь JS

Совсем недавно миром рулил именно LuaJIT.

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

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

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

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

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

Нет, это всегда медленнее традиционных подходов. Наличие лишнего звена при выполнении тех же операций всегда медленнее отсутствия онного. Dirty bits в Firefox, если я не ошибаюсь, были в начале нулевых, то есть, уже на самой заре веб-приложух. А потому браузеры не перерисовывали DOM после каждого изменения атрибута, и потому Virtual DOM «решал проблему», которой при его жизни не существовало.

На самом деле истинная причина такого выбора — это возможность впрячь макак в разработку фейсбука. Очень уж удобно формировать каждый раз DOM с нуля, получая ультимативную защиту от «кто-то где-то наплужил, недообновил или обновил не то и не там». И именно по этой причине сообщество коммерсов, так же заинтересованных в эксплуатации индусов, так рьяно подхватило React. Правда, потом быстро выяснилось, что динамические приложухи писать на React нельзя, потому что они еле ползают — React подходит только для формирования статичных страничек. Сам фейсбук JS-карты покупал у стороннего разработчика и работали они на чистом JS.

А FRP, если ты имел в виду реактивщину, я в реакте и не видел. Там всё вполне себе императивно - юзер поменял что-то, мы в коллбэке это поймали, изменили состояние, поменяли UI

React откладывает перерисовку после изменения состояния. Сам перехват и планирование обновления можно назвать императивным, часть базового кода по обработке VDOM, поиску разницы и применению изменений можно назвать императивной, но функции render() — это самое что ни на есть FRP, то есть, чистые функции превращения состояния в поведение.

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

единицы смогут сделать на нем что-то практически применимое.

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

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

Тред про то чтобы @byko3y гордился что жил в самое великое поколение во Вселенной, выпрыгивая из трусов в доказательствах что после него научный прогресс остановися, одни квир зумеры в Тиктоках косплеят Геншин Импакт и пьют ягу

Вот, теперь ты ближе к сути. Да, это так. Да, прогресс встал, увы. Нет никакого экспоненциального развития — есть логистическая кривая. Так-то любой ускоряющийся рост можно через коэффициенты натянуть на экспоненту, а потом сказать «вот, ускоряющийся рост», но, как говорится, есть ложь, есть наглая ложь, и есть статистика. Все эти статистические предсказания, вроде закона Мура, яблока выеденного не стоят, поскольку сегодня технологии развиваются, а завтра они встали колом, и ничего ты с ними не сделаешь. Вот автомобили развивались-развивались, а потом почему-то взяли и перестали развиваться. Вообще. Последние серьезные изменения были в начале 90-х годов. Дальше идут кузовы другой формы, катализаторы для выхлопных газов. прямой впрыск отработанной гари, тоньше корпус, коробка передач в два раза меньше, чем нужна на мощность двигателя, и прочие примочки для укорачивания срока службы. То есть, то, что я назвал «впаривание прокисшего говна».

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

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

А как же сиденье с подогревом? На костре особо жопу не погреешь.

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

Это уязвимость аппаратная, а то что ее как-то можно использовать - то это уже эксплойты, вот это же круто, что научились такое использовать.

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

Это такая специфическая логика «админов-ветеранов» от IT: изобрести колесо - это было круто и прорыв, значит теперь все должны изобретать колесо. Сто пятьдесят раз. В день

Ты практически отстаиваешь мою позицию:
Какие вы можете назвать революционные технологии ПО, созданные в последние 20 лет? (комментарий)

Да, всё изобрели, прикинь? Может быть это и хорошо. Но почему-то многим ораторам в этом треде не хочется соглашаться с тем, что всё уже изобрели и изобретать больше нечего, мол «инкрементальное развитие — это тоже развитие, а еще и более значимое, чем качественный скачок».

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

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

Что тут еще скажешь, кроме ололо?

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

Тем более что в самолете нету ничего инновационного. Во-первых у птиц всегда были крылья. И даже Леонардо да Винчи производил чертежи потенциального летательного аппарата. Смысл называть инооваций что-то из Реннесанса?

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

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

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

Понятия не имею, кто, как, какой «этот инструмент», насколько это было сложно, и так далее.

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

Ты практически отстаиваешь мою позицию:

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

alpha ★★★★★
()

Забыл кастануть @mertvoprog (тоже тот еще любитель философствовать ни о чем) и @metaprog - в качестве прорыва в метапрограммировании. С ними тема повеселее будет. А то: все пропало, нового ничего, а колесо - вечно. Пора оборачиваться в простыню и шагать на кладбище :)

P.S. ТС, на досуге, почитайте про V8, чтобы не пороть чушь - ей больно.

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

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

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

ТС, на досуге, почитайте про V8, чтобы не пороть чушь - ей больно

Ты хоть бы поиском воспользовался сначала, а то 4.2 с твоей стороны получается:

www.linux.org.ru/search.jsp?q=v8.dev&range=ALL&interval=ALL&user=...

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

Ахаха. Вон у гугла Quantum Supremacy, у Microsoft GPT-3, которого боятся как атомного оружия, а у тебя прогресс стал. Все с тобой понятно, вали на пенсию пердеть и не мешай молодежи выполнять план высадки на Марс.

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

Божемой как я рад что тебе не доверят руководство реальными проектами

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

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

Как ни странно, аэродинамика — это до сих пор черная магия для ученых. Вот оно летает — всё, не трожь его.

Это шутка какая-то?

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

С другой стороны, на V8 больно смотреть в 90% кейсов - она занята черезжопным манипулированием элементами HTML документов, чтобы сделать их похожими на UI.
Причём, тормозной реализацией документов...

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

Вон у гугла Quantum Supremacy, а у тебя прогресс стал

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

Все с тобой понятно, вали на пенсию пердеть и не мешай молодежи выполнять план высадки на Марс

Вы сначала на Луну высадитесь, а потом про Марс мечтайте.

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

This …

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

P.S. ТС извини, что опять пишу в «твоей» теме, но мне действительно это было нужно

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

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

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

В Google Chrome архитектура совсем другая. Там многоуровневая защита, причём уровни содержат не десятки миллионов строк. 99% багов не приводят к протеканию песочницы и чтобы действительно из неё вылезти, нужен очень чёткий набор багов во всех слоях безопасности. Это большая редкость. Не каждый год такие находят.

Совсем недавно миром рулил именно LuaJIT.

Никогда он миром не рулил. Даже те проекты, которые используют Lua, очень часто LuaJIT не используют.

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

Нет. Это даёт возможность отлавливать ошибки во время компиляции и это даёт очень тесную интеграцию между кодом и шаблоном. К примеру в шаблонизаторах часто дублируются управляющие структуры ЯП: условные операторы, циклы и тд. Для React это не нужно, ты просто пишешь на JS. В том числе это даёт неимоверную скорость изучения. Ты знаешь JS, значит ты знаешь React. Порог входа моментальный. В том же Thymeleaf, который я считаю лучшим шаблонизатором из классических, чтобы продуктивно начать на нём работать, тебе надо денёк с ним повозиться и потом ещё шишки понабивать на первом проекте.

Нет, это всегда медленнее традиционных подходов. Наличие лишнего звена при выполнении тех же операций всегда медленнее отсутствия онного. Dirty bits в Firefox, если я не ошибаюсь, были в начале нулевых, то есть, уже на самой заре веб-приложух. А потому браузеры не перерисовывали DOM после каждого изменения атрибута, и потому Virtual DOM «решал проблему», которой при его жизни не существовало.

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

React откладывает перерисовку после изменения состояния. Сам перехват и планирование обновления можно назвать императивным, часть базового кода по обработке VDOM, поиску разницы и применению изменений можно назвать императивной, но функции render() — это самое что ни на есть FRP, то есть, чистые функции превращения состояния в поведение.

DOM это не поведение, это состояние. render это превращение состояния в дерево элементов.

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

Ну X11 это много всего, а не только протокол отрисовки. При большом желании можно туда вкорячить dps или pdf в качестве протокола рендеринга. Причём при очень большом желании, можно вкорячить это всё в виде модуля только слегка подрихтовав попутно что-то ещё в xorg.

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

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