Обсуждение:D (язык программирования)
Эта статья тематически связана с вики-проектом «Информационные технологии», цель которого — создание и улучшение статей по темам, связанным с информационными технологиями. Вы можете её отредактировать, а также присоединиться к проекту, принять участие в его обсуждении и поработать над требуемыми статьями. |
Чтобы прочесть статью, пришлось лезть в "Историю". Спасибо вам, доблестные паладины правил. В русской Вики кто-нибудь занимается делом или все только срутся?!
Нейтральность
[править код]Текст рекламного характера, возможно, перевод рекламной статьи от 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
- это не одно и тоже. В первом случае - это manifest constant, т.е. в скомпилированной программе не будет символа с именем MAX_INT --Александр Малахов 09:51, 9 ноября 2011 (UTC)const uint MAX_INT=32767
А вот как дела обстоят с модульностью? Ведь С/С++ не модульные языки. В них используется препроцессор для сборки из нескольких файлов одной общей портянки :
#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)
- Уверен на 100%, что разрешение от авторов не проблемма и это выполнимо максимум за неделю-две. Меня больше волнует ситуация с переводом - нужно ли разрешение от переводчика (вероятно, было взято с внешнего сайта, но это не точно) ? --Александр Малахов 16:57, 11 ноября 2011 (UTC)
- Нужно пройти процедуру ВП:ДОБРО - выяснить авторов текста, связаться с ними, получить запрос по почте. Проще переписать.--extern 08:00, 11 ноября 2011 (UTC)
- Насколько я смотрел - слово в слово. В авторском праве я не разбираюсь вообще. Но если нужно разрешение автора (скорее всего, это Walter Bright или Andrei Alexandrescu), то я могу попробовать с ними связаться. Почему-то мне кажется, что создатели языка не станут препятствовать его продвижению :). --Александр Малахов 02:50, 11 ноября 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)