
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

Денис
23.03.2018
11:47:43
И скорость

Evgeny
23.03.2018
11:48:24

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

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

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

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

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

Evgeny
23.03.2018
11:54:05
кривой код на сяшке написать в стотыщпицот раз легче чем на плюсах

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

Google

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

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

Evgeny
23.03.2018
11:57:24

Денис
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

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
а в чем гошка лучше ди (кроме большого кол-ва библ)?

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

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
Спасибо, посмотрю, интересно как они устроились