LINUX.ORG.RU

QtD 0.1

 ,


0

0

Вышел первый релиз QtD — биндинга языка D к фреймворку Qt. Уже работает более чем 150 Qt классов из core, gui и opengl.

Полный список

QtD использует tango и распространяется под GNU GPL v3. Сейчас можно собрать только под GNU/Linux.

>>> Подробности



Проверено: svu ()
Ответ на: комментарий от anonymous

> вот попробовал сейчас QTD этот завести перематерился весь. то ему одно не нравится, то другое. Плюнул, ну его нах. Пусть пилят

лююдиии.. а у кого сабж из SVN собрался успешно?

anonymous
()
Ответ на: комментарий от anonymous

> - используемый тип или метод устарел или устарее в следующей версии
> - подключенная часть кода работает неправильно, еще не доделана, имеет проблемы или просто какие-то особенности (под Windows, с OpenGL итд)


собирал сейчас dev-libs/tango-9999 и ldc2-9999 из SVN. За какие-то 10-15 минут tango успело обновиться на пару ревизий. В процессе компиляции выдавало ворнинги "метод устарел, переименован, ищите в другом модуле".

anonymous
()
Ответ на: комментарий от naryl

>http://dprogramming.ru/d/

>"А что же С++? С++ - это замечательная, если не сказать гениальная объектная модель. Это превосходная, если не сказать максимальная, производительность. Это миллионы строк уже написанного кода на все случаи жизни. С++ - это мировая популярность, почти стандарт. Смело можно сказать, что это самый крутой язык, для самых крутых программистов."

r ★★★★★
()
Ответ на: комментарий от anonymous

под винду сабж тоже не собрался -- ругается на отсутствующий javagenerator.h. Впрочем, никто и не обещал (похоже, qtjambi собирается по-разному на разных платформах).

anonymous
()
Ответ на: комментарий от anonymous

>$ dmd2.bin phobos/helloworld.d
>object.d: module object cannot read file 'object.d'


>/// гуг


гугл на это выдаёт что-то из ньюсгруп, где пишут, что DMD не любит, когда его двигают не в ту папку, что по дефолту. Или надо рядом dmd.conf с настройками положить.

anonymous
()
Ответ на: комментарий от Reset

> .at() проверяет

Я знаю.

> Если нужна проверка, то пользуйся им.

Городи уебищный код только ради проверки выхода за границу?

> Если не хочется проверки на каждый чих и как следствие замедление скорости - пользуйся operator[]. Свобода выбора.

Бгг.

И как насчет итератора, его выход за границу проверяется?

tailgunner ★★★★★
()
Ответ на: комментарий от r

>>"А что же С++? С++ - это замечательная, если не сказать гениальная объектная модель. Это превосходная, если не сказать максимальная, производительность. Это миллионы строк уже написанного кода на все случаи жизни. С++ - это мировая популярность, почти стандарт. Смело можно сказать, что это самый крутой язык, для самых крутых программистов."

а продолжение?

>Но это также и часы, проведенные в поисках трудноуловимых ошибок, непонятность или правильнее сказать неочевидность многих вещей и, самое главное, время потраченное на его изучение. Говорят, что спустя годы программист С++ не знает любить ему или ненавидеть этот язык. Понимание красоты и гениальности приходит не сразу. Для этого нужно пройти большой путь. И путь этот никак не усеян розами.

>Мне думается, программисты С++ найдут в D для себя большую простоту, и возможно скорость разработки. А программисты на Java - доступ к функциям операционной системы и большую производительность. Конечно, у D есть некоторые черты, которые будут поначалу непонятны ни первым, ни вторым (например, динамические замыкания, транзитивные константы, сопоставление с образцом при инстанциации шаблонов или функциональный стиль при метапрограммировании), но, преодолев эти трудности, программисты получат в свое распоряжение мощный и удобный инструмент.

