LINUX.ORG.RU

Андрей Александреску на конференции ACCU

 ,


0

3

Выступая на конференции ACCU Silicon Valley, Андрей Александреску в свободной манере рассказал о некоторых особенностях языка D, попутно сравнивая D и C++. Вкратце, Андрей рассказал о корректности, обобщенном программировании и перегрузке операторов в языке D.

В качестве заключения Александреску отмечает, что D является неплохим средством как для системного, так и для прикладного программирования.

>>> Слайды выступления



Проверено: post-factum ()
Последнее исправление: cetjs2 (всего исправлений: 2)
Ответ на: комментарий от BattleCoder

Этот язык выступает как полная замена C++? Что в нём такого вкусного?

Синтаксис приятный, не такой ущербный как в плюсах.

mashina ★★★★★
()

Пусть они сначала определятся со стандартом языка, а потом уже его продвигают в массы. А то получается, что был D1, на нем было написано n-ое количество кода, а потом оказывается, что он стал не совместим с новыми компиляторами.

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

Танго до сих пор для первой версии только.

http://www.dsource.org/projects/tango/wiki/FAQ#D2.0

* Q: Does Tango support D 2.0 as represented by the DMD 2.0xx range of releases?

* A: No, not officially. A branch exists in Tango's SVN repository with an early attempt, but D 2.0 is still considered too immature and unstable for any full and official commitment to this end. Feel free to contact us if you want to update the branch, though.

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

Стандарт никогда не бежит впереди распространённости языка. Те же ущербные плюсы получили первый свой стандарт совсем недавно, однако это не помещало плюсам к этому времени уже пережить своий пик популярности.

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

А то получается, что был D1, на нем было написано n-ое количество кода, а потом оказывается, что он стал не совместим с новыми компиляторами.

Вот они и определились, судя по всему :)

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

>Отсюда вывод: плюсовиков разгоняют каждые 5 лет.

Но потом набирают обратно)

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

Статическая строгая типизация, Роб Пайк и Кен Томпсон, конкурренси изкаропки. Что еще нужно для счастья? =^__^=

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

Ну чуваки же должны же были на чем-то писать компилятор для Ди 2.0, не на плюсах же.

p.s. У Ди 1.0 вполне себе стейбл стандарт есть.

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

Не, компилер у них на плюсах написан, по крайней мере dmd:

http://www.digitalmars.com/d/2.0/faq.html#dogfood

Q: Why is the D front end written in C++ rather than D?

A: The front end is in C++ in order to interface to the existing gcc and dmd back ends. It's also meant to be easily interfaced to other existing back ends, which are likely written in C++. The D implementation of DMDScript, which performs better than the C++ version, shows that there is no problem writing a professional quality compiler in 100% D.

gizzka ★★
()

Чёртов C++, я забыл из-за него про такой великолепный D. А если серьёзно, то всегда изучал языки по примерам. А с D как-то...мало там всего такого...Сухо...слишком сухо...да, всё есть - и описание и стандартные библиотеки. Что ли попробовать снова.

Вот странно. Вместо того чтобы сравнивать D и C++, ему стоило бы просто кратко разъяснить, что D можно использовать также как и другие языки. Намутить сообщество....Хотя уже и так всё есть. Может души нет? Нужен кто-то вроде RMS для D. Андрей не совсем подходит для этой роли.

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

Ну а вообще, как думаете, у этой штуке есть будущее?

вполне. это ж такой себе народный Eiffel

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

qtd как биндинг слегка протух.
если таки сделают нормальный неглючный gdc и оно будет в популярных дистрах в составе gcc то дело пойдет я считаю

anonymous
()

язык со строковыми макросами(т.е. D-2) не нужен. в 3ей версии обещают ast-макросами, тогда и посмотрим.

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

> qtd как биндинг слегка протух.

Ну, это судьба всех языков, к которым нужно делать биндинги.

если таки сделают нормальный неглючный gdc и оно будет в популярных дистрах в составе gcc то дело пойдет я считаю

Вообще про него не знал.

http://dgcc.sourceforge.net/

News

August 22 2007

Version 0.24 has been released.

Что-то как то ...

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

http://dgcc.sourceforge.net/

Ну нет же, правильно https://bitbucket.org/goshawk/gdc/wiki/Home. Фронтенд соответствует последней версии родного компилятора. Более того, Sylvia не так давно в толксах создавала тему, что идет обсуждение по включению в основную ветку gcc.

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

>> http://dgcc.sourceforge.net/

Ну нет же, правильно https://bitbucket.org/goshawk/gdc/wiki/Home. Фронтенд соответствует последней версии родного компилятора. Более того, Sylvia не так давно в толксах создавала тему, что идет обсуждение по включению в основную ветку gcc.

