Одни люди придумали C++, а потом пришлось придумывать умные указатели. Другие люди придумали сборщик мусора, а потом пришлось вкорячивать dispose паттерн. Третьи люди решили не наступать на те же грабли и встроили парадигму владения прямо в язык. Получился Rust.
«Я не говорю, что в веб-разработке он нужен» Говоришь. Ты буквально сказал: “А надо было не отходить от C” на мой комментарий, где сказано в том числе про языки со сборкой мусора. «для HTTP-бекенда нужен PHP» PHP отошёл от C. В PHP есть сборка мусора и есть строки. А ещё он - говно. Для бекенда есть нормальные языки типа Java или C#. «Отсутствие строк — это плюс.» В PHP есть строки. Во всех нормальных языках есть строки. Кроме разве что C и всяких ассемблеров.
php всё же, несмотря на свою быстроту и масштабируемость, больше препроцессор для html, а не полноценный язык.
Дотнет вполне годится для бэкенда и сервисов. Его не раздувает как яву, сборщик мусора достаточно быстрый, а SDK предоставляет богатую стандартную библиотеку. Так же он умеет r2r и aot компиляцию, хотя иногда jit может лучше справляться с задачей.
Вот для фронтенда его использовать - как минимум странно - здесь явно не лучший инструментарий, а тащить wasm или код в браузер - явно, не лучшая идея. При этом нередко получается всё равно быстрее и надёжнее лапши на всяких vue-hue-react-analgular-ах
«При этом нередко получается всё равно быстрее и надёжнее лапши на всяких vue-hue-react-analgular-ах» Я люблю TypeScript+Angular на фронте и C# на бекэнде. По-моему, это вообще самое лучшее, что нынче существует. Единственная проблема, что ангуляр нифига не индексируется поисковиками и приходится городить сервер-сайд рендеринг в нагрузку к основному. Лапши там не получается, если писать руками, а не жопой.
«ангуляр нифига не индексируется поисковиками» Тех, кто делает текстовые сайты, требующие исполнять тонны js, чтобы просто отобразиться, следует признавать врагами народа
Не нашего, а всего человеческого. “Двести метров джаваскрипта грузит текста триста байт”, сууука Не, я понимаю, если это какое-нибудь йоба-приложение типа google docs. Я понимаю - если это браузерная игрушка. Видеоплеер, в конце концов. Но если ультимативно требуется js, чтобы просто текст с картинкой показывать, это финиш, вон из профессии, как говорил классик.
«Видеоплеер на html5 без скриптов делается!» Не делается. В нагрузку к видеоплееру на реальных проектах, а не школьных задачках, всегда идёт куча дополнительного функционала: будь то комментарии, лайки, репост, «в избранное», реккомендации, и прочая хуйня. Тут же рядом иконка твоего профиля с твоей рожей, выпадающее меню со всякой хуйнёй – и всё это должно динамически обновляться без перезагрузки страницы, какую бы хуйню ты там не натыкал.
Как раз комментарии можно и статически показывать, на этом сайте например, рожа твоя как-то показывается и без js. Как и остальные кнопки, вроде лаек и избранного, можно сделать, правда без обновления в реальном времени, но в качестве фоллбека можно и оставить.
Вообще да, тупой плеер просто тегом <video> можно сделать, но он вроде не во всех браузерах умеет в hls, ему только mp4/webm файл подавай. Ну и не будет современных фич, вроде превью по наведению мышки на полосу прокрутки, хотя это можно и опционально сделать
Ну для стрима - возможно понадобятся скрипты (хотя у меня банальное открытие hls ссылки показывает видео)
А вот для простого видео вполне можно noscript фоллбэк сделать.
Для комментариев/лайков кстати тоже скрипты не обязательны - если не делать живое обновление - всё прекрасно реализуется без них, но придётся форму комментариев фреймом сделать, чтобы она не перезагружала видео.
Обновлять в реальном времени без скриптов тоже возможно, но это будет весьма костыльно и потребует держать соединение с сервером - здесь оно того не стоит
«Но если ультимативно требуется js, чтобы просто текст с картинкой показывать» Да никто в здравом рассудке не использует js чтобы показывать текст. Обычно это именно что веб приложение, где на бекэнде база MSSQL, C# для эндпоинтов, а на фронте – ангуляр который грузится один раз пару мегабайт и потом предоставляет тебе и роутинг, и лайки-комментирование-подрузку кониента, и чаты-хуяты и прочий интерактив но уже без перезагрузки страниц вообще ни разу, а лишь гоняя только данные. На то оно и называется Single Page Application. Application – тут пиздец ключевое слово. Если кто-то долбоёб и делает на этом сайты, которым хватило бы одного чистого html – ну чтош.
«Ты враг всего человеческого народа, ты рак Земли.» Мне нравится, когда русские зеркалят то, что про них говорят. Хотя я не очень понимаю, чего они хотят этим добиться.
Реклама успешно блокируется у меня по крайней мере. Смотреть новости обсуждать их обшаться с друзьями это не контантик и не одноглазники тем более. Но в вашей стране фейсбук запрещен же и на нем кроме ольгинских троллей и нет никого.
У меня нет зомбоящика, а риахтур есть. На риахтуре кстати есть 2 тематических раздела, так что можно смотреть тот который тебе ближе, или же читать оба
Это ваше настоящее или ближайшее будущее.
А свобода начинается с сомнения а сомнение начинается с информированности.
Загонят вас в цифровой концлагерь.
Продолжайте жрать вы же живете в РФ и у вас нет свободы выбора.
То то же в телеге так активно продаются симкарты иностранные для регистрации с них аккаунтов в фейсбуках для троллей для достоверности аккаунтов ибо фейсбук требует для верификации.
Ну подпишитесь в фейсбук на Раша тудэй свобода есть. Но только в выборе групп.
с одним небольшим расширением (доступно в gcc/clang) сишка прекрасно годится и для уёб-разработки. Хотя null-terminated строки всё-таки не очень эффективно, это всё равно работает быстро на старых 486 компах (да, умельцы на них activitypub сервера пускают)
https://codeberg.org/grunfink/snac2/src/branch/master/html.c#L459
Суть расширения - аттрибут cleanup, который позволяет освобождать память автоматически.
Как это работает? В проекте выше реализованы контейнеры для строк, списков, словарей (типа json или dict в python) в виде линейной структуры. Когда буффер одного из этих типов присваеивается переменной типа xs* - время его жизни определяется блоком, в котором она определена. cleanup деструктор - просто функция free(), хотя по идее можно было динамически определять тип и ещё что-то делать. Для динамического определения типа буффера используется первый байт - контрольные символы определяют тип объекта (список/словарь/число), всё остальное - строка - это полезно к примеру при итерации по списку/словарю.
Дальше все функции которые изменяют объект - возвращают новый. Его всегда надо присвоить в xs* переменную, чтобы он потом удалился автоматически. Бонусом можно выводить строки обычным printf форматом.
Может показаться дико? Но код выглядит вполне читабельным и аккуратным, без огромного количества бойлерплейта, свойственного уёбу.
не выкинули, там как раз вся прелесть в том, что строка это просто нуль-терминированный буффер, а всё что не строка - хранится как строка с контрольным байтом в начале
Вообще даже c++ сильно теряет от нулль-терминированных строк. string_view появился только в c++17, что очень поздно (да, STL - как всегда бесполезная фигня без задач)
Я пробовал в одном проекте переходить на строки в виде структуры из пары указателей (начало-конец) - удобно, zero-copy подстроки, владеть строками может единый пул-строка без всяких терминирующих нулей, так и можно писать их после структуры (например если (uintptr_t)begin == (uintptr_t)(&end + 1) - строка владеющая, иначе - нет). Но всё упирается в необходимость взаимодействия со внешним кодом. Пути в ядерных сисколах - готовь нуль-терминированную строку, imgui - тоже (хотя там есть ветка string_view, но похоже, что она никогда не попадёт в апстрим и так и останется feature branch). А в остальном, пока не надо взаимодействовать со внешним кодом - сравнение строк идёт куда быстрее (сначала сравнивается длина, потом memcmp), копирование - простой memcpy с заранее известной длиной, создание из литерала сразу по sizeof без всяких strlen(), нужна подстрока - просто запиши в структуру указатель на её начало и конец.
std::string имеет часть этих преимуществ, но всё равно заставляет нулль-терминировать буфер
Кстати вот у жабки строки не нуль-терминированные, и substring раньше работало за O(1) без копирования, но начиная с какой-то версии от этого отказались (я так понимаю, решили, что много памяти жрёт, когда маленькие подстроки держат буферы от уже несуществующих больших строк), и сейчас substring всегда копирует буфер. «std::string имеет часть этих преимуществ, но всё равно заставляет нулль-терминировать буфер» так у неё и бесплатный c_str() имеется
«было сделано копирование в отличии от жабы» Вот это самый прикол. При том, что как раз в жабе заявляется дроч на обратную совместимость и WORA, вот так поменяли поведение в одной из самых базовых вещей. На днях на лоре тред был про шестую жабу, там ещё Dimez писал, что у него где-то на каком-то проде производительность падала при переходе на java7/8 относительно java6. https://www.linux.org.ru/forum/general/17940910?cid=17941339
Одни люди придумали C++, а потом пришлось придумывать умные указатели. Другие люди придумали сборщик мусора, а потом пришлось вкорячивать dispose паттерн. Третьи люди решили не наступать на те же грабли и встроили парадигму владения прямо в язык. Получился Rust.
А надо было не отходить от C.
Язык, в котором даже нет строк, например, в веб разработке. Ну да, ну да.
«Я не говорю, что в веб-разработке он нужен» Говоришь. Ты буквально сказал: “А надо было не отходить от C” на мой комментарий, где сказано в том числе про языки со сборкой мусора. «для HTTP-бекенда нужен PHP» PHP отошёл от C. В PHP есть сборка мусора и есть строки. А ещё он - говно. Для бекенда есть нормальные языки типа Java или C#. «Отсутствие строк — это плюс.» В PHP есть строки. Во всех нормальных языках есть строки. Кроме разве что C и всяких ассемблеров.
Я про программы, а не сайтики.
Почему? И вообще, ты на нем писал? На PHP Nocord и Noges сделаны.
Эти языки вообще ни для чего не годятся. А PHP представляет собой удобный набор инструментов.
Когда надо быстро сайт сделать, они удобны.
В языке с указателями они не нужны.
php всё же, несмотря на свою быстроту и масштабируемость, больше препроцессор для html, а не полноценный язык. Дотнет вполне годится для бэкенда и сервисов. Его не раздувает как яву, сборщик мусора достаточно быстрый, а SDK предоставляет богатую стандартную библиотеку. Так же он умеет r2r и aot компиляцию, хотя иногда jit может лучше справляться с задачей. Вот для фронтенда его использовать - как минимум странно - здесь явно не лучший инструментарий, а тащить wasm или код в браузер - явно, не лучшая идея. При этом нередко получается всё равно быстрее и надёжнее лапши на всяких vue-hue-react-analgular-ах
«При этом нередко получается всё равно быстрее и надёжнее лапши на всяких vue-hue-react-analgular-ах» Я люблю TypeScript+Angular на фронте и C# на бекэнде. По-моему, это вообще самое лучшее, что нынче существует. Единственная проблема, что ангуляр нифига не индексируется поисковиками и приходится городить сервер-сайд рендеринг в нагрузку к основному. Лапши там не получается, если писать руками, а не жопой.
Т.е любишь когда всё тормозит и разваливается?
Там ничего не тормозит и не отваливается.
Разваливается там всё.
Мне не интересно, как он работает на твоей машине
Он на моей машине и не работает.
«ангуляр нифига не индексируется поисковиками» Тех, кто делает текстовые сайты, требующие исполнять тонны js, чтобы просто отобразиться, следует признавать врагами народа
Я и без сайтов враг вашего “народа”.
Не нашего, а всего человеческого. “Двести метров джаваскрипта грузит текста триста байт”, сууука Не, я понимаю, если это какое-нибудь йоба-приложение типа google docs. Я понимаю - если это браузерная игрушка. Видеоплеер, в конце концов. Но если ультимативно требуется js, чтобы просто текст с картинкой показывать, это финиш, вон из профессии, как говорил классик.
Видеоплеер на html5 без скриптов делается!
«Видеоплеер на html5 без скриптов делается!» Не делается. В нагрузку к видеоплееру на реальных проектах, а не школьных задачках, всегда идёт куча дополнительного функционала: будь то комментарии, лайки, репост, «в избранное», реккомендации, и прочая хуйня. Тут же рядом иконка твоего профиля с твоей рожей, выпадающее меню со всякой хуйнёй – и всё это должно динамически обновляться без перезагрузки страницы, какую бы хуйню ты там не натыкал.
Да, но это всё не является необходимым для показа самого видео
Как раз комментарии можно и статически показывать, на этом сайте например, рожа твоя как-то показывается и без js. Как и остальные кнопки, вроде лаек и избранного, можно сделать, правда без обновления в реальном времени, но в качестве фоллбека можно и оставить.
Вообще да, тупой плеер просто тегом <video> можно сделать, но он вроде не во всех браузерах умеет в hls, ему только mp4/webm файл подавай. Ну и не будет современных фич, вроде превью по наведению мышки на полосу прокрутки, хотя это можно и опционально сделать
Ну для стрима - возможно понадобятся скрипты (хотя у меня банальное открытие hls ссылки показывает видео) А вот для простого видео вполне можно noscript фоллбэк сделать. Для комментариев/лайков кстати тоже скрипты не обязательны - если не делать живое обновление - всё прекрасно реализуется без них, но придётся форму комментариев фреймом сделать, чтобы она не перезагружала видео. Обновлять в реальном времени без скриптов тоже возможно, но это будет весьма костыльно и потребует держать соединение с сервером - здесь оно того не стоит
«Но если ультимативно требуется js, чтобы просто текст с картинкой показывать» Да никто в здравом рассудке не использует js чтобы показывать текст. Обычно это именно что веб приложение, где на бекэнде база MSSQL, C# для эндпоинтов, а на фронте – ангуляр который грузится один раз пару мегабайт и потом предоставляет тебе и роутинг, и лайки-комментирование-подрузку кониента, и чаты-хуяты и прочий интерактив но уже без перезагрузки страниц вообще ни разу, а лишь гоняя только данные. На то оно и называется Single Page Application. Application – тут пиздец ключевое слово. Если кто-то долбоёб и делает на этом сайты, которым хватило бы одного чистого html – ну чтош.
Тогда зачем там что-то индексировать поисковикам?
Ты враг всего человеческого народа, ты рак Земли.
«Ты враг всего человеческого народа, ты рак Земли.» Мне нравится, когда русские зеркалят то, что про них говорят. Хотя я не очень понимаю, чего они хотят этим добиться.
Мне нравится, когда хохлы зеркалят то, что про них говорят. Хотя я не очень понимаю, чего они хотят этим добиться.
Плюсую!
«Nocord» А, так ты этот. Вечно путаю тебя с нормальным человеком и пытаюсь в диалог.
И с каким ненормальным ты меня путаешь?
Так себе аргумент. Вот фейсбук это аргумент.
Да кому этот ваш фейсбук нужен?
миллионам людей реально нужен
Зачем? Смотреть на рекламу и тормоза?
Реклама успешно блокируется у меня по крайней мере. Смотреть новости обсуждать их обшаться с друзьями это не контантик и не одноглазники тем более. Но в вашей стране фейсбук запрещен же и на нем кроме ольгинских троллей и нет никого.
FIXED.
А её можно и на риахтуре посмотреть, для полной так сказать картины мира
Не знаю никакой риахтуры смотри по зомбоящику как российская армия освобождает Львов пффф Киев за 3 дня.
Ну, мы за 3 дня несколько населённых пунктов на Донбассе берём.
это ваши фейковые новости и пропаганда не больше поверь
Какой-нибудь ISW говорит то же самое.
У меня нет зомбоящика, а риахтур есть. На риахтуре кстати есть 2 тематических раздела, так что можно смотреть тот который тебе ближе, или же читать оба
Что такое “риахтур”? Я хочу на него зайти.
reactor.cc
Хрень какая-то.
Да пофиг смотри что хочешь точнее к чему доступ есть.
У россиян доступ есть ко всему.
только к вашему чебурнету
значит так:
*kremlin.ru *gosuslugi.ru *ok.ru *vk.com *rutube.ru
Это ваше настоящее или ближайшее будущее. А свобода начинается с сомнения а сомнение начинается с информированности. Загонят вас в цифровой концлагерь.
Забыл 91.192.22.20 в вайтлист добавить.
Риахтур заблочил доступ к разделам “политика” и “разная политика” из россии. А тебе может последний быть интересен
Я на этом риахтуре нашел только картинки всякие.
но зачем, когда это можно куда комфортнее делать в своём мастербатедончике?
не знаю я такой херни, хочу свободы даже в отношении СМИ а не того что там Симонян придумает.
Вроде ещё в 15 году сказали что низзя. Кому сильно тяжело - уехали
правильно сделали.
Нууу если вам нравится жить в концлагере в том числе цифровом.
Ну, миллионы людей жрут дерьмо, ничего удивительного.
Продолжайте жрать вы же живете в РФ и у вас нет свободы выбора. То то же в телеге так активно продаются симкарты иностранные для регистрации с них аккаунтов в фейсбуках для троллей для достоверности аккаунтов ибо фейсбук требует для верификации. Ну подпишитесь в фейсбук на Раша тудэй свобода есть. Но только в выборе групп.
C# нихрена ни кроссплатформенное еще больше дерьмо не мог привести в пример. И это когда большинство хостингов используют linux
с одним небольшим расширением (доступно в gcc/clang) сишка прекрасно годится и для уёб-разработки. Хотя null-terminated строки всё-таки не очень эффективно, это всё равно работает быстро на старых 486 компах (да, умельцы на них activitypub сервера пускают) https://codeberg.org/grunfink/snac2/src/branch/master/html.c#L459 Суть расширения - аттрибут cleanup, который позволяет освобождать память автоматически. Как это работает? В проекте выше реализованы контейнеры для строк, списков, словарей (типа json или dict в python) в виде линейной структуры. Когда буффер одного из этих типов присваеивается переменной типа xs* - время его жизни определяется блоком, в котором она определена. cleanup деструктор - просто функция free(), хотя по идее можно было динамически определять тип и ещё что-то делать. Для динамического определения типа буффера используется первый байт - контрольные символы определяют тип объекта (список/словарь/число), всё остальное - строка - это полезно к примеру при итерации по списку/словарю. Дальше все функции которые изменяют объект - возвращают новый. Его всегда надо присвоить в xs* переменную, чтобы он потом удалился автоматически. Бонусом можно выводить строки обычным printf форматом. Может показаться дико? Но код выглядит вполне читабельным и аккуратным, без огромного количества бойлерплейта, свойственного уёбу.
Дно какое-то, самую мякотку сишки выкинули.
никуда не выкинули. Стоит тебе перепутать xs с xs_val и мякотка радостно отстреливает тебе ногу
Выкинули строки как массивы.
не выкинули, там как раз вся прелесть в том, что строка это просто нуль-терминированный буффер, а всё что не строка - хранится как строка с контрольным байтом в начале
Ок.
Вообще даже c++ сильно теряет от нулль-терминированных строк. string_view появился только в c++17, что очень поздно (да, STL - как всегда бесполезная фигня без задач) Я пробовал в одном проекте переходить на строки в виде структуры из пары указателей (начало-конец) - удобно, zero-copy подстроки, владеть строками может единый пул-строка без всяких терминирующих нулей, так и можно писать их после структуры (например если (uintptr_t)begin == (uintptr_t)(&end + 1) - строка владеющая, иначе - нет). Но всё упирается в необходимость взаимодействия со внешним кодом. Пути в ядерных сисколах - готовь нуль-терминированную строку, imgui - тоже (хотя там есть ветка string_view, но похоже, что она никогда не попадёт в апстрим и так и останется feature branch). А в остальном, пока не надо взаимодействовать со внешним кодом - сравнение строк идёт куда быстрее (сначала сравнивается длина, потом memcmp), копирование - простой memcpy с заранее известной длиной, создание из литерала сразу по sizeof без всяких strlen(), нужна подстрока - просто запиши в структуру указатель на её начало и конец. std::string имеет часть этих преимуществ, но всё равно заставляет нулль-терминировать буфер
Кстати вот у жабки строки не нуль-терминированные, и substring раньше работало за O(1) без копирования, но начиная с какой-то версии от этого отказались (я так понимаю, решили, что много памяти жрёт, когда маленькие подстроки держат буферы от уже несуществующих больших строк), и сейчас substring всегда копирует буфер. «std::string имеет часть этих преимуществ, но всё равно заставляет нулль-терминировать буфер» так у неё и бесплатный c_str() имеется
В шарпе тоже не нуль-терминированные и изначально было сделано копирование в отличии от жабы, но можно создать вьюху над строкой.
«было сделано копирование в отличии от жабы» Вот это самый прикол. При том, что как раз в жабе заявляется дроч на обратную совместимость и WORA, вот так поменяли поведение в одной из самых базовых вещей. На днях на лоре тред был про шестую жабу, там ещё Dimez писал, что у него где-то на каком-то проде производительность падала при переходе на java7/8 относительно java6. https://www.linux.org.ru/forum/general/17940910?cid=17941339
Имеется, но ради этого c_str оно должно постоянно нулль-терминированную строку держать