D: А как насчет потоков?

#stream #d

#поток #d

Вопрос:

D кажется языком с очень высоким потенциалом, и мне очень интересно, что ждет его в будущем. Однако мне любопытно, есть ли какие-либо обсуждения по поводу включения потоков в D? Потоки C очень помогли мне в прошлом, и они кажутся намного чище, чем использование таких функций, как printf / writefln или любых других.

Комментарии:

1. Какой именно функциональности, по вашему мнению, не хватает?

2. То, как вы читаете (записываете) консоль, файлы и т.д., не имеет большого значения. Однако в C я счел полезным передавать потоки в качестве параметров функции (либо std::ostreamamp; or std::istreamamp; ), не говоря уже о перегрузке операторов << и >> в моих пользовательских классах, что иногда может быть очень полезно, особенно при написании классов, которые абстрагируют математические понятия, такие как дроби или комплексные числа. В принципе, потоки намного более универсальны и допускают более общее программирование.

3. Я согласен. Использование потоков гораздо более WYSIWYG, чем старый стиль printf. В этом действительно разница между int i = Add (4,3) и int i = 4 3. Та же функциональность, но вряд ли та же самая.

Ответ №1:

В настоящее время ведутся разговоры об отказе от текущего дизайна std.stream и его переписывании. Андрей Александреску некоторое время назад опубликовал интерфейсы для предлагаемого нового дизайна, основанного на диапазонах D2. К сожалению, сообществу не хватает рабочей силы, и оно пытается наладить работу с целой кучей другой библиотечной поддержки, такой как сетевое взаимодействие, параллелизм, API баз данных, контейнеры и т.д. Потоки стоят на повестке дня, но не на первом плане.

Ответ №2:

Ну, текущий интерфейс потоковой передачи находится в http://www.digitalmars.com/d/2.0/phobos/std_stream.html

Но я думаю, что когда-нибудь это будет переработано.

Ответ №3:

У D есть стандартный способ передачи таких вещей, как файл, открытое сетевое подключение и стандартный вывод. (Смотрите другие ответы) У него также есть стандартный способ преобразования структуры / объекта в строку (toString, если оно не было изменено). Лично я считаю, что это дает вам все части потоков C , которые мне нравятся. Я был бы против добавления оператора, перегружающего вещи, поскольку это делает такие вещи, как разделение данных и форматирование, практически невозможными.