@dlangru

Страница 477 из 719
Stanislav
23.03.2018
11:19:11
а потом появился SSE

и теперь все одинаково работает)

Maxim
23.03.2018
11:19:22
так функции-то разные совсем

Pavel
23.03.2018
11:19:33
О нет только тут не начинайте )

Google
Maxim
23.03.2018
11:20:47
я всегда думал, что memcpy на x86 сделана просто через какие-нибудь rep movsb, чего там мудрить-то?)

Stanislav
23.03.2018
11:24:20
там кароч раньше темный лес был, сейчас уже ситуация другая) раньше норм рубились за перфоманс.

Maxim
23.03.2018
11:25:55
меня вот одно удручает в BetterC — в 2.0.79 чего-то натворили с core.stdc, и теперь половина стандартной библиотеки Си не помечена как nothrow @nogc

Dark
23.03.2018
11:28:25
Репрессии?

Maxim
23.03.2018
11:28:38
а, ну и 2.0.79 даже с -dip1008 не позволяет выкидывать исключения

а в остальном отличный близкий к железу диалект D, запилил себе динамические массивы на стеке с подсчетом ссылок, и вообще отлично стало)

с нормальными дишными array[], конечно, не сравнятся, но уже гораздо лучше того, что есть в Си

Stanislav
23.03.2018
11:31:53
инициализированные по умолчанию структуры тоже радуют

Evgeny
23.03.2018
11:43:48
Stanislav
23.03.2018
11:44:47
https://forum.dlang.org/post/p9232r$1uup$1@digitalmars.com история с pow продолжается интересно)

Evgeny
23.03.2018
11:44:50
и да, я совсем не жалею потраченных годов на плюсы. Отличная тренировка ума.

Денис
23.03.2018
11:46:06
плюсы - говно, чистая сяшка - дважды говно.
А что с чистой сяшкой не так? Отлично же живет, хайлоад капы выигрывает.

Evgeny
23.03.2018
11:46:57
А что с чистой сяшкой не так? Отлично же живет, хайлоад капы выигрывает.
у сяшки нет ни одного преимущества перед плюсами. что она выигрывает?

Google
Evgeny
23.03.2018
11:48:24
Consistancy и простота
ты можешь на плюсах писать просто, консистентность - вещь крайне размытая

Maxim
23.03.2018
11:48:43
так сяшка в общем случае — подмножество с++)

Evgeny
23.03.2018
11:48:44
И скорость
скорость одинакова, с чего бы сяшке быть быстрее?

Maxim
23.03.2018
11:48:59
в том смысле, что на с++ можно писать в стиле сяшки, и будет то же самое)

Денис
23.03.2018
11:49:52
скорость одинакова, с чего бы сяшке быть быстрее?
Отсутствие ооп с его охуительным таблицами виртуальных функций с множественным наследованием - вот это все добротно снижает рантайм. А всякие шаблонные колдунства роняют компайл-тайм до дна.

Pavel
23.03.2018
11:50:03
https://forum.dlang.org/post/p9232r$1uup$1@digitalmars.com история с pow продолжается интересно)
ВО, видишь как оно пошло? :D Один истеричный пинок, пара дней работы и все готово https://github.com/dlang/dmd/pull/8071/files

Maxim
23.03.2018
11:50:15
более того, Уолтер говорит, что BetterC генерирует код идентичный сяшке в простейших случаях)

Pavel
23.03.2018
11:50:19
И вот эти 300 строчек не могли 10 лет написать, Карл

Evgeny
23.03.2018
11:50:46
я постоянно вижу писанину на сяшке в стиле ооп

сяшка небезопасное говно, точка

Dmitry
23.03.2018
11:52:10
у сяшки нет ни одного преимущества перед плюсами. что она выигрывает?
ABI стабильный, биндинги на высокоуровневых языках к сишным либам писать просто, а до крестовых либ бррр

Stanislav
23.03.2018
11:52:10
ну меня больше порадовало что уолтер переживает за industry и пометил баги, которые ему накидали там челы как критичные.

