LINUX.ORG.RU

Dlang - нужно ли?

 , ,


3

8

Компрады, вопрос - Dlang, применяется кем-то и нужен ли? Какие есть аргументы его пользования в проектах? Какие киллер-фичи подтолкнули на его пользование? Чем он лучше/хуже C++/Rust/Golang/Crystal/Nim?

Особенно интересно в разрезе вебни)

Dlang, применяется кем-то

Отдельными энтузиастами и небольшими группами энтузиастов. Широкого применения не получил и вряд ли получит.

нужен ли?

Пусть будет :)

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

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

Если клепаете что-то для себя лично, то особенности языка могут сильно облегчить вам жизнь (если сравнивать, скажем, с C, C++ или Java). При условии, что вам хватит stdlib-а D и тех немногих D-шных библиотек, которые вы сможете найти.

Какие киллер-фичи подтолкнули на его пользование? Чем он лучше/хуже C++/Rust/Golang/Crystal/Nim?

В сравнении с С++ и Rust у D есть GC и быстрая компиляция.

В сравнении с C++ еще и полноценный CTFE, а так же компайл-тайм рефлексия, дополнительные проверки в run-time, так что при сравнимой мощности языка отстрелить себе ногу сложнее, чем в C++.

В сравнении с Golang-ом есть нормальный ООП, шаблоны и исключения.

Crystal/Nim на данный момент еще более ненужно, чем сам D :)

Особенно интересно в разрезе вебни

Смотря что из вебни. Если написать какой-нибудь RESTful сервис на Vibe.d, то вполне, наверное.

eao197 ★★★★★
()

Использую уже много лет вместе с плюсами. На плюсах писать не хочется после D, просто приходится, так как работа. Код на D читается лучше, он проще и короче чем плюсовый. Например, за счет рефлексии я генерирую boiler plate очень легко, код выглядит чистым и кратким. Та же функциональность на плюсах (почти) реализуется через write only макросы, выглядит жутко. При этом 100% аналога добиться все равно не возможно. Потому что в D, когда я добавил новое поле в структуру, компилятор это сразу учтет, а в плюсах нужно все таки один раз где-нибудь, но добавить это поле вручную. В большом и сложном проекте вспоминать куда что нужно добавить бывает что сильно сказывается на продуктивности.

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

Время компиляции значительно меньше на D, чем на плюсах.

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

100% совместимость в сишным ABI и хорошая поддержка С++. Можно линковаться с плюсовыми шаблонами, например. Т.е. плюсовая часть у вас содержит шаблоны, например вектор из стандартной либы, и вы можете использовать этот код из дишного кода.

Единственно, где плюсы ложат D на лопатки - это gui.

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

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

Еще в D нет хайпа, маркетинга, CoC и пр. За этим в гоу или раст, конечно же.

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

Если у вас самого нет причины не использовать D, то могу смело его порекомендовать, а там сами разберетесь, подходит или нет.

yetanother ★★
()

Веб: достаточно посетить

ЕМПИП, сайт написан с использованием D.

И вообще, приятный в использовании язык.

braboar
()

Dlang применяется, из достаточно известного и используемого, на нем написан Tilix https://gnunn1.github.io/tilix-web/

Из фичей можно упомянуть скорость компиляции (с++, rust) и лучший общий дизайн (с++, golang). Сам язык создавался, как «эволюция» и исправление «косяков» c++, в разработке участвует былой «светочь» с++ Александреску.

С++

  • (+) лучше синтаксис, шаблоны, время компиляции, читабельнее код
  • (-) меньше библиотек, меньше комьюнити
  • (+/-) стандартная библиотека использует GC.

Golang

  • (+) есть generics, метапрограммирование, исключения, легче использовать внешние C библиотеки, более быстрый генерируемый код
  • (-) меньше библиотек, меньше комьюнити

Можешь еще посмотреть на Kotlin-native - в плане перспективности у него лучше, чем у dlang, (но в плане библиотек - пока хуже)

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

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

bread
()

Так а что там с tcl решили? Подходит?

Deleted
()

- отсутствие поддержки http2 - есть разные планировщики: потоки и легковесные потоки, но в проекте можно использовать только какой-то один, поэтому нужно смотреть на те редкие библиотеки что есть и выбирать, а подойдут ли они или нет. - низкая производительность https://www.techempower.com/benchmarks/#section=data-r18&hw=ph&test=p...

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

Почему? Чем вы замеряете уровень ненужно?

