
Oleg
14.12.2016
09:29:19
ну или как-то так
а вот что и где уже интересней
можно за log(n) решить
сколько чисел обычно в массиве?

Google

Dmitry
14.12.2016
09:32:19
Давай для простоты 5. Через foreach это можно?
Могу я внутри цикла к следующему элементу обратиться?

Sergey
14.12.2016
09:33:11
а зачем?
почему не сравнивать с индексом?

Oleg
14.12.2016
09:34:00

Dmitry
14.12.2016
09:34:24
Нет это пока чтобы понять идею я так упростил
Это тестовое задание мне кинули
Я пытаюсь понять как его решить

Tsundershark
14.12.2016
09:34:51
А массив отстортирован? Если да, то сравнивать с индексом

Dmitry
14.12.2016
09:34:56
Тут js но я на ди хочу

Tsundershark
14.12.2016
09:34:58
Понятно, не отсортирован
Тогда посчитать сумму

Google

Tsundershark
14.12.2016
09:35:12
И отнять сумму от N*(N+1)/2
И это и будет потерянным числом
N*(N+1)/2 - сумма чисел натурального ряда

Oleg
14.12.2016
09:36:33
?
красиво

Dmitry
14.12.2016
12:51:25
Так. А еще как нить можно?

Oleg
14.12.2016
12:52:56
а зачем?
чем тебе это решение не нравится?

Dmitry
14.12.2016
14:13:25
Не мог бы словами описать суть решения, я реально не очень понимаю почему именно так. И как оно бы в цикле выглядело? Я же могу во время итерации в foreach к следующему итерируемому обратиться или нет?

