@dlangru

Страница 276 из 719
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
А Файбер же вроде тоже через yield работает?
Насколько я понимаю, файбер может быть реализован через корутину, ну и он посложнее устроен. Но тут мои знания упираются :)

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
Неплохой тред, жалко Ди в пример не добавили https://www.linux.org.ru/forum/development/13699421
Неплохой? Тред нужен для тех кто любит ныть про читаемость. Плохой программист думает о коде. Хороший программист думает о структурах данных и их связях (Линус торвальдс) Подобные треды лишь для холиваров и траты времени

И даже я потратил свое время, написав эти 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
такая штука еще есть

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
а не ulong ли размер массива?
size_t, зависит от разрядности компилятора

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
string[] array; array.length = uint.max; writeln(array.length); core.exception.OutOfMemoryError@src/core/exception.d(696): Memory allocation failed
Если это собирается в 32 бита, то код тут запрашивает 32 гига памяти, что в 32 битах невозможно. Если собирается в 64 бита, то запрашивается 64 гига (4Г значение uint.max * 16 байт размер string). Есть 64 гига? А если найду? (не нашел)

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 сделать?

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
Ну для того же C# как пример
Шарп статически типизируемый

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
Соответственно все проверки на null можно не писать.
никто не отменял @NotNull @Nullable Optional и kotlin))

ну и тут видимо речь об обьектах идет))

что-то я давно сюда не заходил)

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

А где нужно - можно вусмерть увешаться типами и ассертами.

NullSanya
04.10.2017
11:10:46
А где нужно - можно вусмерть увешаться типами и ассертами.
сам себе компилятор - сам решаешь, где надо проверить типы, а где и так сойдет)

Ievgenii
04.10.2017
11:35:40
Мда)))

Не хотел бы я работать с такми кодом, где

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