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

Содержимое страницы недоступно на других языках.
Материал из Викиучебника — открытых книг для открытого мира
Это страница обсуждений и предложений для статьи Язык программирования D
Правила обсуждений


D и C/C++[править]

Disclaimer: это первая статья про D, которую я читаю. Однако у меня есть опыт разработки на C и C++.

  • С одной стороны написано:

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

а потом:

Переход от C/C++ к D должен проходить без проблем. Программисту не придется привыкать к другому подходу написания кода.

  • Непонятно, зачем так подчёркивается тот факт, что для D не нужна виртуальная машина. Может возникнуть впечатление, что D нельзя выполнять на виртуальной машине. Или действительно нельзя (в смысле «подходящую VM очень сложно реализовать»)?

//Всё тут правильно! То что виртуальная машина не нужна - это очевидный плюс. И как вообще можно выполнять программы на виртуальной машине, если они в нем не нуждаются? как ворд запустить через Java машину или Net Framework? Вы путаетесь в понятиях

  • «Приведение типов в реальном времени.» — непонятно, что имелось ввиду (наверное, имелось ввиду «во время выполнения», но это мои догадки).
  • Из раздела «Модули» наверное стоит убрать упоминание #pragma once (она не соответствует стандарту).
  • «Главной причиной медленной работы компиляторов является то, что в каждом модуле исходного кода необходимо обработать огромное количество заголовочных файлов.» — странный аргумент, против include обычно приводят другие. Тем более что я не вижу, что include действительно тормозит.
$ cat > a.cc
#include <iostream>
#include <algorithm>
#include <vector>
#include <map>
#include <queue>
#include <stack>
#include <deque>
#include <bitset>
#include <functional>

$ time cpp a.cc | wc -l
33037 <-- количество строк кода

real	0m0.082s
user	0m0.072s
sys	0m0.008s
  • «компилятор уже сам будет конвертировать функцию в не виртуальную, если она не переопределяется в производных классах» — а откуда компилятор знает, что в исходном коде, на который он «смотрит», содержится весь код, который будет работать с классом? Например, если мы пишем библиотеку, в которой будет класс, от которого пользователь должен унаследовать свой класс? То есть, при компиляции кода библиотеки пользовательского класса ещё нет и поэтому компилятор о нём знать не может.
  • «Различие между операторами точка (.) и стрелка (->). В их различии нет необходимости» — такое заявление (к тому же, без аргументов) смутит тех, кто хоть немного программировал на C, но впервые слышит о D.
  • «Объявление против описания» Не стоит так (на уровне схожести ключевых слов и количества символов) сравнивать C++ и D. Дело в том, что в C++ конструкция class Foo { /*...*/ }; не вызывает генерирования ни единой машинной инструкции до тех пор, пока Foo не используется в этом файле. А в D, видимо, схожая конструкция приводит к компиляции всех методов. Поэтому class Foo {}; в C++ можно неограниченно включать в другие файлы через #include и это не повлияет на размер результирующего объектного файла, если класс не используется, а не-inline методы и статические члены класса нужно описывать единожды в отдельном файле. А в D нет include, поэтому там всё по-другому. Вот как именно это работает в D, в статье, к сожалению, не говорится (а хотелось бы знать!).
  • «Динамические делегирования (closure) Встроенные функции и методы классов могут использоваться при делегировании обязанностей, что делает обобщенное программирование проще.» — closure — это «замыкание», то есть функция+её лексический контекст, а не «Динамические делегирования». Непонятно что автор хотел сказать в предложении, что такое «делегирование обязанностей» и как оно поможет при обобщённом программировании.
  • «Механизм обработки исключений языка D совместим с механизмом обработки исключений операционной системы.» — имеется ввиду SEH в Windows? Тогда должно быть прямо написано, что это Windows-специфичная вещь.

Gribozavr 17:16, 2 января 2009 (UTC)[ответить]

Инструменты для работы[править]

Хотелось бы получить из учебника информацию - какие текстовые редакторы удобнее использовать для создания программ на D. --Dipsy 19:23, 9 мая 2011 (UTC)[ответить]

Эта информация есть на официальном сайте языка программирования [1] (раздел ресурсы). Oleg3280 (обсуждение) 17:07, 2 августа 2015 (UTC)[ответить]
Visual D, IDEs и Editors. Oleg3280 (обсуждение) 17:12, 2 августа 2015 (UTC)[ответить]

Ссылки[править]

В ссылках присутствует сайт dlang.ru, который уже около года в нерабочем состоянии. Только по этой причине был создан http://dlanguage.ru. Посему, ИМХО, разумно будет неработающий сайт из ссылок убрать, просто что бы не путать интересующихся.

Majestio (обсуждение) 16:43, 2 августа 2015 (UTC)[ответить]

Сайт работает. Ссылка на него есть в Википедии. Поэтому я и добавил его. Ссылку убрал. Oleg3280 (обсуждение) 17:03, 2 августа 2015 (UTC)[ответить]
Majestio. Если найдёте ошибки или неточности в этом учебнике — правьте смело. Oleg3280 (обсуждение) 17:18, 2 августа 2015 (UTC)[ответить]