
Pavel
02.10.2017
17:18:43
А event loop просто по кругу обходит эти генератоы=корутины и на каждой дергает yield. Корутина поработает и заблокируется.
Точнее, не event loop дергает, а корутина сама. Тогда при выполнении yield она блокируется и управление передается в евент луп, чтобы он мог пойти дернуть другую корутину.
И вот event loop ходит по кругу и дергает 1000 корутин например 800000 раз в секунду. И внешне кажется как будто вся эта магия работает параллельно :)

Dmitry
02.10.2017
17:22:24
А Файбер же вроде тоже через yield работает?

Google

Andrey
02.10.2017
17:23:06
а еще все используют асинхронный ввод/вывод

Maxim
02.10.2017
17:24:00
А есть ссылки почитать про, что под капотом async/await в C#?

Pavel
02.10.2017
17:24:38
https://stackoverflow.com/questions/27265818/does-the-use-of-async-await-create-a-new-thread

Maxim
02.10.2017
17:25:20
Я так-то с C# дела не имел, но почему-то после какой-то статьи был уверен, что оно поверх системных тредов работает)

Pavel
02.10.2017
17:25:22

Andrey
02.10.2017
17:26:22
файбер и корутина это одно и тоже

Pavel
02.10.2017
17:26:54
Трудно сказать, где-то пишут что разное
https://stackoverflow.com/questions/42983095/coroutine-vs-fiber-difference-clarification
Но вот в D например я что-то не вижу где у файбера шедулер.
Может это как раз корутина по своим свойствам.
И как сохраняется/не сохраняется стек я тоже не понимаю.

Andrey
02.10.2017
17:28:36
действительно отличаются.
для каждой корутины стек хранится отдельно (в Дишном Fiber, размер стека передается в конструкторе). Еще есть stackless fiber/coroutine: https://stackoverflow.com/questions/28977302/how-do-stackless-coroutines-differ-from-stackful-coroutines#28989543

Google

Andrey
02.10.2017
17:34:19
Если просто, то безстековые корутины имеют макс размер стек фрейма, и его можно компактно сохранить куда-нибудь
то есть компилятор может узнать макс размер состояния между вызовами yield и всё состояние корутины поместится в фиксированный массив.
можно stackless корутины эмулировать с помощью структуры, в которую будет складываться состояние, плюс указатель на функцию которую надо следующей вызывать, плюс состояние (на паузе, на старте или завершилась). И Делаем набор функций принимающих и изменяющих состояние. Но компилятор это может сам сгенерить.

Dmitry
03.10.2017
08:04:06
Неплохой тред, жалко Ди в пример не добавили
https://www.linux.org.ru/forum/development/13699421

Stepanos
03.10.2017
08:05:09
коментарием добавь :) и попроси чтоб в шапку добавили

Dmitry
03.10.2017
08:08:39
я не осилю правильно на Ди это записать

Stepanos
03.10.2017
08:12:49
не гони))
в Д масива макс размер uint?

Dmitry
03.10.2017
08:15:33
а не size_t ?

Stepanos
03.10.2017
08:26:19
string[] typeList(File arch, size_t offset, bool parseDecl) {
}

Dmitry
03.10.2017
08:27:18
пасибо, щас пингану им

Stepanos
03.10.2017
08:27:37
ну лучше чтоб кто-то уточнил за размер :) @deviator
string[] array;
array.length = uint.max;
writeln(array.length);
core.exception.OutOfMemoryError@src/core/exception.d(696): Memory allocation failed
int.max тоже не хавает))

Andrey
03.10.2017
08:40:07
а не ulong ли размер массива?

qwerty
03.10.2017
08:42:06
И даже я потратил свое время, написав эти 2 сообщения

Stepanos
03.10.2017
08:43:18
в D намного удобней писать unit тестьі, чем в джаве, в ету сторону надо топить
у меня в дроид приложении код покрьіт тестами на Java, но тестьі для АРІ наверное на D напишу
https://dlang.org/phobos/std_container_array.html

Google

Stepanos
03.10.2017
08:46:16
такая штука еще есть

Dmitry
03.10.2017
08:49:43

qwerty
03.10.2017
08:54:45
ЯП - инструмент
новые инструменты для новых задач
не нужно путать теплое с мягким

