
Evgeny
05.03.2018
12:31:24
что хочешь, то и пиши там

Dark
05.03.2018
12:31:40
Я понял
Сейчас перепишу

Google

elias
05.03.2018
12:54:12
а есть ли незаброшенные D-биндинги к негуёвым классам Qt?

Alexander
05.03.2018
12:55:35
QtE5 жив вроде, но на любителя

Denis
05.03.2018
13:36:25

Dark
05.03.2018
13:37:01

Denis
05.03.2018
13:37:51
только что написали

Evgeny
05.03.2018
14:20:59
его тоже помню, кто-то обосрал, типа для гуя плохо подходит
я правда так и не понял что особенного в гуевом эвент-лупе?

Denis
05.03.2018
14:22:33
когда успели обосрать если его только что опубликовали?
первый коммит 2 марта

Evgeny
05.03.2018
14:23:00
а, значит не его, видимо я попутал

Denis
05.03.2018
14:24:44
а, это похоже https://github.com/etcimon/libasync

Google

Denis
05.03.2018
14:24:57
скопипиздили
или нет, хз, не пойму

Pavel
05.03.2018
14:34:53
Какой-то чувак взял libasync и даже не удосужился имена в dub.json поменять
Какое-то замусоривание фона просто. Вместо того чтобы сделать одну стандартную крутую либу, берут форкают чужое, делают с десяток комитов и навсегда забрасывают свое детище в unstable состоянии.

Denis
05.03.2018
14:39:00
дык и в vibe их уже 2 или 3
vibe-core и vibe:core содержат разное

Pavel
05.03.2018
14:39:24
ну да. Шизофрения

Dark
05.03.2018
15:02:27
*Шутка про то, что в JS фреймворки чаще делают*

Pavel
05.03.2018
15:24:53
Ну в жс хотя бы есть хорошо оформленные проекты-лидеры

Dark
05.03.2018
15:29:17
Они от крупных компаний. Придут такие компании на D и там тоже такие проекты будут

Pavel
05.03.2018
15:34:29
Ну вот есть vibe.d вполне рабочий который пилит один энтузиаст в одиночку, есть еще libmir который пилится тоже в одиночку
Хотя как рабочий.. у меня например vibe-core зависает в бесконечном цикле через пару часов работы, что сводит его крутость на нет

Evgeny
05.03.2018
16:09:32
или даже, совсем не в одиночку

Pavel
05.03.2018
16:10:55
А вот и в одиночечку!

Dark
05.03.2018
16:11:01

Pavel
05.03.2018
16:11:22
https://github.com/vibe-d/vibe.d/graphs/contributors остальные 10% вклада суммарно и то с натяжкой

Evgeny
05.03.2018
16:56:54
Тем не менее не в одиночечку. Кроме того это данные за все время. А если взять последний год, то уже и 20% набежит

Dark
05.03.2018
17:06:49
Может мне кто нибудь объяснить TaskPool? А то я не допер

Google

Pavel
05.03.2018
17:07:28
Это очередь задач, кладешь туда задачи а треды их разбирают

Dark
05.03.2018
17:09:17
Можно простенький пример TaskPool с Task?

Pavel
05.03.2018
17:14:00
while (true) {
clientSocket = serverSocket.accept();
auto task = scopedTask!handleSocket(clientSocket);
taskPool.put(&task);
}
void handleSocket(Socket clientSocket)
{
}

Dark
05.03.2018
17:19:40
Кажется я понял. Есть n потоков, а taskpool раздает им таски
Так?

Dmitry
05.03.2018
17:21:29
Вот только scopedTask в этом примере - большая ошибка.

Pavel
05.03.2018
17:23:51

Dark
05.03.2018
17:25:47
Наверное потому, что при новом цикле это будет выпушено из стека

Dmitry
05.03.2018
17:25:49
потому что будет ждать завершения задачи на каждой итерации, никакого параллелизма
Task objects created using scopedTask will automatically call Task.yieldForce in their destructor if necessary to ensure the Task is complete before the stack frame they reside on is destroyed.

Pavel
05.03.2018
17:31:19
Что-то я не понял в какой момент оно будет ждать
.put() пихает задачу в очередь и дальше работает

Dmitry
05.03.2018
17:33:45
и в следующей строчке срабатывает деструктор задачи, который останавливает текущий поток, пока задача не выполнится

Pavel
05.03.2018
17:34:22
Чот не верю

Dmitry
05.03.2018
17:36:36
вопрос для проверки: где живет этот таск? сколько их будет создано за 100 итераций, сколько из них могут существовать одновременно?
ответ: на стеке этой ф-ии, в единственном экземпляре, так что параллельно они жить не могут

Pavel
05.03.2018
17:38:13
Ща проверим

