@dlangru

Страница 339 из 719
qwerty
13.12.2017
00:28:08
хотя в докладе есть явная чушь

ну ладно, все равно уже скинул

Dmitry
13.12.2017
05:25:54
Адреса совпадают
Есть такая штука - return value optimization. Когда структуру возвращают из ф-ии, она с самого начала размещается в стеке вызывающей, чтоб лишний раз не копировать. https://en.m.wikipedia.org/wiki/Copy_elision

Суть вопроса была в следующем: можно ли возвращать структуру и не удалится ли она при завершении ее скопа
Одно дело вернуть саму структуру, другое - ссылку на структуру. Но открою секрет, когда объявленная в локальной переменной структура может действительно пережить выход из скоупа: если она упоминается в замыкании, и это замыкание возвращается или куда-то передается, где его могут запомнить. В таких случаях локальная переменная-структура с самого начала выделяется не на стеке.

Google
Dmitry
13.12.2017
06:29:35
https://www.youtube.com/watch?v=B9ZpQHyWZ_0&feature=youtu.be
Докладчик забыл упомянуть про одноименную книжку: https://www.manning.com/books/type-driven-development-with-idris Весь доклад ей и вдохновлен явно. "Вот я почитал TypeDD, там в Идрисе получается здорово, но мы тут пишем на Свифте, в нем тоже есть типы, но ... ну... это... :(" :) Тайп-левел арифметика это еще не зависимые типы, совсем. Да и показанный пример на сфифте пока даже до арифметики не дотягивает, увы.

zk
13.12.2017
09:32:07
на днях может скину какой проект, посмотришь
нет, как оказалось, показывать нечего

Eto
13.12.2017
10:08:36
кстати, ка краз вчера пытался понять как можно аккуратно рулить фибрами... н аглаза ничего не попалось, а что попалось - показалось совсем не тем что нужно задача: использовать фибры вместо потоков (потому что прожорливость у них меньше) В теле самой функции-фибры геммор только в натыкивание йелдов.. а вот снаружи - нужно же за ними следить, каждый по очереди перезапускать, каждому свои данные для работы подсовывать...... (как модель мысленного эксперимента рассматривался "высоконагруженный" хттп-сервер: если на каждый запрос отдельный поток генерить, то тормоза будут уже послде пары сотен [так на многочисденных форумах люди пишут], значит нужно запустить потоков {количество_ядер}+1 [так GNU иногда рекомендует] и в каждом запустить кучу фибр, которые уже и будут сами запросы обрабатывать. И, поскольку фибры можно "использовать повторно", то, значит, "входные данные" им надо неким указателем изначально скармливать, тчоб потом можно было новые данные "ресетнутой" фибре отдать ?и нужно следить какая фибра закончила чтобы ресетнуть её и новым запросом нагрузить. И ещё нужно следить за количеством "живых" фибр в каждом из потоков, чтобы новый запрос отдавать тому потоку, который менее загружен... т.е., фактически, нужен собюственный планировщик для единого адресного пространства и вытесняющей многозадачности ?я думал он в std уже есть [раз есть фибры и т.п.], но вот за ночь копания в доках так и не нашёл ничего подходящего...... [про vibe.d не надо мне говорить: 1) в курсе что он есть и типо именно так и устроен 2) задачка интересна скорее сама по себе, а не как продакшин-продукт 3) при первом знакомстве с документацией на vibe.d он чот не вызвал желания его вообще где-либо использовать ? ] )
Файберы, а не фибры. Ты мне теперь должен на салфетки, кровь из глаз вытирать.

Evil
13.12.2017
11:27:30
Файберы, а не фибры. Ты мне теперь должен на салфетки, кровь из глаз вытирать.
Зачем ты это написал? Терпеть и я это прочитал до половины ???

Фибры елдовые..

Eto
13.12.2017
11:28:32
?

Evil
13.12.2017
11:29:33
Аж плюсомёт зачесался

Чудаки)

Pavel
13.12.2017
11:46:08
Теперь то стало понятно что такое "стараться всеми фибрами души"

Оказывается речь идет и душевных сопрограммах

Mike
13.12.2017
11:48:38
Оказывается речь идет и душевных сопрограммах
оно самое) когда буквально разрываешься между несколькими делами ? и сам себя с одного на другое переключаешь

Maxim
13.12.2017
11:56:23
душевная кооперативная многозадачность, не то что в го

Oleg
14.12.2017
16:02:39
кто-нибудь использовал mir?

Google
Stepanos
14.12.2017
16:15:31
я LTS только использую, а мир же не стабильное

Stepanos
14.12.2017
16:25:36
X?

Oleg
14.12.2017
16:26:29
Блин)

Я про libmir)

http://mir.dlang.io/

а mir, который аналог X так это вообще зачем если есть wayland?

Stepanos
14.12.2017
16:28:26
?

Oleg
14.12.2017
16:29:29
просто как-то пару раз по диагонали смотрел, вроде есть много всякого, а вот обращение матриц не узрел

Dmitry
14.12.2017
17:06:13
Variant в D работает так же как var в шарпе?

Dmitry
14.12.2017
17:07:30
Нет. var в шарпе это просто auto в D.

var != dynamic

Evil
14.12.2017
17:15:34
Variant в D работает так же как var в шарпе?
Где ты нарисовал шарп, скажи?

И зачем ты с ним сравниваешь?

Dmitry
14.12.2017
17:21:33
Просто чтобы понять разницу

Как я понимаю в Ди это набор структур которые заполняются в момент получения в них данных. Только не понятно как они понимают для структуры какого именно типа предназначены прилетающие данные

