LINUX.ORG.RU

Язык D включен в коллекцию компиляторов GNU (gcc 9)

 


3

8

GCC 9.1 будет первым стабильным релизом с поддержкой GDC.

Его выход ожидается приблизительно в конце первого квартала 2019 г.

Код для поддержки GDC включает библиотеку libphobos (D run-time library) и фреймворк для тестов D2.

Поддержка D потребовала внесения изменений в приблизительно 1 миллион строк кода.

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



Проверено: jollheef ()
Последнее исправление: maxcom (всего исправлений: 2)
Ответ на: комментарий от vertexua

Тут как-то получше,

Ну с точки зрения хайпа у Раста получше конечно, кто спорит. Ну и все, пожалуй. Как активный пользователь D могу сразу сказать, что если для вас важен хайп вокруг языка - выбирайте без сомнений Раст ну или Гоу хотя бы. А если не хайп вас интересует, а технические детали - тогда уже нужно обсуждать. Для каждой задачи свой инструмент - благо их сейчас навалом.

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

А для чего активный пользователь? Работа или хобби? Что с вашей точки зрения лучше реализовано в D?

Хотя наличие GC by default очень сильно переносит язык в нишу с Go

vertexua ★★★★★
()
Последнее исправление: vertexua (всего исправлений: 2)
Ответ на: комментарий от anonymous

Не знаю, у меня именно GCC падает с OOM на Raspberry Pi

vertexua ★★★★★
()

Интересный и нужный язык. Писал на нём все наколенные поделки несколько лет, но потом произошло два события.

  1. Вышел C++11, и фичи D стали уже не настолько киллер.
  2. Осилил в конце концов Common Lisp.
Gentooshnik ★★★★★
()
Ответ на: комментарий от vertexua

Работа - для прототипирования и inhouse tools. Можно и для конечного продукта в принципе, но там есть нюансы и пока не до этого.

Кстати, тут включение в gcc очень помогает, так как не нужно ничего тащить отдельно и собирать - проще продвинуть язык в использование.

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

ну посмотрю, возможно... биндинги к sqlite или postgresql есть? я могу переписать одну программу с lua на d для интереса.

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

Как в D с экосистемой пакетов? Например как вам собираемость и надежность того что есть в dub?

Да даже не знаю в чем суть вопроса. У меня никаких проблем нет. Наверняка там есть старые пакеты которые не соберутся, если вы про это. Но это проблема разработчика пакета, а не языка и экосистемы - ну потерял человек интерес, ребенок родился там или еще что-то. Сама экосистема поменьше чем у других. Но, например, с помощью dpp можно использовать любую сишную либу и некоторые плюсовые. Я так nuklear например использую. Реально чего мне не хватает это биндингов к Qt. Но этот moc компилятор сильно усложняет их создание. Но поддержка плюсов напрямую улучшается и улучшается. В этом плане и Раст и тем более Гоу уступают и насколько я знаю уступают заметно.

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

Он на llvm вроде, ему gcc не сдался.

рано или поздно это произойдет, gcc сдастся под натиском прогресса или канет в дискеты к мсдосу

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

Есть d2sqlite3 и vibe-d-postgresql, но я не пользовал.

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

ну посмотрю, возможно... биндинги к sqlite или postgresql есть? я могу переписать одну программу с lua на d для интереса.

есть биндинги для обоих, например постгрес, мускул - чисто для примера, там и другие есть, какие лучше не знаю, и есть даже нативный клиент для mysql

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

ты явно недооцениваешь силу правды и стремление людей к свободе, наиболее подкованные слои население всегда стремятся к более лучшим опциям несмотря на предпочтения масс

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

ты явно недооцениваешь силу правды и стремление людей к свободе, наиболее подкованные слои население всегда стремятся к более лучшим опциям несмотря на предпочтения масс

поэтому я всегда снимаю галочку «установить яндекс.бар» под оффтопом

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

Растокапец

Это таки животные разной породы, D где-то между Растом и Go.

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

Каков может быть смысл применить D для этой цели -другой вопрос.