Dark
05.03.2018
17:40:14
Вот мне не хватает сворачивания доки. А то пытаешься окинуть взглядом все это, а не, нифига

Pavel
05.03.2018
17:54:51

Google

Денис
05.03.2018
18:52:09
http://dlang.ru/faq
норм так разжигаете в сравнии с растом и го )
Слушайте, уберите/исправьте это позорное сравнение про го. Проблемы тут следующие:
1 - Очень хейтерский тон. Этот текст должен рекламировать яп, а не школосрач разводить (половина тезисов просто безосновательный пиздеж).
2 - Гошный код просто бездарный (совершенно неидиоматичный и раздутый), ужал все примеры без проблем в 2 раза, кроме суммы. Сумму можно сделать тем же редьюсом через рефлексию, но надо указать что компайл-тайм рефлексии в го хорошей нет, в этом и плюс D
3 - В примере с поиском по массиву - вообще очень грустно. Зачем-то сортируем (что алгоритмически неправильно), используем сложный sort.Search.
Не круто это все, надо не на хеллоуворде проводить сравнения, а действительно показывать киллер-фичи, которых нет в %языкname%. Говоришь - у нас компайл-тайм рефлексия с человеческим лицом и любой гофер сразу понимает как это круто.


Dark
05.03.2018
19:26:01
Про пункт 2. Автор, видимо, не кодил на го

Денис
05.03.2018
19:32:30
Про пункт 2. Автор, видимо, не кодил на го
Кстати я тут подумал:
[1,2,3,4,5,6].reduce!((a,b) => a+b).writeln;
Отличный способ отстрелить себе ногу так-то. Он неявно приводит к инту и переполняется. В го же то, что явно надо указывать тип - наоборот спасает. Так что некорректный вообще пример.

Dark
05.03.2018
19:33:23
При чем тут переполнение?

Денис
05.03.2018
19:39:15
При чем тут переполнение?
Ну если я нечаянно редьюсну так массив например [1,2147483647], то получу неприятный результат. И тогда мне придется ручками переписать на, например
uint[]list = [2,0,0,0,2147483647];
list.reduce!((a,b) => a+b).writeln;
И тогда никакой разницы с го, где так же явно указывается тип - нет

Dmitry
05.03.2018
19:42:40
Достаточно написать [1u, 2147483647]
Тогда будет uint[]

Pavel
05.03.2018
19:44:55
какая же опасная операция это сложение)

Pavel
05.03.2018
19:45:56
Единственный верный способ как уделать любой другой язык - взять переписать популярную на нем программу с меньшими усилиями.
И показать типа вот смотрите - строк стало меньше на 42%, читабельность и производительность такие же.

Pavel
05.03.2018
19:48:31
может тут что есть готовое: https://rosettacode.org/wiki/Category:Programming_Tasks
В любом случае, нужно владеть сравниваемыми языками.

Pavel
05.03.2018
19:51:51
Вот брать задачи отсюда https://rosettacode.org/wiki/Metaprogramming и решать на go. Шах и мат, гоисты!

Dark
05.03.2018
20:04:51

Pavel
05.03.2018
20:06:02
Я не понял сути твоего философского высказывания ?

Igor
05.03.2018
20:06:16

Dark
05.03.2018
20:08:17

Pavel
05.03.2018
20:09:01
Я же там сделал уточнение про читабельность и производительность ;)

Денис
05.03.2018
20:09:35

Google

Dark
05.03.2018
20:10:03
Опять таки это субъективная оценка

Pavel
05.03.2018
20:10:20
Ладно это уже пошла какая-то демагогофилософия ;)

Dark
05.03.2018
20:10:44
Скорее, метафилософия
;)

Pavel
05.03.2018
20:11:20
Потому что субъективных вещей не так уж много. Особено если учесть что щас все языки двигаются друг к другу и стали все очень похожими.
Значит некая золотая середина есть и все ее чувствуют

Dark
05.03.2018
20:15:01

Pavel
05.03.2018
20:19:43
Он содержит в себе самое маленькое подмножество возможностей, но более высокого уровня там нет.
асинхронное выполнение, аннотации, функциональщина, ооп

Денис
05.03.2018
20:20:18

Dark
05.03.2018
20:20:44
Ну и D не очень для серверов ИМХО
Зато вместо Шарпа в юньке я б его с удовольствием увидел

Pavel
05.03.2018
20:22:00
юнька это что?

Денис
05.03.2018
20:22:25

Dark
05.03.2018
20:23:06

Pavel
05.03.2018
20:23:26
Инкременты?
Ну если учесть что там все на адресной арифметике, то непонятно чего там заимствовать.

Денис
05.03.2018
20:25:45