>Как говорит Walter Bright, D - это практический язык для практических целей. И я с этим полностью согласен. Аминь!

anonymous
()
Ответ на: комментарий от r

и он императивный. для некоторых задач больше функциональные подходят:)

anonymous
()
Ответ на: комментарий от naryl

>> Опишите что такое вообще LDC? как он используется и при чем тут D?

Читаем заголовок страницы по ссылке: LLVM D Compiler

А ну да. Это ж надо было по ссылке сходить. :)

А dmd что такое тогда? Чем LDC от GDC тогда отличается?

anonymous
()
Ответ на: комментарий от anonymous

> лююдиии.. а у кого сабж из SVN собрался успешно?

и да, народ -- на тот случай, если автор проекта это читает. Освойте уже в SVN расстановку тегов. Помечайте те ревизии, которые точно собираются, тегами. Собирайте в чистой среде, с нуля -- это ведь очень просто, написать 2 скрипта, в одном rm -rf $PROJECT_NAME && svn co http://... $PROJECT_NAME , в другом команды сборки вроде тех, из инструкции, что на страничке проекта висят. Далее, разработчик делает у себя svn up/svn ci, и выдаёт на-гора много руды (которая может не собраться в "чистой среде", но которая вроде бы работает на его машине http://www.codinghorror.com/blog/images/works-on-my-machine-starburst.png
http://www.codinghorror.com/blog/archives/000818.html) .. Другой разработчик проекта с ролью "тестер" или этот же, запускает в другом терминале эти два унылых скрипта, извлечение из SVN в отдельный каталог и сборку. Если сборка собирается успешно, он делает в этой сборке svn тег "builds_ok": svn copy trunk/ tags/builds_ok
В итоге, мы имеем в репозитории билды, которые гарантированно собираются в чистой среде из SVN. Каждый праздношатающийся анонимус, который заинтересуется проектом, захочет собрать, посмотреть, а возможно и чем-то помочь -- сможет это сделать. Его алгоритм простой: собрать из trunk, если нет, взять последний вариант из builds_ok, который ГАРАНТИРОВАННО собирается. Тут нет никакой Rocket science, просто тупые два скрипта, которые делают чистый билд, и выдают красный или зелёный свет. Хотя если делать всё по-уму, можно освоить и tinderbox или buildbot (посмотреть как это выглядит, можно здесь http://tinderbox.mozilla.org/Firefox3.1/ или здесь http://build.webkit.org/waterfall ). Но это уже программа-максимум.
Понятно, что основному и единственному разработчику впадлу проверять clean build. Но это может резко увеличить число желающих помочь проекту, да могут и другие тестеры-добровольцы найтись. Чтобы остальные ставили уже протестированное, а не не собирающийся сырец.

А то обидно ведь -- имеем потенциально неплохой проект, который не собирается из SVN. И ладно я, понимаю как двоичным поиском найти последнюю собирающуюся ревизию. Но кто-то другой (анонимус из поста выше) потыкается, наступит на грабли "не собирается", развернётся, и уйдёт. А мог бы, например допилить ещё вторую сотню классов, виджетов, протестировать на какой-то другой платформе, и т.п.

anonymous
()
Ответ на: комментарий от anonymous

> А dmd что такое тогда? Чем LDC от GDC тогда отличается?

DMD -- "официальный" компилятор от Волтера Брайта. Он же пишет стандартную библиотеку (рантайм) Phobos. Вторую стандартую библиотеку (Tango) пишет сообщество. В итоге, есть стабильный и нестабильный из SVN релизы этой Tango. Есть ещё третья стандартная библиотека, минимальный рантайм вроде Triton, но это уже к доктору.
DMD выходит под 2 архитектуры, Linux 32 bit и Windows 32 bit. В виде ZIP-архива, в котором лежат бинарники + исходники фронтэнда компилятора (парсер + лексер языка, заканчивающийся построением AST). Рядом лежит спецификация языка, и описание того, что выдаёт фронтэнд. Это "референсная" реализация компилятора, с открытым фронтэндом и закрытым бинарным бекендом "от Волтера".

GDC http://dgcc.sourceforge.net/ -- это порт на компилятор GCC, в виде патча к конкретным версиям GCC (4.1). Есть оверлей для gentoo, в котором gcc-4.1 собирается с USE-флагом d , с этим патчем. Правда, GCC уже ушёл вперёд на несколько версий, а патч до GCC-4.3.3 никто не портировал. Если почитать рассылку и SVN http://dgcc.svn.sourceforge.net/viewvc/dgcc/, правда выясняется, что жизнь на Марсе всё-таки есть. Только на основной страничке уже 2 года новостей никаких нет.
Итого, имеем спецификацию языка и 2 компилятора. GCC сам по себе довольно гибкий, можно например откомпилированное GCC промежуточное представление обрабатывать, в том числе и из D: http://languagemachine.sourceforge.net/gcc_interface.html (это если кому не хватит стд. средств метапрограммирования в D и захочется расширить компилятор -- это можно сделать , см. Java-to-D, D-to-D translator на http://languagemachine.sourceforge.net/documentation.html )

Чтобы жизнь малиной не казалось, есть ещё и третий компилятор. LDC aka LLVM D компилятор. LLVM -- это "высокоуровневая" виртуальная машина, для которой есть llvm-gcc и С фронтэнд clang (с,c++, objective C). LDC -- это ещё один фронтэнд вроде clang, только для языка D. "Компилятор" LDC использует в качестве настоящего компилятора LLVM , который в свою очередь, использует llvm-gcc. LLVM умеет генерировать исполняемый бинарный код, собственный регистровый байткод, или исходник на Си (который собирается gcc или своим llvm-gcc через clang).

По статусу активности этих проектов, самый свежий -- DMD от Волтера, потом LDC, потом GDC. Есть проект DStress http://www.prowiki.org/wiki4d/wiki.cgi?DStress http://dstress.kuehne.cn/www/dstress.html , на котором отслеживаются юнит-тесты компиляторов на соответствие спецификации языка.
По нему видно, что LDC немного остаёт. Правда, это оставание в конкретном проекте может быть и не существенно, ибо те тесты, которые он не проходит, в твоём конкретном проекте могут и не использоваться. То есть, LDC можно пользоваться в конкретном проекте, с оглядкой -- надо пробовать и смотреть по зависимостям.

anonymous
()
Ответ на: комментарий от tailgunner

> И как насчет итератора, его выход за границу проверяется?

зачем? что, итератор по определению может куда-то выйти?

anonymous
()
Ответ на: комментарий от anonymous

>> И как насчет итератора, его выход за границу проверяется?

> зачем?

Затем же, что и индекс.

> что, итератор по определению может куда-то выйти?

Про определение - не знаю, но на практике - может.

tailgunner ★★★★★
()
Ответ на: комментарий от tailgunner

> Про определение - не знаю, но на практике - может

Бггг.. итератор по множеству Х может выдать элемент не из Х? ну и костыли кругом

anonymous
()
Ответ на: комментарий от tailgunner

Итераторы, естественно, не проверяются, что положительно сказывается на производительности кода с их использованием. Предполагается, что ты либо будешь следить за их валидностью вручную (держа в голове подробности их поведения для каждого контейнера), либо будешь использовать стандартные алгоритмы STL (find[_if], remove[_if], for_each, count и т.д. и т.п.), и писать для них соотвествующие фунторы и предикаты.

Опять же, Мейерс в своей книге "эффективное использование STL" ясно намекает, какой из этих двух способов Ъ. Так что обращаемся к литературе и поменьше демонстрируем свою неграмотность.

d_a ★★★★★
()
Ответ на: комментарий от anonymous

> Бггг.. итератор по множеству Х может выдать элемент не из Х? ну и костыли кругом

В C++ любой T* является итератором типа T для множества типа T[]. И выходит он за границы легко и непринуждённо. Зато работает зверски шустро. Такова жизнь... то бишь C++.

const86 ★★★★★
()
Ответ на: комментарий от anonymous

>и да, народ -- на тот случай, если автор проекта это читает. Освойте уже в SVN расстановку тегов. Помечайте те ревизии, которые точно собираются, тегами. Собирайте в чистой среде, с нуля -- это ведь очень просто, написать 2 скрипта, в одном rm -rf $PROJECT_NAME && svn co http://... $PROJECT_NAME , в другом команды сборки вроде тех, из инструкции, что на страничке проекта висят. Далее, разработчик делает у себя svn up/svn ci, и выдаёт на-гора много руды (которая может не собраться в "чистой среде", но которая вроде бы работает на его машине http://www.codinghorror.com/blog/images/works-on-my-machine-starburst.png http://www.codinghorror.com/blog/archives/000818.html) .. Другой разработчик проекта с ролью "тестер" или этот же, запускает в другом терминале эти два унылых скрипта, извлечение из SVN в отдельный каталог и сборку. Если сборка собирается успешно, он делает в этой сборке svn тег "builds_ok": svn copy trunk/ tags/builds_ok

Прошу прощения, все-таки пока версия 0.1 и не все работает так как надо. Глупо на этой стадии говорить "не работает - а ну его нах". Не собирается не потому что svn нерабочий а потому что не у всех Qt установлена в одной и той же директории. Для удобства разработки я захардкодил адрес по которому находится QTDIR. Исправлю сейчас же. Да и потом на главной странице написано что для РУССКОГОВОРЯЩИХ обращаться на dprogramming.ru - you are welcome. Статус пока еще очень highly experimental, но лучше объявить пораньше, чтобы получить больше сообщений об ошибках. Это ведь opensource друзья, а некоторые тут выказывают проприетарный подход.

64 битными компиляторами пока не собирается, только 32 бит dmd linux. Потому что я этим набором пользуюсь.

anonymous
()
Ответ на: комментарий от anonymous

У кого не собирается, пока я не исправил залезте в скрипт generator/gen и поиграйте с переменной окружения QTDIR - у меня на ubuntu там лежат симлинки на unclude lib bin

anonymous
()
Ответ на: комментарий от d_a

> Так что обращаемся к литературе и поменьше демонстрируем свою неграмотность.

Дитёнок, а теперь приведи мне список моих ошибок.

tailgunner ★★★★★
()
Ответ на: комментарий от const86

> В C++ любой T* является итератором типа T для множества типа T[].

не любой. Это дырявая абстракция. "Итератор по множеству" => указатель валиден от T[0] до T[sizeof(T)/sizeof(T[0])-1]. Если Указатель указывает на T[-1], это не итератор для T[] по определению итератора.

anonymous
()
Ответ на: комментарий от anonymous

> Глупо на этой стадии говорить "не работает - а ну его нах".

ни в коем разе. Проект интересный, и если его собрать можно будет в полпинка на любой машине, он от этого только выиграет. Никаких "It works on my machine", сборка должна быть чётко воспроизводима на любой машине, в любой среде. В любом случае, дело нужное, респект и уважуха.

> 64 битными компиляторами пока не собирается, только 32 бит dmd linux. Потому что я этим набором пользуюсь.

вот про это лучше бы где-нибудь написать. Конфигурацию dmd/tango/версию qt, с которыми оно гарантированно собирается "на твоей машине". Чтобы не гадать, а точно знать, в какой конфигурации оно точно собирается.

anonymous
()
Ответ на: комментарий от d_a

>Итераторы, естественно, не проверяются, что положительно сказывается на производительности кода с их использованием.

Допустим есть в коде на D массив T[] и цикл foreach по нему. В каком месте сгенерированный код должен делать проверку на выход за пределы этого массива?

Absurd ★★★
()
Ответ на: комментарий от anonymous

Да-да, я знаю. Поймите меня тоже, я занимался этим один в течение 2,5 месяцев, это очень большая работа(причем большей частью в ней захватывающего мало). И сейчас очень много работы осталось(хотя человек который мне помогает и который учавстовал в php-qt говорит что на той стадии на которой сейчас qtd, php-qt имел версию 0.6). QTDIR на моей машине работает со значением /usr/share/qt4. Пробовал /usr - не работает.

anonymous
()
Ответ на: комментарий от Absurd

на каждой итерации форича.

// понял, к чему это. Итериторы не проверяются - имелось ввиду, что никто не запрещает сдлеать vector<T>::iterator p = cont.end()++; и получить тем самым инвалидный итератор.

d_a ★★★★★
()
Ответ на: комментарий от naryl

>Одному мне показалось, что API у QtD более легкочитаемый, чем у Qt?

Хмм... При всём уважении, но походу да. Показалось :) Хотя дело привычки, наверное.