Если микроконтроллер способен выдержать garbage collected runtime, то смысл, быть может, и есть.

kawaii_neko ★★★★
()

Ааа, так все понятно стало. Когда язык включается в gcc, можно считать что он закопан и последний анон станцевал на его кхм. Это у гнутых шутка такая — миллион строк пихать на поржать :)

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

кресты маргинальны

В смысле распространённости — нет. А так — смесь хакерских идей C и странной академического конструкта Algol-68, политая объектно-ориентированным бульоном.

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

У него подвох^W рантайм.

Так что он не конкурирует с растом.

Да и вообще смысл сравнивать компилируемую Java и Rust?

Dlang нужен свой DlangFX/Dwing. Будет офигенный язык на замену Java на десктопе.

Deleted
()
Последнее исправление: merhalak (всего исправлений: 3)
Ответ на: комментарий от Deleted

он наверно имел в виду го, всё-таки сравнивать язык с гц с языком без гц некорректно.

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

Если микроконтроллер способен выдержать garbage collected runtime, то смысл, быть может, и есть.

А зачем использовать сборщик мусора на МК? Люди пишут на D для МК без сборщика. И все. Вот демка для stm32. На D вполне люди пишут без сборщика мусора. Да, некоторые фичи становятся недоступными, но тем не менее сборщик не является обязательным.

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

это как писать на cpython без gil

Не могу ответить, ибо не писал. Но точно не будет анально, а вполне юзабельно. Есть целые nogc либы без использования сборщика мусора. Тот же mir - высокопроизводительная библиотека для математических расчетов с аналогом ndarray и numpy (неполным правда). Она не требует сборщика мусора.

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

как пример удобного, практичного, нативного языка с GC — D очень хорош

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

Назови конкретную сферу (а лучше проект), где D практичен и удобен по сравнению с другими языками со сборщиком мусора, где работа происходит в команде, поддерживать нужно несколько платформ и время жизни проекта рассчитывается не менее 10-ти лет. По моему мнению, он удобен в хобби-проектах реализуемых в одиночку с подходом «выпущу, когда будет готово» или «я избранная илита, потому что таких как я меньше 1%» и пофиг, что работать оно будет только на localhost.

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

Назови конкретную сферу (а лучше проект), где D практичен и удобен по сравнению с другими языками со сборщиком мусора, где работа происходит в команде, поддерживать нужно несколько платформ и время жизни проекта рассчитывается не менее 10-ти лет.

И причем здесь язык?

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

По моему мнению

Вы сперва «вашему мнению» подвергните ваши же собственные слова «Нормальной среды разработки нет, распространение близко к нулю, поэтому, разработчиков тоже нет, а, значит, с распространением на разных платформах тоже вопросы». Их в точно такой же степени можно адресовать и любым другим нативным языкам с GC, включая Eiffel, Go, OCaml и, полагаю, Haskell.

И вот эти слова так же: «где работа происходит в команде, поддерживать нужно несколько платформ и время жизни проекта рассчитывается не менее 10-ти лет»

Тому, что вы требуете от D, может быть, соответствует разве что Go. Но, вот какое дело, практически везде D, как язык, был бы удобнее Go. Был бы, но Go специально делали для тех, кто D не осилит.

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

Пробежаться по членам структуры это же дает такие возможности.

