Чтобы прочесть статью, пришлось лезть в "Историю". Спасибо вам, доблестные паладины правил. В русской Вики кто-нибудь занимается делом или все только срутся?!

Нейтральность править

Текст рекламного характера, возможно, перевод рекламной статьи от Digital Mars, на что указывают некоторые термины ("портирование" вместо "перенос"). Содержит по большей части критику C++ (основательную и безосновательную) без противопоставления языку D. Недостатки языка представлены как его преимущества. Содержит множество ляпов, например принадлежность грамматики языка к классу контекстно-свободных грамматик не относится к плюсам языка, это необходимое свойство для быстрого разбора исходного кода в синтаксические деревья, оно характерно почти для всех используемых языков. Выношу правку к обсуждению. 93.157.165.93 14:18, 1 сентября 2009 (UTC)PhilОтветить

92.46.195.33 15:19, 4 апреля 2010 (UTC) 92.46.195.33 15:19, 4 апреля 2010 (UTC)== Препроцессор ==Ответить

Насчет препроцессора не понятно, приведенный пример не показателен

Вместо:

#define MAX_INT 32767  // Объявление константы

#define true TRUE      // Создание псевдонимов

#if defined(LINUX)
// Код для Linux
#endif

в Си можно сделать так:

const uint MAX_INT=32767;  // Объявление константы

typedef true TRUE ;     // Создание псевдонимов

const int LINUX=0;  // Управляющая константа

if (LINUX)
// Код для Linux
else
// Иначе

Написаное выше для С языка с использованием препроцессора указывает препроцессору что взять, а что выкинуть, второй же пример по сути компилируется и оба куска будут в коде. Если это будет разделение кода виндоус и линукс то по сути она даже не скомпилируется... 92.46.195.33 15:19, 4 апреля 2010 (UTC) NicodriveОтветить

также,
 #define MAX_INT 32767
и
const uint MAX_INT=32767
- это не одно и тоже. В первом случае - это manifest constant, т.е. в скомпилированной программе не будет символа с именем MAX_INT --Александр Малахов 09:51, 9 ноября 2011 (UTC)Ответить


А вот как дела обстоят с модульностью? Ведь С/С++ не модульные языки. В них используется препроцессор для сборки из нескольких файлов одной общей портянки :

#include "some_file.h"

Что-то изменилось в этом отношении в D?
--90.189.173.121 15:28, 27 октября 2008 (UTC)Ответить

В английской и русских статьях совсем нет критики языка. Но так ведь не бывает, недостатки всё равно есть :) Хорошо бы написать про них 92.124.122.138 10:31, 22 января 2009 (UTC)DenОтветить

И как ты скомпилируешь код под линукс, с, например, винапишными вызовами? В C только дефайны решают эту проблему. 94.179.229.119 19:42, 3 декабря 2009 (UTC)Ответить

А какая разница, на каком языке писать код с винапишными вызовами? или в D придумали один общий интерфейс для любой операционной системы? 109.75.192.71 16:28, 17 февраля 2010 (UTC)Ответить
Имеется ввиду, когда в одном проекте код и для Linux, и для Windows, разделённый #IFDEF'ами (например, работа с файловой системой). --Александр Малахов 09:51, 9 ноября 2011 (UTC)Ответить

Язык сверхвысокого уровня? править

Что-то мне не понятно: давно ли D является языком сверхвысокого уровня? Это обычный язык высокого уровня. 89.179.64.51 09:18, 8 июня 2009 (UTC) AndreyОтветить

Сомнительная нейтральность править

Статья предвзято подходит к описанию языка. Нет сравнений с другими языками по практике применения, а не просто по внешнему виду кода, отсутсвие многих вещей подается как преимущества (раздел "Чего нет в языке D"). Не указывается малый объем родных системных библиотек. Необходимо переписать с более взвешенным подходом. Иначе получается что язык D - решение всех-всех проблем программирования. 93.81.70.76 21:01, 25 августа 2009 (UTC)АлександрОтветить

Требуется раздел "Критицизм" Сам пользовался языком. Мои минусы:

  • практически невозможно оторвать управление сборкой мусора
  • классы которые всегда "по ссылке" теряют в скорости работы с ними (по сравнению с классами по значению, возможными в C++)

95.188.113.24 21:29, 24 октября 2009 (UTC)ДенисОтветить

