LINUX.ORG.RU

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

 


3

7

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

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

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

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

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



Проверено: jollheef ()

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

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

Он просто не раскрученый. Но форум языка активный и отвечают там с охотой на любые вопросы.

А так я считаю у него нет какой-то своей узкой ниши. Я вот игру на нём пишу. Есть и компании которые его применяют. Но что именно пишут не могу сказать - не работал.

unDEFER ★★★★ ()

Вот так пилишь *свой язык* 16(!) лет. И только сейчас тебя признают.
А за это время ты уже женился развелся дети пошли в институт...
Вот теперь и думайте стоит ли этим заниматься.

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

Где он применяется-то?

Ну вот, например: https://thedeemon.livejournal.com/130277.html Человек до этого делал какой-то свой софт для обработки видео на смеси из C++ (математика) и D (все остальное). Теперь перебрался в другую контору, которая, похоже, алоготрейдингом занимается. Программирует на D.

Самое известное, пожалуй, это использование D в sociomantic — там на D, по слухам, весь ключевой софт для рекламных аукционов написан.

Вроде как у D много мелких, эпизодических внедрений. Но чего-то такого, чтобы было как Docker у Go, нет.

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

Где он применяется-то?

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

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

Я вот игру на нём пишу.

Я полистал туториалы, есть несколько вопросов:

Как там с ООП? Насколько я понял, методы по умолчанию виртуальные, невиртуальных не предусмотрено?

Как интероперабельность с си и крестами? Насколько больно вызывать сишный код из дишного и наоборот?

Раздельная компиляция модулей возможна?

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

Более мощниые шаблоны, которые читаются проще? Мощный компилтайм, в процессе которого можно даже нагенерировать код? Всякие плюхи с типами данных (инициализация стандартным значением, получение максимального и минимального значения, и др.)? Шикарная стандартная библиотека?

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

А за это время ты уже женился развелся дети пошли в институт...
Вот теперь и думайте стоит ли этим заниматься.

заниматься женитьбой не нужно, настоящий тру-гик женат на премиум-аккаунте порнхаба

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

Как там с ООП?

Множественного наследования нет, а оно иногда очень удобно.

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

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

Как интероперабельность с си и крестами?

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

Насколько больно вызывать сишный код из дишного и наоборот?

Вообще не больно. Больно было работать с крестовыми классами, но это пофиксили.

Раздельная компиляция модулей возможна?

Вот этот вопрос не совсем понял. Хотите компилять объектники по отдельности, а не все вместе?

SR_team ★★ ()

Язык D включен в коллекцию компиляторов

Либо язык в коллекцию языков, либо компилятор языка, ибо язык в коллекцию компиляторов невпихуем :)

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

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

А что нравилось в расте, если теперь разонрпвился? Вроде только лучше становится.

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

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

Расширение области применения. Недавно я заинтересовался модной темой IoT, в ней надо программировать для микроконтроллеров. Чаще всего применяется C/C+ с GCC. Меня заинтересовало: а можно ли применять новые языки? Оказалось, что да, по крайней мере если компилятор GCC.Каков может быть смысл применить D для этой цели -другой вопрос.

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

Множественного наследования нет, а оно иногда очень удобно

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

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

final как раз позволяет девиртуализацию.

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

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

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

и никто не жалуется.

Хочешь, я тебе буду жаловаться, про то как не удобно расширять функционал существующих классов без множественного наследования?

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

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

А для тебя это новость?

Хочешь, я тебе буду жаловаться, про то как не удобно расширять функционал существующих классов без множественного наследования?

Не удобно говнокодить... так это же прекрасно!

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

Это еще почему?

  • constexpr в C++17 просто говно, если сравнивать его с D.
  • Рефлексии нет
  • Сериализация по большому счету реализуется в ручную
  • Метапрограммирование слабее
  • Стандартная библиотека тоже пока сосет
SR_team ★★ ()
Ответ на: комментарий от SR_team

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

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

Хочешь, я тебе буду жаловаться

Ты, наверно, и сам знаешь, что тебе на эти жалобы ответят.

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

Не удобно говнокодить... так это же прекрасно!

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

С множественным наследованием я просто добавляю этот класс как родительский и работаю с ним.

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

Чета говнокод получается, когда множественное наследование отсутствует.

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

А вообще, если есть практичный пример, где не хватает именно множественного наследования (не интерфейсов или трейтов), то было бы интересно.

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

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

Поэтому в Java вместо множественного наследования было прмменено одиночное с интерфейсами. Также и в других популярных языках. Например, в C#. Ещё до него фирма Microsoft придумала COM - способ проектирования программы на основе компонентов, клторый вообще не предусматривал наследования. C++ тогда уже был, но не годится для этого. COM стал выходить из употребления после появления Net, в котором программирование ведётся большей частью на C#, а если и на C++ , то всё равно применяется библиотека классов Net Framework SDK, что позволяет программировать компоненты на C+ так же, как на других языках. Долгое время этот способ организации наследованмя оставался лучшим. Глупые и/или невежественные программисты на C++ раньше думали, что множественное наследование исключено из Java для упрощения языка, чтобы им могли пользоваться программисты низкой квалификации(а себя соответственно считали программистами высокой квалификации, но ошибались), но это объяснение было неправильным.

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

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

Читаю доки.

Походу, D - это практически такой язык, какой я в свободное время попиливаю на коленке. Не далеко допилил, врочем.

Похоже, мою поделку можно выбрасывать и просто ставить gdc.

Ярким примером использования данной техники в D является библиотека std.regex. Она предоставляет тип ctRegex, использующий строковые mixin'ы и CTFE для генерации во время компиляции высоко оптимизированного автомата обработки регулярных выражений. Та же кодовая база используется и версией времени исполнения regex, позволяющей работать с регулярными выражениями, доступными только во время исполнения.

Каеф. Я сейчас слюнями захлебнусь!

devzero ()