Обсуждение:D (язык программирования)

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

message: Текст рекламного характера, возможно, перевод рекламной статьи от 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
replies: text: также,  #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)

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

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

message: Статья предвзято подходит к описанию языка. Нет сравнений с другими языками по практике применения, а не просто по внешнему виду кода, отсутсвие многих вещей подается как преимущества (раздел "Чего нет в языке D"). Не указывается малый объем родных системных библиотек.
Необходимо переписать с более взвешенным подходом. Иначе получается что язык D - решение всех-всех проблем программирования.
93.81.70.76 21:01, 25 августа 2009 (UTC)Александр
Требуется раздел "Критицизм"
Сам пользовался языком.
Мои минусы:
*практически невозможно оторвать управление сборкой мусора
*классы которые всегда "по ссылке" теряют в скорости работы с ними (по сравнению с классами по значению, возможными в C++)
95.188.113.24 21:29, 24 октября 2009 (UTC)Денис
replies: text: По поводу классов по значению. В Ди есть "struct" - тот же класс, но en:value type и без наследования. Если нужно наследование (т.е. полиморфизм), то в С++ вы всё равно будете создавать класс через new. К тому же, это автоматически решает проблему en:Object slicing --Александр Малахов 08:10, 11 ноября 2011 (UTC)

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

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

text: * указатели

text: * адресная арифметика

text: * cast'ы

text: * стандартная библиотека Ди содержит стд. библ. Си (модули std.c.*)

text: * в силу предыдущего, доступны *alloc / free, т.е. ручное управление памятью

text: Таким образом, в этом плане статья верна - у Ди нет недостатков по сравнению Си (кроме размера языка :) ).

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

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

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

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

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

message: Источники: новость на OpenNET, обсуждение на dlang.org, обсуждение на reddit.com, pull request github.com--Amalofeev (обс.) 22:34, 10 апреля 2017 (UTC)
thread_title:  Официальный компилятор языка D переведён в разряд свободного ПО