
Больше пары строк кода в посте или на скриншоте ведут в ад.
Для программирования на HTML https://codesandbox.io
Для Node.js с консолькой https://repl.it/languages/nodejs
Если рассчитываешь получить дельный ответ, сформулируй правильно вопрос: «что я хочу получить, что я для этого делаю, что я вместо этого получаю». Если/когда самостоятельно найдёшь решение — поделись в треде, мы за тебя переживаем.
Документация - https://developer.mozilla.org
Руководство для вката - https://github.com/acilsd/wrk-fet#javascript

1. Нода быстрая — да, но не быстрее Go/Java/C#;
2. Один язык на фронт и бэк — да, актуально для предельно ракового способа разработки, когда фронтендер ебашит из пулёмёта новые роуты на сервере на каждую свою хотелку; но не вляется уникальной фичёй для JS, потому что есть тот же GraphQL, дающий DB-level доступ с аналогичной авторизацией-инкапсуляцией "на отъебись" — разница в том, что делать это же на JS пиздец как просто (и потом пиздец как сложно это поддерживать).
Из минусов:
1. Нода медленнее чем все компилируемые ЯП;
2. SSR/гидрация — для простых шаблонов JS не обязателен; для гидрации всё сложнее, у разных JS-фреймворков разная поддержка гидрации, для каких-то есть серверные решения на Go (Vugu, templ) и Rust (Leptos, Sycamore). Конечно, подразумевается, что вы уже ответили на вопрос "а нахуй это SSR нужно в 2025 году, когда есть Eleventy + Alpine?";
3. Простота деплоя — смишно, угу.
И шо ж получается? Что JS на бэкенде нужен для того, чтобы ебашить как из пулемёта говносайты, без проверок прав доступа, без валидации ввода и проёбанным кэшированием (пикрил эксперт по теме). Бонусом из этой модели разработки идёт призрачная возможность переиспользовать логику при SSR, на за пределами рендеринга почти статичных шаблонов через getStaticProps/getServerSideProps и client-only динамики риск выстрелить себе в ногу приближается к единице — то есть, всё это SSR сводится к шаблонизатору с JS-вставками, что можно реализовать на любом ЯП.
Ничо не забыл?
Главный вопрос тысячелетия - почему бекенд на ноде мёртв ?
>За полтора месяца туда всякой фигни напихал.
Хуяк-хуяк и в продакшен на Next.js умеешь? Нет? Нахуй ты нужен?
>Главный вопрос тысячелетия - почему бекенд на ноде мёртв ?
Не мёртв, кто-то даже в СНГ такой хуйнёй занимается, но вакашек на Python/PHP на порядок больше. С развитием Go у ноды объективно очень мало ниш остаётся, даже бессхемовое API на GraphQL можно сделать на куче ЯП, нода не обязательна.
Можно ли перейти на другие стеки без потери зарплаты? Обычно везде требуют 3-5 лет опыта на go без исключений..
Я бы смотрел на ноду как на средство быстрого прототипирования. Проверка гипотез, моки-хуеки, тому подобное говно. Язык более фичастый чем го, значит писанины ебанины меньше, но есть траблы с перформансом в части сборки мусора, в проде просадки могут делать плохие метрики.
Сычев, какой нахуй прототип. Выкладывай что есть и чтобы работало! Завтара важные люди будут смотреть.
>фичастый чем го,
Ну разрабы го в последние годы вроде очухались и начали добавлять фишки по чайной ложке
>Можно ли перейти на другие стеки без потери зарплаты? Обычно везде требуют 3-5 лет опыта на go без исключений..
Мне вспоминаются вакансии "15 лет опыта разработки ядра Linux". Да, 95% HR-ов — бездарные хуилы и не способны набирать кодеров, потому требуют те требования, которые требуют все на рынке, но есть довольно много технически грамотных вакансий, где требуется что-то типа "at least 5 years in backend development" с очевидным предпочтением в сторону Go.
Нужно понимать, что как и на рынке поддержанных авто, как на рынке женщин 30+ 90% предложений — это "тухляк", который никто не разбирает, он висит месяцами и годам. Чтобы найти что-то годное, нужно перелопатить все эти вакашки. А ещё лучше зарекомендовать себя через другие каналы, чтобы безмозглую пизду-HR вообще в глаза не видеть. То есть, статьи, проекты на гитхаб с хорошей видимостью, холодные сообщения техническим спецам или участие в их проектах, и так далее — но, да, это всё долго и сложно.
Я тебе такой пример приведу: последний проект, на котором я был, компания получила благодаря тому, что наш шеф написал какому-то большому начальнику одной частной фирмы, и тот начальник откликнулся. Естественно, до получения отклика было разослано две сотни писем, на которые либо не ответили, либо послали нахуй, либо отреагировали без большого энтузиазма, мол "может быть, может быть".
>>3046
>Я бы смотрел на ноду как на средство быстрого прототипирования. Проверка гипотез, моки-хуеки, тому подобное говно
JS на бэке в хуй не упёрлось именно для прототипирования, потому что есть PHP/Ruby/Python. А если у вас не прототип, то оно опять же в хуй не упёрлось, потому что есть Go, который медленнее в разработке, но намного надёжнее, даже чем TypeScript, и в том числе потому проще поддержка и доработка.
>>3065
>В 99% случаях просадки метрик из-за БД
Если твоя хуйня дёргает БД на каждый чих, то да. Тот же Golang позволяет иметь in-process кэш с околонулевой стоимостью доступа, который сильно снижает необходимость читать БД по 20 раз на запрос. И нет, нода так не умеет, потому что нода не умеет выполнять десять воркеров в одном адресном пространстве (чтобы кэш был общим).
>Можно ли перейти на другие стеки без потери зарплаты? Обычно везде требуют 3-5 лет опыта на go без исключений..
Мне вспоминаются вакансии "15 лет опыта разработки ядра Linux". Да, 95% HR-ов — бездарные хуилы и не способны набирать кодеров, потому требуют те требования, которые требуют все на рынке, но есть довольно много технически грамотных вакансий, где требуется что-то типа "at least 5 years in backend development" с очевидным предпочтением в сторону Go.
Нужно понимать, что как и на рынке поддержанных авто, как на рынке женщин 30+ 90% предложений — это "тухляк", который никто не разбирает, он висит месяцами и годам. Чтобы найти что-то годное, нужно перелопатить все эти вакашки. А ещё лучше зарекомендовать себя через другие каналы, чтобы безмозглую пизду-HR вообще в глаза не видеть. То есть, статьи, проекты на гитхаб с хорошей видимостью, холодные сообщения техническим спецам или участие в их проектах, и так далее — но, да, это всё долго и сложно.
Я тебе такой пример приведу: последний проект, на котором я был, компания получила благодаря тому, что наш шеф написал какому-то большому начальнику одной частной фирмы, и тот начальник откликнулся. Естественно, до получения отклика было разослано две сотни писем, на которые либо не ответили, либо послали нахуй, либо отреагировали без большого энтузиазма, мол "может быть, может быть".
>>3046
>Я бы смотрел на ноду как на средство быстрого прототипирования. Проверка гипотез, моки-хуеки, тому подобное говно
JS на бэке в хуй не упёрлось именно для прототипирования, потому что есть PHP/Ruby/Python. А если у вас не прототип, то оно опять же в хуй не упёрлось, потому что есть Go, который медленнее в разработке, но намного надёжнее, даже чем TypeScript, и в том числе потому проще поддержка и доработка.
>>3065
>В 99% случаях просадки метрик из-за БД
Если твоя хуйня дёргает БД на каждый чих, то да. Тот же Golang позволяет иметь in-process кэш с околонулевой стоимостью доступа, который сильно снижает необходимость читать БД по 20 раз на запрос. И нет, нода так не умеет, потому что нода не умеет выполнять десять воркеров в одном адресном пространстве (чтобы кэш был общим).
>Ну разрабы го в последние годы вроде очухались и начали добавлять фишки по чайной ложке
Ну там грамотные архитекторы работают, а не Гвидо, которые в 90-е тащил прямо всё подряд в ЯП. Golang как раз отличается простотой языка, а простота сама по себе является преимуществом.
Просадки отдельных запросов - да. Както раз стресс-тестил графкульную федерацию на ноде, там прямо в htop было видно как сначала при полной загрузке cpu растет выделение памяти, потом вступает в дело gc и загрузка cpu падает почти до нуля, и через некоторое время снова полная загрузка проца и памяти выделено в разы меньше. Тру стори!
>простотой языка, а простота сама по себе является преимуществом.
Такой простой,что пакет для работы с массивами и его производных добавили только недавно,а раньше надо было городить кучу кода.
И то, не добавили функции reduce filter map ,потому что один и создателей сказал,что НЕ НУЖНО
Простота хуже воровства.
>Тот же Golang позволяет иметь in-process кэш с околонулевой стоимостью доступа
В Nodejs(ORM) позволяет иметь in-process кэш с околонулевой стоимостью доступа
>PHP/Ruby/Python
Первые два совсем некрота. Ты бы ещё Perl предложил. Петухон получше, но до выразительности JS ему далеко.
Чел, JS это уже lingua franca на котором говорят буквально все. Пыхера еще найти можно, с рубистами потяжелее, а жсеров бери не хочу. Кому взбредет в голову изучать говна мамонтов, чтобы прототипировать не снимая свитер в режиме забега?
В симфони "реалтайм" из коробки, чел. Через mercure и symfony messenger работает. Не надо ниче делать. только бандл установить официальный. Даже настраивать не надо все само через flex настроится.
>Такой простой,что пакет для работы с массивами и его производных добавили только недавно,а раньше надо было городить кучу кода.
>И то, не добавили функции reduce filter map ,потому что один и создателей сказал,что НЕ НУЖНО
Я не понимаю, до чего ты доебался. Что нельзя сделать в Go без filter/map/reduce?
Допустим, ты сделал свои filter/map:
func filter[T any](slice []T, f func(T) bool) []T
func mapSlice[T, U any](slice []T, f func(T) U) []U
Для чего? Чтобы сделать композицию плана numbers.map().filter().reduce(). Окей, давай сделаем:
numbers := []int{1, 2, 3, 4, 5}
evenSquaredNumbers := mapSlice(filter(numbers, func(n int) bool {
return n%2 == 0
}), func(n int) int {
return n n
})
fmt.Println(evenSquaredNumbers) // [4 16]
Но то же самое можно написать как:
numbers := []int{1, 2, 3, 4, 5}
evenSquaredNumbers := []int{}
for _, n := range numbers {
if n%2 == 0 {
evenSquaredNumbers = append(evenSquaredNumbers, n n)
}
}
fmt.Println(evenSquaredNumbers) // [4 16]
Шо ж тогда получается? Что обычные Тьюринговые пошаговые алгоритмы хуево сочетаются через filter/map/reduce. Ты вот в курсе. что сделали по итогу в Common Lisp?
(loop for n in '(1 2 3 4 5)
when (evenp n)
collect (* n n))
Ой, шо за хуйня, как-то оно подозрительно похоже на подход Go?
Да, если взять какую-нибудь Clojure, то там больше упора на filter/map/reduce, но там, с ихними персистентными типами данных и параллелизацией через всякие pmap, особенности этих функций конкретно используются, они не просто "потому что удобнее" применяются.
>Такой простой,что пакет для работы с массивами и его производных добавили только недавно,а раньше надо было городить кучу кода.
>И то, не добавили функции reduce filter map ,потому что один и создателей сказал,что НЕ НУЖНО
Я не понимаю, до чего ты доебался. Что нельзя сделать в Go без filter/map/reduce?
Допустим, ты сделал свои filter/map:
func filter[T any](slice []T, f func(T) bool) []T
func mapSlice[T, U any](slice []T, f func(T) U) []U
Для чего? Чтобы сделать композицию плана numbers.map().filter().reduce(). Окей, давай сделаем:
numbers := []int{1, 2, 3, 4, 5}
evenSquaredNumbers := mapSlice(filter(numbers, func(n int) bool {
return n%2 == 0
}), func(n int) int {
return n n
})
fmt.Println(evenSquaredNumbers) // [4 16]
Но то же самое можно написать как:
numbers := []int{1, 2, 3, 4, 5}
evenSquaredNumbers := []int{}
for _, n := range numbers {
if n%2 == 0 {
evenSquaredNumbers = append(evenSquaredNumbers, n n)
}
}
fmt.Println(evenSquaredNumbers) // [4 16]
Шо ж тогда получается? Что обычные Тьюринговые пошаговые алгоритмы хуево сочетаются через filter/map/reduce. Ты вот в курсе. что сделали по итогу в Common Lisp?
(loop for n in '(1 2 3 4 5)
when (evenp n)
collect (* n n))
Ой, шо за хуйня, как-то оно подозрительно похоже на подход Go?
Да, если взять какую-нибудь Clojure, то там больше упора на filter/map/reduce, но там, с ихними персистентными типами данных и параллелизацией через всякие pmap, особенности этих функций конкретно используются, они не просто "потому что удобнее" применяются.
Никто не запрещает втаскивать в проект фичи на стадии пропозала. На свой страх и риск, конечно, но кого это останавливает?
>В Nodejs(ORM) позволяет иметь in-process кэш с околонулевой стоимостью доступа
Что такое Nodejs(ORM)?
>>3176
>Первые два совсем некрота. Ты бы ещё Perl предложил.
Жывее всех жывых — просто посмотри, сколько вакашек на PHP./
>Петухон получше, но до выразительности JS ему далеко.
Ты ебанулся, дядя? У тебя list comprehension какие в JS есть? Переопределения операторов? Дескрипторы свойств? Генераторы недавно завезли — они в питоне есть с девяностых годов. Какая нахуй "выразительность"? В чём она выражается?
>>3180
>JS это уже lingua franca на котором говорят буквально все. Пыхера еще найти можно, с рубистами потяжелее, а жсеров бери не хочу
Ни питон, ни JS в хуй ни упёрлись никому в отрыве от предметки. Особенно это касается питона, где предметка бывает очень сложной. То есть, на собесе по питону тебя с ходу спросят "какой метод обратного распространения ошибки вы бы предпочли для регрессивного предсказания?" — и хоть ты все PEP выучи наизусть, ты не сможешь ответить на этот вопрос, потому что, ещё раз, сам ЯП никому не нужен, этот язык — дерьмо говна, он нужен лишь как дёргалка сторонних биллиотек на C/C++.
JS — это такое же дерьмо говна, и спрашивать тебя будут по GUI фреймворкам или организации сервисов на бэке. Я проходил собесы — именно это меня и спрашивали, ни одного вопроса не было про "для каких случаев вы предпочтёте асинхронные функции?", нет, только прикладнуха, сторонние либы, фреймворки. Ну и софт-хуйня всякая, типа "как вы будете решать проблему с заказчиком?".
>>3170
>>PHP/Ruby/Python
>Ну попробуй реалтайм сделать
Какой в пизду петушиный рилтайм вы там собрались делать на языке с GC? Мне аж интересно стало. Наверное, это что-то из оперы "у нас хайлоад система на PHP, обрабатываем 100 запросов в секунду"?
и часто есть вакансии,где надо переписать с пхп на го
>тебя list comprehension какие в JS есть?
Lodash chain в тыщи раз пижже
>Переопределения операторов?
Частично, через well known symbols
>Дескрипторы свойств?
Рефлексия во все поля
>Генераторы недавно завезли
10 лет это недавно,лол. Зато async/await завезли быстрее и типизацию
>Никто не запрещает втаскивать в проект фичи на стадии пропозала. На свой страх и риск, конечно, но кого это останавливает?
А что там втаскивать? Из языка фичи нужно УБИРАТЬ и причёсывать старые, а не втаскивать новую хуйню. Там до сих пор целых чисел нет я языке, я ебал. Там недавно НАКОНЕЦ добавили ассоциативные массивы. Не рандомная хуйня на обычных объектах, а настоящий массив, без глобальной перезаписи цепей прототипов сформированным злоумышленником JSON-ом.
>>3212
>>тебя list comprehension какие в JS есть?
>Lodash chain в тыщи раз пижже
Чем пизже? Тем, что ты забыл ".value()" и получил LodashWrapper{...} вместо значения?
>>Переопределения операторов?
>Частично, через well known symbols
Чивоблять? Каким образом символы помогают переопределить поведение оператора "+" для мамссива?
>Рефлексия во все поля
Reflect, Proxy, Object.getOwnPropertyDescriptors, Object.defineProperty — это полный список всех инструментов хуков-интроспекции в JS. Мне нужно рассказывать, что есть в питоне, или ты сам погуглишь? Я просто заебусь список искать, потому что в питоне есть это всё, и ещё в пять раз больше других фич.
>>Генераторы недавно завезли
>10 лет это недавно,лол. Зато async/await завезли быстрее и типизацию
.В питоне генераторы больше 30 лет существуют. Типизации в ECMAScript нет до сих пор. Async/await в JS появился с ECMAScript 2017, в питоне оно было ещё в Tornado на генераторах с версии 2.1 (2011 год).
Любители повкатываться ушли отсюда к менторам