Dmitry
14.12.2017
18:11:15
Ну в памяти же должно место зарезервироваться? Или оно в рантайме резервируется? Если да, то как определяется что писать? Строку? Число? Еще что-то?

Google
Dmitry
14.12.2017
19:12:31
А шаблоны рантайм создает? Или как оно там выглядит?

Под них же память должна резервироваться или нечто подобное

Oleg
14.12.2017
19:52:15
Шаблоны это ct

Eto
14.12.2017
20:03:46
Рантайма же в D нет. Или я что-то не знаю?

Andrey
14.12.2017
20:29:11
есть рантайм

Ned Ogl
14.12.2017
20:45:15
а mir, который аналог X так это вообще зачем если есть wayland?
А ты видел кстати, чтобы хоть что-то работало на чистом wayland без Х?

Я года 2 назад следил за этой темой и все там было плохо, были только прослойки для работы вейланда поверх Х

Oleg
14.12.2017
22:29:39
Я года 2 назад следил за этой темой и все там было плохо, были только прослойки для работы вейланда поверх Х
Да сейчас вроде норм с этим, наоборот прослойку делают для того чтобы X приложения, которые не умеют сами по wayland запускать

Dmitry
15.12.2017
06:15:53
Олег, но в ct мы же не знаем какие именно данные прилетят в Variant. Значит место для всех типов которые он может содержать надо зарезервировать?

Maxim
15.12.2017
06:19:40
поскольку язык статически типизированный и компилируемый, мы уже в момент компиляции знаем все типы, которые прилетят в переменную.

Dmitry
15.12.2017
06:48:29
" If any of the types in the Variant are larger than the largest built-in type, they will automatically be boxed. This means that even large types will only be the size of a pointer within the Variant" - из доки

Т.е. по умолчанию там выделяется столько, чтобы уместить стандартные типы, а все что больше - выделяется динамически, а вариант в себе указатель держит.

Dmitry
15.12.2017
06:57:00
" instantiated with the largest size of creal, char[], and void delegate(). This ensures that Variant is large enough to hold all of D's predefined types unboxed, including all numeric types, pointers, delegates, and class references."

Eto
15.12.2017
08:47:06
Звучит, как обёртка вокруг union.

Dmitry
15.12.2017
08:50:02
А что по своей сути union представляет?

Eto
15.12.2017
08:55:26
Способ сказать компилятору, что какой-то набор данных хранится в одном и том же месте. Т.е. с одной и той же памятью можно работать по-разному.

JSON в фобосе так реализован. JSONValue это структура содержащая union всех возможных значений и enum описывающий, какой тип хранится.

https://github.com/dlang/phobos/blob/master/std/json.d#L102

Ievgenii
15.12.2017
09:02:36
А что по своей сути union представляет?
Юнион, представляет "кусок" памяти, по самому большому типу. И кучу низкоуровневых методов с cast

Если на пальцах

Google
Eto
15.12.2017
09:03:04
Да, так и есть.

Ievgenii
15.12.2017
09:03:52
Ты можешь записать в него int(300), а после считать оттуда float

Или записать float(300.0), а считать int

Что при этом ты считаешь - черт его знает)))) Ты сам заботишься о том, что ты пишешь и что читаешь

Соответственно ты жертвуешь производительностью и памятью

Т.к. там, где ты мог использовать 4 байта, ты будешь использовать 6, 8 и ли другое значение

Admin
ERROR: S client not available

Ievgenii
15.12.2017
09:06:02
Т,к. при записи туда double размер инта не подойдет, чтобы его там вместить

А вот если ты в юнионе хранишь byte и int, то он будет выделять тебе +/- 5 байта

Что-то типа такого

Eto
15.12.2017
09:30:36
Andrey
15.12.2017
10:07:28
А что по своей сути union представляет?
просто прочитай http://ddili.org/ders/d.en/union.html, все вопросы отпадут)

Oleg
15.12.2017
13:51:19
как считаете почему нет D? https://ru.fedoracommunity.org/posts/rust-prilozheniia-v-fedora/

qwerty
15.12.2017
14:09:43
ацтой потому что)))

Andrey
15.12.2017
14:09:44
потому что Игорь Гнатенко пишет на расте

qwerty
15.12.2017
14:09:54
Непопулярный язык, ведь

что за вопрос?

Oleg
15.12.2017
14:10:21
что за вопрос?
вопрос как вопрос)

что за вопрос "что за вопрос?"?

qwerty
15.12.2017
14:10:46
на расте уже сделали аналог find, grep

Google
qwerty
15.12.2017
14:11:04
терминал, который на GPU работает

Oleg
15.12.2017
14:13:11
ну да... подождём, пока на D кто-нибудь что-нибудь сделат такое...

qwerty
15.12.2017
14:13:24
это не говоря уже о фреймворках для blockchain и зачатках нативных (без С наследия) GUI либ

так не ждать надо

надо пиарить

начали duseful

надо пилить

Oleg
15.12.2017
14:14:31
как минимум это локальная фишка и не только в плане того что это на русском

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

все события какие-то локальные

надо за эти выходные присесть будет и сделать хотябы все главные пункты в duseful

ни у кого нет идей новых?

Pavel
15.12.2017
14:19:34
на расте уже сделали аналог find, grep
Я же говорил что надо переписывать coreutils )

Но меня не поддержали! ??

qwerty
15.12.2017
14:21:36
=((

ну в раст их find и grep работают быстрее за счет их zero cost

и этот переписали еще scandir

Mike
15.12.2017
14:27:45
ну в раст их find и grep работают быстрее за счет их zero cost
ожешь в двух словах описатьч то это за хрень..? гугл как-то не помог(

qwerty
15.12.2017
14:28:09
могу ссылку дать

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