@dlangru

Страница 255 из 719
Maxim
04.09.2017
12:40:45
для intel процессоров — это размер регистра

но вообще, конечно, геморроя там много, например в 16-разрядной модели памяти intel используется адресация сегмент:смещение, и указатели могут быть дальние (сермент и смещение) и ближние (только смещение)

думаю, если все это описывать в книге, то у читателя может случиться инсульт от перенапряжения

Andrey
04.09.2017
12:44:11
у меня еще один вопрос новичка - а как делать clear() для двумерного массива?

Google
Andrey
04.09.2017
12:45:06
пробегаться циклом и делать remove?

Pavel
04.09.2017
12:45:45
а что в элементах массива лежит?

Andrey
04.09.2017
12:46:12
да у меня что-то даже просто с int-ами не выходит - пишет source/gui/text/textpanel.d(77,11): Error: template object.clear cannot deduce function from argument types !()(int[][]), candidates are: /Library/D/dmd/src/druntime/import/object.d(1909,6): object.clear(T : Value[Key], Value, Key)(T aa) /Library/D/dmd/src/druntime/import/object.d(1914,6): object.clear(T : Value[Key], Value, Key)(T* aa)

Dmitry
04.09.2017
12:46:37
Я написал так: Несколько слов нужно сказать о типе size_t. Долгое время размер int совпадал с битностью микропроцессора т.е. во время господства 32-битных систем размер int был де-факто равен 32 битам. Однако с появлением 64-битных систем появилась проблема, что нужно или расширять размеры int или вводить новый тип. Для целого ряда операций было достаточно int'а равного 32 битам и так же очень не хотелось ломать обратную совместимость. Поэтому был введен новый тип под названием size_t который был привязан уже не к фиксированному числу, а к максимально возможному целочисленному типу для данной платформы. — Критикуйте

Andrey
04.09.2017
12:46:50
то есть массив объявляю как int[][] a;

Pavel
04.09.2017
12:48:02
Почему бы просто не написать что size_t это максимально возможное значение адреса ячейки памяти, не пойму

Andrey
04.09.2017
12:48:14
size_t это uint/ulong, ptrdiff_t - int/long

Andrey
04.09.2017
12:49:59
я хочу очистить массив от массивов (:

Oleg
04.09.2017
12:50:02
можно очистить сам массив массивов: a.length = 0

Andrey
04.09.2017
12:50:05
которые в нем есть

да, прочитал об этом, а это правильно?

Google
Maxim
04.09.2017
12:50:37
короче, расставляем точки над i, в object.d есть такая штука: version(D_LP64) { alias ulong size_t; alias long ptrdiff_t; } else { alias uint size_t; alias int ptrdiff_t; }

Dmitry
04.09.2017
12:50:41
не максимальный целочесленный, а всё-таки размер указателя
а максимальный тип получается равен максимальному размеру указателя?

Oleg
04.09.2017
12:50:48
Maxim
04.09.2017
12:51:14
D_LP64 — это Pointers are 64 bits

Andrey
04.09.2017
12:51:14
как-то непривычно и странно выглядит. и - если у меня массив массивов объектов, то они как там потом по памяти - соебер их сборщик мусора или нет (вечно беспокоюсь)?

Oleg
04.09.2017
12:51:15
gc жи есть ☝️

Andrey
04.09.2017
12:51:51
gc жи есть ☝️
да все сомневаюсь в нем (:

Oleg
04.09.2017
12:52:11
отпусти это и живи спокойно)

ну или не отпускай и беспокойся)

ну в простых задачах норм

Dmitry
04.09.2017
12:52:45
@deviator просто выше же обсуждали что размер указателя зависит от компилятора %)

Andrey
04.09.2017
12:53:02
ну я как представлю, что там объекты, их много, что вот обнулил указатель (или как там правильно) и бросил все на произвол судьбы - так не по себе

Oleg
04.09.2017
12:53:43
@deviator просто выше же обсуждали что размер указателя зависит от компилятора %)
чёт я пропустил, и это вроде не совсем так. да и я не понял на какой сообщение ответ)

Andrey
04.09.2017
12:54:17
Иногда GC доставляет боль, может напишу об этом в статье
было бы познавательно. потому что читаю переводную прессу, вроде бы понятно, но все равно сомнения порой терзают

Dmitry
04.09.2017
12:54:43
не от компилятора, а от платформы
https://www.viva64.com/ru/k/0044/ "размер указателя зависит от конкретной реализации компилятора и не связан напрямую с разрядностью используемой платформы"

Andrey
04.09.2017
12:55:04
так мы ж про Ди

Dmitry
04.09.2017
12:55:09
а тут все иначе?

Oleg
04.09.2017
12:55:28
а тут все иначе?
"кто как хочет, так и д..."

Google
qwerty
04.09.2017
12:55:42
делает

Pavel
04.09.2017
12:55:44
Теоретически я могу представить что компилятор с++ эмулирует 64битный указатель на 32битной платформе

Oleg
04.09.2017
12:55:54
Pavel
04.09.2017
12:55:57
Чтобы сохранять совместимость.

qwerty
04.09.2017
12:56:12
?

Oleg
04.09.2017
12:56:21
Чтобы сохранять совместимость.
какая-то странная теория

совместимость чего с чем?

Maxim
04.09.2017
12:56:49
короче, конкретно в D size_t и ptrdiff_t зависит от размера указателя платформы, так написано в object.d, я выше кинул)