Stepanos
03.10.2017
08:57:11
инструмент должен бьіл удобньім :)

qwerty
03.10.2017
08:58:52
справедливо, именно поэтому мы берем соответсвующую отвертку для винтика или для самореза
споры о синтаксисе это как споры о толщине ручки киянки и молотка

Maxim
03.10.2017
09:04:22

Andrey
03.10.2017
09:05:11
не компилятора, а целевой платформы

Maxim
03.10.2017
09:05:38
я это и имел в виду)

Maxim
03.10.2017
09:05:41
ну вы понели (с)

Stepanos
03.10.2017
09:10:36
OutOfMemoryError падает у меня))) ОЗУ мало или фіг его знает

Dmitry
03.10.2017
10:49:54

Max
03.10.2017
11:11:34
Ну, почему же, при нужной конфигурации ОС найти можно (в свопе (: )

Stepanos
03.10.2017
11:13:56
нет)))
прикольно

Oleg
03.10.2017
12:05:17
и без меня вроде разобрались

Google

Oleg
03.10.2017
12:05:51
а кто-нибудь хоть раз упирался в "максимальный размер массива"?

Ievgenii
03.10.2017
13:15:36
Хм...
Я нет

Dmitry
03.10.2017
17:17:46
Кто Питон знает. Там если переменную x определенную в app.py нужно в db.py получить, то нужно в db.py import app сделать?

Денис
03.10.2017
17:18:49

Dmitry
04.10.2017
09:59:38
DLandIDE не такая уж и ключная. У меня тут PyCharm эксепшен кидает при попытке проект переименовать

Maxim
04.10.2017
10:07:55
это норма (с)

Ievgenii
04.10.2017
10:09:41
Ну у нас все сидят на PHPStorm и рады как слоны.
Реально самая лучшая IDE, имхо...

Dmitry
04.10.2017
10:10:19
Как они вообще автодополнение для динамически типизируемых языков делают?

Admin
ERROR: S client not available

NullSanya
04.10.2017
10:11:28
где есть типы

Ievgenii
04.10.2017
10:14:09
Парсят

Dmitry
04.10.2017
10:15:10
т.е. при этом подставляется куча лишних типов?

Ievgenii
04.10.2017
10:18:00
Нет
Почему?

Dmitry
04.10.2017
10:20:24
ну как я понимаю в статически типизируемых мы понимаем какой метод мы можем вызвать по типу данных

Pavel
04.10.2017
10:20:24

Dmitry
04.10.2017
10:21:26
Ну для того же C# как пример

Google

Pavel
04.10.2017
10:21:54
Я зык с динамическими типами все равно имеет тип каждой переменной в конкретный момент времени.
Просто этот тип может поменяться при присваивании ей какой либо другой переменной или вызова метода. Но это не значит что там непонятно что.
пхп с питоном при использовании тайпхинтов очень даже статически типизированные )

NullSanya
04.10.2017
10:28:51

Dmitry
04.10.2017
10:31:00
@nullsanya да это понятно, и даже понятнее чем динамические языки, но вот и спришваю как у них там все устроено

Dmitry
04.10.2017
10:31:49
> пхп с питоном
Пидористически-типизированные

Pavel
04.10.2017
10:32:27
У пхп система типов даже лучше чм у джавы в некоторых местах.
После 7.1

Ievgenii
04.10.2017
10:35:32
))))))))))))))))))

Dmitry
04.10.2017
10:57:22
Павел, а чем она лучше то?

Pavel
04.10.2017
10:59:27
Павел, а чем она лучше то?
Например, в джаве из метода может вернуться как объект так и null, и это нужно контролировать. А в пхп можно явно указать что из метода должен возвращаться только объект но никак не null, или и то и другое.
Соответственно все проверки на null можно не писать.

Pavel ?
04.10.2017
11:00:48
ну и тут видимо речь об обьектах идет))
что-то я давно сюда не заходил)

Pavel
04.10.2017
11:08:55
Ну вот и еще фишка этих языков в том что где хочешь можно отказаться от типизации вообще, что ускоряет написание грязнокода.
А где нужно - можно вусмерть увешаться типами и ассертами.

NullSanya
04.10.2017
11:10:46

Ievgenii
04.10.2017
11:35:40
Мда)))
Не хотел бы я работать с такми кодом, где