Другое дело. Спасибо.

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

Может души нет? Нужен кто-то вроде RMS для D.

Надо написать на D операционную систему-в-которой-не-хватает-только-нормального-редактора? :)

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

Ну и кстати, qtd действительно развивается не очень активно, самый лучший вариант на сегодняшний момент - gtkD.

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

> Ой, что-то нехорошо в нём, вопреки мнению тех, кто попросил Андрюху пропиарить этот язык. :)

Андрюху никто пиарить не просил. Андрюха - один из дизайнеров.

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

> Sylvia не так давно в толксах создавала тему, что идет обсуждение по включению в основную ветку gcc.

А можно ссылку сразу на тему, а не на пользователя, её создавшего?

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

Сейчас, как я понимаю, основной компилер это dmd. Он опенсорц. GDC стух давно... как я помню, никто не хотел набираться в команду к основному разработчику, а тот забил. Еще в моде LDC, но для D2 DMD - единственный компилер на сегодняшний день.

А минусы там такие... (когда я последний раз смотрел): мало рабочих библиотек, под вторую версию - вообще почти не было. Т.е. какие-то вещи для web пытались делать, но всякий раз когда начинаешь на нем что-то писать, обнаруживаешь, что тебе надо написать биндинги, кот. нет. Есть энтузиасты, кот. пишут игродвижки успешно на Ди, например, MoonGlide, но до промышленного уровня... хрен его знает.

А вообще (если без вышеперечисленного), язык удобен.

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

Про gdc - уже неправда, см. выше. Кстати, для второй версии есть компилятор, генерирующий код для ВМ .NET. Правда он до сих пор альфа.

С библиотеками не очень хорошо, да. Хотя несколько нормального качества уже есть, напр. выше упоминавшийся gtkD. Да и phobos.

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

Ну в каком месте? Взять хотя бы калибр авторов. Да и языку чуть больше года.

tensai_cirno ★★★★★
()

Жаль, что D развивается через пень-колоду. Go, равно как Alef и Limbo — непонятно зачем нужные велосипеды. Eiffel загибается все больше и больше. Но есть же Паскаль с Адой!))

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

у него есть будущее, если вместо того чтобы тут чесать языками начать писать на нем, и не бросать при первой же возникшей проблеме. Ну а пока нам остается быть полуразогнанными в течении еще пяти лет.

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

>Andrei Alexandrescu este un programator român

Андрей Александреску - румынский программист

=)

nevar ★★
()

Мечтаю о встроенной в Qt 5.0 поддержке языка D, ИМХО должны же они расти дальше. В языке D есть сборка мусора и многие другие плюшки.

Есть реализация языка D 2.0 поверх .net/Mono хоть и несколько вяло развивающаяся (а может и вовсе приостановленная, хотя для продакшена ее никто не выпускал). Если бы так, то это был бы язык моей мечты - писать один код для виртуальных машин и «нативного» исполнения одновременно...

I-Love-Microsoft ★★★★★
()
Ответ на: комментарий от x86_64

qtd как биндинг слегка протух.

Ну, это судьба всех языков, к которым нужно делать биндинги.

Однако некоторые библиотеки помогают поддерживать свои привязки в актуальном состоянии. Qt явно не из их числа, поэтому ровняться на него для разработки GUI на неплюсах не стоит.

baverman ★★★
()

D2 ругают в основном те, кто привык к простоте D1 и те, кто не осилил потоки с изолированной памятью и immutable. Вторая версия существенно сложнее и мощнее. Многие вещи в ней делаются очень красиво - перегружаемые properties, вложенные классы, экземпляры которых имеюют доступ к полям внешнего класса, хороший набор перегружаемых операторов (например, опрерации «индекс» есть два вида - на чтение и на запись, что избавляет от плюсовых извращений с прокси-объектами), compile-time function execution...

Впрочем, проблем хватает - довольно много багов в языке (хотя и в углах, как правило), недописанная стандартная библиотека... В общем, писать на нём можно и весьма приятно, но баги в компиляторе пока что весьма часты. Так что насчет продакшна не уверен. А вот для себя... одно удовольствие. Код почти так же компактен и прост, как в скриптовых языках, а вот скорость много выше, да и статическая типизация в плане борьбы с багами весьма хороша.

А что касается Go - насколько я могу судить, он является подмножеством D2, и довольно несложно было бы сделать автоматическую трансляцию исходных текстов с Go на D2 (как было в свое время сделано с Java и D1).

anonymous
()

Хороший, приятный язык, писал на нём небольшие программы. Синтаксис всем хорош, кроме {}, но и с этим безобразием можно смириться.

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

