@dlangru

Страница 705 из 719
Igor
03.10.2018
18:31:44
нет

Pavel
03.10.2018
18:32:25
ты пытался слать структуру с иммутабельным типом насколько помню а не иммутабельный инстанс
Да, потому что я не хотел каждый раз приписывать immutable при объявлении переменной

Зачем, если можно сказать что эта структура всегда иммутабельна и никак иначе. Но так не вышло.

Igor
03.10.2018
18:33:53
Да, потому что я не хотел каждый раз приписывать immutable при объявлении переменной
видимо потому что immutable struct S{}; S s; и struct S{}; immutable S s; - разные вещи

Google
Pavel
03.10.2018
18:34:53
Ага, но это как то не логично

Igor
03.10.2018
18:35:23
возможно

Maxim
03.10.2018
18:38:03
а в чем, кстати, отличие?)

я так понимаю, первый вариант говорит, что все члены структуры immutable, а второй вариант тогда какой смысл несет?

Igor
03.10.2018
18:43:42
тут была ссылка на ответ. не помню точно. что-то с конструкторами

Valeriy
03.10.2018
18:47:16
Valeriy
03.10.2018
18:54:40
видимо потому что immutable struct S{}; S s; и struct S{}; immutable S s; - разные вещи
А в чём всё таки разница и, если она есть, нельзя ли решить проблему алиасами? alias S = immutable(_S);

Можно в определении модуля _S сделать приватным, а наружу вытащить только алиас

Pavel
03.10.2018
18:58:48
Можно в определении модуля _S сделать приватным, а наружу вытащить только алиас
Ага можно. Но у меня бомбило от того что в языке, который хвастается своим качеством, нельзя сделать просто простые вещи.

Denis
03.10.2018
18:59:09
Ну это же просто

Google
Igor
03.10.2018
18:59:16
наверное можно, я подробно не помню в чем разница (и честно говоря это моё предположение что она есть)

Denis
03.10.2018
18:59:23
В библиотеках мало где юзается

Pavel
03.10.2018
18:59:29
Когда очень много сложных концептов то это не ок для языка.

Думаю, можно
А впрочем, мне помнится что с алиасом тоже какие то проблемы были

Denis
03.10.2018
19:00:09
Valeriy
03.10.2018
19:08:23
я тут погуглил и обнаружил, что можно ещё вот так писать struct S { int a = 5; immutable this(int a){this.a=a;} } В этом случае стпуктуру можно инициализировать только иммутабельными данными.

Выглядит очень странно

Denis
03.10.2018
19:12:31
Нормально если нужна эта структура в двух вариантах

Кот просит починить тёплый сервер



На котором всё собиралось

@HaikuOS_RU_chat

Новая ос

Там даже была попытка дмд

Dmitry
03.10.2018
21:32:50
Какая ж она новая, это поднятая из могилы BeOS из 90-х.

У меня Хайку стояла на ноуте несколько лет назад.

Приятная ось, только wifi не работал.

Зато всп такое няшное и быстрое. Писать под нее весьма пииятно было. У каждого окошка свой поток и своя очередь сообщений. Такой эрланг гуевый.

Oleg
03.10.2018
22:10:18
никто не в курсе можно ли dub-у назначить папку, где он будет скаченные пакеты держать?

хотя... можно ж ln -s /target/dir /home/user/.dub но это походит на костыль)

Google
Pavel
03.10.2018
23:10:51
Кажется я искал решение этой проблемы и его нет

NullSanya
03.10.2018
23:18:19
В исходниках раньше было захардкодено

Karbin
04.10.2018
04:24:14
собирал давно собирал под гайку dmd. И видел где-то ещё биндинги к BeAPI от китайцев. вроде даже работало что-то

Karbin
04.10.2018
06:02:17
https://dlang.org/spec/version.html#version поищи haiku

Dmitry
04.10.2018
06:48:25
хех, не знал)))

Напомните, а куда там доннатить на баги\фичи?

Valeriy
04.10.2018
15:11:34
Напомните, а куда там доннатить на баги\фичи?
какую фичу хочешь задонатить?

прикольная тема кстати. Типа хочеш неявный кастинг в D надонать столько то. Спазу мотивация будет бабосом поделиться

Dmitry
04.10.2018
15:13:14
Да фиг знает я бы на какой нить DCD баксов 30 задонатил

Valeriy
04.10.2018
15:13:41
чё такое DCD?

Dmitry
04.10.2018
15:13:45
https://github.com/dlang-community/DCD

Просто не понятно кому деньги слать

