@dlangru

Страница 338 из 719
Stepanos
12.12.2017
20:16:03
куда ето тулить? :) перед словом class?

не красиво же

Mike
12.12.2017
20:16:11
Бинарная совместимость
ну какой в этом смысл?!

Oleg
12.12.2017
20:16:37
_stack _heap _reg ?
Было ключевое слово раньше, отменили

Google
Mike
12.12.2017
20:16:53
не красиво же
иметь и struct и class, между которыми менее 10% отличий - ИМХО куда более некрасиво ?

Oleg
12.12.2017
20:17:25
ну какой в этом смысл?!
Я хз что ответить

Мне вот надо

Чтобы быстро на уровне Си и удобно на уровне питона

А тебе может и не надо

И ты смысла не видишь

Mike
12.12.2017
20:19:38
куда ето тулить? :) перед словом class?
да) А вообще я считаю что должно быть просто: есть статическое выделение памяти, а есть динамическое. статика в стеке, динамика - в куче статика нужна внутри скопа, а динамика - чтобы куда-нить передавать ?

Oleg
12.12.2017
20:20:58
Просто по умолчанию обратное поведение

Stepanos
12.12.2017
20:21:25
https://habrahabr.ru/post/116363/

как на D такое делается? чтоб бьіла сущность какае-то, в которую можно кидать задачи и оно организовьівало в очередь по несколько потоков

Mike
12.12.2017
20:22:40
И ты смысла не видишь
ну я на сях под микроокнтроллеры несоклько лет всякую дич пишу... а последние пол года - на яве под линукс и Dlang мне со стороны кажется золотой серединой между ними))) ? но глуюже копаю и всякие странные штуки всплывают ?

Google
Mike
12.12.2017
20:27:43
как на D такое делается? чтоб бьіла сущность какае-то, в которую можно кидать задачи и оно организовьівало в очередь по несколько потоков
ну.. это уже вопрос "кто как хочет тот так и *фапает*" — я вот такими штуками не пользуюсь и не вижу пока в них надобности ? после n-лет на МК привык тчательно за всем следить сам))) (там частенько приходится ручками псевдопараллельность создавтаь без RTOS - штуками типо Fibres в дэшечке, википедия говорит что это называется "сопрограммы")

Так в том и смысл чтобы как си, только удобно
ну вот для новичка, который выполз из СИ и Явы - вызывает ступор наличие И структур, И классов ? как понять что тебе использовать?))

Stepanos
12.12.2017
20:28:40
ну для Java девов ето актуально, ибо не хочется заморачиваться таким

+ екзекютор можно использовать как самостоятельную сущность, либо же передавать во всякие там RxJava и другие посторонние либки чтоб рулить потоками централизовано либо делить по групам

а-ля Scheduler.io(), Scheduler.computation() и тд

Mike
12.12.2017
20:33:17
Для классов в этой ситуации нужна сериализация
хотите сказать, что если вычитать кусок данных по адресу экземпляра класса, то его соержимое НЕ будет соответсвовать тому что у вас в теле класса описано..??? ? это как так? зачем так?

Stepanos
12.12.2017
20:34:19
есть инфа нормальная по ThreadScheduler, FiberScheduler...?

Mike
12.12.2017
20:34:56
+ екзекютор можно использовать как самостоятельную сущность, либо же передавать во всякие там RxJava и другие посторонние либки чтоб рулить потоками централизовано либо делить по групам
у меня на яве всего один небольшой проект, так что с магией, про которую вы говорите, я не сталкивался... да и магия эта, походу, чёрная ?

Неа.
в сообщеньке ТРИ вопроса))))

Andrey
12.12.2017
20:35:17
ну вот для новичка, который выполз из СИ и Явы - вызывает ступор наличие И структур, И классов ? как понять что тебе использовать?))
если нужен полиморфизм, наследование - то классы. Структуры - типы значения. Классы дороже в использовании, удаляются сборщиком, деструктор соответственно не вызывается при выходе из скопа, в отличии от структур.

Ievgenii
12.12.2017
20:43:42
Пруф?
http://rextester.com/FQGC22771

Вполне возможно, что он ее заИнлайнил

Andrey
12.12.2017
20:45:42
так это у тебя скопировалась структура

Ievgenii
12.12.2017
20:45:47
Нет

Деструктор 1 раз отработал

Если бы скопировало - было бы 2 раза