>ты забыл ".value()" и получил LodashWrapper{...} вместо значения
Твоё ебало когда в петухон завезли типизацию, но не научили ей пользоваться.
>Твоё ебало когда в петухон завезли типизацию, но не научили ей пользоваться.
В питоне код обычно понятен без типизации. То есть, не нужно превозмогать для того, чтобы вызвать примитивную функцию.
>>3276
>>Next.js
>Кто это?
Next.js — это популярный фреймворк для разработки веб-приложений на основе React. Он упрощает создание быстрых, масштабируемых и SEO-оптимизированных приложений. Основные особенности:
• Серверный и клиентский рендеринг: Поддерживает SSR (Server-Side Rendering), SSG (Static Site Generation) и CSR (Client-Side Rendering) для гибкости и оптимизации скорости.
• Файловая маршрутизация: Страницы создаются автоматически на основе структуры файлов в папке pages или app (в новых версиях).
• API Routes: Позволяет создавать серверные API в рамках приложения.
• Автоматическая оптимизация: Включает оптимизацию изображений, шрифтов и производительности.
• Поддержка TypeScript и CSS: Встроенная поддержка TypeScript, CSS-модулей и популярных библиотек стилей.
• Быстрая разработка: Горячая перезагрузка и встроенные инструменты для упрощения разработки.
Next.js часто используется для создания статических сайтов, e-commerce платформ и сложных веб-приложений. Последняя версия на июнь 2025 — Next.js 15, с улучшениями в рендеринге и производительности.
- jestjs
- nest.js
- next.js
- nuxt.js
nest.js
nuts.js
next.js очевидно же, ведь он разработан meta - запрещённой в России экстремистской организацией
>You can just use a for loop, which is more flexible in general. I am not being facetious; the filter operation tends to obscure allocation and overhead, and also tends to be overused. Although I may be in the minority, I do not believe this would be a wise addition to the standard library.
>Есть смысол вкатываться в next.js или это очередной jqwery, в который ты сегодня вкатываешься, а завтра им уже никто не пользуется и у тебя мозги засраты мусором?
Да какая нахуй разница? Во что бы ты не вкатися — завтра это будет мусор. React уже два раза под корень переписывали.
>>You can just use a for loop, which is more flexible in general. I am not being facetious; the filter operation tends to obscure allocation and overhead, and also tends to be overused. Although I may be in the minority, I do not believe this would be a wise addition to the standard library.
Я пояснил всё то же самое, только развёрнуто и на конкретных примерах. Я-то понимаю, что сей чел имел в виду. но простому крокодилу нихуя не понятно, особенно каргокультисту из функциональщины.
>Что такое Nodejs(ORM)?
Я бы начал с того, что такое
>in process кэш
В node.js нет такого понятия.
>У тебя list comprehension какие в JS есть?
Во-первых, это уебищный нечитаемый синтаксис. Во-вторых, а нахуя они вообще нужны, когда есть map/filter/reduce?
>Переопределения операторов?
В питоне че ты там переопределяешь?
>Дескрипторы свойств?
Ты говна поел?
>Какая нахуй "выразительность"? В чём она выражается?
Она заключается в том, что вместо вот такой хуйни
[item for row in matrix for item in row]
я напишу просто
array.flat()
Уловил разницу?
>Особенно это касается питона, где предметка бывает очень сложной
Кек, крудошлепство на джанго или ноутбуки на анаконде - это пиздец как сложно, верю, проверяй.
>и спрашивать тебя будут по GUI фреймворкам или организации сервисов на бэке
Еще раз кекаю с дауна. В нормальной конторе собес начнется с того, что тебя попросят склонировать объект, после того как собеседующий поймет, что ты не знаешь о существовании дескрипторов свойств в джс, собес закончится.
>нет, только прикладнуха, сторонние либы, фреймворки
Так ты просто додик-формошлеп. Зачем тебя про асинхронщину спрашивать, если ты банально не понимаешь, как объекты устроены? Ты оператор npm install.
>Какой в пизду петушиный рилтайм вы там собрались делать на языке с GC?
Ну давай посмотрим как ты чат на питоне запилишь. А, у тебя скриптовая хуйня, которая интерпретатор на каждый запрос запускает, поняяяятно.
>>3224
>Там до сих пор целых чисел нет я языке, я ебал.
А в питоне-то, в питоне-то они конечно есть? Ну и завали кукарекалку
>Там недавно НАКОНЕЦ добавили ассоциативные массивы.
Какие блять ассоциативные массивы? Ты под наркотиками какими-то сюда пишешь, ебанько?
>Я просто заебусь список искать, потому что
его нет, лол.
>В питоне генераторы больше 30 лет существуют
А параллельные вычисления завезли в питон уже Многопроцессность? ;)
>Типизации в ECMAScript нет до сих пор
Ебать долбоеб, она там есть с 1999 года, с момента того, как был добавлен jsdoc
>Что такое Nodejs(ORM)?
Я бы начал с того, что такое
>in process кэш
В node.js нет такого понятия.
>У тебя list comprehension какие в JS есть?
Во-первых, это уебищный нечитаемый синтаксис. Во-вторых, а нахуя они вообще нужны, когда есть map/filter/reduce?
>Переопределения операторов?
В питоне че ты там переопределяешь?
>Дескрипторы свойств?
Ты говна поел?
>Какая нахуй "выразительность"? В чём она выражается?
Она заключается в том, что вместо вот такой хуйни
[item for row in matrix for item in row]
я напишу просто
array.flat()
Уловил разницу?
>Особенно это касается питона, где предметка бывает очень сложной
Кек, крудошлепство на джанго или ноутбуки на анаконде - это пиздец как сложно, верю, проверяй.
>и спрашивать тебя будут по GUI фреймворкам или организации сервисов на бэке
Еще раз кекаю с дауна. В нормальной конторе собес начнется с того, что тебя попросят склонировать объект, после того как собеседующий поймет, что ты не знаешь о существовании дескрипторов свойств в джс, собес закончится.
>нет, только прикладнуха, сторонние либы, фреймворки
Так ты просто додик-формошлеп. Зачем тебя про асинхронщину спрашивать, если ты банально не понимаешь, как объекты устроены? Ты оператор npm install.
>Какой в пизду петушиный рилтайм вы там собрались делать на языке с GC?
Ну давай посмотрим как ты чат на питоне запилишь. А, у тебя скриптовая хуйня, которая интерпретатор на каждый запрос запускает, поняяяятно.
>>3224
>Там до сих пор целых чисел нет я языке, я ебал.
А в питоне-то, в питоне-то они конечно есть? Ну и завали кукарекалку
>Там недавно НАКОНЕЦ добавили ассоциативные массивы.
Какие блять ассоциативные массивы? Ты под наркотиками какими-то сюда пишешь, ебанько?
>Я просто заебусь список искать, потому что
его нет, лол.
>В питоне генераторы больше 30 лет существуют
А параллельные вычисления завезли в питон уже Многопроцессность? ;)
>Типизации в ECMAScript нет до сих пор
Ебать долбоеб, она там есть с 1999 года, с момента того, как был добавлен jsdoc

Сам скрипт тут https://pastebin.com/fGhxGyXp.
Что можно изменить, а? Этот Javascript охуенно сложная хуйня оказывается.
А ты свою чатжипиту дальше спрашивай.
вот поэтому угараю каждый раз с вас фрейморщиксов. всегда писал на чистом js и никаких проблем. хуйней страдаете как дети
Хули там вкатываться, если знаешь реакт то почитать доки про app router и нужные компоненты и можно начинать говнокодить
Твои тыща строк это не писал, а так, пописывал.
> бы начал с того, что такое
>>in process кэш
>В node.js нет такого понятия.
Так я об этом тебе и пишу: нода — бесполезный мусор, в ней ничего нету из того, что есть в норм инструментах/языках.
>Во-первых, это уебищный нечитаемый синтаксис. Во-вторых, а нахуя они вообще нужны, когда есть map/filter/reduce?
Согласен, мне тоже не нравятся list comprehension в питоне. Правда, лямбды в питоне тоже говно, и в JS они были заметно хуже до ES6.
Что, однако, не отменяет того факта, что for range в Go выглядит намного лучше, чем всё это вместе взятое.
>В питоне че ты там переопределяешь?
Пикрил. Это не весь список, есть ещё контейнерные операции.
>>Дескрипторы свойств?
>Ты говна поел?
До какого-то стандарта это был единственный способ перехвата доступа к JS. Потом появилось Proxy. Полное проксирование было в питоне с версии 2.0.
>Она заключается в том, что вместо вот такой хуйни
>[item for row in matrix for item in row]
>я напишу просто
>array.flat()
Если тебе нужно будет немножко поменять реализацию flat, то ты просто возьмёшь за щеку. Знаешь как выглядит реализация функции flat на JS?
function customFlat(array, depth = 1) {
if (depth < 0) {
return array;
}
return array.reduce((flattened, current) => {
if (Array.isArray(current) && depth > 0) {
return flattened.concat(customFlat(current, depth - 1));
}
return flattened.concat(current);
}, []);
}
Теперь как это выглядит в питухоне на list comprehension:
def customFlat(lst, depth=1):
if depth == 0:
return lst
return [
item
for sublist in lst
for item in (
flatten_depth(sublist, depth - 1)
if isinstance(sublist, list)
else [sublist]
)
]
Дохуя сложнее? Чот я сомневаюсь, что код на reduce-concat ты прямо с ходу понял.
> бы начал с того, что такое
>>in process кэш
>В node.js нет такого понятия.
Так я об этом тебе и пишу: нода — бесполезный мусор, в ней ничего нету из того, что есть в норм инструментах/языках.
>Во-первых, это уебищный нечитаемый синтаксис. Во-вторых, а нахуя они вообще нужны, когда есть map/filter/reduce?
Согласен, мне тоже не нравятся list comprehension в питоне. Правда, лямбды в питоне тоже говно, и в JS они были заметно хуже до ES6.
Что, однако, не отменяет того факта, что for range в Go выглядит намного лучше, чем всё это вместе взятое.
>В питоне че ты там переопределяешь?
Пикрил. Это не весь список, есть ещё контейнерные операции.
>>Дескрипторы свойств?
>Ты говна поел?
До какого-то стандарта это был единственный способ перехвата доступа к JS. Потом появилось Proxy. Полное проксирование было в питоне с версии 2.0.
>Она заключается в том, что вместо вот такой хуйни
>[item for row in matrix for item in row]
>я напишу просто
>array.flat()
Если тебе нужно будет немножко поменять реализацию flat, то ты просто возьмёшь за щеку. Знаешь как выглядит реализация функции flat на JS?
function customFlat(array, depth = 1) {
if (depth < 0) {
return array;
}
return array.reduce((flattened, current) => {
if (Array.isArray(current) && depth > 0) {
return flattened.concat(customFlat(current, depth - 1));
}
return flattened.concat(current);
}, []);
}
Теперь как это выглядит в питухоне на list comprehension:
def customFlat(lst, depth=1):
if depth == 0:
return lst
return [
item
for sublist in lst
for item in (
flatten_depth(sublist, depth - 1)
if isinstance(sublist, list)
else [sublist]
)
]
Дохуя сложнее? Чот я сомневаюсь, что код на reduce-concat ты прямо с ходу понял.

>Кек, крудошлепство на джанго или ноутбуки на анаконде - это пиздец как сложно, верю, проверяй.
Пикрил иерархия классов Django 5.2.3 пикрил. Открывать с осторожностью, на мобилках лучше вообще не открывать.
Забавно, что именно американские стартапы угорают по джанге — остальной мир предпочитает минимизировать свой контакт с этим пиздецом.
>В нормальной конторе собес начнется с того, что тебя попросят склонировать объект, после того как собеседующий поймет, что ты не знаешь о существовании дескрипторов свойств в джс, собес закончится.
Да, однажды что-то такое спросили. Я ХЗ, с хуя ли ты делаешь вывод про "не знаешь о существовании дескрипторов свойств", если в сообщении, на которое ты отвечаешь, я про них написал. Дескрипторы свойств обычно предпочитают не копировать, и я бы скорее предпочёл отпиздить линейкой по рукам того, кто введёт в проект клонирование объектов с их дескрипторами, потому что дескрипторы обычно опираются на внешний контекст, который не входит в состав клонируемого объекта.
И, опять же, индустрия уже давно уходит от дескрипторов в сторону более чистого Proxy, который явно разделяет данные и наблюдение за ними.
>Так ты просто додик-формошлеп. Зачем тебя про асинхронщину спрашивать, если ты банально не понимаешь, как объекты устроены? Ты оператор npm install.
Я тебе про питон рассказывал. В JS про прикладнуху спрашивают реже потому, что её там намного меньше. Но всё равно много. В самом ЯП там нехуй изучать, любое профессиональное развитие что в JS, что в питоне идёт только в прикладнуху. Если тебя на собесах спрашивают только про устройство ЯП, то, возможно, ты даже до "додика-формошлёпа" ещё не дорос.
>Ну давай посмотрим как ты чат на питоне запилишь. А, у тебя скриптовая хуйня, которая интерпретатор на каждый запрос запускает, поняяяятно.
Как же ты охуеешь, когда узнаешь, что мессенжеры в Discord и Instagram были изначально написаны на Python.
То, что вы описываете, не называется "real time", по крайней мере в общепринятом словаре. Так-то для кого-то ответ за 5 минут может быть "real time". Общепринятый real time подразумевает, что система никогда не превышает некоторую заданную задержку в долю секунду, даже при потере связи (система продолжает реагировать на события с учётом потери связи).
Всё это к простым месенжерам, естественно, не относится, это просто системы с низкой задержкой, которые могут и через секунду, и через две прислать сообщения, и всем будет похую.
>>Там до сих пор целых чисел нет я языке, я ебал.
>А в питоне-то, в питоне-то они конечно есть? Ну и завали кукарекалку
У тебя гугл отключили и бесплатные лимиты по всем нейросеткам исчерпаны?
>Какие блять ассоциативные массивы? Ты под наркотиками какими-то сюда пишешь, ебанько?
Map(), WeakMap(). Точно токены кончились.
>А параллельные вычисления завезли в питон уже Многопроцессность?
В питоне с параллельными вычислениями ситуация ровно такая же хуёвая, как и в JS. В том же ML по сути дёргается внешний многопоточный код на C/C++ — с таким же успехом его можно было запускать в отдельном процессе (как это делают в Elixir).
>Ебать долбоеб, она там есть с 1999 года, с момента того, как был добавлен jsdoc
JSDoc — это школьная поделка (community-driven), которая ни в одном стандарте не принята.