Под ненужностью здесь понимается рискованность применения языка в суровом продакшене. Это когда нужно:

  • делать что-то бизнес-критикал (по меньшей мере);
  • использовать не только самописный код, но и переиспользовать чужие библиотеки;
  • тем или иным способом интегрироваться с внешним миром (разнообразные СУБД, MQ, http-клиенты/сервера);
  • нанимать людей на рынке, а потом заменять тех, кто ушел из проекта по каким-либо причинам;
  • делать все это в рамках сроков и бюджетов.

Чем выше риски, тем больше «ненужно». И у D, и у Crystal, и у Nim с этим все плохо. Но у Crystal и Nim сильно хуже.

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

Ну про бизнес-критикал это сильно, конечно. Про переиспользование - ну у того же модного Раста с этим проблем побольше будет и заметно, чем у D. Тут как минимум один топик есть про это. Интеграция с внешним миром - ну это в принципе то же самое переиспользование по факту - для основных вещей «в тренде» которые уже многое есть, а для редких, соотвественно, может и не быть. Тут да, у плюсов экосистема лучше и богаче. Нанимать людей на рынке - тут да, но того же плюсовика и сишника перетащить на D если не очень, то достаточно легко. А если человеку первое время достаточно только писать - то он на следующий же день сможет писать на D. В общем решаемая проблема. В отличие от того же Раста, человек может погружать в D постепенно. Сроки и бюджеты зависят от многих вещей. Я бы не сказал, что D вносит какую-то непредсказуемость, скорее наоборот, в нем меньше вероятность что человек запутается в скобочках или жалобах борроу чекера.

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

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

Про переиспользование - ну у того же модного Раста с этим проблем побольше будет и заметно, чем у D. Тут как минимум один топик есть про это.

В том топике так никто и не показал как-то самая библотека на которой обломался раст будет портироваться на D. А в более простых случаях и у раста проблем нет.

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

Ну про бизнес-критикал это сильно, конечно.

Ну я говорю про то, что меня окружает. К нам обращаются компании, у которых остановка софта — это отказ в обслуживании клиентов. Так что бизнес-критикал, да.

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

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

Сроки и бюджеты зависят от многих вещей

От бизнеса они зависят. И, зачастую, сроки «вчера», а денег не так, чтобы много. Особенно в случае заказчиков из РФ :)

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

Ну это справедливые замечания. Но они слишком общие. По этим критериям пройдут только плюсы да джава. Ну питон с сишечкой. А все остальные - нет.

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

В том топике так никто и не показал как-то самая библотека на которой обломался раст будет портироваться на D. А в более простых случаях и у раста проблем нет.

Там речь шла не о порте, а о враппере. Это, как бы разные вещи. Порт на расте в том-то и дело, что работал бы. У RiiR отсюда ноги и растут. Только не кому сделать порт. А сделать враппер, чтобы давал такие же гарантии как и порт оказалось слишком накладно. И я бы не стал говорить, что Раст в том случае обломался. Просто в данному случае Раст оказался неудачным инструментом в силу своей строгой модели безопасности. Ну так это и логично, для всего есть свой инструмент. Не нужно просто пихать Раст во все щели, раз поставили безопасность превыше всего. А вот D можно использовать везде - именно потому что нет в нем такой строгой модели безопасности.

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

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

Вообще-то список довольно большой: C, C++, Java, Scala, Python, Ruby. Еще и C#, и Go. У C# раньше была ниша только под Windows, но сейчас уже народ рискует и .NET Core использовать. А Go вполне себе для REST-сервисов используется. Только в путь, можно сказать.

eao197 ★★★★★
()

Рад за ЛОР!
Ругни и «тупни» меньше стало в разы - «Так держать!».

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

по бенчмаркам он быстрее, чем

Ссылка есть?

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

Ну не знаю, не знаю, Раст должен быть на том же уровне. C/C++/D/Rust по быстродействию на одном уровне. Native код и там, и там.

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

Ну не знаю, не знаю, Раст должен быть на том же уровне.

Nim примерно тоже.

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

А на D враппер вообще не нужен, достаточно биндингов

Вы так ничего и не поняли.

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

От души, братан, расписал всё чётко™.

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

По этим критериям пройдут только плюсы да джава. Ну питон с сишечкой. А все остальные - нет.

C#, javascript. В некоторых местах Go, например.

Так а что еще нужно-то?

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

D уже лет 20 что ли, его ненужность проверена временем. Про других пока не ясно. Популярность и востребованность у всех на одном уровне (плинтуса). В контексте вебни кристал поинтереснее смотрится, местами неотличимо от рельсов/синатры со скидкой на игрушечность кристала.

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