Andrey
12.12.2017
20:47:08
в этом примере она обязана скопироваться вроде как. просто соптимизировалось видимо

Google
Mike
12.12.2017
20:48:14
есть инфа нормальная по ThreadScheduler, FiberScheduler...?
кстати, ка краз вчера пытался понять как можно аккуратно рулить фибрами... н аглаза ничего не попалось, а что попалось - показалось совсем не тем что нужно задача: использовать фибры вместо потоков (потому что прожорливость у них меньше) В теле самой функции-фибры геммор только в натыкивание йелдов.. а вот снаружи - нужно же за ними следить, каждый по очереди перезапускать, каждому свои данные для работы подсовывать...... (как модель мысленного эксперимента рассматривался "высоконагруженный" хттп-сервер: если на каждый запрос отдельный поток генерить, то тормоза будут уже послде пары сотен [так на многочисденных форумах люди пишут], значит нужно запустить потоков {количество_ядер}+1 [так GNU иногда рекомендует] и в каждом запустить кучу фибр, которые уже и будут сами запросы обрабатывать. И, поскольку фибры можно "использовать повторно", то, значит, "входные данные" им надо неким указателем изначально скармливать, тчоб потом можно было новые данные "ресетнутой" фибре отдать ?и нужно следить какая фибра закончила чтобы ресетнуть её и новым запросом нагрузить. И ещё нужно следить за количеством "живых" фибр в каждом из потоков, чтобы новый запрос отдавать тому потоку, который менее загружен... т.е., фактически, нужен собюственный планировщик для единого адресного пространства и вытесняющей многозадачности ?я думал он в std уже есть [раз есть фибры и т.п.], но вот за ночь копания в доках так и не нашёл ничего подходящего...... [про vibe.d не надо мне говорить: 1) в курсе что он есть и типо именно так и устроен 2) задачка интересна скорее сама по себе, а не как продакшин-продукт 3) при первом знакомстве с документацией на vibe.d он чот не вызвал желания его вообще где-либо использовать ? ] )

Andrey
12.12.2017
20:49:47
ну а как иначе, у структур семантика копирования

Ievgenii
12.12.2017
20:52:06
http://rextester.com/WVPXMQ71729

Адреса совпадают

Вот структуру я создал в одном скопе, а использую в другом

Так что можно...

И удалится она, соответственно, когда выйдет из внешнего скопа

Andrey
12.12.2017
20:53:49
выделилась в том же месте на стеке)

Ievgenii
12.12.2017
20:55:32
Суть вопроса была в следующем: можно ли возвращать структуру и не удалится ли она при завершении ее скопа

Ievgenii
12.12.2017
20:55:37
Я сказал, что можно

Показал пример

Конечно, это не обычная ситуация

И такое не нужно делать каждый день :)

Andrey
12.12.2017
20:57:04
структуру возвращасть естественно можно, ибо она копируется. я думал, вопрос в том, можно ли возвращать ссылку на структуру

Ievgenii
12.12.2017
20:57:05
Но если реализовывать генератор, то думаю что копирование тоже не произойдет, а будет создавать сразу во внешнем скопе

Ну ссылку не выйдет, скорее всего

Не уверен

Google
Ievgenii
12.12.2017
21:02:30
Но вот если хранить экземпляр структуры глобально

То она и не удалится до завершения программы

Да и деструктор у нее не вызывается

Pavel
12.12.2017
21:05:20
да) А вообще я считаю что должно быть просто: есть статическое выделение памяти, а есть динамическое. статика в стеке, динамика - в куче статика нужна внутри скопа, а динамика - чтобы куда-нить передавать ?
А чем твое решение с ключевым словом лучше решения называть структуру struct? То же самое. То есть ты на ровном месте придумал велосипед, который ломает логичное наследие C/C++, только усложняет, а по эффекту такой же.

Mike
12.12.2017
21:05:21
Суть вопроса была в следующем: можно ли возвращать структуру и не удалится ли она при завершении ее скопа
ответ: source_file.d(11): Error: escaping reference to local variable localFuck ну или от другого компилятора: onlineapp.d(9): Error: returning & localFuck escapes a reference to local variable localFuck кому интересно - сам код: http://rextester.com/OKKJ21906

Ievgenii
12.12.2017
21:09:49
Логично

Ссылку не даст

Вот интересно

Если нужно работать с большим количеством параметров

Admin
ERROR: S client not available

Ievgenii
12.12.2017
21:11:14
Пусть тех же интов