>Кек, крудошлепство на джанго или ноутбуки на анаконде - это пиздец как сложно, верю, проверяй.
Пикрил иерархия классов Django 5.2.3 пикрил. Открывать с осторожностью, на мобилках лучше вообще не открывать.
Забавно, что именно американские стартапы угорают по джанге — остальной мир предпочитает минимизировать свой контакт с этим пиздецом.
>В нормальной конторе собес начнется с того, что тебя попросят склонировать объект, после того как собеседующий поймет, что ты не знаешь о существовании дескрипторов свойств в джс, собес закончится.
Да, однажды что-то такое спросили. Я ХЗ, с хуя ли ты делаешь вывод про "не знаешь о существовании дескрипторов свойств", если в сообщении, на которое ты отвечаешь, я про них написал. Дескрипторы свойств обычно предпочитают не копировать, и я бы скорее предпочёл отпиздить линейкой по рукам того, кто введёт в проект клонирование объектов с их дескрипторами, потому что дескрипторы обычно опираются на внешний контекст, который не входит в состав клонируемого объекта.
И, опять же, индустрия уже давно уходит от дескрипторов в сторону более чистого Proxy, который явно разделяет данные и наблюдение за ними.
>Так ты просто додик-формошлеп. Зачем тебя про асинхронщину спрашивать, если ты банально не понимаешь, как объекты устроены? Ты оператор npm install.
Я тебе про питон рассказывал. В JS про прикладнуху спрашивают реже потому, что её там намного меньше. Но всё равно много. В самом ЯП там нехуй изучать, любое профессиональное развитие что в JS, что в питоне идёт только в прикладнуху. Если тебя на собесах спрашивают только про устройство ЯП, то, возможно, ты даже до "додика-формошлёпа" ещё не дорос.
>Ну давай посмотрим как ты чат на питоне запилишь. А, у тебя скриптовая хуйня, которая интерпретатор на каждый запрос запускает, поняяяятно.
Как же ты охуеешь, когда узнаешь, что мессенжеры в Discord и Instagram были изначально написаны на Python.
То, что вы описываете, не называется "real time", по крайней мере в общепринятом словаре. Так-то для кого-то ответ за 5 минут может быть "real time". Общепринятый real time подразумевает, что система никогда не превышает некоторую заданную задержку в долю секунду, даже при потере связи (система продолжает реагировать на события с учётом потери связи).
Всё это к простым месенжерам, естественно, не относится, это просто системы с низкой задержкой, которые могут и через секунду, и через две прислать сообщения, и всем будет похую.
>>Там до сих пор целых чисел нет я языке, я ебал.
>А в питоне-то, в питоне-то они конечно есть? Ну и завали кукарекалку
У тебя гугл отключили и бесплатные лимиты по всем нейросеткам исчерпаны?
>Какие блять ассоциативные массивы? Ты под наркотиками какими-то сюда пишешь, ебанько?
Map(), WeakMap(). Точно токены кончились.
>А параллельные вычисления завезли в питон уже Многопроцессность?
В питоне с параллельными вычислениями ситуация ровно такая же хуёвая, как и в JS. В том же ML по сути дёргается внешний многопоточный код на C/C++ — с таким же успехом его можно было запускать в отдельном процессе (как это делают в Elixir).
>Ебать долбоеб, она там есть с 1999 года, с момента того, как был добавлен jsdoc
JSDoc — это школьная поделка (community-driven), которая ни в одном стандарте не принята.
>вот поэтому угараю каждый раз с вас фрейморщиксов. всегда писал на чистом js и никаких проблем. хуйней страдаете как дети
С кого "вас"? Дядя, я даже в проекте на Vue половину кода писал на простом JS, без "реактивности". Там ещё нужно постараться не дать фреймворку всунуть свою реактивность туда, где его не просят, а то он лезет во все щёлки, замедляя работу без толку.
Перед тем, как уйти из фронта, я угорал по Svelte v3, ны нынче уже есть такие штуки, как Alpine.js и Petite vue, которые куда угодно можно встроить — всё-такие ебаться со сложными взаимосвязями на сухую не очень приятно. Допустим, тот же Prosemirror использует модель реактивности аля React, то есть, построение всего VDOM одним проходом и синхронизация DOM по нему — и какой тут смысл выёбываться "зато у нас не React"?
> 1. Нода быстрая — да, но не быстрее Go/Java/C#;
Быстрее, если не писать говнокод
> 1. Нода медленнее чем все компилируемые ЯП
Медленнее на 20-130% по сравнению с С, это ни о чем
> 3. Простота деплоя — смишно, угу.
Писать в три-пять раз быстрее это пиздато, потом можно переписать на с/zig/rust, а можно и хуй забить.
>>3046
>но есть траблы с перформансом в части сборки мусора
Только если писать как индус. У меня gc на беке вообще не работает, например
>>3130
>JS на бэке в хуй не упёрлось именно для прототипирования, потому что есть PHP/Ruby/Python.
Чего нахуй? Прототипы пишут фулстек, нахуй нужно два языка когда прототип пишешь? Обезумел совсем?
>> 1. Нода быстрая — да, но не быстрее Go/Java/C#;
>Быстрее, если не писать говнокод
Напомни мне, сколько ядер процессора в норме может нода использовать? А то я забыл что-то.
>Медленнее на 20-130% по сравнению с С, это ни о чем
Ты пизданулся? Откуда инфа? Даже нейросетка такую хуйню не сморозит. Пять-десять раз в среднем не хотел (по памяти и ЦП)?
https://benchmarksgame-team.pages.debian.net/benchmarksgame/fastest/node-gcc.html
>Писать в три-пять раз быстрее это пиздато, потом можно переписать на с/zig/rust, а можно и хуй забить.
В три-пять раз быстрее, чем что? Чем Rust? У меня нет других предположений по поводу того, что может быть настолько медленным в разработке.
>Чего нахуй? Прототипы пишут фулстек, нахуй нужно два языка когда прототип пишешь? Обезумел совсем?
Если так доебаться, то HTML — это тоже ЯП, и CSS. Это што ж получается, три языка нужно знать? Хотя, я уверен, что ты бездарная хуила (как и все фулстэкеры), которая флексбоксы не умеет правильно организовывать (inb4: нахуй мне знать CSS, когда есть Bootstrap?).
Прототип в смысле "кусок говна, внешне похожий на будущий продукт" можно захуярить на Python + strawberry + GraphQL с доступом к БД без какой-либо авторизации и валидации ввода — это будет мало отличаться от духа CRUD-ов на TypeScript + Zod, и больше похоже по духу на express-graphql.
Честно говоря, я в настолько хуёвых проектах никогда не работал, так что тут моя компетентность может быть недостаточной.
>Так я об этом тебе и пишу: нода — бесполезный мусор
Так я с этим и не спорил, я тебе сказал, что ты отвечаешь додику, который вообще не понимает, что такое нода.
>for range в Go выглядит намного лучше, чем всё это вместе взятое.
Я не знаю, как выглядит
>for range в Go
>for range в Go
Это недоразумение. В питоне все - объект. Ты в JS можешь также
для любого объекта переопределить valueOf и получишь такую же псевдоперегрузку.
>До какого-то стандарта это был единственный способ перехвата доступа к JS.
При чем здесь перехват? Перехват - задача аксессоров (позже - прокси). Задача дескрипторов - предотвратить перезапись/удаление свойства, которое положит систему, стоимостью 6,000 рублей в секунду.
>Если тебе нужно будет немножко поменять реализацию flat
Мне не нужно менять реализацию flat. Любой компрехеншн реализуется той илиной комбинацией map/flat/reduce с аналогичной алгоритмической сложностью.
>Пикрил иерархия классов Django 5.2.3 пикрил.
Ну я могу тебе еще более уебищную иерархию высрать. Дальше-то что? Типа крутость в сложности или что? Ну программни на брэйнфаке UI для браузера, че.
>Дескрипторы свойств обычно предпочитают не копировать, и я бы скорее предпочёл отпиздить линейкой по рукам того, кто введёт в проект клонирование объектов с их дескрипторами
Удачи реализовать аналог тильды
>Если тебя на собесах спрашивают только про устройство ЯП
Если ты не понимаешь устройство ЯП, о какой прикладнухе идет речь, лол?
>То, что вы описываете, не называется "real time"
Чувак, я прекрасно знаю, что в АКАДЕМИЧЕСКОЙ среде называется soft real-time и hard real-time система. Я говорю, про то, что подразумевается в БЫТОВОЙ речи.
>У тебя гугл отключили и бесплатные лимиты по всем нейросеткам исчерпаны?
Ну кидай ссылку на доку.
>Map(), WeakMap().
>ассоциативные массивы
ВАВХХАВХАХВАХВХАХВАХВАХХВАХВАХВАХ
На остальные 2 лень отвечать.
>Так я об этом тебе и пишу: нода — бесполезный мусор
Так я с этим и не спорил, я тебе сказал, что ты отвечаешь додику, который вообще не понимает, что такое нода.
>for range в Go выглядит намного лучше, чем всё это вместе взятое.
Я не знаю, как выглядит
>for range в Go
>for range в Go
Это недоразумение. В питоне все - объект. Ты в JS можешь также
для любого объекта переопределить valueOf и получишь такую же псевдоперегрузку.
>До какого-то стандарта это был единственный способ перехвата доступа к JS.
При чем здесь перехват? Перехват - задача аксессоров (позже - прокси). Задача дескрипторов - предотвратить перезапись/удаление свойства, которое положит систему, стоимостью 6,000 рублей в секунду.
>Если тебе нужно будет немножко поменять реализацию flat
Мне не нужно менять реализацию flat. Любой компрехеншн реализуется той илиной комбинацией map/flat/reduce с аналогичной алгоритмической сложностью.
>Пикрил иерархия классов Django 5.2.3 пикрил.
Ну я могу тебе еще более уебищную иерархию высрать. Дальше-то что? Типа крутость в сложности или что? Ну программни на брэйнфаке UI для браузера, че.
>Дескрипторы свойств обычно предпочитают не копировать, и я бы скорее предпочёл отпиздить линейкой по рукам того, кто введёт в проект клонирование объектов с их дескрипторами
Удачи реализовать аналог тильды
>Если тебя на собесах спрашивают только про устройство ЯП
Если ты не понимаешь устройство ЯП, о какой прикладнухе идет речь, лол?
>То, что вы описываете, не называется "real time"
Чувак, я прекрасно знаю, что в АКАДЕМИЧЕСКОЙ среде называется soft real-time и hard real-time система. Я говорю, про то, что подразумевается в БЫТОВОЙ речи.
>У тебя гугл отключили и бесплатные лимиты по всем нейросеткам исчерпаны?
Ну кидай ссылку на доку.
>Map(), WeakMap().
>ассоциативные массивы
ВАВХХАВХАХВАХВХАХВАХВАХХВАХВАХВАХ
На остальные 2 лень отвечать.
>Напомни мне, сколько ядер процессора в норме может нода использовать? А то я забыл что-то.
1ядро-один поток.Но можно спокойно поднять кластер из коробки или добавить PM2
> Напомни мне, сколько ядер процессора в норме может нода использовать? А то я забыл что-то.
Все может использовать, дебил что ли? Там и кластер есть и воркеры и атомики.
> Ты пизданулся? Откуда инфа? Даже нейросетка
У тебя все знания от нейросетки? Неудивительно.
> Пять-десять раз в среднем не хотел (по памяти и ЦП)?
Если ты даун-говноед и никогда не писал на С - у тебя так и будет. Пиши нормально - нормально будет.
> Пять-десять раз в среднем не хотел (по памяти и ЦП)? https://benchmarksgame-team.pages.debian.net/benchmarksgame/fastest/node-gcc.html
Классика калоедства - обычные массивы вместо typedarray, сообщения вместо атомиков, алгоритм уровня кала. Вот нормальный тест https://github.com/denshade/speedTest С сравним с JS, че-то около 20% что ли. Нормально написанный JS код всегда +/- на уровне С.
> В три-пять раз быстрее, чем что? Чем Rust? У меня нет других предположений по поводу того, что может быть настолько медленным в разработке.
Чем почти на любых других языках, очевидно же. На ноде ты просто берёшь и пишешь говняк который по скорости сравним с С без AVX.
> Если так доебаться, то HTML — это тоже ЯП, и CSS.
Что ты несешь, даун? HTML и CSS это не не язык программирования, это язык разметки и язык стилей. Пиздец ты хуйню высрал конечно.
> Прототип в смысле "кусок говна, внешне похожий на будущий продукт" можно захуярить на Python + strawberry + GraphQL
Безусловно, в питоне можно сделать только кусок говна. Я не спорю.
>>for range в Go выглядит намного лучше, чем всё это вместе взятое.
>Я не знаю, как выглядит
>>for range в Go
А нахуй ты пишешь в тред, который не читаешь? >>3190
>Ты в JS можешь также для любого объекта переопределить valueOf и получишь такую же псевдоперегрузку.
Складывать массивы? Нихуя ты не можешь в JS, там с самого начала операторы (плюс, минус. больше, меньше, если не дошло ещё) в языке реализованы максимально хуёво.
>Перехват - задача аксессоров (позже - прокси). Задача дескрипторов - предотвратить перезапись/удаление свойства, которое положит систему, стоимостью 6,000 рублей в секунду.
Чисто доеб до определений. Свойств не было изначально в JS, потому всё, что налепили поверх них, можно назвать тем или иным перехватом. Например, никто не запрещает коду вызвать операцию записи — более того, в старом режиме (без strict) запись в read-only property происходит вообще без ошибок, значение просто не сохраняется и код выполняется дальше.
>Мне не нужно менять реализацию flat. Любой компрехеншн реализуется той илиной комбинацией map/flat/reduce с аналогичной алгоритмической сложностью.
Ты просто понимашеь степень всратости той хуйни, которую ты превозносишь? То есть, засовывать в массивы и возвращать в лямбдах map() иногда значения, иногда массивы, иногда массивы массивов — это, блять, нормально? "А мы потом может быть как-нибудь это мусорное ведро причешем через flat()" — мне прям представился бомж, копающийся в мусорном баке, находит там недоеденные колбасные огрызки, и такой "вот, map/flat/reduce работает, а вы говорили". Пиздец, такой кринж.
>Ну я могу тебе еще более уебищную иерархию высрать. Дальше-то что? Типа крутость в сложности или что? Ну программни на брэйнфаке UI для браузера, че.
Для кого-то сложность джанги оправдана, но просто так вкатиться с ноги в коммерческую джангу со словами "я знаю питон, мне ничо не нужно" — это очень наивно. Энтерпрайз с миллионами строк на питоне — это совершенно другой зверь, нежели страничка с одной строчкой текста и кнопочкой.
Если чо — я был на собесах, там вопрос с ходу был "сколько лет ты с джангой работал? Ноль? Ну и нахуй ты нам в бэке?".
>>Дескрипторы свойств обычно предпочитают не копировать, и я бы скорее предпочёл отпиздить линейкой по рукам того, кто введёт в проект клонирование объектов с их дескрипторами
>Удачи реализовать аналог тильды
Ты о чём?
>Если ты не понимаешь устройство ЯП, о какой прикладнухе идет речь, лол?
В JS до сих пор находят сложнообъяснимые поведения даже в базовых функциях, потому что поверх изначального говна дерьма, созданного за десять дней, лепят всё больше и больше слоёв новых функций. и эти новые функции сложнопредсказуемо взаимодействуют с древним пиздецом.
Потому с практической точки зрения есть смысл только в "знать, каким подмножеством ЯП пользоваться", а теоретическими раскопками для "понимания устройство ЯП" занимаются либо в комитете TC39, либо просто от нехуй делать.
Чтобы было ясно:
(![]+[])[+[]]+([][[]]+[])[+[]]+([][[]]+[])[+!![]]
Здесь записана строка 'fun'.
parseInt(0.0000005)
Результат этой функции — число 5. Знай JS дальше. Чо ты там про брейнфакт говорил?
>Чувак, я прекрасно знаю, что в АКАДЕМИЧЕСКОЙ среде называется soft real-time и hard real-time система. Я говорю, про то, что подразумевается в БЫТОВОЙ речи.
Ты говоришь про то, что подразумевается в среде смузихлёбов "ранящих жобу". Так-то в очереди на кассе в пятёрочке я что ни разу не слышал от бабулек про рилтайм, в бытовой-то речи.
>>Map(), WeakMap().
>>ассоциативные массивы
>ВАВХХАВХАХВАХВХАХВАХВАХХВАХВАХВАХ
То есть, среди фулст.эк смузихлёбов, изучающих устройство языка изо дня в день, не слышали про "key-value хранилища", "таблицы символов", "хэш-таблицы", "деревья поиска"?
>Ну кидай ссылку на доку.
https://docs.python.org/3/library/stdtypes.html#numeric-types-int-float-complex
>На остальные 2 лень отвечать.
Чот у тебя быстро токены кончаются. Зарегайся на других сервисах.
>>for range в Go выглядит намного лучше, чем всё это вместе взятое.
>Я не знаю, как выглядит
>>for range в Go
А нахуй ты пишешь в тред, который не читаешь? >>3190
>Ты в JS можешь также для любого объекта переопределить valueOf и получишь такую же псевдоперегрузку.
Складывать массивы? Нихуя ты не можешь в JS, там с самого начала операторы (плюс, минус. больше, меньше, если не дошло ещё) в языке реализованы максимально хуёво.
>Перехват - задача аксессоров (позже - прокси). Задача дескрипторов - предотвратить перезапись/удаление свойства, которое положит систему, стоимостью 6,000 рублей в секунду.
Чисто доеб до определений. Свойств не было изначально в JS, потому всё, что налепили поверх них, можно назвать тем или иным перехватом. Например, никто не запрещает коду вызвать операцию записи — более того, в старом режиме (без strict) запись в read-only property происходит вообще без ошибок, значение просто не сохраняется и код выполняется дальше.
>Мне не нужно менять реализацию flat. Любой компрехеншн реализуется той илиной комбинацией map/flat/reduce с аналогичной алгоритмической сложностью.
Ты просто понимашеь степень всратости той хуйни, которую ты превозносишь? То есть, засовывать в массивы и возвращать в лямбдах map() иногда значения, иногда массивы, иногда массивы массивов — это, блять, нормально? "А мы потом может быть как-нибудь это мусорное ведро причешем через flat()" — мне прям представился бомж, копающийся в мусорном баке, находит там недоеденные колбасные огрызки, и такой "вот, map/flat/reduce работает, а вы говорили". Пиздец, такой кринж.
>Ну я могу тебе еще более уебищную иерархию высрать. Дальше-то что? Типа крутость в сложности или что? Ну программни на брэйнфаке UI для браузера, че.
Для кого-то сложность джанги оправдана, но просто так вкатиться с ноги в коммерческую джангу со словами "я знаю питон, мне ничо не нужно" — это очень наивно. Энтерпрайз с миллионами строк на питоне — это совершенно другой зверь, нежели страничка с одной строчкой текста и кнопочкой.
Если чо — я был на собесах, там вопрос с ходу был "сколько лет ты с джангой работал? Ноль? Ну и нахуй ты нам в бэке?".
>>Дескрипторы свойств обычно предпочитают не копировать, и я бы скорее предпочёл отпиздить линейкой по рукам того, кто введёт в проект клонирование объектов с их дескрипторами
>Удачи реализовать аналог тильды
Ты о чём?
>Если ты не понимаешь устройство ЯП, о какой прикладнухе идет речь, лол?
В JS до сих пор находят сложнообъяснимые поведения даже в базовых функциях, потому что поверх изначального говна дерьма, созданного за десять дней, лепят всё больше и больше слоёв новых функций. и эти новые функции сложнопредсказуемо взаимодействуют с древним пиздецом.
Потому с практической точки зрения есть смысл только в "знать, каким подмножеством ЯП пользоваться", а теоретическими раскопками для "понимания устройство ЯП" занимаются либо в комитете TC39, либо просто от нехуй делать.
Чтобы было ясно:
(![]+[])[+[]]+([][[]]+[])[+[]]+([][[]]+[])[+!![]]
Здесь записана строка 'fun'.
parseInt(0.0000005)
Результат этой функции — число 5. Знай JS дальше. Чо ты там про брейнфакт говорил?
>Чувак, я прекрасно знаю, что в АКАДЕМИЧЕСКОЙ среде называется soft real-time и hard real-time система. Я говорю, про то, что подразумевается в БЫТОВОЙ речи.
Ты говоришь про то, что подразумевается в среде смузихлёбов "ранящих жобу". Так-то в очереди на кассе в пятёрочке я что ни разу не слышал от бабулек про рилтайм, в бытовой-то речи.
>>Map(), WeakMap().
>>ассоциативные массивы
>ВАВХХАВХАХВАХВХАХВАХВАХХВАХВАХВАХ
То есть, среди фулст.эк смузихлёбов, изучающих устройство языка изо дня в день, не слышали про "key-value хранилища", "таблицы символов", "хэш-таблицы", "деревья поиска"?
>Ну кидай ссылку на доку.
https://docs.python.org/3/library/stdtypes.html#numeric-types-int-float-complex
>На остальные 2 лень отвечать.
Чот у тебя быстро токены кончаются. Зарегайся на других сервисах.
>1ядро-один поток.Но можно спокойно поднять кластер из коробки или добавить PM2
Если есть лишние пару сотен Гб памяти, то конечно можно. На Benchmarks game хорошо видно, насколько больше памяти выжирает многопроцессовая нода. С питоном, к слову, аналогичная проблема, ему даже fork не помогает. По той же причине Github, по крайней мере раньше, требовал ебанутых объемов оперативной памяти для работы (он был написан на руби).
Всех этих проблем нет в Go, он просто сразу работает быстро, его не нужно прогревать, ему не нужна лишняя память под JIT-оптимизатор, он может использовать сколько угодно ядер когда угодно. Да, можно подыскать очень специфичный пример, где на ноде выполняется тщательно заоптимизированная разрабами функция, а на Go — слабо оптимизированная, но в среднем по палате коде Go уверенно укатывает ноду в разы.
https://benchmarksgame-team.pages.debian.net/benchmarksgame/fastest/go-node.html
Даже там, где нода показала одинаковое время выполнения, Go потребил в 5-10-20 раз меньше оперативной памяти. Идея ясна? И это длинные повторяющиеся бенчи — если у вас короткая динамичная логика, то нода сосёт без шансов, одна лишь раскрутка JIT-оптимизатора сожрёт больше ресурсов, чем выполнение.
Не, ну ты про то, что node быстрее Go, загнул. Но в целом, да. Дауны до сих пор читаю методички, где у них JAVA - это серьёзно, а JS - нет, хотя, по возможностям выражения мысли TS (TS хейтеры - сосатБ) превосходит JAVA, а по сложности V8 ебёт JVM
Ещё раз такое увижу, забаню на дваче
>Все может использовать, дебил что ли? Там и кластер есть и воркеры и атомики.
Не так давно введённые в JS инструменты для многопоточности по степени удобства и надёжности находятся где-то на уровне C. Потому я не рассматриваю их всерьёз, как инструменты написания обычного кода на ноде. Просто открой любую либу с интенсивным использованием воркеров и передачей данных между ними, и зацени, насколько там нечитаемый пиздец.
Отличие C/C++ в том, что в C/C++ под это дело есть настоящие типы данных, например ЦЕЛЫЕ СУКА ЧИСЛА, которых нет даже в ебаном TypeScript.
Про кластер уже ответил: >>4355
>>Ты пизданулся? Откуда инфа? Даже нейросетка
>У тебя все знания от нейросетки? Неудивительно.
А у тебя все знания с потолка — таблетки не забывай принимать.
>Если ты даун-говноед и никогда не писал на С - у тебя так и будет. Пиши нормально - нормально будет.
Таблетки. Не забываем.
>Вот нормальный тест https://github.com/denshade/speedTest С сравним с JS, че-то около 20% что ли. Нормально написанный JS код всегда +/- на уровне С.
"Нормальный тест" на десять строчек кода? Что по этому поводу говорит твой психиатр?
>На ноде ты просто берёшь и пишешь говняк который по скорости сравним с С без AVX.
Такую хуйню может написать только чел, который не пытался достичь быстрого выполнения программы из более чем десяти строчек на node.js. Там граблей оптимизатора неисчерпаемый запас. Asm.js — это рабочая методика, но код должен быть очень точный, ни про какое "пишешь говняк" речи идти не может.
>Что ты несешь, даун? HTML и CSS это не не язык программирования, это язык разметки и язык стилей. Пиздец ты хуйню высрал конечно.
CSS позволяет записывать переиспользуемые вычисления и декларативные шаги анимации. То, что он не Тьюринг полный, не значит, что он не язык и не программирования. HTML — да, сам по себе нихуя не может, но после опредмечивания браузером на его месте появляется DOM из интерактивных элементов. Браузерный DOM не является частью спецификации ECMAScript, это всё сторонние библиотеки-расширения.
>Безусловно, в питоне можно сделать только кусок говна. Я не спорю.
Так это ж всё из ноды методики я описывал.
>Все может использовать, дебил что ли? Там и кластер есть и воркеры и атомики.
Не так давно введённые в JS инструменты для многопоточности по степени удобства и надёжности находятся где-то на уровне C. Потому я не рассматриваю их всерьёз, как инструменты написания обычного кода на ноде. Просто открой любую либу с интенсивным использованием воркеров и передачей данных между ними, и зацени, насколько там нечитаемый пиздец.
Отличие C/C++ в том, что в C/C++ под это дело есть настоящие типы данных, например ЦЕЛЫЕ СУКА ЧИСЛА, которых нет даже в ебаном TypeScript.
Про кластер уже ответил: >>4355
>>Ты пизданулся? Откуда инфа? Даже нейросетка
>У тебя все знания от нейросетки? Неудивительно.
А у тебя все знания с потолка — таблетки не забывай принимать.
>Если ты даун-говноед и никогда не писал на С - у тебя так и будет. Пиши нормально - нормально будет.
Таблетки. Не забываем.
>Вот нормальный тест https://github.com/denshade/speedTest С сравним с JS, че-то около 20% что ли. Нормально написанный JS код всегда +/- на уровне С.
"Нормальный тест" на десять строчек кода? Что по этому поводу говорит твой психиатр?
>На ноде ты просто берёшь и пишешь говняк который по скорости сравним с С без AVX.
Такую хуйню может написать только чел, который не пытался достичь быстрого выполнения программы из более чем десяти строчек на node.js. Там граблей оптимизатора неисчерпаемый запас. Asm.js — это рабочая методика, но код должен быть очень точный, ни про какое "пишешь говняк" речи идти не может.
>Что ты несешь, даун? HTML и CSS это не не язык программирования, это язык разметки и язык стилей. Пиздец ты хуйню высрал конечно.
CSS позволяет записывать переиспользуемые вычисления и декларативные шаги анимации. То, что он не Тьюринг полный, не значит, что он не язык и не программирования. HTML — да, сам по себе нихуя не может, но после опредмечивания браузером на его месте появляется DOM из интерактивных элементов. Браузерный DOM не является частью спецификации ECMAScript, это всё сторонние библиотеки-расширения.
>Безусловно, в питоне можно сделать только кусок говна. Я не спорю.
Так это ж всё из ноды методики я описывал.
>Роутер для педиков, кста. Нахуй в SPA роутер довны?
Бесит, кстати. Раньше в query строке всю эту хуйню делали, а сейчас им весь location давай на растерзание.
Это некрасиво выглядит.
Плюс хэштег нужен для скроллинга к конкретному элементу, все браузеры обеспечивают этот функционал.
Путь в url всегда отвечал за загрузку нужной страницы, а раз этим теперь занимается spa router, то пусть так и берет данные о выборе страницы из пути.
>Дауны до сих пор читаю методички, где у них JAVA - это серьёзно, а JS - нет, хотя, по возможностям выражения мысли TS (TS хейтеры - сосатБ) превосходит JAVA, а по сложности V8 ебёт JVM
Не люблю язык школьников плана "мой батя твоего отпиздит", потому настойчиво требую придерживаться фактов.
Java — это провал века, на мой взгляд, и тот факт, что C# слепо его скопировал, аналогичным образом похоронило всё будущее, которое на эту платформу возложил Microsoft. И слава богу, земля пухом Syn Microsystems, Nokia, Windows CE, UWP, и прочему разложившемуся мусору (каким бы он актуальным не был 30 лет назад). Провал сей хорошо виден на бенчах:
https://benchmarksgame-team.pages.debian.net/benchmarksgame/fastest/javavm-node.html
так что я особо вдаваться в механизмы низкой производительности Java и C# не буду.
Зато затрону два важных момента:
1. На C#/CLR и Java/JVM возможно написание удобной надёжной многопоточки — нода так не умеет. Бенчи с кластерами-воркерами требовали намного большего приложения усилий к ноде, чем аналогичный код на C#/Java — то есть, JS лишается своей простоты, нужно прилагать сверхусилия уровня кодописания на Си;
2. "по сложности V8 ебёт JVM" — и что тут хорошего? Кучу микрооптимизаций там, микрооптимизаций здесь, всё это регулярно деоптимизируется, и хуй поймёшь почему это происходит. Но, да, весь этот мертворождённый труп JS приводится в вид, подобный живому. именно за счёт огромного объема усилий со стороны Google, и только поэтому платформа всё ещё воспринимается всерьёз.
Быстрее, но не на много. Если брать сервера - нода будет быстрее уже существенно, тому что в голанге ансихронность немного ебанутая. Офк сама нода кусок кала, по этому придётся использовать c++ сервера через napi, либо использовать бан.
>>4358
Кого ебёт че там у тебя происходит в рогах и копытах? Применимость, че блядь? Ебнулся совсем малютка
>>4363
>Не так давно введённые в JS инструменты для многопоточности по степени удобства и надёжности находятся где-то на уровне C.
Да, хорошая штука. Мне нравится, ничего лишнего.
>Потому я не рассматриваю их всерьёз
Так ты просто не можешь в С. Твои проблемы.
>Отличие C/C++ в том, что в C/C++ под это дело есть настоящие типы данных, например ЦЕЛЫЕ СУКА ЧИСЛА, которых нет даже в ебаном TypeScript.
Ебанулся? Для этого есть TypedArray, через них и осуществляется вся работа с многопоточностью.
>Про кластер уже ответил
Прав в гигабайтах памяти, но если взять bun - будет получше, всего лишь гигабайт.
>А у тебя все знания с потолка — таблетки не забывай принимать.
>Таблетки. Не забываем.
>"Нормальный тест" на десять строчек кода? Что по этому поводу говорит твой психиатр?
Сколько бы ты не отрицал реальность она не будет другой - оптимизированный JS работает примерно на уровне C.
> Такую хуйню может написать только чел, который не пытался достичь быстрого выполнения программы из более чем десяти строчек на node.js. Там граблей оптимизатора неисчерпаемый запас.
Можешь писать сколько угодно строк, главное не писать говнокод. Но для тебя атомики это сложно, С это сложно - ты даже не понимаешь в чем проблема твоих говнотестов.
> То, что он не Тьюринг полный, не значит, что он не язык и не программирования.
Это язык разметки, дебил, перестань свои определения выдумывать.
> Так это ж всё из ноды методики я описывал.
Из твоей практики что ли? Так ты говнокод пишешь, потому что дебил.
Зачем ты кидаешь свои говнобенчи? Их писали такие же как ты отсталые дебилы, которые не в состоянии понять что происходит в коде и как работать с нормальной многопоточностью.
Эти бенчи доказывают лишь твою отсталость, что ты говноедище которое не замечает даже в чем проблема.
>он может использовать сколько угодно ядер когда угодно
Нормально человек-нейросеть отвечает, сразу видно, что не шарит.
Голанг на проде использует 1 ядро тоже. Это хайлоад. Вам не понять.
Двачую. Вангую этот чушок многопоточность никогда вообще не писал, даже не понимает что синхронизация потоков убивает всю многопоточность, да и в целом это нахуй не нужно когда есть системный SO_REUSEPORT.
>Если брать сервера - нода будет быстрее уже существенно, тому что в голанге ансихронность немного ебанутая
"Асинхронность немножко ебанутая"? Пишет говноед, фанатеющий по ЯП с цветными функциями, где разные цвета нельзя сочетать. Я просто в ахуе, ваше мннеие очень важно для нас.
>Да, хорошая штука. Мне нравится, ничего лишнего.
Замечательная штука — теперь бы ещё к ней средства отладки для её непредсказуемого поведения, и IDE для того чтобы разрозненные куски единого алгоритма собрать по десятку модулей — и было бы вообще заебись.
Чисто для справки, перый раз с кодом на воркерах JS я работал уже имея опыт поддержки годами большой многопоточной хуйни на Delphi. И всё равно я был в шоке.
>>Потому я не рассматриваю их всерьёз
>Так ты просто не можешь в С. Твои проблемы.
Твои аналитические навыки в очередной раз обосрались — последние три года я работал техлидом C/C++, REST сервисы.
>Ебанулся? Для этого есть TypedArray, через них и осуществляется вся работа с многопоточностью.
Вы языке нет целых чисел, но есть целочисленный массив — степень пиздеца понимаешь или нужно ещё развернуть?
>Прав в гигабайтах памяти, но если взять bun - будет получше, всего лишь гигабайт.
QuickJS и Duktape ещё быстрее будут, потому что в них JIT нету — парадоксально, но JS изначально был разработан под работу с очень маленьким объемом RAM, потому потенциал в этом направлении большой. Другое дело, что там где-то за горизонтом начинает маячить питон.
>Сколько бы ты не отрицал реальность она не будет другой - оптимизированный JS работает примерно на уровне C.
Где я это отрицал? Я лишь писал о том, что оптимизация работает далеко не для любого кода на JS, и поебаться с его вылизиванием придётся поболее, чем с написанием аналогичного кода сразу на Си. То же самое относится к Java, C#, Go — пока не приходит сборщик мусора, конечно.
>Можешь писать сколько угодно строк, главное не писать говнокод. Но для тебя атомики это сложно, С это сложно - ты даже не понимаешь в чем проблема твоих говнотестов.
Окей, гуру, в чём проблема этого говнокода? Почему V8 не сможет его оптимизировать?
let obj = { a: 1 };
obj.b = 2;
>Если брать сервера - нода будет быстрее уже существенно, тому что в голанге ансихронность немного ебанутая
"Асинхронность немножко ебанутая"? Пишет говноед, фанатеющий по ЯП с цветными функциями, где разные цвета нельзя сочетать. Я просто в ахуе, ваше мннеие очень важно для нас.
>Да, хорошая штука. Мне нравится, ничего лишнего.
Замечательная штука — теперь бы ещё к ней средства отладки для её непредсказуемого поведения, и IDE для того чтобы разрозненные куски единого алгоритма собрать по десятку модулей — и было бы вообще заебись.
Чисто для справки, перый раз с кодом на воркерах JS я работал уже имея опыт поддержки годами большой многопоточной хуйни на Delphi. И всё равно я был в шоке.
>>Потому я не рассматриваю их всерьёз
>Так ты просто не можешь в С. Твои проблемы.
Твои аналитические навыки в очередной раз обосрались — последние три года я работал техлидом C/C++, REST сервисы.
>Ебанулся? Для этого есть TypedArray, через них и осуществляется вся работа с многопоточностью.
Вы языке нет целых чисел, но есть целочисленный массив — степень пиздеца понимаешь или нужно ещё развернуть?
>Прав в гигабайтах памяти, но если взять bun - будет получше, всего лишь гигабайт.
QuickJS и Duktape ещё быстрее будут, потому что в них JIT нету — парадоксально, но JS изначально был разработан под работу с очень маленьким объемом RAM, потому потенциал в этом направлении большой. Другое дело, что там где-то за горизонтом начинает маячить питон.
>Сколько бы ты не отрицал реальность она не будет другой - оптимизированный JS работает примерно на уровне C.
Где я это отрицал? Я лишь писал о том, что оптимизация работает далеко не для любого кода на JS, и поебаться с его вылизиванием придётся поболее, чем с написанием аналогичного кода сразу на Си. То же самое относится к Java, C#, Go — пока не приходит сборщик мусора, конечно.
>Можешь писать сколько угодно строк, главное не писать говнокод. Но для тебя атомики это сложно, С это сложно - ты даже не понимаешь в чем проблема твоих говнотестов.
Окей, гуру, в чём проблема этого говнокода? Почему V8 не сможет его оптимизировать?
let obj = { a: 1 };
obj.b = 2;
>Зачем ты кидаешь свои говнобенчи? Их писали такие же как ты отсталые дебилы, которые не в состоянии понять что происходит в коде и как работать с нормальной многопоточностью.
Типикал двач:
— Сотни программ, бенчащих сложные и совершенно разные алгоритмы на двадцати разных языках?
— Отсталые дебилы!
— Программа с одним циклом на десять строчек?
— Профессиональные оптимизаторы из Google!
Что и требовалось доказать.
>Голанг на проде использует 1 ядро тоже. Это хайлоад. Вам не понять.
Go размазывает активные горутины по всем ядрам. Если вы написали хуйню, которая имеет только одну активную горутину, то я вам соболезную. Но вас никто не заставлял так писать.
>>4477
>даже не понимает что синхронизация потоков убивает всю многопоточность
Ну так не делай синхронизацию потоков лишний раз, ебаныврот. А то делают HTTP запрос под блокировкой, а потом "чот медленно работает, хуйня ваш голанг". Я сейчас даже не выдумываю пример, потому что в моих дельфийских буднях я какой только хуйни не видел под блокировками.
>Go размазывает активные горутины по всем ядрам
Какие "все" ядра, если у тебя в контейнере дали одно ядро 0.125 ?
Сразу видно вкатуна, который прод на го не нюхал
Я работал на го, нет в современной разработке больше 1го ядра
>Какие "все" ядра, если у тебя в контейнере дали одно ядро 0.125 ?
>Сразу видно вкатуна, который прод на го не нюхал
У вас микросервисная помойка по распилу инвесторных денег — при чём тут я? У меня на последней работе "прод" был 48 ядер и 192 Гб оперативы — вот это "прод". Это только одна нода, таких десятки.
Слава богу, что я при поиске работы просто скипал всю такую новомодную прогрессивную хуйню по перекладыванию JSON-ов из одной коробки в другую..
>>4488
А ясно, это нейронка. Так вот почему ебанутая чушь вместо аргументов, а рассуждения уровня "пук среньк jit gc бенч врёти"
> Я лишь писал о том, что оптимизация работает далеко не для любого кода на JS
Хорошо что даже нейронка признаёт что на JS код по скорости сравним с C. Очередная победа человека в споре с пиздушной машиной.
>>4498
Любая блокировка и любая синхронизация при запросе это минус производительность, любая рассинхронизация это значительный простой. Зачем проебывать производительность, если это можно не делать? Ведь уже есть системное распределение задач между процессами, притом оно работает без всяких синхронизаций. Зачем потоки в вебе, при запросах? Это же шиза, задумайся, у тебя галлюцинации.
Сейчас нейросеть скажет "да, ты полность прав, я в очередной раз отсосала, многопоточность в проде это галлюцинация с моей стороны".
go это язык программирования, он ничего не использует. Горутины - да, использует все ядра
Если я сделаю один простой веб сервер с парочкой маршрутами и простой обработкой json, то ГО при выполнении загрузит только одно ядро процессора?
>аналог cluster node js?
Аналог pub/sub workers, это когда одноядерные контейнеры разгребают асинхронные сообщения из очереди
>If your goal is just to have your request-processing code run on all CPU cores, net/http already starts a goroutine (a vaguely thread-like thing with a Go-specific implementation) per connection, and Go arranges for NumCPU OS threads to run by default so that goroutines can be spread across all available CPU cores.
А это как понять?
>net/http already starts a goroutine
Ну так ты используешь обёртку, над горутинами, всё правильно. Попробуй написать свой веб-сервер без них
Чет не понял,если пакет для сервера то там автоматом включают горутины,а если простой код вывести хелло ворлд то одно ядро без горутин?
А если на серваке еще есть программа числодробилка,тоне надо для нее вручную писать код обработки под горутины?
Ну смотря как запустить, если числодробилки будут асинхронно идти через go func, то горутины запустятся сразу на всех ядрах
Пиздец конечно. Неудивительно почему go такой тормозной, если у него в каждом запросе хуячат какие-то горутины и синхронизация между потоками, очереди, блядь. Охуеть просто.
Нахуй они это сделали, знает кто?
Лучше скажите, как подружить Prettier со StandardJS.
Стандард незаслуженно забытый шин ящитаю. Prettier - форсед хуита, котора я разраслась как рак по всей экосистеме.
В горутинах нет синхронизации между потоками, горутина не переключает треды, а переключает контексты
Похуй, всё равно между потоками нужно данные передавать, а значит простой будет. Нахуя это нужно в сетевухе? Чтобы сервер не нагревался сильно? Лолд
Данные между потоками передаются асинхронными событиями. Всё, другого уже не будет. Это стандарт ит-разработки
А вычисления?
Говна поел штоле? В любой нормальной асинхронной либе всё работает через атомики, чтобы данные не гонять и простоя не было.
И вопрос не в этом. Вопрос в том нахуя нужны горутины в сетевой либе, если распределением запросов занимается ядро системы.
Путаешь мягкое с теплым. StandardJS это набор правил, eslint - тул для проверки выполнения правил.
Некоторые алени на дваче руками посты в нейросетку переносят, а потом обратно. Скорее вопрос были именно про это - какой прикол быть прокладкой между человеком и нейронкой?
Вероятнее всего это делают дети или вроде того. Думаю такое поведение какая-то форма бессознательных действий, какая-нибудь дрисня в башке навроде "хихи он спорит с нейронкой"
>Любая блокировка и любая синхронизация при запросе это минус производительность, любая рассинхронизация это значительный простой. Зачем проебывать производительность, если это можно не делать? Ведь уже есть системное распределение задач между процессами, притом оно работает без всяких синхронизаций.
У процессов нет общей памяти. Порождение процесса -- это медленно. Для этого и придумали потоки.
>Зачем потоки в вебе, при запросах? Это же шиза, задумайся, у тебя галлюцинации.
Я, лично, пишу сложные приложения на дотнете. Запросы бывают тяжёлые. Основное горлышко — это, конечно, БД, и тут достаточно просто асинхронности, но кое-где есть и вычисления, которые неплохо бы распараллеливать, чтобы запрос пользователя выполнялся побыстрее.
Мимо-аллигатор
>У процессов нет общей памяти.
Шаредмемори существует. Но на это похуй, потому что всё равно синхронизация убивает такты.
>Я, лично, пишу сложные приложения на дотнете.
Ты лично тупая нейросеть. В одном посте пишешь про работу мультипотоком и в этом же посте расписываешься в незнании шаредмемори.
> но кое-где есть и вычисления, которые неплохо бы распараллеливать, чтобы запрос пользователя выполнялся побыстрее.
Ага, галлюцинируй дальше. Это работает только если это отдельный микросервис который выполняет только один единственный класс задач и только тогда это будет работать нормально. В любых других ситуациях сервер будет тратить до 60% времени на выполнение кода планировщика задач и простои.
И кстати благодаря атомикам и шаредмемори JS в принципе ничем отличаться от любого другого языка не будет в такой ситуации. Только если не вспоминать про AVX и указатели, с ними конечно JS сосёт, но кто в наше время может в архитектуру заточенную под AVX
В целом да, но в голанге есть указатели и avx. Используя указатели уже можно ебануть годные алгоритмы которые работают крайне хуёво в js, а если угорить по avx это уже всё, конец.
Конечно, для большинства задач это всё смысла не имеет, avx нужен только для каких-нибудь геймсерверов, а алгоритмы с указателями это тёмная магии. Остаются только отличия в простоте и скорости написания и это будет не в пользу го.
>Хорошо что даже нейронка признаёт что на JS код по скорости сравним с C. Очередная победа человека в споре с пиздушной машиной.
Ебать, я два или три раза за тред это написал, причём, уточнил, что никакой не абстрактный "JS код", а только написанный в очень специфическом стиле JS код может выполняться со скоростью кода на Си.
По сравнению с тобой нейронка хотя бы контекст немножко помнит, нахуй мне такие собеседники.
>Любая блокировка и любая синхронизация при запросе это минус производительность
Ебать ты охуеешь, когда узнаешь, что любая смена ссылки на объект в V8 приводит к lock-free передаче сигнала сборщику мусора. То есть, примерно половина строчек в JS синхронизируется со сборщиком. И чо дальше? Синхронизация синхронизации рознь.
>Сейчас нейросеть скажет "да, ты полность прав, я в очередной раз отсосала, многопоточность в проде это галлюцинация с моей стороны".
Это новая мода — когда не понимаешь, о чём разговор и встряёшь в неё, то обязательно делаешь отсылку к "нейросетке"? Чисто эмпирически замечаю, что чем тупее собеседник на /pr/, тем чаще он ноет про нейросетки. Ещё бы начал говорить, что гуглом пользоваться нечестно, LOL.
>Если я сделаю один простой веб сервер с парочкой маршрутами и простой обработкой json, то ГО при выполнении загрузит только одно ядро процессора?
В Go нет никакого встроенного "веб сервера с парочкой маршрутов", всё зависит от конкретной реализации. Обычно как минимум одна го-рутина на запрос, а дальше планировщик размазывает го-рутины по ядрам.
>Похуй, всё равно между потоками нужно данные передавать, а значит простой будет. Нахуя это нужно в сетевухе? Чтобы сервер не нагревался сильно? Лолд
Почему ты не можешь попросить нейросетку тебе объяснить азбуку? Ты просто заваливаешь тред про JAVASCRIPT тупой хуйнёй про то, как ты не понимаешь устройство Go.
>И кстати благодаря атомикам и шаредмемори JS в принципе ничем отличаться от любого другого языка не будет в такой ситуации.
JS отличается отсутствием высокоуровневых примитивов синхронизации, которые есть у многих "любых других языков".
>Это работает только если это отдельный микросервис который выполняет только один единственный класс задач и только тогда это будет работать нормально. В любых других ситуациях сервер будет тратить до 60% времени на выполнение кода планировщика задач и простои.
Очень сильно зависит от конкретной задачи. В общем случае это разговор ни о чём.
>>5040
Справедливости ради, многозадачность в современных ЦП выполнена крайне омерзительно, и там дальше уже похуй, какой конкретно ЯП пытается на этой платформе выполниться. С каждым годом разрыв по эффективности вычислений на ЦП и GPGPU только увеличивается.
Например, когерентность кэша в современных ЦП, внезапно, выполнена при помощи передачи сообщений. А такой хуйни, как "разделяемая ячейка памяти" в принципе не существует, ячейка с формально тем же адресом может быть одновременно и в RAM, и в нескольких уровнях кэша, и везде у неё будет разное значение, но процессор по прежнему продолжает притворяться, будто это одна ячейка, и пытается скрыть рассинхрон от пользователя. А внеочередное выполнение происходит по event-driven принципу — хуйня, которой в исходной машине Тьюринга вообще в принципе нет.
Из позитивных новостей: продолжающийся кризис западной экономики приводит к сокращению расходов на новые технологии, так что с имеющимися технологиями мы застряли надолго, так что усаживайтесь поудобнее, спешить некуда.
> Ебать ты охуеешь, когда узнаешь, что любая смена ссылки на объект в V8 приводит к lock-free передаче сигнала сборщику мусора. То есть, примерно половина строчек в JS синхронизируется со сборщиком. И чо дальше? Синхронизация синхронизации рознь.
Тупая нейросетка сравнила синхронизацию процессов на разных ядрах и какую-то хуйню из GC из v8. Хуя галлюцинация!
>>5116
Так ты же приходишь и объясняешь нам какой Go кал. Вот >>5112 объяснил что обычно либы на go это многопоточный бред, который проёбывает произвоидтельность по факту своего существования.
>JS отличается отсутствием высокоуровневых примитивов синхронизации, которые есть у многих "любых других языков".
Они и не нужны. Если ты не можешь понять атомики - твоя проблема
> Очень сильно зависит от конкретной задачи. В общем случае это разговор ни о чём.
Задача тут вполне конкретная: вебсервер с каким-то кодом многопотоночсти. Это будет проебывать огромное кол-во процессорного времени на синхронизацию, потому что по времени обработка запроса и обработка любого другого говна различается. Это существенный проеб произвоидтельности
> Справедливости ради, многозадачность в современных ЦП выполнена крайне омерзительно, и там дальше уже похуй, какой конкретно ЯП пытается на этой платформе выполниться. С каждым годом разрыв по эффективности вычислений на ЦП и GPGPU только увеличивается.
Какой-то бред от нейросети. CPU и GPU это разные задачи, на CPU ядра работают как разные, несинхронные, процессоры, потому что именно этого и ожидают от CPU
>Например, когерентность кэша в современных ЦП, внезапно, выполнена при помощи передачи сообщений. А такой хуйни, как "разделяемая ячейка памяти" в принципе не существует, ячейка с формально тем же адресом может быть одновременно и в RAM, и в нескольких уровнях кэша, и везде у неё будет разное значение, но процессор по прежнему продолжает притворяться, будто это одна ячейка, и пытается скрыть рассинхрон от пользователя. А внеочередное выполнение происходит по event-driven принципу — хуйня, которой в исходной машине Тьюринга вообще в принципе нет.
Понимаю, сложно для нейросети находится в ситуации подобной неопределённости, но для людей нормально писать алгоритмы с учётом некогерентности, управлять барьерами синхронизации это нормально. Конечно, если ты не даун-дебил который без нейросети не может пост на харчке написать, лолд
>Тупая нейросетка сравнила синхронизацию процессов на разных ядрах и какую-то хуйню из GC из v8. Хуя галлюцинация!
Ебать шок, в V8 большой GC и код JS выполняются в разных потоках. "О сколько нам открытий чудных...".
>Так ты же приходишь и объясняешь нам какой Go кал. Вот >>5112 (You) объяснил что обычно либы на go это многопоточный бред, который проёбывает произвоидтельность по факту своего существования.
Бля, чел, учит матчасть, просто какой-то позор обоссатый тут постишь.
>Они и не нужны. Если ты не можешь понять атомики - твоя проблема
Понимание прежде всего должно заключаться в том, что lock-free программирование на атомиках — это вообще одна из самых сложных задач в программировании. И я не вижу этого понимания у тебя, я не вижу у тебя опыта аля звонки в три часа ночи "прод второй раз за ночь наебнулся, бегом к компу, платим двойную ставку, логи-стэке в тикете".
>Задача тут вполне конкретная: вебсервер с каким-то кодом многопотоночсти
Тебя не смущает сочетание "конкретная" и "каким-то" в одном предложении? Не?
>Это будет проебывать огромное кол-во процессорного времени на синхронизацию, потому что по времени обработка запроса и обработка любого другого говна различается.
А, так это ты опять... Но я всё-таки советую подтянуть матчасть.
>CPU и GPU это разные задачи, на CPU ядра работают как разные, несинхронные, процессоры, потому что именно этого и ожидают от CPU
Шок, но в GPU тоже много незвисимых исполнителей. Например, моя 3060 содержит 28 процессоров, при том, что весьма "жырный" рузен имеет всего-лишь 6 ядер — всё это ищется в инете без необходимости позориться на дваче.
>для людей нормально писать алгоритмы с учётом некогерентности, управлять барьерами синхронизации это нормально
Ещё для людей нормально не знать, что такое когерентность кэша, как я вижу.
>Ебать шок, в V8 большой GC и код JS выполняются в разных потоках.
Речь про синхронизацию, к чему тут lock-free gc? Там наверняка CAS везде.
Как блядь, у тебя токены высрались? Ебаная галюционирующая хуйня, блядь, ну невозможно же общаться!
>Понимание прежде всего должно заключаться в том, что lock-free программирование на атомиках — это вообще одна из самых сложных задач в программировании.
Только если ты нейросеть или даун-гошник с нейросетью вместо мозгов, лолд
>Речь про синхронизацию, к чему тут lock-free gc? Там наверняка CAS везде.
Сериал "аноньчик учит матчасть продолжается" — оптимистичная ветка блокировки представляет из себя один CAS.
>Только если ты нейросеть или даун-гошник с нейросетью вместо мозгов, лолд
Расскажи мне больше про "я пишу код без багов". Ох уж эти вайбкодеры.
>Расскажи мне больше про "я пишу код без багов".
Всё просто - для этого нужно писать код и посты на харчке без нейросети и думать. Не для всех.
>А нахуй ты пишешь в тред, который не читаешь?
Да, сорян, я посмотрел как выглядит for в go и не могу понять, чем
for username, score := range userScores {
fmt.Println(username, "has a score of", score)
}
отличается от
for (const [username, score] of userScores) {
console.log(username, "has a score of", score)
}
Ты видишь между ними разницу? Эта разница с тобой в одной комнате?
>Складывать массивы?
А причем тут переопределение, долбоеб? У тебя в языке ЗАШИТО, что для массивов плюс работает как конкатенация. Ну переопредели мне чтобы плюс складывал поэлементно, вперед, удачи. Код не забудь сюда написать.
>в языке реализованы максимально хуёво.
Они и в питоне реализованы уебищно.
>Свойств не было изначально в JS
Повторю вопрос, долбоеб, ты под какими наркотиками сюда пишешь? JS ИЗНАЧАЛЬНО построен на том, что у тебя по сути все, кроме null и undefined ЛИБО объект, либо может им стать.
>Например, никто не запрещает коду вызвать операцию записи — более того, в старом режиме (без strict) запись в read-only property происходит вообще без ошибок
А причем тут старый режим? У тебя весь код на модулях уже лет 5 как, то есть он по УМОЛЧАНИЮ исполняется в строгом режиме. Ну и даже в нестрогом режиме запись не происходит, просто уведомления об ошибке нет. Ну так он на это и нестрогий.
>бомж, копающийся в мусорном баке, находит там недоеденные list comprehension
Поправил, не благодари
>Ты о чём?
Ну создай мне дрэг энд дроп конструктор из компонентов без дескрипторов свойства.
>Знай JS дальше.
Правильно, пока ты этого не знаешь никем кроме макаки версталы ты работать не можешь.
>"key-value хранилища"
Любой объект - это key value хранилище, мапы не для этого нужны. Обтекай, маня.
>https://docs.python.org/3/library/stdtypes.html#numeric-types-int-float-complex
И че ты высрал? Как целочисленную переменную в питоне объявить?
a = 1
a = 1.5
print(type(a))
Почему код выше не приводит к ошибке, а, долбоеб?
>>4356
>по возможностям выражения мысли TS (TS хейтеры - сосатБ) превосходит JAVA
По возможностям опорожнения в штаны точно превосходит.
>>4358
>Хочешь скорость, бери кресты и сри себе в штаны UB
>>4363
>ЦЕЛЫЕ СУКА ЧИСЛА, которых нет даже в ебаном TypeScript.
Дурачок, блять, ты про TypedArray слышал когда-нибудь?
>А нахуй ты пишешь в тред, который не читаешь?
Да, сорян, я посмотрел как выглядит for в go и не могу понять, чем
for username, score := range userScores {
fmt.Println(username, "has a score of", score)
}
отличается от
for (const [username, score] of userScores) {
console.log(username, "has a score of", score)
}
Ты видишь между ними разницу? Эта разница с тобой в одной комнате?
>Складывать массивы?
А причем тут переопределение, долбоеб? У тебя в языке ЗАШИТО, что для массивов плюс работает как конкатенация. Ну переопредели мне чтобы плюс складывал поэлементно, вперед, удачи. Код не забудь сюда написать.
>в языке реализованы максимально хуёво.
Они и в питоне реализованы уебищно.
>Свойств не было изначально в JS
Повторю вопрос, долбоеб, ты под какими наркотиками сюда пишешь? JS ИЗНАЧАЛЬНО построен на том, что у тебя по сути все, кроме null и undefined ЛИБО объект, либо может им стать.
>Например, никто не запрещает коду вызвать операцию записи — более того, в старом режиме (без strict) запись в read-only property происходит вообще без ошибок
А причем тут старый режим? У тебя весь код на модулях уже лет 5 как, то есть он по УМОЛЧАНИЮ исполняется в строгом режиме. Ну и даже в нестрогом режиме запись не происходит, просто уведомления об ошибке нет. Ну так он на это и нестрогий.
>бомж, копающийся в мусорном баке, находит там недоеденные list comprehension
Поправил, не благодари
>Ты о чём?
Ну создай мне дрэг энд дроп конструктор из компонентов без дескрипторов свойства.
>Знай JS дальше.
Правильно, пока ты этого не знаешь никем кроме макаки версталы ты работать не можешь.
>"key-value хранилища"
Любой объект - это key value хранилище, мапы не для этого нужны. Обтекай, маня.
>https://docs.python.org/3/library/stdtypes.html#numeric-types-int-float-complex
И че ты высрал? Как целочисленную переменную в питоне объявить?
a = 1
a = 1.5
print(type(a))
Почему код выше не приводит к ошибке, а, долбоеб?
>>4356
>по возможностям выражения мысли TS (TS хейтеры - сосатБ) превосходит JAVA
По возможностям опорожнения в штаны точно превосходит.
>>4358
>Хочешь скорость, бери кресты и сри себе в штаны UB
>>4363
>ЦЕЛЫЕ СУКА ЧИСЛА, которых нет даже в ебаном TypeScript.
Дурачок, блять, ты про TypedArray слышал когда-нибудь?
>Вы языке нет целых чисел, но есть целочисленный массив — степень пиздеца понимаешь или нужно ещё развернуть?
В языке есть целые числа. ЦЕЛОЧИСЛЕННЫХ ПЕРЕМЕННЫХ НЕТ, ебанашка.
>Да, сорян, я посмотрел как выглядит for в go и не могу понять, чем
Разговор был про filter/map/reduce, твои циклы этого не делают. Да,"for ... of" близок к "for .. range", и я с этим не спорил. Анон затирал про filter/map/reduce, которые уродливы — об этом я и писал, для тьюринговых алгоритмов они просто бесполезны. В Clojure они активнее используются не в последнюю очеред потому, что у этого ЯП возможностей больше, чем у Тьюринг-машины. Go тоже является сверх-тьюринговой средой, но однозадачный пошаговый "for ... range" выполняется в тьюринговых ограничениях (одна горутина), потому пошаговая запись для него является естественной формой.
>А причем тут переопределение, долбоеб? У тебя в языке ЗАШИТО, что для массивов плюс работает как конкатенация. Ну переопредели мне чтобы плюс складывал поэлементно, вперед, удачи.
Так я о том и пишу, что JS — убогий язык, в котором мало того, что нельзя переопределять операторы, так ещё и единственная встроенная семантика максимально неадекватная.
>Они и в питоне реализованы уебищно.
Да? Какой будет результат операции "[] + []"? В каком ещё ЯП настолько ебанутая семантика базовых операций? Вот что происхоидт в питоне:
>>> [] + []
[]
>>> [] + {}
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: can only concatenate list (not "dict") to list
>JS ИЗНАЧАЛЬНО построен на том, что у тебя по сути все, кроме null и undefined ЛИБО объект, либо может им стать.
Это ты мне писал про "не нужно знать предметку, нужно лишь знать язык"? Что-то я нихуя не вижу знания языка:
>> typeof 42
"number"
>> typeof Number(42)
"number"
>> typeof new Number(42)
"object"
>> (42).__proto__
Number { 0 }
>> (new Number(42)).__proto__
Number { 0 }
>> let a = 10
10
>> a.b = 10
10
>> a.b
undefined
Какое нахуй знание языка, если ты не знаешь про автобоксинг, и почему String('') отличается от new String('')?
>>бомж, копающийся в мусорном баке, находит там недоеденные list comprehension
>Поправил, не благодари
List comprehension тоже можно хуёво написать, как ты и предлагаешь. Свинья ввезде грязь найдёт.
>Любой объект - это key value хранилище, мапы не для этого нужны. Обтекай, маня.
Любитель помойки legacy фич опять захрюкал
Object.prototype.unwanted = "oops";
let obj = { a: 1 };
obj.__proto__.state = 'pwned";
for (let key in obj) {
console.log(key);
}
Пояснять, или сам поймёшь? Да, можно устаривать ебаный цирк с:
let obj = Object.create(null);
Object.defineProperty(obj, 'hasOwnProperty', {
value: function (key) {
return Object.prototype.hasOwnProperty.call(this, key);
},
enumerable: false
});
И далее тщательно строить весь код на Object.keys(), Object.values, Object.hasOwn(), но один Map решает все эти проблемы из коробки и с чистым интерфейсом.
>И че ты высрал? Как целочисленную переменную в питоне объявить?
Тебе целочисленных переменных никто не обещал, пойди проспись. А целочисленные значения есть, в отличие от JS. Мне нужно пояснять, чем значение отличается от переменной?
>Дурачок, блять, ты про TypedArray слышал когда-нибудь?
TypedArray — это всратая сишная хуета, со всеми сишными артефактами, вроде переполнения.
Композитные объекты с насильным приведением к целым числам возможны в питоне, но при этом их можно сделать намного лучше, чем этот всратый TypedArray, который такой всратый останется навсегда, ты его не исправишь ничем.
Аналогичную хуйню можно сделать в JS на Proxy, но это Proxy ты будешь вынужден везде носить с собой при копировании контейнера.
>В языке есть целые числа. ЦЕЛОЧИСЛЕННЫХ ПЕРЕМЕННЫХ НЕТ, ебанашка.
Хорошо, принято — можно сказать, что начиная с ES6 в языке появились стандартизированные Number.isInteger(), Number.MAX_SAFE_INTEGER, Number.MIN_SAFE_INTEGER. Так-то можно и новый BigInt вспомнить, который вполне себе явно целое число, правда, не совместимое с обычными числами (number).
>Да, сорян, я посмотрел как выглядит for в go и не могу понять, чем
Разговор был про filter/map/reduce, твои циклы этого не делают. Да,"for ... of" близок к "for .. range", и я с этим не спорил. Анон затирал про filter/map/reduce, которые уродливы — об этом я и писал, для тьюринговых алгоритмов они просто бесполезны. В Clojure они активнее используются не в последнюю очеред потому, что у этого ЯП возможностей больше, чем у Тьюринг-машины. Go тоже является сверх-тьюринговой средой, но однозадачный пошаговый "for ... range" выполняется в тьюринговых ограничениях (одна горутина), потому пошаговая запись для него является естественной формой.
>А причем тут переопределение, долбоеб? У тебя в языке ЗАШИТО, что для массивов плюс работает как конкатенация. Ну переопредели мне чтобы плюс складывал поэлементно, вперед, удачи.
Так я о том и пишу, что JS — убогий язык, в котором мало того, что нельзя переопределять операторы, так ещё и единственная встроенная семантика максимально неадекватная.
>Они и в питоне реализованы уебищно.
Да? Какой будет результат операции "[] + []"? В каком ещё ЯП настолько ебанутая семантика базовых операций? Вот что происхоидт в питоне:
>>> [] + []
[]
>>> [] + {}
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: can only concatenate list (not "dict") to list
>JS ИЗНАЧАЛЬНО построен на том, что у тебя по сути все, кроме null и undefined ЛИБО объект, либо может им стать.
Это ты мне писал про "не нужно знать предметку, нужно лишь знать язык"? Что-то я нихуя не вижу знания языка:
>> typeof 42
"number"
>> typeof Number(42)
"number"
>> typeof new Number(42)
"object"
>> (42).__proto__
Number { 0 }
>> (new Number(42)).__proto__
Number { 0 }
>> let a = 10
10
>> a.b = 10
10
>> a.b
undefined
Какое нахуй знание языка, если ты не знаешь про автобоксинг, и почему String('') отличается от new String('')?
>>бомж, копающийся в мусорном баке, находит там недоеденные list comprehension
>Поправил, не благодари
List comprehension тоже можно хуёво написать, как ты и предлагаешь. Свинья ввезде грязь найдёт.
>Любой объект - это key value хранилище, мапы не для этого нужны. Обтекай, маня.
Любитель помойки legacy фич опять захрюкал
Object.prototype.unwanted = "oops";
let obj = { a: 1 };
obj.__proto__.state = 'pwned";
for (let key in obj) {
console.log(key);
}
Пояснять, или сам поймёшь? Да, можно устаривать ебаный цирк с:
let obj = Object.create(null);
Object.defineProperty(obj, 'hasOwnProperty', {
value: function (key) {
return Object.prototype.hasOwnProperty.call(this, key);
},
enumerable: false
});
И далее тщательно строить весь код на Object.keys(), Object.values, Object.hasOwn(), но один Map решает все эти проблемы из коробки и с чистым интерфейсом.
>И че ты высрал? Как целочисленную переменную в питоне объявить?
Тебе целочисленных переменных никто не обещал, пойди проспись. А целочисленные значения есть, в отличие от JS. Мне нужно пояснять, чем значение отличается от переменной?
>Дурачок, блять, ты про TypedArray слышал когда-нибудь?
TypedArray — это всратая сишная хуета, со всеми сишными артефактами, вроде переполнения.
Композитные объекты с насильным приведением к целым числам возможны в питоне, но при этом их можно сделать намного лучше, чем этот всратый TypedArray, который такой всратый останется навсегда, ты его не исправишь ничем.
Аналогичную хуйню можно сделать в JS на Proxy, но это Proxy ты будешь вынужден везде носить с собой при копировании контейнера.
>В языке есть целые числа. ЦЕЛОЧИСЛЕННЫХ ПЕРЕМЕННЫХ НЕТ, ебанашка.
Хорошо, принято — можно сказать, что начиная с ES6 в языке появились стандартизированные Number.isInteger(), Number.MAX_SAFE_INTEGER, Number.MIN_SAFE_INTEGER. Так-то можно и новый BigInt вспомнить, который вполне себе явно целое число, правда, не совместимое с обычными числами (number).
>потому пошаговая запись для него является естественной формой.
Ну и какие преимущества тогда у го перед нодой? Или че ты вообще высрал, я не понял, цикл for во всех языках программирования одинаковый.
>Так я о том и пишу, что JS — убогий язык, в котором мало того, что нельзя переопределять операторы
В питоне тоже нельзя. Ну переопредели мне чтобы плюс складывал поэлементно, вперед, удачи. Код не забудь показать.
>В каком ещё ЯП настолько ебанутая семантика базовых операций?
Никто не спорит с ебанутостью джаваскрипта, я не понимаю, почему ты пиздишь про питоне, ведь в нем семантика такая же ебанутая, а перегрузки обещанной нет.
>Что-то я нихуя не вижу знания языка:
В глаза ебешься?
>ЛИБО объект, либо МОЖЕТ ИМ стать.
5..toString()
>Какое нахуй знание языка, если ты не знаешь про автобоксинг
Ты долбоеб? Я тебе ровно это и написал. Ебанат.
>Малолетний долбоеб открыл для себя существование prototype pollution.
Спешите видеть.
>Мне нужно пояснять, чем значение отличается от переменной?
Да мне поебать на твои значения, пик 2.
>TypedArray — это всратая сишная хуета
В чем ее всратость заключается?
>Так-то можно и новый BigInt вспомнить, который вполне себе явно целое число, правда, не совместимое с обычными числами (number).
А в питоне-то есть такое, конечно же? Ах да, там же числа любой длины, зачем нам бигинты
>потому пошаговая запись для него является естественной формой.
Ну и какие преимущества тогда у го перед нодой? Или че ты вообще высрал, я не понял, цикл for во всех языках программирования одинаковый.
>Так я о том и пишу, что JS — убогий язык, в котором мало того, что нельзя переопределять операторы
В питоне тоже нельзя. Ну переопредели мне чтобы плюс складывал поэлементно, вперед, удачи. Код не забудь показать.
>В каком ещё ЯП настолько ебанутая семантика базовых операций?
Никто не спорит с ебанутостью джаваскрипта, я не понимаю, почему ты пиздишь про питоне, ведь в нем семантика такая же ебанутая, а перегрузки обещанной нет.
>Что-то я нихуя не вижу знания языка:
В глаза ебешься?
>ЛИБО объект, либо МОЖЕТ ИМ стать.
5..toString()
>Какое нахуй знание языка, если ты не знаешь про автобоксинг
Ты долбоеб? Я тебе ровно это и написал. Ебанат.
>Малолетний долбоеб открыл для себя существование prototype pollution.
Спешите видеть.
>Мне нужно пояснять, чем значение отличается от переменной?
Да мне поебать на твои значения, пик 2.
>TypedArray — это всратая сишная хуета
В чем ее всратость заключается?
>Так-то можно и новый BigInt вспомнить, который вполне себе явно целое число, правда, не совместимое с обычными числами (number).
А в питоне-то есть такое, конечно же? Ах да, там же числа любой длины, зачем нам бигинты
>Я тебе
1) Не мне.
2) Что значит перегрузить оператор? Оператор на типах определяется даже в хаскеле, а не абстрактный в вакууме оператор
Правда в руби можно переоткрыть любой класс и напихать туда любой мусор. Получается руби лучше жс..
Разъебал ты тут только себя. Буквально каждым постом разъебываешь сам себя и обсираешься, лол, вот же поехавшее безумное животное
>Ну и какие преимущества тогда у го перед нодой? Или че ты вообще высрал, я не понял, цикл for во всех языках программирования одинаковый.
Я написал, что filter/map/flat/reduce — это хуйня из-под коня. Всё. Ни про какой Go речи не шло. Возьми питон — там та же хуйня будет. Java, C++, и так далее. Просто обсуждали Go, и я подумал, что тут гошники сидят.
>В питоне тоже нельзя. Ну переопредели мне чтобы плюс складывал поэлементно, вперед, удачи. Код не забудь показать.
Для стандартного list это сделать нельзя, он залочен, потому что вся стандартная либа на нём держится. Но если сделать производный класс типа MyList([1,2,3,4]), то можно любые операции реализовать. Нейросетка в помощь.
>Никто не спорит с ебанутостью джаваскрипта, я не понимаю, почему ты пиздишь про питоне, ведь в нем семантика такая же ебанутая, а перегрузки обещанной нет.
Ты точно знаком с жаваскриптом? Чему равно [] + [] в JS? Ты мне ответишь? Есть ровно три ЯП с настолько ебанутой базовой семантикой — это JS, PHP, и Perl. Всё, больше такой хуйнёй никто не страдает. Даже Python уже не разрешает делать
>>> 1 < "2"
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: '<' not supported between instances of 'int' and 'str'
>В глаза ебешься?
>>ЛИБО объект, либо МОЖЕТ ИМ стать.
>5..toString()
Всё рано или поздно может стать объектом, если с ним что-то делать. И число может стать строкой, и строка превратиться в дату. Другое дело, что изначально примитивные типы не являются объектами.
>>Малолетний долбоеб открыл для себя существование prototype pollution.
>Спешите видеть.
Ну так нахуй ты мне писал про свои словари на объектах, если именно по этой причине обычные объекты нельзя использовать в качестве словарей?
>Мне нужно пояснять, чем значение отличается от переменной?
>Да мне поебать на твои значения, пик 2.
В стандартной поставке питоне нет никакой проверки типов, есть только поддержка их объявления. Любую либу для проверки типов нужно ставить дополнительно, а это можно делать только в продвинутых онлайн IDE проде Replit, Google Colab, Binder:
from typeguard import typechecked
@typechecked
def pick(l: list, index: int) -> int:
return l[index]
a = 1.5
print(pick([1,2,3,4], a))
Traceback (most recent call last):
File "/home/user/deleteme/types.py", line 9, in <module>
print(pick([1,2,3,4], a))
File "/home/user/deleteme/types.py", line 4, in pick
def pick(l: list, index: int) -> int:
File "/home/user/.local/lib/python3.10/site-packages/typeguard/_functions.py", line 137, in check_argument_types
check_type_internal(value, annotation, memo)
File "/home/user/.local/lib/python3.10/site-packages/typeguard/_checkers.py", line 956, in check_type_internal
raise TypeCheckError(f"is not an instance of {qualified_name(origin_type)}")
typeguard.TypeCheckError: argument "index" (float) is not an instance of int
>>TypedArray — это всратая сишная хуета
>В чем ее всратость заключается?
>> const a = new Int8Array(1);
undefined
>> a[0] = 200;
200
>> a[0]
-56
В лучших традициях JS, присвоил одно — получил другое.
>А в питоне-то есть такое, конечно же? Ах да, там же числа любой длины, зачем нам бигинты
Так ты по итогу спросил или согласился с моими аргументами? А то я не понял.
>>> print(123423544257457856978956789546873453456345745683672357356835688658)
123423544257457856978956789546873453456345745683672357356835688658
>>5542
Ну да, как-то так.
>Ну и какие преимущества тогда у го перед нодой? Или че ты вообще высрал, я не понял, цикл for во всех языках программирования одинаковый.
Я написал, что filter/map/flat/reduce — это хуйня из-под коня. Всё. Ни про какой Go речи не шло. Возьми питон — там та же хуйня будет. Java, C++, и так далее. Просто обсуждали Go, и я подумал, что тут гошники сидят.
>В питоне тоже нельзя. Ну переопредели мне чтобы плюс складывал поэлементно, вперед, удачи. Код не забудь показать.
Для стандартного list это сделать нельзя, он залочен, потому что вся стандартная либа на нём держится. Но если сделать производный класс типа MyList([1,2,3,4]), то можно любые операции реализовать. Нейросетка в помощь.
>Никто не спорит с ебанутостью джаваскрипта, я не понимаю, почему ты пиздишь про питоне, ведь в нем семантика такая же ебанутая, а перегрузки обещанной нет.
Ты точно знаком с жаваскриптом? Чему равно [] + [] в JS? Ты мне ответишь? Есть ровно три ЯП с настолько ебанутой базовой семантикой — это JS, PHP, и Perl. Всё, больше такой хуйнёй никто не страдает. Даже Python уже не разрешает делать
>>> 1 < "2"
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: '<' not supported between instances of 'int' and 'str'
>В глаза ебешься?
>>ЛИБО объект, либо МОЖЕТ ИМ стать.
>5..toString()
Всё рано или поздно может стать объектом, если с ним что-то делать. И число может стать строкой, и строка превратиться в дату. Другое дело, что изначально примитивные типы не являются объектами.
>>Малолетний долбоеб открыл для себя существование prototype pollution.
>Спешите видеть.
Ну так нахуй ты мне писал про свои словари на объектах, если именно по этой причине обычные объекты нельзя использовать в качестве словарей?
>Мне нужно пояснять, чем значение отличается от переменной?
>Да мне поебать на твои значения, пик 2.
В стандартной поставке питоне нет никакой проверки типов, есть только поддержка их объявления. Любую либу для проверки типов нужно ставить дополнительно, а это можно делать только в продвинутых онлайн IDE проде Replit, Google Colab, Binder:
from typeguard import typechecked
@typechecked
def pick(l: list, index: int) -> int:
return l[index]
a = 1.5
print(pick([1,2,3,4], a))
Traceback (most recent call last):
File "/home/user/deleteme/types.py", line 9, in <module>
print(pick([1,2,3,4], a))
File "/home/user/deleteme/types.py", line 4, in pick
def pick(l: list, index: int) -> int:
File "/home/user/.local/lib/python3.10/site-packages/typeguard/_functions.py", line 137, in check_argument_types
check_type_internal(value, annotation, memo)
File "/home/user/.local/lib/python3.10/site-packages/typeguard/_checkers.py", line 956, in check_type_internal
raise TypeCheckError(f"is not an instance of {qualified_name(origin_type)}")
typeguard.TypeCheckError: argument "index" (float) is not an instance of int
>>TypedArray — это всратая сишная хуета
>В чем ее всратость заключается?
>> const a = new Int8Array(1);
undefined
>> a[0] = 200;
200
>> a[0]
-56
В лучших традициях JS, присвоил одно — получил другое.
>А в питоне-то есть такое, конечно же? Ах да, там же числа любой длины, зачем нам бигинты
Так ты по итогу спросил или согласился с моими аргументами? А то я не понял.
>>> print(123423544257457856978956789546873453456345745683672357356835688658)
123423544257457856978956789546873453456345745683672357356835688658
>>5542
Ну да, как-то так.
>1) Не мне.
Не кукарекай.
>2) Что значит перегрузить оператор? Оператор на типах определяется даже в хаскеле, а не абстрактный в вакууме оператор
Оператор - это бинарная функция в данном случае. Перегрузить, значит сделать так, что плюс с этими аргументами ведет себя по-другому. Причем тут типы, епту бля?
>>5604
>Пок, кок, кудах!
>>5608
>Я написал, что filter/map/flat/reduce — это хуйня из-под коня
С хуяли это хуйня? filter и map - это самая база для ежедневных операций. Ну вот надо тебе отфильтровать данные по каким-то признакам и че ты каждый раз будешь for loop c if else костылить?
>Для стандартного list это сделать нельзя, он залочен
Очко у тебя, питонодебила залочено. Вот и не пизди, что у тебя че-то там переопределять можно. Переопределять можно, когда я могу сделать что-то типа такого:
import Base: +
+(l::Vector{Int64}, r::Vector{64}) = "ty xyi"
Вот это ПЕРЕГРУЗКА СУКА ОПЕРАТОРА. А когда ты, говнюк,
>сделать производный класс типа MyList([1,2,3,4])
Это ни хуя не перегрузка, это расширение твоего рабочего очка.
>Ты мне ответишь?
Нахуя мне тебе что-то отвечать?
>Всё рано или поздно может стать объектом, если с ним что-то делать.
Ок, подскажи каким образом в Java, C#, C++, D да где угодно число автоматически становится объектом при приведение его к строке? Что, нигде? Ну вот и не пизди, потому что там это РЕАЛЬНЫЕ примитивы.
>Другое дело, что изначально примитивные типы не являются объектами.
Примитив не может иметь методов, точка. Если примитив неявно превращается в объект - это что угодно, но не примитив.
>В стандартной поставке питоне нет никакой проверки типов, есть только поддержка их объявления.
Это значит там нет типов, лол.
>В лучших традициях JS, присвоил одно — получил другое.
Додсон, ты понимаешь, что такое Int8? Что ты там блять ожидал увидеть после
> a[0] = 200;
>1) Не мне.
Не кукарекай.
>2) Что значит перегрузить оператор? Оператор на типах определяется даже в хаскеле, а не абстрактный в вакууме оператор
Оператор - это бинарная функция в данном случае. Перегрузить, значит сделать так, что плюс с этими аргументами ведет себя по-другому. Причем тут типы, епту бля?
>>5604
>Пок, кок, кудах!
>>5608
>Я написал, что filter/map/flat/reduce — это хуйня из-под коня
С хуяли это хуйня? filter и map - это самая база для ежедневных операций. Ну вот надо тебе отфильтровать данные по каким-то признакам и че ты каждый раз будешь for loop c if else костылить?
>Для стандартного list это сделать нельзя, он залочен
Очко у тебя, питонодебила залочено. Вот и не пизди, что у тебя че-то там переопределять можно. Переопределять можно, когда я могу сделать что-то типа такого:
import Base: +
+(l::Vector{Int64}, r::Vector{64}) = "ty xyi"
Вот это ПЕРЕГРУЗКА СУКА ОПЕРАТОРА. А когда ты, говнюк,
>сделать производный класс типа MyList([1,2,3,4])
Это ни хуя не перегрузка, это расширение твоего рабочего очка.
>Ты мне ответишь?
Нахуя мне тебе что-то отвечать?
>Всё рано или поздно может стать объектом, если с ним что-то делать.
Ок, подскажи каким образом в Java, C#, C++, D да где угодно число автоматически становится объектом при приведение его к строке? Что, нигде? Ну вот и не пизди, потому что там это РЕАЛЬНЫЕ примитивы.
>Другое дело, что изначально примитивные типы не являются объектами.
Примитив не может иметь методов, точка. Если примитив неявно превращается в объект - это что угодно, но не примитив.
>В стандартной поставке питоне нет никакой проверки типов, есть только поддержка их объявления.
Это значит там нет типов, лол.
>В лучших традициях JS, присвоил одно — получил другое.
Додсон, ты понимаешь, что такое Int8? Что ты там блять ожидал увидеть после
> a[0] = 200;