Pavel
04.10.2018
15:14:41
прикольная тема кстати. Типа хочеш неявный кастинг в D надонать столько то. Спазу мотивация будет бабосом поделиться
Думаю это не сработает, так как Уолтер специально придумал D чтобы было меньше неявного кастинга

Это мое предположение, кажется где то читал что неявный кастинг он считает нехорошей штукой

Valeriy
04.10.2018
15:15:19
просто только для одного типа. какойто урезанный недоношенный неявный кастинг

qwerty
04.10.2018
15:18:32
https://github.com/dlang-community/DCD
Классная мысль! Я тоже не нашел. Там на самом деле надо улучшать dsymbol, но они там сами разберуться. Хотя не давно вроде плагин для vscode набрал достаточно количество денег, чтоб сделать все клево. И там вроде как они планировал dcd улучшать в тех же рамках

Evil
05.10.2018
04:32:02
кость да кость вокруг, - вдумчивый черпак, там, жуя бамбук, каменел пошляк. каменел пошляк, средь сухих опят, плесенью коров добывая клад. https://t.me/MachineHumor

Google
Ievgenii
05.10.2018
14:35:27
LDC рулит!

qwerty
05.10.2018
14:42:04
ну рассказывай)

Ievgenii
05.10.2018
14:54:02
Сделал на GO пример:

steps := 256 * 1024 * 1024 a := make([]int, 2) start := time.Now() elapsed := time.Since(start) start = time.Now() for i := 0; i < steps; i++ { a[0]++ a[0]++ } elapsed = time.Since(start) fmt.Printf("Time 0: %s value: %v\n", elapsed, a) a[0] = 0 start = time.Now() for i := 0; i < steps; i++ { a[0]++ a[1]++ } elapsed = time.Since(start) fmt.Printf("Time 1: %s value: %v\n", elapsed, a)

Результат:

Time 0: 430.3335ms value: [536870912 0] Time 1: 438.1774ms value: [268435456 268435456]

Сделал пример (аналог) на Ди:

module test; import std.stdio; import std.datetime.stopwatch; import std.conv; void main(string[] args){ int steps = 256 * 1024 * 1024; int[2] a = [0, 0]; auto inc = to!int(args[1]); auto sw = StopWatch(AutoStart.no); sw.start(); for (int i = 0; i < steps; i++) { a[0]+=inc; a[0]+=inc; } auto stop = sw.peek(); writeln("Time 0: ", stop, " value: ", a); a[0] = 0; sw.start(); for (int i = 0; i < steps; i++) { a[0]+=inc; a[1]+=inc; } stop = sw.peek(); writeln("Time 1: ", stop, " value: ", a); }

ldc2 test.d

./test 1

Time 0: 766 ms, 504 μs, and 1 hnsec value: [536870912, 0] Time 1: 635 ms, 258 μs, and 6 hnsecs value: [268435456, 268435456]

ldc2 -O3 test.d

./test 1

Time 0: 1 μs value: [536870912, 0] Time 1: 9 hnsecs value: [268435456, 268435456]

И я такой: да, это крутой оптимизатор!

Pavel
05.10.2018
15:00:18
Не выглядит реалистично

Ievgenii
05.10.2018
15:00:33
Очень реалистично!

Он понял, что там цикл на Н операций

Он просто берет мое число (переданное с консоли) и умнажает на Н

и вписывает в эту переменную

Google
Ievgenii
05.10.2018
15:01:08
Вот и все!

Оптимизация!)

Pavel
05.10.2018
15:01:42
А ты ассемблерный код смотрел?

Выглядит так что твои вычисления попали в кеш какой-то.

Ievgenii
05.10.2018
15:02:19
Выглядит так что твои вычисления попали в кеш какой-то.
Тут тяжело в какой-то кеш попасть, + даже если и попал, то все равно ОЧЕНЬ маленькое время...

Это 100% оптимизатор

И это хорошо

Реально круто!

Хочу попробовать наши микросервисы на работе скомпилить через llvm

Попробую с понедельника

Pavel
05.10.2018
15:03:52
Скоро будет челлендж highloadcup, вот там есть шанс показать на что реально пособен D )

Pavel
05.10.2018
15:05:12
Всмысле? Не, там надо писать программу

Которая будет обрабатывать запросы

Ievgenii
05.10.2018
15:05:26
Аааа

Pavel
05.10.2018
15:05:41
Загружаешь ее в докере на боевой сервер, и ее бенчмаркают

И так делает 1000 человек )

Ievgenii
05.10.2018
15:06:19
аааа

Igor
05.10.2018
15:06:40
ldc выводит ast можно посмотреть во что он скомпилил

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