Tsundershark
14.12.2016
15:17:51
Ну, N*(N+1)/2 - сумма ряда 1+2+3+4....+N-1+N.
Если из этого ряда убрать какое-то число, то, соответственно, его сумма уменьшится на это число.
И вычитая из суммы полного ряда сумму ряда с отсутствующим число находится это число.
Что-то не очень объяснение вышло :(

Dmitry
15.12.2016
04:58:31
А понял

Pavel
15.12.2016
20:46:21
Тем временем breaking news
https://forum.dlang.org/post/o2sq7k$mr1$1@digitalmars.com

Oleg
15.12.2016
20:50:19
?

Pavel
15.12.2016
20:51:14
А объясните несведущему мне, бэкенд это более тяжелая часть компиляции как я понял?
Там же надо анализировать, оптимизации всякие проводить.

Oleg
15.12.2016
20:54:41
ну, не совсем так
фронтэнд разбирает код, мидлэнд производит оптимизации, бэкэнд переводит оптимизированный промежуточный код в ассемблер
наверное бэкенд в чистом виде это самая простая часть
в целом это с llvm архитектуры инфа

Google

Oleg
15.12.2016
20:58:10
впринципе любой компилятор себя так ведёт: код на языке -> промежуточный код -> оптимизация -> ассемблер

Pavel
15.12.2016
21:00:54
а, не знал что есть еще мидл

Grigirii
16.12.2016
08:46:47
потому что обычно такой термин не используется. у LLVM ещё как-то он есть, а вот у GCC уже такой терминологии нет
что сложнее проще - это от языка зависит. фронт сложен разбором, там лексер, парсер, семантический анализ, базовые верхнеуровневые оптимизации. а бекенд оптимизирует низкий уровень, там сложнее понять абстракции, зато все возможности асемблерных оптимизаций. бэк платформеннозависимый, поэтому их обычно много и оптимизации в каждом свои

Dmitry
16.12.2016
13:23:01
Как все же yields переводится? "But when you modifying shared data between Tasks you don't need to lock it before editing because you know that you are not yielding here so other Task cannot corrupt it by parallel run." Если можно одним словом и двумя чтобы лучше понять его смысл

Pavel
16.12.2016
13:26:43
пойми как работает yield и станет ясно
можно перевести как выработать значение и отдать его на обработку в менеджер event loop

Dmitry
16.12.2016
15:23:28
Я сколько не читал так и не понял. Он же не такой как в питоне? Как я понял это переключить файбер или все же нет?

Pavel
16.12.2016
15:24:06
должен быть такой же как в питоне
и как в php
концепция одна и та же
В один тред выполняется таск. Когда он вызывает yield, это значит что он сам приостанавливается на некоторое время и дает выполняться другим таскам.

Pavel
16.12.2016
15:25:29
Другой тас поработает немного и тоже вызывает yield
И так они по кругу вызывают yield, давая поработать друг другу.
Поэтому если ты видишь в таске несколько строчек кода между одним yield и другим, ты уверен что пока эти строчки кода выполняются, ни один другой таск не начнет выполняться.

Dmitry
16.12.2016
16:01:15
Таск/файбер может ресурсами владеть? Или отработал-отдал

Pavel
16.12.2016
16:12:05
Честно говоря я не оч понимаю что такое файбер в ди, видимо это по разному называется. Знаю такую штуку как корутина.

Dmitry
16.12.2016
16:12:29
Это она и есть но таск вроде тоже самое

Pavel
16.12.2016
16:12:32
Так вот она просто имеет доступ к каким-то общим переменным и т.д.
Ну если таск это объект, то он может у себя создать приватные переменные и тогда конечно к нему никто другой не получит доступ

Google

Pavel
16.12.2016
16:13:53
Но еще в системе может быть глобальный объект Registry например, и все таски могут к нему обращаться.

Oleg
16.12.2016
16:26:26
Чет мне кажется вы что-то путаете
Хотя
Таск вроде абстракция
Она может и на файбере работать и на треде
Ну вроде как

Admin
ERROR: S client not available

Oleg
16.12.2016
16:28:01
И из стд таски вроде отличаться от тасков в вайбе
Не столь концепцией сколь поведением по умолчанию

Dmitry
16.12.2016
16:54:54
В чем она заключается эта абстракция?

Oleg
16.12.2016
16:56:43
исполнение какой-то функции
http://vibed.org/api/vibe.core.task/Task
https://dlang.org/phobos/std_parallelism.html#.Task
Note that the Task type is considered weakly isolated and thus can be passed between threads using vibe.core.concurrency.send or by passing it as a parameter to vibe.core.core.runWorkerTask.
Task represents the fundamental unit of work. (std)

Никита
16.12.2016
17:58:50
Помогите пожалуйста, в xamarin studio 5.9 если во время компиляции выскакивает ошибка то DCD отключается. Приходится закрывать и заново открывать программу.

Dmitry
18.12.2016
09:37:23
"В один тред выполняется таск. "
Получается что таск=файбер=корутина?
Все это выполняется внутри системного треда, который взложен в процесс.
Ялд вызывает переключение тасков/файберов/тредов. К примеру чтобы не ждать ответа от БД так?

Pavel
18.12.2016
10:09:18
ага

Google

Pavel
18.12.2016
10:09:50
Пока таск ждет ответа от бд, он дает поработать другому таску

Dmitry
18.12.2016
10:13:06
Тоесть после каждого действия в котором есть ожидание вызывается ялд?
Не могу блин проект найти никакой где-бы yield использовался, чтобы посмотреть в каких местах он применяется
Единственное что нашел это:
https://github.com/rejectedsoftware/vibe.d/blob/a9c45acc46242246a68738e3ffc7432a4a0e9b90/core/vibe/core/drivers/threadedfile.d#L185
Получается что ялдом нужно завершать все блокирующие функции?

Max
18.12.2016
14:47:58
Нет. Тебе говорили уже — прочитай что такое вообще корутины и поймёшь.

Dmitry
18.12.2016
14:48:56
Исходя из того что я прочитал получается что это просто потоки которые сами управляют временем своей жизни
читал долго и вдумчиво

qwe
18.12.2016
15:37:28

Dmitry
18.12.2016
15:38:11
В питон как я понял ялд позволяет обходить генератор возвращая по одному значению из него

qwe
18.12.2016
15:40:19
А в D не так?
https://tour.dlang.org/tour/en/multithreading/fibers

Dmitry
18.12.2016
15:41:04
Так то мы массив обрабатываем какой-то, а то потоки

qwe
18.12.2016
15:45:43
http://vpaste.net/14VU1 python
http://vpaste.net/QY3wI D
Хотя лучше, чтоб еще кто-то из знатоков подтвердил эквивалентность кода
@DmitryBubnenkov

Dmitry
18.12.2016
15:49:56
Блин! Отличный пример просто!
Я сколько не читал везде какие-то дебри дикие

qwe
18.12.2016
15:51:33
Да нормальные дебри)