По поводу классов по значению. В Ди есть "struct" - тот же класс, но en:value type и без наследования. Если нужно наследование (т.е. полиморфизм), то в С++ вы всё равно будете создавать класс через new.
К тому же, это автоматически решает проблему en:Object slicing --Александр Малахов 08:10, 11 ноября 2011 (UTC)Ответить
По поводу сборщика мусора. Есть ручное управление памятью (*alloc / free) и возможность отключить сборщик. Конечно, при отключенном GC многие вещи из языка и библиотеки использовать нельзя (например, конкатинация, slicing встроенных массивов), но эти вещи в принципе не возможны без GC с таким сжатым синтаксисом - сравните с С++. Если не ошибаюсь, есть флаг компилятора, с которым будут ошибки при использовании чего угодно, связанного с GC. Т.е. отдельные модули можно скопилировать с этим флагом, а потом использовать в проекте. Не спорю, это не предел мечтаний, но согласитесь, далеко не "практически невозможно" --Александр Малахов 08:10, 11 ноября 2011 (UTC)Ответить

О нейтральности править

В Ди используется сборщик мусора. В Си появление мусора (утечек памяти?) всего лишь особенность "кривого" программирования. В описании Ди сказано, что существуют разные типы массивов, а так же ссылки и т. д. вместо указателей, и это представлено как плюс Ди. В Си используются простые гибкие указатели - это плюс Си. Как первый раз прочитавший статью о Ди, могу уверенно сказать, что ее надо очистить от "рекламы личных предпочтений". Кому-то удобен Си, кому-то Ди. В статье о нем лучше убрать рекламу, заменив ее на обычное сравнение.

Так же статья написана немного непонятно. Возможно, станет более понятной после ее очистки от рекламы.

PoemWriter 17:17, 14 сентября 2009 (UTC)Ответить

В Ди есть
  • указатели
  • адресная арифметика
  • cast'ы
  • стандартная библиотека Ди содержит стд. библ. Си (модули std.c.*)
  • в силу предыдущего, доступны *alloc / free, т.е. ручное управление памятью
Таким образом, в этом плане статья верна - у Ди нет недостатков по сравнению Си (кроме размера языка :) ).
Также, ваше утверждение по поводу утечек памяти как миниму спорно. По крайней мере, все признаные эксперты С++, кого читал по этому поводу, сходятся на том, что в большой системе (скажем, больше 100К строк) практически невозможно уследить за памятью. И что вручную управлять нужно только в критических участках кода (Stroustrup, Herb Sutter, Alexandrescu, Bruce Eckel. Такое же мнение читал в статье программистов Unreal Engine. А также, очевидно, создатели Java, Delphi, C#)
--Александр Малахов 02:41, 11 ноября 2011 (UTC)Ответить

Особенности править

К уже отмеченному: статья не создаёт законченное представление о языке: не понятно как реализована модульность, в чём отличие от C#. Создаётся впечатление, что это не-MS-C# с небольшими изменениями...

Какие могут быть АИ на то что "Сбор мусора избавляет от утомительного написания кода", "Методика сбора мусора делает жизнь проще"? Это известно любому программисту, а если вы не программист - нечего и делать в этой статье.

Кстати это что такое "Сбор мусора"? Кому-то не терпится показать свою грамотность?

Авторское право править

Статья является переводом обзора с офф. сайта (подробно не проверял, есть ли различия). Сейчас здесь, изначально было здесь. --Александр Малахов 02:52, 10 ноября 2011 (UTC)Ответить

Перевод практически полностью повторяет оригинал? Он подпадает под нарушение авторских прав?--extern 03:22, 10 ноября 2011 (UTC)Ответить
Насколько я смотрел - слово в слово. В авторском праве я не разбираюсь вообще. Но если нужно разрешение автора (скорее всего, это Walter Bright или Andrei Alexandrescu), то я могу попробовать с ними связаться. Почему-то мне кажется, что создатели языка не станут препятствовать его продвижению :). --Александр Малахов 02:50, 11 ноября 2011 (UTC)Ответить
Нужно пройти процедуру ВП:ДОБРО - выяснить авторов текста, связаться с ними, получить запрос по почте. Проще переписать.--extern 08:00, 11 ноября 2011 (UTC)Ответить
Уверен на 100%, что разрешение от авторов не проблемма и это выполнимо максимум за неделю-две. Меня больше волнует ситуация с переводом - нужно ли разрешение от переводчика (вероятно, было взято с внешнего сайта, но это не точно) ? --Александр Малахов 16:57, 11 ноября 2011 (UTC)Ответить
Т.к. на Википедию захожу с логином редко и не знаю как настроить авто-оповещение -- если нужно будет получить разрешение от авторов, то я могу помочь. Мой контактный адрес a.malahov at mail точка com --Александр Малахов 03:56, 16 ноября 2011 (UTC)Ответить

Объявление против описания править

Возможность инициализации внутри класса добавлена в C++11 leha-bot 12:16, 29 августа 2012 (UTC)Ответить

Официальный компилятор языка D переведён в разряд свободного ПО править

Источники: новость на OpenNET, обсуждение на dlang.org, обсуждение на reddit.com, pull request github.com--Amalofeev (обс.) 22:34, 10 апреля 2017 (UTC)Ответить