eduard_pustobaev ★★
()
Ответ на: комментарий от tailgunner

>Городи уебищный код только ради проверки выхода за границу?

А что сложно написать наследника от vector у которого перегрузить operator[] добавив туда проверку?

anonymous
()
Ответ на: комментарий от anonymous

Система сборки -- жесть. Я про последний линковочный запуск dmd с сотней-другой файлов в одной строке в конце build.py. Линковка висит уже полчаса, неизвестно на каком файле. Разбил это на раздельно компиляцию и линковку, вроде бы чуть полегчало.
Попробую собрать ldc, mingw qt.
Да, и надо посмотреть, может d0xde прикрутить под линукс.

anonymous
()
Ответ на: комментарий от anonymous

> Привет, можно задать несколько вопросов по поводу твоего оверлея?
Этого? http://www.assembla.com/wiki/show/d-overlay Можно.

> 1. dmd-bin и (что-то одно из) ldc/ldc2 вместе работают?

Работают. USE="dmd ldc tango" emerge dmd-bin ldc tango
Или даже USE="dmd ldc tango phobos" emerge dmd-bin:1 dmd-bin:2 ldc ldc2 tango phobos
Если что-то не так в USE флагах, ебилд предупредит.

> или tango надо отдельно каждый раз собрать USE="-dmd ldc" emerge ldc и USE="dmd -ldc" emerge dmd-bin?