Pavel
04.09.2017
12:56:56
Чтобы говнокодеры могли хардкодить 64битные адреса и это работало бы на 32 битах )

Oleg
04.09.2017
12:57:02
старого 64 битного кода с новой 32битной платформой, которая умеет в 64-битные указатели?

Andrey
04.09.2017
12:57:34
https://dlang.org/spec/type.html#size_t

Pavel
04.09.2017
12:58:15
Или более человечный вариант - когда на 32битной платформе надо скомпилировать 64битный код

Oleg
04.09.2017
12:58:52
ну так этот тип то как раз для этого и делали, чтобы применять там где подразумеваются размеры и адреса

Dmitry
04.09.2017
13:00:25
"type that is large enough to represent an offset into all addressible memory" т.е. максимально возможные размер смещения?

Pavel
04.09.2017
13:04:27
да

адрес это и есть смещение

Andrey
04.09.2017
13:05:24
но только положительные

Eto
04.09.2017
15:14:12


Опубликовал свою NodeJS-поделку. В первом раунде у неё было 558 секунд, во втором померла из-за ограничений по памяти на ноду (1.4 гига), о которых я не знал. Было понятно, куда доделывать, но не успел - а сейчас уже не интересно. Там особенного ничего наверное нет, но если у кого-то результат был хуже, то можно подглядеть, как работало у меня. Спасибо за конкурс ? https://github.com/oleggromov/hlc2017

Google
Pavel
04.09.2017
15:17:54
Кстати если бы я шел в решении не от навороченных фреймворков к простым решениям а наоборот, может и повыше место занял бы :)

Вчера копал кишки libasync, там тоже много всяких наворотов, выделение буфера под события каждый раз, обнуление памяти и т.д.

Andrey
04.09.2017
15:18:52
там командой можно было участвовать?

Pavel
04.09.2017
15:19:05
Нет конкурс одиночный

Eto
04.09.2017
15:24:50
Можно было поучаствовать командой, но никому не сказать. :)

Dmitry
05.09.2017
08:26:45
Интересный тред пошел https://www.linux.org.ru/news/development/13651713/page8?lastmod=1504599904979#comment-13659347

Я читал что в в Go указатели какие-то обрезанные. Вопрос. В чем их обрезанность?

Ievgenii
05.09.2017
08:51:33
Они Евреи))) (без обид, просто не сдержался)

Maxim
05.09.2017
09:00:31
в Go нет адресной арифметики

Dmitry
05.09.2017
09:01:33
тоесть указатели там полноценные?

Admin
ERROR: S client not available

Maxim
05.09.2017
09:01:41
т.е. можно объявить указатель, получить указатель на переменную (&) и разыменовать его

Dmitry
05.09.2017
09:01:45
Но я к примеру не могу сделать +1 к указателю?

Maxim
05.09.2017
09:01:53
да

Dmitry
05.09.2017
09:02:30
а где адресная арифметика бывает полезна?

Maxim
05.09.2017
09:02:54
это штука опасная)

ну, скажем, в Си массив — это просто указатель на его начало, соответственно, по массиву можно пройтись, просто увеличивая значение указателя)

строки так удобно обрабатывать, потому что они в Си заканчиваются нулем, и возможны такие конструкции: void processString(char *str) { char *s = str; do { //do something with string } while(*(++s) != 0); }

Dmitry
05.09.2017
09:09:53
Не в D )
в плане?

Google
Dmitry
05.09.2017
09:10:49
Кстати, а как понять какие функции можно в режиме betterC использовать, а какие нет? к примеру canFind в betterC не работает

Oleg
05.09.2017
09:10:59
Я же вроде говорил, что на d не сталкивался с необходимостью её где либо использовать

Maxim
05.09.2017
09:12:44
ну и сразу можно отбросить все, что работает с GC

Dmitry
05.09.2017
09:13:01
а как по ним понять то что они его юзают?

Maxim
05.09.2017
09:13:12
вот, кстати betterC — это тот случай, когда в D может пригодиться адресная арифметика)

а как по ним понять то что они его юзают?
как минимум все, что принимает на вход или возвращает динамические массивы и объекты)

я же правильно понимаю, что betterC — это D с отключенным GC?

Maxim
05.09.2017
09:16:50
ну и с вырезанным D рантаймом за ненадобностью

Oleg
05.09.2017
09:17:05
Ну да

Знаю только mir, из тех что используют betterC

Ned Ogl
05.09.2017
09:19:28
ну и с вырезанным D рантаймом за ненадобностью
Не полностью вырезанным, к сожалению. Пилю ось на D и так я долго возился с этим рантаймом, шописец

Oleg
05.09.2017
09:20:57
Там в спеке написано, что именно не работает в режиме betterC
Что не работает, но не написано какая часть std работает

Ned Ogl
05.09.2017
09:21:20
Oleg
05.09.2017
09:21:31
Ну не весь

Ned Ogl
05.09.2017
09:21:34
Что-то из core может работать

Maxim
05.09.2017
09:21:37
я вот сейчас читаю, вроде, в BetterC можно юзать замыкания, а они используют GC вроде как

в смысле, делегаты

Oleg
05.09.2017
09:22:07
Всё что с метапрограммированием должно работать

Ned Ogl
05.09.2017
09:22:21


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