@dlangru

Страница 402 из 719
Evgeny
08.02.2018
11:19:48
и будет тебе nothrow

если хочется без GC, то добавляй @nogc, но тогда придется отказаться от большой части фобоса, от многих фишек с массивами. Короче тоже самое что и в betterC

лучше бы научили обычный режим избавляться от ненужного мусора

кстати, если ты в режиме betterC сделаешь new ты думаешь оно выдаст ошибку? А вот хрен там. Ошибка вылезет только на стадии линковки

Google
Maxim
08.02.2018
11:25:20
кстати, если ты в режиме betterC сделаешь new ты думаешь оно выдаст ошибку? А вот хрен там. Ошибка вылезет только на стадии линковки
ну это логично, betterC родился личным костылем Уолтера, и до сих пор остается костылем)

по сути, кроме линковки он ничего и не меняет

Evgeny
08.02.2018
11:25:40
по сути, кроме линковки он ничего и не меняет
до последнего времени он еще и не умел деструкторы вызывать, сейчас умеет и смысл совсем потерялся

Maxim
08.02.2018
11:26:08
даже тесты и статические конструкторы писать можно, просто они вызываться не будут

Maxim
08.02.2018
11:27:23
как по мне, BetterC имеет право на жизнь в качестве «низкоуровневого» диалекта языка

эдакая удобная штука для того, чтобы не линковать всё, что нужно не линковать)

Evgeny
08.02.2018
11:27:50
как по мне, BetterC имеет право на жизнь в качестве «низкоуровневого» диалекта языка
но для этого он должен отсекать все недопустимые операторы на стадии компиляции.

Maxim
08.02.2018
11:28:22
ну так и развивать его надо в этом направлении, не всё же сразу)

Evgeny
08.02.2018
11:28:23
эдакая удобная штука для того, чтобы не линковать всё, что нужно не линковать)
ну вообще-то так должно быть всегда, даже без betterC. Зачем линковать то что не нужно линковать?

Pavel
08.02.2018
11:29:12
Ну да, должно быть, но по факту нет

Maxim
08.02.2018
11:29:22
ну вот видишь, деструкторы не вызывались из-за того, что завязаны на рантайм, scope(exit) туда же, потом это починили)

Google
Maxim
08.02.2018
11:30:00
осталось дать возможность перегрузки new и delete, и получим BetterC++

Evgeny
08.02.2018
11:30:27
а то delete вообще объявлен deprecated уже лет 10 как :)

10 конечно утрированно, но очень давно

кстати new можно перегрузить через зад, оторвав стандартный рантайм, и написав свой вариант.

Maxim
08.02.2018
11:32:50
кстати new можно перегрузить через зад, оторвав стандартный рантайм, и написав свой вариант.
так можно много всего сделать, например, нормальный GC или GC на выбор, как в яве)

Dmitry
08.02.2018
11:33:04
D3 все же нужен... много лишнего наворочено

Ди во вторые плюсы превращается

Pavel
08.02.2018
11:33:37
А что бы ты убрал?

Maxim
08.02.2018
11:33:49
мне кажется, только со всякими атрибутами намудрили, остальное пока ок)

Evgeny
08.02.2018
11:34:24
safe по дефолту, выкинуть inout

транзитивный const и immutable - в пень

Maxim
08.02.2018
11:35:17
safe по дефолту поломает старые исходники)

Evgeny
08.02.2018
11:35:26
ну так это же D3

D2 и D1 тоже несовместимы

Maxim
08.02.2018
11:36:05
ну ради атрибутов форкать язык и делать его несовместимым — не рационально)

Evgeny
08.02.2018
11:36:32
ну ради атрибутов форкать язык и делать его несовместимым — не рационально)
нетранзитивность квалификаторов тоже очень серьезное изменение, ну GC выкинуть или сделать ARC

Maxim
08.02.2018
11:37:17
Evgeny
08.02.2018
11:38:00
я бы вообще сделал бы все как в плюсах , только с дишным синтаксисом

Google
Evgeny
08.02.2018
11:38:24
идеальный для меня язык

если бы в плюсах сделали нормальную рефлексию, макросы и человеческие шаблоны, я бы вернулся на него незадумываясь

Dmitry
08.02.2018
11:39:44
А что бы ты убрал?
Миксины, аттрибуты бы упростил, файберы бы на мотив горутин сделать

Evgeny
08.02.2018
11:40:06
Миксины так просто убрать нельзя, только на макросы заменить

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

Dmitry
08.02.2018
11:41:07
Ряд конструкций сделал бы попроще. Уж больно мне for in в питоне нравится

Свитч бы выкинул и паттерн матчинг сделал бы вместо него

Dmitry
08.02.2018
11:42:15
Просто надо чтобы язык не был избыточным

Pavel
08.02.2018
11:42:21
файберы на мотив горутин, значит встраивать их поддержку в компилятор
Но вот стандартный event loop был бы весьма кстати, не хватает его очень. Приходится пилить 2 версии программ - для стандартной библиотеки и для vibe

Evgeny
08.02.2018
11:42:44
Свитч бы выкинул и паттерн матчинг сделал бы вместо него
нормальный паттерн-матчинг не сделаешь, а если и сделаешь, то получится хаскель

Pavel
08.02.2018
11:42:54
А легкую асинхронность хочется использовать почти всегда.

Evgeny
08.02.2018
11:43:13
switch - норм, у нас тут не ФП

Dmitry
08.02.2018
13:06:22
От switch'a до pattern matching'a уже рукой подать, их можно весьма органично объединить: https://code.haxe.org/category/beginner/pattern-matching.html