> filter и map - это самая база для ежедневных операций. Ну вот надо тебе отфильтровать данные по каким-то признакам и че ты каждый раз будешь for loop c if else костылить?
Ебало этого дерьмоеда представили? If для него костыль, да это же эталонный индус нахуй!
>import Base: +
>+(l::Vector{Int64}, r::Vector{64}) = "ty xyi"
Ну и в чем различие? Оператор + не определен в Base для Vector{Int64}
ГПТ говорит что в жулии тоже нельзя без хаков переписать операторы из Base если они там определены некоторых для типов.
>Причем тут типы, епту бля?
Притом что в типизированном языке ты не можешь никак задать выражение само по себе, не привязывая его к типу. В динамических языках это рантаймом может определятся, когда ты передаешь какую-то структуру в сишную либу и она тебе выдает error если операция неопределена для типа. В твоей жулии + не определен для Vector{Int64}, но определен для строк и чисел. Для поэлементного сложения векторов там вроде есть .+ (точка с плюсом) , так же как в хаскеле и окамле
Нужно приводить в пример руби и котлин тогда уж. Где можно открывать классы для изменения.

>Ну и в чем различие? Оператор + не определен в Base для Vector{Int64}
Ты еблан?
>ГПТ говорит что в жулии тоже нельзя без хаков переписать операторы
Ебало нейронкодауна, который столкнулся с тем, что нейронка хуево обучена ндля джулии, представили? Ты хоть код, который я тебе скинул, запусти, а потом уже кукарекай.
>Притом что в типизированном языке ты не можешь никак задать выражение само по себе, не привязывая его к типу.
Ну, привязал проверяй.
import Base: +
+(l::Vector{Int64}, r::Vector{64}) = "ty xyi"
Или ты от нофапа ослеп и типов не видишь?
> В твоей жулии + не определен для Vector{Int64}
Сказочный долбоеб.
Скорее нейронка не пиздит, а в твоем плейграунде какая-то прелюдия подключена определяющая +. Покажи мне код в Base на гитхабе определющий +. Даже я нихуя не зная жулии больше тебя понимаю..
Зы Если там будет женерик, так чем это лучше наследования? Спор же был не статический vs динамический полиморфизм.