> у него есть будущее, если вместо того чтобы тут чесать языками начать писать на нем, и не бросать при первой же возникшей проблеме. Ну а пока нам остается быть полуразогнанными в течении еще пяти лет.

Я смотрел только первую реализацию.

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

А период полуразгона завист только от времени. У меня знакомый есть, работает лет 12 в одной конторе. Ему пришлось уже на java переходить, с назначением нового менеджера. Когда выявились проблемы, старого менеджера выгнали. Вернулись на плюсы. Через некоторое время фирму купили и новый назначенный менеджер на C# разработку перевел. Ему пришлось изучать. Через некоторое время менеджера выгнали и опять вернулись на плюсы.

Короче, от маркетинговых языков спасает только время.

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

Вывод: все учите C++ и не вы№бывайтесь. Аминь

anonymous
()

В то время как Александреску рассуждает о перегрузке операторов, Tiark Romph и Martin Odersky рассуждают вот об этом: http://infoscience.epfl.ch/record/150347/files/gpce63-rompf.pdf

Почувствуйте, мать, разницу!

И не понимаю, чего так создатели STL и D так на итераторы дрочат? Может быть им стоит объясниь что все прогерссивное человечество пользуется функциями высших порядков?

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

> В то время как Александреску рассуждает о перегрузке операторов, Tiark Romph и Martin Odersky рассуждают вот об этом: http://infoscience.epfl.ch/record/150347/files/gpce63-rompf.pdf

«we use a number of Scala’s advanced features extensively (operator overloading, implicits, abstract types and type constructors, pattern matching, mixin-composition)»

Из этих «advanced features» В D2 нет только pattern-matching.

«LMS is not inherently tied to Scala and could be implemented in other expressive languages as well»

И что заставляет тебя считать D2 не «expressive language»?

И не понимаю, чего так создатели STL и D так на итераторы дрочат? Может быть им стоит объясниь что все прогерссивное человечество пользуется функциями высших порядков?

«Да никакой разницы» (с) Э.Рипли

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

>mixin-composition

А как там копозиция организована? Например в Скале она сделана ооочень затейливо: позовляет из коробки пользоваться фичами а-ля АОП через обращение к super в трейтах, и пользоваться интерфейсом другого класса или трейта через self-type annotation.

Короче говоря, в Скале можно классы собирать буквально из ошметков, типа паттерна Strategy (того же Александреску, кстати), но с очень высокой гибкостью.

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

>Из этих «advanced features» В D2 нет только pattern-matching.

Ниасиляторы. В Скале весь паттерн-матчинг всего-лишь сахар к вызову методов unapply или unapplySeq. Короче говоря, весь паттерн-матчинг отдан на откуп конкретному объекту.

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

> Сопоставление с образцом в D2 делается на уровне библиотеки.

Можно пример или линк? В книге Александреску всего один пример, довольно убогий.

tailgunner ★★★★★
()

Тех, кого забанили на гугле, а девушки не дают даже после макдональдса, вот ссылка: http://www.digitalmars.com/d/2.0/lex.html СХОДИТЕ И ПОЧИТАЙТЕ.
D является не столько «прорывом», сколько идеальным собранием хороших идей из других языков. Идеи добавляются медленно, но уже сейчас их хватает за глаза для 99% задач.
Проблемы есть - это стандартная библиотека, поставляемая с языком. Она маленькая, но и линукс когда-то умещался на дискетку! Её просто нужно расширять, причём базовых вещей в ней хватает, нужны просто руки и головы. Что приятно, писать на Ди так же просто, как на C#, но при этом не вязнуть в болоте .NET и пользоваться всякими полезняшками языка. Вылезте чуть дальше его ООП возможностей - шаблоны, примеси, диапазоны, контракты, рефлекшн - все эти вкусности есть не только в цэшарпе! Осталось только поднять зад и начать уже это изучать - оно того стоит.

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

> А трейти как в Скале в D есть?

Блэкджека там тоже нет. Есть traits, а насколько они «каквскале» никого не интересует. :)

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

Если б D'шный компилятор ещё понимал бы Сишные хедеры (не С++ хедеры конечно же), цены бы D не было.

А так, это просто ещё один язык слабо совместимый с Си. Приходится писать биндинги. А потом поддерживать и обновлять биндинги к либам когда либы меняются. И править биндинги если в биндинге бага.

В частности posix построен именно на Сишных символах, а не на конкретных числах и функциях. Т.е. нечто может быть как функцией так и константой. Поэтому если язык не умеет прожевывать сишные хедеры, то нужно постоянно следить не уплыли ли константы позиксные, и не случилась ли там внезапно функция вместо константы.

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

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