Денис
23.03.2018
11:53:02
ты можешь на плюсах писать просто, консистентность - вещь крайне размытая
Ну вот тут и проблема. Иметь для продакшена кодовую базу, где часть написана в стиле С, часть нахуярена классическим ООП, где-то неистовые шаблонные колдунства, а где-то на лямбдах в функциональном стиле наебашено и все это присыплено бустом и еще сторонними библиотеками - это жеппа, которую поддерживать пиздец. А когда у тебя сишка ты пишешь как на сишке и ничего особо не зафачишь (ну если не устраивать макросные безумия).

Pavel
23.03.2018
11:53:49
Да и go на этом сыграл как раз себе на руку

Денис
23.03.2018
11:55:35
поменяй местами сяшку и плюсы, смысл не поменяется.
Поменяется, на сишке куда меньше способов отстрелить себе ноги. Да, оче небезопасная работа с указателями (valgrind чертовски хорошо на сишке работает), а в остальном - там больше ничего нет, чтобы можно было это зафачить.

Google
Evgeny
23.03.2018
11:55:36
биндинги-хуиндинги - это вообще не аргумент. ибо по такой логике, все что не сяшка - хуже сяшки, абсуд.

Денис
23.03.2018
11:56:47
Хуевый код везде легко писать. Но представь у тебя отлично написанный код, но в миллионе разных стилей, которые разрешает С++. Чтобы найти баг в этом придется обкладываться всеми книжками Мейерса.

Денис
23.03.2018
11:57:57
поверь, на сяшке можно также писать охулиардом стилей.
Ну по крайней мере сам язык не настолько богатый на сокровища и ловушки

Evgeny
23.03.2018
11:58:14
я видел ООП с имитацией наследования на сяшечке, кстати хорошо было написано.

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

Dark
23.03.2018
11:59:26
Возможностей маловато

))

Evgeny
23.03.2018
11:59:42
сяшечка устарела, она была очень хороша для своего времени.

дишка с такими аргументами даже еще хуже плюсов получится :)

Pavel
23.03.2018
12:02:15
я видел ООП с имитацией наследования на сяшечке, кстати хорошо было написано.
Что подтверждает тезис что ООП это годная и естественная концепция)

Pavel
23.03.2018
12:02:48
А то ходют всякие и говорят что это тупиковая ветвь эволюции

Evgeny
23.03.2018
12:03:07
Что подтверждает тезис что ООП это годная и естественная концепция)
нормальная концепция. естественная для человека.

Денис
23.03.2018
12:04:04
дишка с такими аргументами даже еще хуже плюсов получится :)
Ну всм излишняя сложность D в некоторых местах меня тоже не радует (с квалификаторами доступа просто ебанина). Но D более-менее однородный и продуманный.

Pavel
23.03.2018
12:06:29
Видали там уже хотят вводить модификатор @gc ? =)

Чтобы типа если @nogc: помечены пару десятков функций и одной вдруг понадобилось аллоцировать, то можно ее пометить как @gc

Денис
23.03.2018
12:10:33
нормальная концепция. естественная для человека.
Для человека - да, для компьютеров - уже хуже. Вообще меня радует ООП в языках с динамической типизацией, как в питоне, в перле, прости господи js. Никакой этот мути с хитрыми схемами наследования (protected-наследование еб вашу мать, Страуструп возьми себя в руки), ограничениями доступа, const функции, статик функции. Короче классы - это ошибка. А язык мечты для меня - гошка с дженериками, компайл-тайм и рефлексией из D. И c UFCS.

Stanislav
23.03.2018
12:12:02
а в чем гошка лучше ди (кроме большого кол-ва библ)?

Google
Dark
23.03.2018
12:12:54
ПОП вообще на другом немного

Денис
23.03.2018
12:16:18
а в чем гошка лучше ди (кроме большого кол-ва библ)?
ГОРУТИНЫ, ну и в целом очень ПРОДУМАННО и красиво вышло. Я не говорю, что она лучше, но просто в силу обстоятельств для создания гошки выделили огромные средства и поддержку, это тщательно спроектированный заказ со строгими правилами и ограниченими, поэтому вышло очень здорово. А D развивается стихийно и на энтузиастах - это наносит свой отпечаток.