>Скорее нейронка не пиздит, а в твоем плейграунде какая-то прелюдия подключена определяющая +.
Чтоб ты знал, ебанько, для того, чтобы посмотреть КАКАЯ именно из функций вызывается для твоего кода, есть специальный метод @which, который тебе номер строки показывает.
>Даже я нихуя не зная жулии больше тебя понимаю..
Нейронкодаун срет не снимая штанов.
https://github.com/JuliaLang/julia/blob/309b1b158f59485772d5f5fe0a762f20185cf799/base/arraymath.jl#L12
Ну че, готовы нейросети заменить айтишников, петушара ебаная?
Ну то есть это дженерик? Идем дальше.
Почему
>+(l::Vector{Int64}, r::Vector{64}) = "ty xyi"
Это переопределение, в твоем понимании
>class A(list) ...
Это не переопределение оператора + на списке, в твоем понимании
Точно так же можно сказать: c женериком ты уточняешь выражение для конкретного типа (подтипа), которое будет спользовано при применении женерика в другом выражении, а не переопределяешь оператор +
C наследованием от list я получаю список (подтип списка). Только с новым поведением +. Этот мой список пролазиет, там же где используется обычный лист. Недотаток в более вербозном конструкторе A([1, 2, 3]) по сравнению с [1, 2, 3]
Что тебе непонятно?
>С хуяли это хуйня? filter и map - это самая база для ежедневных операций. Ну вот надо тебе отфильтровать данные по каким-то признакам и че ты каждый раз будешь for loop c if else костылить?
Что значит "каждый раз костылить"? Ты мне хочешь рассказать, что filter() сам по себе без аргументов понимает, что тебе нужно отфильтровать? Тебе так или иначе нужно писать условия фильтрования. Только цикл for позволяет тебе одновременно сделать и filter, и map, и flat(1), и reduce — и всё это в пару-тройку строчек. Отсюда дизайнеры Go справедливо задали вопрос "а нахуй вам filter/map/reduce, когда у вас уже есть такой простой и мощный инструмент?" — и я пояснил, что не нужен.
>Вот и не пизди, что у тебя че-то там переопределять можно. Переопределять можно, когда я могу сделать что-то типа такого
Слыш, ебало стянул, тебе никто не обещал стандартные типы переопределять — тут тебе не JS, чтобы срать в туже миску, из которой ешь. Для невстроенных типов переопределение свободное, в том числе для классов-наследников встроенных типов.
>Нахуя мне тебе что-то отвечать?
Так а нахуя ты мне отвечаешь? Ебало стяни.
>Ок, подскажи каким образом в Java, C#, C++, D да где угодно число автоматически становится объектом при приведение его к строке? Что, нигде? Ну вот и не пизди, потому что там это РЕАЛЬНЫЕ примитивы.
Прикинь. Java:
int num = 42;
String result = "The number is: " + num;
System.out.println(result);
C#:
string str1 = "Integer: " + num;
string str2 = "Double: " + decimal;
Console.WriteLine(str1);
Console.WriteLine(str2);
Просто для справки: String — это объект Java, string в C# — это алиас на String.String, тоже объект.
>Примитив не может иметь методов, точка. Если примитив неявно превращается в объект - это что угодно, но не примитив.
До тебя ещё не дошло, что JS делает хуеву гору разных неявных превращений при операциях? Неявное превращение примитива в объект — это ещё не самое страшное, в других случаях JS может кастовать значение вообще в хуй пойми какой тип, даже несмотря на то, что его никто не просил этого делать.
>> [] == ![]
true
Расскажешь мне, что тут объект?
>Это значит там нет типов, лол.
Пациент опять путается в определениях? Понимаешь разницу между типом, его валидацией перед выполнением, и валидацией во время выполнения?
Додсон, ты понимаешь, что такое Int8? Что ты там блять ожидал увидеть после
> a[0] = 200;
>> BigInt("9".repeat(1000000));
Uncaught RangeError: BigInt is too large to allocate
>> const buffer = new ArrayBuffer(8);
const view = new DataView(buffer);
view.setUint32(6, 1234);
Uncaught RangeError: offset is outside the bounds of the DataView
>С хуяли это хуйня? filter и map - это самая база для ежедневных операций. Ну вот надо тебе отфильтровать данные по каким-то признакам и че ты каждый раз будешь for loop c if else костылить?
Что значит "каждый раз костылить"? Ты мне хочешь рассказать, что filter() сам по себе без аргументов понимает, что тебе нужно отфильтровать? Тебе так или иначе нужно писать условия фильтрования. Только цикл for позволяет тебе одновременно сделать и filter, и map, и flat(1), и reduce — и всё это в пару-тройку строчек. Отсюда дизайнеры Go справедливо задали вопрос "а нахуй вам filter/map/reduce, когда у вас уже есть такой простой и мощный инструмент?" — и я пояснил, что не нужен.
>Вот и не пизди, что у тебя че-то там переопределять можно. Переопределять можно, когда я могу сделать что-то типа такого
Слыш, ебало стянул, тебе никто не обещал стандартные типы переопределять — тут тебе не JS, чтобы срать в туже миску, из которой ешь. Для невстроенных типов переопределение свободное, в том числе для классов-наследников встроенных типов.
>Нахуя мне тебе что-то отвечать?
Так а нахуя ты мне отвечаешь? Ебало стяни.
>Ок, подскажи каким образом в Java, C#, C++, D да где угодно число автоматически становится объектом при приведение его к строке? Что, нигде? Ну вот и не пизди, потому что там это РЕАЛЬНЫЕ примитивы.
Прикинь. Java:
int num = 42;
String result = "The number is: " + num;
System.out.println(result);
C#:
string str1 = "Integer: " + num;
string str2 = "Double: " + decimal;
Console.WriteLine(str1);
Console.WriteLine(str2);
Просто для справки: String — это объект Java, string в C# — это алиас на String.String, тоже объект.
>Примитив не может иметь методов, точка. Если примитив неявно превращается в объект - это что угодно, но не примитив.
До тебя ещё не дошло, что JS делает хуеву гору разных неявных превращений при операциях? Неявное превращение примитива в объект — это ещё не самое страшное, в других случаях JS может кастовать значение вообще в хуй пойми какой тип, даже несмотря на то, что его никто не просил этого делать.
>> [] == ![]
true
Расскажешь мне, что тут объект?
>Это значит там нет типов, лол.
Пациент опять путается в определениях? Понимаешь разницу между типом, его валидацией перед выполнением, и валидацией во время выполнения?
Додсон, ты понимаешь, что такое Int8? Что ты там блять ожидал увидеть после
> a[0] = 200;
>> BigInt("9".repeat(1000000));
Uncaught RangeError: BigInt is too large to allocate
>> const buffer = new ArrayBuffer(8);
const view = new DataView(buffer);
view.setUint32(6, 1234);
Uncaught RangeError: offset is outside the bounds of the DataView
>в таком сраче трудно что то понять
Самое смешное то, что это ведь я писал про "понимание JS не нужно, предметка важнее". Может быть потому, что я, блять, всё-таки понял язык и занимался дальше предметкой, а не решал философские проблемы плана "писать ли else перед return или нет".
Ну да, кроме тебя предметкой никто не занимается. Ты единственная надежда всех кабанов, лучик света в темном царстве волчар-философов..
кобол
>Ну да, кроме тебя предметкой никто не занимается. Ты единственная надежда всех кабанов, лучик света в темном царстве волчар-философов..
Есть челы-фулстэкеры, которые хуярят новые сайты быстрее, чем понимают, что написали. Я после двух лет во фронте по прежнему понимал, что дохуя не понимаю. Там одни гриды и флексбоксы такие, что ебануться можно. Это без CSS-переменных. Реально, фулстэком может быть только чел, который либо не умеет во фронт, либо не умеет в бэк, но чаще не умеет в них обоих. Написание современного веба в сборе — это крайне сложное занятие, и "упрощение" достигается только снижением требований.
Мне тем более смешно слышать про "написать сразу для веба, чтобы подо все платформы было" — ебокляки, у которых я работал, на эту хуйню повелись, и довольно поздно выяснили, что проще было написать тупо три приложения под три платформы, чем "упрощать" разработку до веб-приложения. Причём, браузер ебёт мозги намного больше, из-за бесконечного многослойного груза наследия со времён 1992 года. В бэке ты просто взял и сменил версию PHP на другую, а на фронте у тебя есть то, что есть, никакого выбора нет.
У меня где-то была охуенная презентация, где челы подводили итоги после аналогичной разработке сложного SPA под веб, они тоже повелись на истории про "электрон решает все проблемы" , и тоже поели говна, после чего SPA дропнули и написали нативное приложение.
>Почиатл я ваш срач и захотелось выучить другой язык, чтобы не быть как лох и шарить во всем написанном тут. Кроме жс ничего не знаю. Что посоветуете? Модный раст или го? Вечный с++? Может жава или с#?
Мой стэк: Delphi, C/C++, Python, JS, Haskell. Считая что я поел всего самого вонючего говна. Лучше учи Go,можно Rust, но только если думаешь работать на запад. В СНГ ещё долго на C++ будут писать.
>Хочешь скорость, бери кресты и сри себе в штаны UB
Шото ты сынок не туда воюешь
1. UB - понятие стандарта C++, что-то в стандарте описано, как должно работать, а что-то нет, то есть не определено, то есть undefined behavior, так как ебанёшься всё описывать, а значит реализация остаётся на усмотрение разработчика компилятора. Бери компилятор, например gcc, смотри, как сделано в нем. На уровне компилятора никакого UB нет, реализация конкретна. Также любые разговоры про UB - без демонстрации другого языка с таким же стандартом и уровнем детализации фич, а, впрочем, иди нахуй, лень объяснять
2. Твой опыт срания в штаны не представляет ценности. Я беру кресты и делаю норм
typescript изучай чтобы понять синтез ооп и типов. Хаскел/окамл изучай для понимания чистого ФП, чтобы ни говорили, мультипарадигмальные языки имеют мало общего с чистым ФП. Всякие там функторы и функциональные обновления не используются, если писать код на том же тайпскрипте. Руби можешь изучить чтобы понять, как с помощью красивых концепций писать запутанный код. Если у рубистов отобрать доку по рельсам, они через месяц уже нихуя не напишут, потому что забудут конвенции, чтобы там ни пиздел DHH про свой фреймворк.
Кресты бери и не ожидай быстрого результата, минимум 3 месяца. Вся языки пиздят концепции от-туда причем зачастую реализуя их в убогой форме
Да, ещё C++98 и последние 26 - это два разных языка. Учи последние фичи. Со всяким unique_ptr придется ознакомиться, а потом понять, что этот мусор ненужОн, потому, что есть контейнеры и поинтеры в редких случаях внутри них используются, а вне нет. Но это по ходу изучения, завадая себе вопросы выяснить. Кстати, нейросети в ряде вопросы не помогут, потому, что они обучены на ранних стандартах, чей код доминирует, а на новых, может просто нужной стать и примера не найти и посоветует дичь
Теперь покажи пальцем какую концепцию спиздили из крестов. Все концепции крестов замыкаются на борьбе с крестовыми нюансами. Общих концепций там раз два и обсчелся. Шаблоны устроены хуже дженериков в других языках, лямбды появились отностительно недавно и не могли быть спизжены у плюсов, constexpr появились отностительно недавно и не могли быть спизжены у плюсов.
=( Думал, буду новые тезисы, а ты просто пересказываешь мне уже известную чушь.
Лямбды не спизжены у плюсов, лямбды более ранняя концепция. В плюсах появились в 2003 в boost. Это был первый язык со статической компиляцией с лямбдами
constexpr в текущем виде впервые появился в крестах. Код, который вычисляется на этапе компиляции, если все его переменные константы или также constexpr. Что-то похожее было в D раньше C++, но он мог только с константами работать и не умел использовать constexpr, вызываемы constexpr
Кстати, сам по себе consexprt говно, язык должен сам определять константы у нас или нет, без ключевых слов, но дауны в других языках об этом но додумались и тупо пиздят концепцию. Что Rust с const fn, что Zig с его compile, что другие
>Шаблоны устроены хуже дженериков
Лол. Шаблоны более мощная модель. В шаблонах у тебя есть полиморфизм, благодаря этому, ты можешь в зависимости от выходных данных, по сути генерировать тип. С дженериками это не работает. Опять же, лень пример приводить, который бы тебя разъебал, так как я с телефона, а пример на компе, и твой уровень дискуссии не достоин, чтобы я вставал с кровати
>Это был первый язык со статической компиляцией с лямбдами
Ты ебанат совсем? 50 лет семейству ML — а у него, видите ли, лямбды в 2003 году появились. Пиздец, с кем я сижу на одной борде. Может у тебя ещё и асинхронное программирование первым в C++ появилось?
>Опять же, лень пример приводить, который бы тебя разъебал, так как я с телефона, а пример на компе, и твой уровень дискуссии не достоин, чтобы я вставал с кровати
Твой уровень дискусии достоен того, чтобы не отрывать тебя от хуя, который ты сосёшь — я бы так сказал.
>Это не переопределение оператора + на списке, в твоем понимании
Еще раз возвращаемся к тому, с чего начинали 15 постов назад. Ты вскукарекнул про перегрузку ОПЕРАТОРА, но в примере почему-то высрал КАСТОМНЫЙ класс.
Я тебе привел контрпример из нормального языка программирования, где НЕ СОЗДАВАЯ никаких дополнительных классов ПЕРЕГРУЗИЛ ВСТРОЕННЫЙ плюс. С чем ты споришь, я не понимаю?
>c женериком ты уточняешь выражение для конкретного типа (подтипа)
С каким женериком, блять? Где ты в Vector{Int64} женерик увидел, юродивый?
>Что тебе непонятно?
Мне все понятно. В питухоне НЕТ перегрузки операторов.
>>5806
>Отсюда дизайнеры Go справедливо задали вопрос
Я очень рад, что дизайнеры Go одиноки в своей гениальности, и во все остальные языки map/filter все-таки добавили.
>тебе никто не обещал стандартные типы переопределять — тут тебе не JS
Ебанько, в JS как раз нельзя переопределять стандартные операторы.
>Для невстроенных типов переопределение свободное
А что, оно может несвободным? Типа тебе яп запрещает собственным классам определенные методы добавлять, ахах
>Прикинь. Java:
Прикинул. Ты разницу улавливаешь между, сука, приведением типов из одного примитива в другой и боксингом, когда у тебя автоматически примитив в объект превращается? У тебя ни в инте, ни в стринге нет своих методов.
>Неявное превращение примитива в объект — это ещё не самое страшное
То есть оказывается все МОЖЕТ становиться объектом, как я и написал?
> [] == ![]
>true
>Расскажешь мне, что тут объект?
Причем тут объект? Ты об алгоритме нестрогого равенства вообще слышал? Справа ты отрицанием скастанул массив к булиану, то есть к false, потому что любой объект всегда true. Слева у тебя остался объект, который приводится к примитиву методом toString(), который для пустого объекта возвращает пустую строку.
Ну и да, ебнутое нестрогое равенство считает что пустая строка и false одно и тоже. Объекты-то тут причем?
>валидация во время выполнения
Это не валидация, это упавшая программа.
>>5890
>Я беру кресты и делаю норм
Молодец, ручку подарить?
>Это не переопределение оператора + на списке, в твоем понимании
Еще раз возвращаемся к тому, с чего начинали 15 постов назад. Ты вскукарекнул про перегрузку ОПЕРАТОРА, но в примере почему-то высрал КАСТОМНЫЙ класс.
Я тебе привел контрпример из нормального языка программирования, где НЕ СОЗДАВАЯ никаких дополнительных классов ПЕРЕГРУЗИЛ ВСТРОЕННЫЙ плюс. С чем ты споришь, я не понимаю?
>c женериком ты уточняешь выражение для конкретного типа (подтипа)
С каким женериком, блять? Где ты в Vector{Int64} женерик увидел, юродивый?
>Что тебе непонятно?
Мне все понятно. В питухоне НЕТ перегрузки операторов.
>>5806
>Отсюда дизайнеры Go справедливо задали вопрос
Я очень рад, что дизайнеры Go одиноки в своей гениальности, и во все остальные языки map/filter все-таки добавили.
>тебе никто не обещал стандартные типы переопределять — тут тебе не JS
Ебанько, в JS как раз нельзя переопределять стандартные операторы.
>Для невстроенных типов переопределение свободное
А что, оно может несвободным? Типа тебе яп запрещает собственным классам определенные методы добавлять, ахах
>Прикинь. Java:
Прикинул. Ты разницу улавливаешь между, сука, приведением типов из одного примитива в другой и боксингом, когда у тебя автоматически примитив в объект превращается? У тебя ни в инте, ни в стринге нет своих методов.
>Неявное превращение примитива в объект — это ещё не самое страшное
То есть оказывается все МОЖЕТ становиться объектом, как я и написал?
> [] == ![]
>true
>Расскажешь мне, что тут объект?
Причем тут объект? Ты об алгоритме нестрогого равенства вообще слышал? Справа ты отрицанием скастанул массив к булиану, то есть к false, потому что любой объект всегда true. Слева у тебя остался объект, который приводится к примитиву методом toString(), который для пустого объекта возвращает пустую строку.
Ну и да, ебнутое нестрогое равенство считает что пустая строка и false одно и тоже. Объекты-то тут причем?
>валидация во время выполнения
Это не валидация, это упавшая программа.
>>5890
>Я беру кресты и делаю норм
Молодец, ручку подарить?