Если нужно для обоих компиляторов, то ставим оба USE-флага:
$ USE="dmd ldc" emerge tango
$ USE="tango" emerge dmd-bin

> 2. ldc и ldc2 вместе работают?

ldc2 сейчас вооще не собирается и официально не работает. Та ошибка - в makefile'е. Лень разбираться. На работоспособность не влияет.

> 3. eselect dmd list работает, нормально? а то у меня выдал только "[1] dmd1-tango", как добиться чтобы там было и "dmd2-tango" ?

Работает нормально. Никак. tango на D2 ещё не портировали. Можно добиться dmd1-phobos, dmd1-tango и dmd2-phobos.

> 4. нестандартный каталог для слотового dmd-bin работает нормально?

Очевидно, компилятор не знает где искать исходники. :) Нужно вызывать dmd.dmd{1,2}-{phobos,tango} или настроить в eselect и вызывать просто dmd. Там все пути указаны.

> $ dmd helloworld.d

>helloworld.d(1): module stdio cannot read file 'std/stdio.d'

В eselect установлена dmd1-tango Нужно dmd{1,2}-phobos.

> $ cd ../tango && dmd helloworld.d

> helloworld.o:(.data+0x38): undefined reference to `_D5tango2io7Console12__ModuleInfoZ'

Это фича. :) Нужно указать -L-ltango-user-dmd компилятору. Похоже это было не лучшее решение. Уже поправил.

> # dmd2.bin -I/usr/include/tango -L-L/usr/lib -I/usr/include/d -version=Tango -defaultlib=tango-base-dmd -debuglib=tango-base-dmd -L-ltango-user-dmd helloworld.d

>/usr/include/tango/tango/io/model/IConduit.d(115): variable tango.io.model.IConduit.IOStream.Eof field not allowed in interface

tango под dmd2 не работает и даже не компилится.

> 5. Можно ли поставить одновременно tango и phobos?

Да.

> 5.1 чтобы собирались одновременно ~/src/d/helloworld/{tango,phobos}/hello.d (через dmd2.bin)?

Нет. tango не работает под dmd2.

> 5.2 чтобы собирался и через dmd-bin:2 и через ldc2?

Нет. ldc2 даже когда собирался не производил работоспособные бинарники: http://www.dsource.org/projects/ldc/ticket/148

> 5.3. dmd-bin:{1,2} , ldc{,2} ?

Да.

Подведём итоги: одновременно можно установить хоть всё сразу. ldc поддерживает только d1-tango. С dmd работают все комбинации, кроме dmd2-tango. Текущая настраивается в eselect.

naryl ★★★★★
()
Ответ на: комментарий от d_a

>На каждой итерации форича.

Зачем? Какой в этом смысл?

Absurd ★★★
()
Ответ на: комментарий от anonymous

> "Итератор по множеству" => указатель валиден от T[0] до T[sizeof(T)/sizeof(T[0])-1]. Если Указатель указывает на T[-1], это не итератор для T[] по определению итератора.

Это в голове так. А компилятор проглотит указатель на [-1] и даже не пикнет. О чём я и хотел сказать в предыдущем посте.

const86 ★★★★★
()
Ответ на: комментарий от anonymous

> Да, ну и сабж через SVN у мну тоже не собирается:
Известная проблема. В generator/gen обьявляется QTDIR. Хедеры Qt ищутся в ${QTDIR}/include ...

Мне пришлось делать симлинк, ибо в Gentoo они лежат в /usr/include/qt4

Если будут ещё проблемы лучше спросить на http://talks.dprogramming.ru/index.php?board=15.0

naryl ★★★★★
()
Ответ на: комментарий от anonymous

>> Городи уебищный код только ради проверки выхода за границу?

> А что сложно написать наследника от vector у которого перегрузить operator[] добавив туда проверку?

Нет, не сложно. Только что делать с уже существующим кодом, который использует именно vector<>? ЕМНИП, operator[] - не виртуальный. Итераторы тоже перегрузить? map, list и т.д. - с ними как?

Да, и если тебе не сложно - скажи, как это сделает преложенный здесь http://www.linux.org.ru/jump-message.jsp?msgid=3478574&cid=3482558 foreach более надежным?

tailgunner ★★★★★
()
Ответ на: комментарий от anonymous

> А dmd что такое тогда? Чем LDC от GDC тогда отличается?
dmd - не-LLVM D Compiler :) У некоторых языков больше одного компилятора. :)
Фронтэнд все используют один и тот же.
Бэкэнды:
dmd - свой проприетарный с копирайтом у Symantec.
ldc - llvm
gdc - gcc

naryl ★★★★★
()
Ответ на: комментарий от naryl

> Или даже USE="dmd ldc tango phobos" emerge dmd-bin:1 dmd-bin:2 ldc ldc2 tango phobos
Прошу прощения. phobos для dmd2 забыл. :)
# USE="dmd ldc tango phobos" emerge dmd-bin:1 dmd-bin:2 ldc ldc2 tango phobos:1 phobos:2

ldc-9999 иногда портят. Не рекомендую его unmask'ить. ldc-0.9 собирается успешно.

naryl ★★★★★
()
Ответ на: комментарий от tailgunner

>Нет, не сложно. Только что делать с уже существующим кодом, который использует именно vector<>?

Ну значит разработчики посчитали что им не нужна проверка, а если бы была нужна то наверное написали бы наследника.

>ЕМНИП, operator[] - не виртуальный.

Да сам посмотрел там он не виртуальный, хреново.

>Итераторы тоже перегрузить?

Лень смотреть но если это возможно то почему бы и нет?

>map, list и т.д. - с ними как?

Так же, что не нравится переделывай сам.

anonymous
()
Ответ на: комментарий от tailgunner

>Да, и если тебе не сложно - скажи, как это сделает преложенный здесь http://www.linux.org.ru/jump-message.jsp?msgid=3478574&cid=3482558 foreach более надежным?

Напиши пример ненадежного использования данного foreach. Потом посмотрим что можно будет сделать.

anonymous
()
Ответ на: комментарий от anonymous

>> а потом увидел "сборка мусора" и сразу закрыл

> Сборку можно и не включать ... на твой выбор

И как после этого будут работать библиотеки, которые используют GC?

anonymous
()
Ответ на: комментарий от anonymous

>ам корабль летит по туннелю, который изгибается, появляются провалы, крутится и графика каркасная.

torus trooper. и не только он, там автор дофига bullet hell'ов напилил.

anonymous
()
Ответ на: комментарий от anonymous

>> Сборку можно и не включать ... на твой выбор

> И как после этого будут работать библиотеки, которые используют GC?


Будут течь. phobos память AFAIK вообще не выделяет. В tango для каждой функции, выделяющей память есть аналог, принимающий буфер. Про прикладные библиотеки ничего не могу сказать.

В конце концов, если пользователь ушёл пить чай, можно и вызвать GC.

naryl ★★★★★
()
Ответ на: комментарий от kemm

> Либо любое предупреждение считаем ошибкой -- и тогда в ряде случаев
> можно застрелиться (компилятор не всегда умнее человека), либо тупо

> не выводим -- и тогда получаем кучу ошибок в работе. Make your choice.


Не должно быть такой ситуации в языке. Вот и все.

eXOR ★★★★★
()
Ответ на: комментарий от naryl

> Возможно этот вопрос прозвучит глупо, но что Вы понимаете под
> релизом? :)


Стандарт и выход как минимум двух компиляторов понимающих этот стандарт, способных программу написаную по стандарту скопмилировать так, чтобы она выполнялась одинаково.

eXOR ★★★★★
()
Ответ на: комментарий от eXOR

>> что Вы понимаете под релизом?

> Стандарт и выход как минимум двух компиляторов понимающих этот стандарт, способных программу написаную по стандарту скопмилировать так, чтобы она выполнялась одинаково.


В таком случае D 1 уже больше года как зарелизен. Конечно, можно ещё поспорить насчёт определения термина "стандарт".

naryl ★★★★★
()
Ответ на: комментарий от GladAlex

>Такое впечатление, что люди выкидывающие множественное наследование никогда им не пользовались? А ведь удобная шутка иногда бывает!

Я тоже когда-то так считал. А со временем понял, что если тебе хочется множественного наследования - то у тебя ошибка в дизайне.

В принципе, даже без наследования вообще жить можно :)

KRoN73 ★★★★★
()
Ответ на: комментарий от anonymous

>Есть оверлей для gentoo, в котором gcc-4.1 собирается с USE-флагом d , с этим патчем.

Одно время (и долго) gdc был в GCC в стандартном портеже. Я только сейчас заметил, что он исчез :)

KRoN73 ★★★★★
()

о вот это круто. Когда ждать в дебиан?

anonymous
()
Ответ на: комментарий от anonymous

>>Итераторы тоже перегрузить?

>Лень смотреть но если это возможно то почему бы и нет?

>>map, list и т.д. - с ними как?

>Так же, что не нравится переделывай сам.

Вот и цена "безопасного foreach" в стиле D - куча ручной работы, а не один простой макрос (использующий нестандартную конструкцию).

tailgunner ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.