Что будет быстрее, каждый раз их копировать в структуре

Или единожды забить в класс и передавать по счылке

Скажем в одном объекте там 2000 интов

2000 свойств в одном объекте

Нужно будет потестить

Мне кажется тут структура будет проигрывать

Andrey
12.12.2017
21:12:55
структуру можно по ссылке передавать

Ievgenii
12.12.2017
21:13:06
Как?

Mike
12.12.2017
21:14:48
Если нужно работать с большим количеством параметров
опиши конкретнее случай — тупо передать в функцию кучу данных? думаешь есть разница в скорости доступа к структуре и к классу (по указателю)? я вот чот сомневаюсь ? косвенная адресация она и в африке косвенная адресация, а смещения компилятор заранее все высчитает

Google
Andrey
12.12.2017
21:16:10
Как?
struct Foo {}; void foo(ref Foo f) { ... }

Mike
12.12.2017
21:41:15
структуру возвращасть естественно можно, ибо она копируется. я думал, вопрос в том, можно ли возвращать ссылку на структуру
можно, если это был указатель)) http://rextester.com/ZRLWIZ47475 Таким образом, лично я упёрся в тупик ?

Andrey
12.12.2017
21:46:41
можно, если это был указатель)) http://rextester.com/ZRLWIZ47475 Таким образом, лично я упёрся в тупик ?
ну так все правильно, выделяешь в куче память, возвращаешь ссылку на структуру, которая живет в куче. я не пойму, что ты хочешь сделать)

Mike
12.12.2017
21:50:33
Andrey
12.12.2017
21:53:39
скопипащу из книжки Александреску)) Струк­ту­ры по­зво­ля­ют оп­ре­де­лять про­стые, ин­кап­су­ли­ро­ван­ные ти­пы- зна­че­ния. Удоб­ная ана­ло­гия – тип int: зна­че­ние ти­па int – это 4 бай­та, до­пус­каю­щие оп­ре­де­лен­ные опе­ра­ции. В int нет ни­ка­ко­го скры­то­го со­ стоя­ния и ни­ка­ких кос­вен­ных об­ра­ще­ний, и две пе­ре­мен­ные ти­па int все­гда ссы­ла­ют­ся на раз­ные зна­че­ния 1 . Со­гла­ше­ние о струк­ту­рах ис­ клю­ча­ет ди­на­ми­че­ский по­ли­мор­физм, пе­ре­оп­ре­де­ле­ние ме­то­дов, на­сле­ до­ва­ние и бес­ко­неч­ное вре­мя жиз­ни. Струк­ту­ра – это пре­уве­ли­чен­ный тип int.

NullSanya
12.12.2017
21:58:25
Книга очень хорошая, стоит ее почитать.

Andrey
12.12.2017
21:59:39
+1

NullSanya
12.12.2017
22:01:26
Кстати, а тут есть люди, умеющие в шаблоны плюсов?

Igor
12.12.2017
22:07:33
зачем И структуры И классы - структуры легковеснее, имеют детерминированное выполнение деструктора. Классы тяжеловеснее, по дефолту доступ через vtable, зато имеют фишки типа наследования, синхронизирования и т.д.

всё описано по ссылке приведенной выше (https://dlang.org/spec/struct.html)

Oleg
12.12.2017
22:33:25
Кстати, а тут есть люди, умеющие в шаблоны плюсов?
Когда-то было дело, но сейчас там всё чёт так стало по другому

NullSanya
12.12.2017
22:34:26
Когда-то было дело, но сейчас там всё чёт так стало по другому
Просто мне немного помощи надо, заменять элемент при распаковки tuple в аргументы функции.

Oleg
12.12.2017
22:35:19
Тут, к сожалению, я не помогу (

Как это в D сделать знаю)

NullSanya
12.12.2017
22:38:25
Как это в D сделать знаю)
С ним бы проблем не возникло

Но надо на плюсах

Есть простая распаковка

Пытался переделать, но падает с исключением.

Oleg
12.12.2017
22:39:41
Можно подставить функцию, которая заменит один свой аргумент и передаст дальше в целевую функцию

NullSanya
12.12.2017
22:43:36
Можно подставить функцию, которая заменит один свой аргумент и передаст дальше в целевую функцию
Вот в ней и падало, почему-то. Ну попробую еще раз, может лучше выйдет.

NullSanya
13.12.2017
00:22:05
Язык программирования D

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