Так а что еще нужно-то?

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

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

Впрочем понятно, что никто уже никуда не взлетит, даже раст. Но D умудрился в самое подходящее время не взлететь.

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

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

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

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

Полностью согласен

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

D уже лет 20 что ли, его ненужность проверена временем.

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

Тут вот yetanother уже несколько лет рассказывает про использование D.

Другие упоминания о применении D то тут, то там время от времени встречаются. Причем именно о применении в продакшене.

Тогда как о Crystal или Nim ничего подобного лично мне на глаза не попадалось.

Впрочем понятно, что никто уже никуда не взлетит, даже раст. Но D умудрился в самое подходящее время не взлететь.

Когда D1 достиг нормальной стабильности, тогда было совсем немного интереса в нативном коде. Этот интерес появился позже, на волне успеха Go и докеров с кубернетисами, а так же развитием мобильных платформ. Но в то время D2 еще не был стабильным.

eao197 ★★★★★
()

Компрады, вопрос - Dlang, применяется кем-то и нужен ли?

Нужен

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

Это офигенный язык, это с++ только с человеческим лицом

Какие киллер-фичи подтолкнули на его пользование?

Там очень хорошие шаблоны.

Чем хуже расписывать особо не надо - не распространен, и если не использовать gc, то придется практически отказаться от стандартной библиотеки, нет внятного гуя, а врапперы это не то.

C++

Человеческий синтаксис. Отдельные фишки копируют из ди, но это все равно остается ужасным нагромождением костылей.

Rust

Опять же, синтаксис. Раст будто для инопланетян.

Golang

Он же вообще примитивный

wolph ★★
()

вопрос - Dlang, применяется кем-то и нужен ли?

ответ в вопросе

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

Спорно.

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

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

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

Неверно. Оно сливает С++. Единственное, что там есть - это некие пародии на какие-то нормальные фичи, но реализованы они крайне убого. Поэтому единственный вариант в котором d будет лучше крестов - это ссылка именно на эти фичи.

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

Всё остальное - либо вообще не языки, либо примитивная херня(го).

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

но реализованы они крайне убого.

sad, but true. А по началу они выглядят очень годно и манят в язык. Почти на всех я обломался при попытке их использовать в чуть более сложном кейсе, чем Hello world

SR_team ★★★★★
()

Автор, кто такие Компрады?

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

Я там тебе несколько вопросов задал по теме миксинов, шаблонов и прочего. Защищай d, ты вроде когда-то пытался это делать. Почему там всё такое говно в сравнении с крестами.

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

Ну я не вижу смысла участвовать в треше) И уж тем более не собираюсь кому-то что-то доказывать по поводу D. У всех свое мнение, почему я его должен навязывать кому-то? Человек спросил, я поделился своим мнением. Все.

yetanother ★★
()

Ну 17 стандарта слишком мало для того, что-бы это можно было назвать язык полноценными крестами. Вот с 20 да, а пока нет.

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

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

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

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

Опять самый содержательный и инетресный комментарий в удалённых оказался

И чего там интересного? Невозможность человека подверженного заболеваниям коры головного мозга, таким как ООП, отступить даже в мыслях от текущей парадигмы, и попытка всё ровнять по ней, по ней же и мерить. Да ещё и с кухонной лексикой. Уверен, где-нибудь в общежитии с местными синяками такие способы приводить доводы катят. Кто повторяет одно и то же чаще — тот и прав.

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

Код на D читается лучше, он проще и короче чем плюсовый.

Если не ошибаюсь, в D, как и в Java/C#, принято не разделять классы на объявление и реализацию, писать всё в куче? Вот это, честно говоря, бесит. В C++ я посмотрел на объявление класса, увидел его визитную карточку. Жаль, что в новых языках от этого отказываются.

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

В C++ я посмотрел на объявление класса, увидел его визитную карточку.

На практике это далеко не всегда так. Особенно в шаблонных классах.

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

Время компиляции значительно меньше на D, чем на плюсах.

Охотно верю, там же модульность, а не препроцессорные костыли. :)

Единственно, где плюсы ложат D на лопатки - это gui.

То есть прокачанного и массово доступного решения до сих пор нет? Вроде бы были какие-то биндинги к Qt, один присутствующий на ЛОРе товарищ разработал dlangui...

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

В D есть возможность автоматически генерировать интерфейсные файлы, это аналлги заголовочных файлов из с и с++ https://dlang.org/dmd-linux.html#interface-files . Но этим почему-то мало кто пользуется, видать на практике оно некому не нужно.

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