Stanislav
23.03.2018
12:16:55
у них прям какая то киллерфича по сравнению с файберами теми же?

Pavel
23.03.2018
12:18:05
У них киллерфича в том что абсоютно вся библиотека и все вызовы заточены под мультитрединг и горутины

Ничего нигде никогда не блокируется, а если горутина начинает блокировать то ее планировщик уносит на другой тред и освобождает место для других горутин

И все это интегрировано во всей экосистеме всех библиотек.

Денис
23.03.2018
12:20:04
у них прям какая то киллерфича по сравнению с файберами теми же?
Ага. Специальный синтаксис языка для них, каналы и вообще модель акторов, а также инструментарий для отладки и поиска проблем.

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

Pavel
23.03.2018
12:22:44
Ну собственно vibe-core и пытается это реализовать и кода там дохренищща )

Igor
23.03.2018
13:10:25
а вот интересно - если горутина должна слушать одновременно на сокете и на канале - это работает?

Admin
ERROR: S client not available

Igor
23.03.2018
13:11:48
каналы там - сделаны на мутексах и прочей синхронизации, мультиплексировать io можно только в ядре. как-то это скрещивается без дикой потери перформанса?

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

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

Pavel
23.03.2018
13:13:50
Ну наверное не может

Но можно же создать 2 горутины, одна занимается сокетом, вторая каналом :)

И никто никого не будет блокировать

Igor
23.03.2018
13:14:36
они должны житьт в разных тредах тогда

Pavel
23.03.2018
13:14:45
Зачем?

Денис
23.03.2018
13:14:52
Чому не может? select же.

Google
Igor
23.03.2018
13:15:21
ну есть тред внутри которого выплняются горутины. так?

Pavel
23.03.2018
13:15:29
Там же слушание сокета неблокирующее, как и канала тоже

Igor
23.03.2018
13:15:51
одни из них ждут ввода через ‘select'

а другие ждут ввода из каналов

если тред завис в ожидании select он не может проснуться если что-то попадает к нему в канал

Pavel
23.03.2018
13:17:14
Но при этом ничего не блокируется. Ждать ввода из сокета - значит в выданный планировщиком квант времени пойти в сокет, посмотреть что там никаких данных пока еще не пришло, и отдать управление обратно в планировщик а он уже в другие горутины

И все это повторяется пару миллионов раз в секунду.

Денис
23.03.2018
13:17:54
for { select { case c <- mychan: делаем штуки default: conn, err := listener.Accept() ... } }

Igor
23.03.2018
13:18:10
то ест ьпостоянный полл по тысячам сокет своими средсвами? это не масштабируется

Pavel
23.03.2018
13:18:53
то ест ьпостоянный полл по тысячам сокет своими средсвами? это не масштабируется
Ну там не свои средства, а какая-то магия которая вообще не жрет ресурсов почти.

(для меня магия, я не знаю как оно устроено точно)

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

В то время как создать миллион тредов будет убийственно для системы )

Igor
23.03.2018
13:20:43
тогда очень интересно понять как это реализовано

Pavel
23.03.2018
13:21:22
Ну сейчас же даже в ядре линукса какие-то инновации для poll систем вводились недавно

Igor
23.03.2018
13:21:33
я например понимаю что можно сделать пайп и в него писнуть так, что-бы select/poll проснулся

кстати вот эта часть default: conn, err := listener.Accept() может висеть в другом треде наверное

Денис
23.03.2018
13:23:08
https://habrahabr.ru/post/333654/

Pavel
23.03.2018
13:23:25
Я так понимаю что select vs epoll работают по обратному принципу. select сам оббегает все дескрипторы и проверяет, а при epoll пользовательский код просто ждет пока его самого дернут с каким-нибудь случившимся событием.

Денис
23.03.2018
13:24:27
https://habrahabr.ru/post/308070/

Igor
23.03.2018
13:25:09
да, но дело не в этом. а в том что тред попавший хоть в селект хоть в полл - спит в ядре. а обмен по channel это чистый userspace

Спасибо, посмотрю, интересно как они устроились

Страница 477 из 719