Обсуждение:Язык программирования 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-специфичная вещь.
Инструменты для работы
правитьХотелось бы получить из учебника информацию - какие текстовые редакторы удобнее использовать для создания программ на D. --Dipsy 19:23, 9 мая 2011 (UTC)
- Эта информация есть на официальном сайте языка программирования [1] (раздел ресурсы). Oleg3280 (обсуждение) 17:07, 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)