Когда до тебя дойдет, что при сериализации структур важна поддержка версионирования и разных языков, то сразу станет очевидно, что такая рефлексия бесполезна. Впрочем, если очень хочется (в смысле нужно решить задачу, а не мастурбировать на рефлексию), то в C++ сериализация структур делается сторонними инструментами (libtooling, например, или поделкой от германского студента cppast https://github.com/foonathan/cppast).

Но, это, конечно, не так круто. Ведь это не встроено в сам язык!

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

Нормальной среды разработки нет

Бедняга, чувствую ты из java мира, да?

распространение близко к нулю, поэтому, разработчиков тоже нет,

А как можно миновать эту стадию? Или трендовые языки сразу такими стали? Ну а насчет разработчиков - разработчик на джаве или плюсист или сишник начнут писать на Ди в течении рабочего дня. Это тебе не Раст. Ну ясно, что поначалу код будет не идиоматический, но работать и решать задачу он будет.

с распространением на разных платформах тоже вопросы

Вот это вообще не в тему или ты чего то не дописал.

Стабильная версия языка вообще вышла?

Странный аргумент. Хочешь стабильности - сиди на конкретной версии. Хочешь новых возможностей - обновляйся. LTS версий нет, если ты это имел в виду. Я в этом году взял свой старый проект то ли 13-го, то ли 11-го года, да он не собрался на свежей версии, я потратил полчаса чтобы обновить его. Все свелось к тому, что часть кода была выкинута так как появились новые возможности и новые библиотеки, в итоге код стал лучше и чище. Лично я - за такую «нестабильность».

Назови конкретную сферу (а лучше проект), где D практичен и удобен по сравнению с другими языками со сборщиком мусора, где работа происходит в команде, поддерживать нужно несколько платформ и время жизни проекта рассчитывается не менее 10-ти лет.

Да любую сферу бери кроме десктопного гуя. При чем здесь работа в команде, как она зависит от языка? Кроссплатформенность обеспечивается бекэндами плюс рантайм. Достаточно много где уже можно использовать D. По моему мнению D более чем удобен для работы в команде, когда нужно поддерживать несколько платформ и время жизни проекта не менее 10 лет. При чем неважно - со сборщиком мусора или без него. Я вообще заметил, что люди обсуждая наличие сборщика мусора в D зачастую понятия не имеют как там дело обстоит. Как писал Уолтер, что у него был крупный заказчик и они сказали ему как то что мы будем использовать вот эту вашу систему но только если там будет реализована такая-то фича. Он им сказал, что эта фича в этой системе реализована уже давно - использовать его систему в итоге заказчик все равно не стал. Это просто слова. Если тебе что то нужно, приносит тебе пользу - бери это и пользуйся. Действую. А бездоказательно критиковать других это просто лишняя трата собственного времени и баловство со своим самолюбием.

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

Работа - для прототипирования и inhouse tools. Можно и для конечного продукта в принципе, но там есть нюансы и пока не до этого.

«есть нюансы» это я, так полагаю, означает, что D в принципе неприемлем для использования в production. В результате сначала пишется прототип на D, который затем переносится в production на C++. И, кстати, кто это делает? Ты сам или наняли jun'а неудачника, который занимается тупым переписыванием с D на C++ и, потому, дольше полугода не задерживается на таком перспективном проекте.

IMHO, это не нюансы, а ключевые моменты промышленной разработки.

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

Вы сперва «вашему мнению» подвергните ваши же собственные слова «Нормальной среды разработки нет, распространение близко к нулю, поэтому, разработчиков тоже нет, а, значит, с распространением на разных платформах тоже вопросы». Их в точно такой же степени можно адресовать и любым другим нативным языкам с GC, включая Eiffel, Go, OCaml и, полагаю, Haskell.

Ты это сейчас всерьез сравниваешь распространение и удобство разработки на D и Go?

Go специально делали для тех, кто D не осилит.

Go писали с чисто практической целью, как более быструю замену Python для задач, которые есть в Google. Кроме того, Go чуть ли не единственный из распространенных языков, который позволяет очень просто и удобно использовать несколько ядер процессора. Достаточно вставить ключевое слово «go» и функция будет запущена на отдельном ядре (+они сделали очень простой и удобный способ обмена информацией с такой функцией). В результате простой язык с широкими возможностями и низким порогом вхождения влетел.

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

Кстати, ты помнишь то время (много лет назад), когда Walter Bright пообещал выпустить стабильную версию D v2 (кажется осенью)? С тех пор в C++ приняли несколько стандартов, языки Ceylon и Kotlin прошли путь от зарождения идей до стабильного релиза, а Kotlin успел стать еще и популарным.

anonymous
()

Ну теперь заживём!.. А раст они добавить не собираются?

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

Ну а насчет разработчиков - разработчик на джаве или плюсист или сишник начнут писать на Ди в течении рабочего дня

Не начнёт, потому я что до сих пор не понял:

1) какая от него польза