Evgeny
08.02.2018
13:34:07
такой паттерн-матчинг достаточно примитивен

но его можно реализовать, наверное

такой, честно говоря, не особо нужен

хотя матч по структурам неплох, да

Oleg
08.02.2018
13:39:07
Google
Oleg
08.02.2018
13:40:25
и чем mixin'ы не нравятся? отладка сложновата, но в остальном инструмент отличный

кстате лол http://m.cnews.ru/news/top/2018-02-08_v_rossii_napishut_svoj_obektnoorientirovannyj

что за защиту данных там придумали я не понимаю

просто похоже на очередной распил, целесообразности не вижу

если кто-то понял про модульную защиту данных, объясните пожалуйста)

Pavel
08.02.2018
13:45:14
да это обыкновенная простыня от журнализдов, которые услышали слово "модульность" и подумали что оно очень крутое и сложное. И вписали в свою статью.

Без прочтения како-нибудь нормального whitepaper (как сейчас модно это называть) даже обсуждать особо не имеет смысла.

Oleg
08.02.2018
14:03:07
ну тоже верно

Dmitry
08.02.2018
14:21:41
На форуме опять про D3 говорят

Admin
ERROR: S client not available

Pavel
08.02.2018
14:27:00
Ну вот про go например тоже очень много говорят, но все их крики про дженерики и исключения тупо игнорятся. И нормально плывут.

Igor
08.02.2018
15:02:55
Зачем строить свою иерархию? Просто не используй new
а как это выглядит практически в таком случае - я пишу библиотеку, которая может бросать nongc екскпшны. Я должен в доке библиотеки сказать юзеру что он в catch должен вызывать dispose на exception (или как оно зовется в случае аллокаторов)?

Igor
08.02.2018
15:04:19
ну юзер будет забывать, будет течь

проблема только в этом

Kirill
08.02.2018
15:07:44
Это не спортивно - вбросить и уйти :)

Dmitry
08.02.2018
15:08:25
https://forum.dlang.org/thread/mvhddaendngqwbmlzdei@forum.dlang.org

Evgeny
08.02.2018
15:12:49
проблема только в этом
да, есть дип на решение этой проблемы, когда запилят - незнаю

Google
Pavel
08.02.2018
15:19:58
да, есть дип на решение этой проблемы, когда запилят - незнаю
А нельзя ли в деструктор класса запихнуть самоочистку?

Evgeny
08.02.2018
15:20:27
А нельзя ли в деструктор класса запихнуть самоочистку?
нет, потому что деструктор класса вызывается сборщиком мусора

Pavel
08.02.2018
15:22:53
Хм ну тогда, насколько я помню, ведь можно эту выделяемую память вручную добавить в писок GC

https://wiki.dlang.org/Memory_Management

// allocate memory for the object auto memory = malloc(size)[0..size]; if(!memory) { import core.exception : onOutOfMemoryError; onOutOfMemoryError(); } writeln("Memory allocated"); // notify garbage collector that it should scan this memory GC.addRange(memory.ptr, size);

Evgeny
08.02.2018
15:24:59
дык фишка-то в том, что GC не используется, иначе зачем все эти пляски?

Pavel
08.02.2018
15:25:53
Если он не используется библиотекой, то ничего не произойдет. А если используется в проекте с этой библиотекой, то память будет в итоге вычищена как надо.

void heapDeallocate(T)(T obj) { import core.stdc.stdlib : free; import core.memory : GC; // calls obj's destructor destroy(obj); // garbage collector should no longer scan this memory GC.removeRange(cast(void*)obj);

Evgeny
08.02.2018
15:54:23
Если он не используется библиотекой, то ничего не произойдет. А если используется в проекте с этой библиотекой, то память будет в итоге вычищена как надо.
то есть если гц не используется и пользователь забыл удалить, то оно будет течь. Если гц используется, то накой вообще самоочищаться в деструкторе, если можно сразу эксепшн в гц памяти создать?

Oleg
08.02.2018
15:54:34
а накой вообще исключения выделять в куче?

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

статически выделить память, менять поля перед выбрасыванием

Evgeny
08.02.2018
15:55:26
а накой вообще исключения выделять в куче?
что бы использовать их в nogc коде

Oleg
08.02.2018
15:55:45
что бы использовать их в nogc коде
описал то, про что я говорю выше

так же nogc

Pavel
08.02.2018
15:57:22
то есть если гц не используется и пользователь забыл удалить, то оно будет течь. Если гц используется, то накой вообще самоочищаться в деструкторе, если можно сразу эксепшн в гц памяти создать?
В первом случае все верно. Во втором случае - на той, что из библиотеки ты не можешь понять, будет ли во внешнем проекте включен GC или отключен.

Если включен, то тогда разработчик проекта может использовать твои эксепшены как обычно и они будут нормально подищаться GC, но при этом вся библиотека nogc совместима.

Evgeny
08.02.2018
15:59:04
В первом случае все верно. Во втором случае - на той, что из библиотеки ты не можешь понять, будет ли во внешнем проекте включен GC или отключен.
ну а если пользователь не забудет сделать десторой, то деструктор вызовется и объект второй раз самоуничтожится

Pavel
08.02.2018
16:00:03
Это должно выглядет как метод самого Exception видимо

catch (Exception e) { ... e.dispose(); }

То есть голый destroy запрещен

Igor
08.02.2018
16:02:16
статически выделить память, менять поля перед выбрасыванием
отговаривают от этого, говорят что грязный хак. аргументы не понял, но подробности есть на dlang idioms

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