2)есть ли шанс, что станет популярным.

Маргинальнле программные средства я могу рассматривать при выполнении пункта 1. Про пункт 2 я думал, что шанса не было, но ещё подумав, делаю предположение, что из-за поддержки в GCC он может и появится (будет легче сочетать D с другими языками и библиотеками для того, что в D не хватает). Всё же я сомневаюсь, что станет популярным. В качестве замены для C/C+ ему придётся конкурировать с Rust, который тоже пока не относится к основным языкам, и неясно, пролезет ли в их число. Но вызывает явно больший интерес публики, чем D.

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

невиртуальных не предусмотрено?

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

Т.е. упрощение через уменьшение гибкости и эффективности. Т.е. для плюсов это не замена. Огромное спасибо за информацию. Закапывайте.

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

Так его нигде нет (не считая пары маргинальных языков), и никто не жалуется.

C++, scala, даже в java8 появились default interface methods. Пригождается редко, но когда нужно а его нет — бесит.

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

Пригождается редко

Значит не нужно.

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

Нормальной среды разработки нет

Бедняга, чувствую ты из java мира, да?

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

распространение близко к нулю, поэтому, разработчиков тоже нет,

А как можно миновать эту стадию?

И как давно у D эта стадия? Когда она уже закончится?

с распространением на разных платформах тоже вопросы

Вот это вообще не в тему или ты чего то не дописал.

Ты не можешь использовать D в production, но не считаешь это недостатком. Показательно.

Да любую сферу бери кроме десктопного гуя.
Кроссплатформенность обеспечивается бекэндами плюс рантайм. Достаточно много где уже можно использовать D.

Пустая болтовня про «можно уже много где» и галимая теория про бакенды не интересуют. Почему ты не используешь D в production?

Так вот, мое утверждение: D подходит для фанатиков, которые в одиночку пишут проект или как повод для поболтать на форуме. Для промышленной разработки он не подходит и для этого разработчики ничего не делают.

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

Но в любом случае плюсам он фору даст. Я не могу понять, почему в плюсы не могут завести рефлексию? Пробежаться по членам структуры это же дает такие возможности.

Зачем эти возможности в языке, заточенном на максимальную эффективность в рантайме? @#$@#^%$ мать вашу, нужны вам GC и рефлексия — пичешите на жаву.

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

«есть нюансы» это я, так полагаю, означает, что D в принципе неприемлем для использования в production. В результате сначала пишется прототип на D, который затем переносится в production на C++. И, кстати, кто это делает? Ты сам или наняли jun'а неудачника, который занимается тупым переписыванием с D на C++ и, потому, дольше полугода не задерживается на таком перспективном проекте.

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

Перенос я делаю сам, как джун да еще неудачник может это сделать я не представляю - надо же два языка знать, но времени это заняло последний раз реально немного. Раньше да, не было возможности использовать D в production от слова совсем. А сейчас уже действительно остались нюансы. Они заключаются в том, что доступны только старые версии компиляторов, что для плюсов, что для D. Писать на старом диалекте нет смысла, потому что там нет нужных мне фич типа `static foreach`. Пишу на последних версиях и поэтому переписывать нужно все равно либо на старый диалект D, либо на старый диалект C++. Ну а раз и так, и так переписывать, проще переписать на плюсы. Если бы версия D была поновее, писал бы сразу на нем. Вот обновится gdc, вполне возможно буду писать на нем сразу. Но есть еще идея переписать все на свой DSL и уже генерировать код какой нужно. Тогда писать можно на любой версии D, а код генерить на том, что нужно, но это серьезная заявка. Вот и все нюансы - старые версии компиляторов и желание решить задачу через DSL (это также решит и другие важные задачи типа кастомизации и взаимодействия со специалистами-непрограммистами). Конторы вполне успешно строят свою инфраструктуру на основе D, все у него с этим отлично.

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