Язык программирования D как лучшая альтернатива С++
D — от Dиавола! Проще сразу изучать язык Ада!
Просто ткнул наугад, что у нас в Ди с библиотекой gettext. Получилось что-то невнятное:
http://forum.dlang.org/thread/mailman.257.1328208519.25230.d...
Пока не притащат основные библиотеки говорить, в общем, не о чем.
тут было обсуждение: link
недавно слышал, что Александреску переписал код чего-то с С++ на D и выяснилось, что D работает быстрее.
вроде под ником andralex пишет этот Александреску
Пока не притащат основные библиотеки говорить, в общем, не о чем.Насколько я понял из приведенной выше дискуссии на реддите, написание байндингов к сишному коду элементарно, так что вряд ли там прям страдания от недостатка библиотек.
тут было обсуждениеОтличная ссылка, спасибо!
что у нас в Ди с библиотекой gettextНе понятно, кто из нас не прав.
Вроде бы библиотека gettext написана на С (не на С++! а все С-библиотеки, если я правильно понял из книги Александреску, легко подключаются к D.
написание байндингов к сишному коду элементарнои что?
я не хочу это делать, и не хочу оказаться в ситуации "внезапро выяснилось, что биндинга нет".
Вроде бы библиотека gettext написана на С (не на С++! а все С-библиотеки, если я правильно понял из книги Александреску, легко подключаются к D.Если это так, то круто.
Вроде пишут , что там еще не все баги из компилятора вычистили
главном сайте. После Явы она выглядит как-то "по-деревенски". Мало качественной справочной информации, трудно гуглятся конкретные вопросы по языку D и библиотекам.
В общем, похоже, что C++ forever
Но для общего развития все равно еще позанимаюсь с D...
Попрактиковался немного: показалось, что язык D сыроват. Не понравилась организация документации на В общем, похоже, что C++ forever
Но для общего развития все равно еще позанимаюсь с D...
обработчик фоток и анализатор/визуализатор дискового пространства, а также одно "веб-приложение" на vibe.d - сайт соревнования с регистрацией, приемом решений и отображением scoreboard'a (был сделан за день, работал стабильно, ресурсов не жрал). Если раньше для многих своих задач я выбирал окамл, то теперь чаще всего это D, хотя какие-нибудь компиляторы по-прежнему предпочитаю делать на окамле или хаскеле.
Кое-какие впечатления и обсуждения есть тут:
http://thedeemon.livejournal.com/tag/d
Собираюсь следующую крупную версию одного из основных своих продуктов (Video Enhancer) на D делать.
Чисто как язык D прекрасен (хоть и не идеален и отлично может служить заменой как С++, так и питонов/окамлов/сишарпов. Там полный спектр от встроенного асма, SIMD, низкоуровневой работы с памятью до высот функциональщины с выводом типов, иммутабельностью, проверкой чистоты, сильными абстракциями, и компайл-тайм исполнением почти произвольного кода. Плюс удобные средства для параллелизма (parallel for, map, reduce и т.д. в стандартной библиотеке) и concurrency (erlang-style message passing с изоляцией актеров системой типов). Но есть и множество но. Язык делают прожженые практики-плюсовики, далекие от высокой теории CS, поэтому он получается весьма удобным и приятным на практике, но у него нет четкой теории, что в сочетании с компилятором на С++ приводит к череде вечных багов. Последние пару лет багов вроде бы становится заметно меньше (это многие старые пользователи отмечают с каждым релизом правятся сотни этих багов, что наводит на мысли сколько сотен при этом вносится и сколько еще осталось.
Основных компиляторов три - DMD, GDC и LDC. DMD - официальная референсная реализация. Работает быстрее всего (говорят, даже заметно быстрее этого вашего go но код генерит не самый лучший - где-то на уровне VC6. GDC использует фронтенд от DMD, бэкенд от GCC. LDC - фронтенд от DMD, бэкенд LLVM. В винде проще всего поставить DMD, но при компиляции в 32 бита он делает объектные файлы в старинном формате (OMF) и использует свой линкер. Линковать сишные либы можно, либо сконвертировав их в OMF, либо линковать и загружать динамически. При компиляции в 64 бита все проще, используется линкер от VS или гнушный(?).
Отдельного упоминания заслуживает GC. Иметь его в языке очень приятно, можно писать как на шарпе, но получать нативный бинарник, который запускается мгновенно и не имеет левых зависимостей. Но GC там частично консервативный (что на практике не проблема в 64 битах, но бывает проблемой в 32) и главное не generational. Другими словами - тормозной. Если в куче гигабайт мелких объектов, сборка мусора может занять секунд 5. А при неосторожном подходе она может случаться довольно часто. Поэтому с памятью следует обращаться осторожно, что к счастью не так сложно, и средства ручного управления (от delete до умных указателей с подсчетом ссылок) тоже имеются.
Короче, проблем там хватает, но если их представлять и уметь обходить, и они не становятся show-stopper'ами, то получается очень мощная и приятная в использовании штука. Поэтому я и хочу по возможности свои плюсовые проекты на D переводить.
Я в прошлом году открыл для себя этот язык, и меня он очень радует. Писал на нем кучу консольных мелочей, несколько гуевых программ, в том числе Кое-какие впечатления и обсуждения есть тут:
http://thedeemon.livejournal.com/tag/d
Собираюсь следующую крупную версию одного из основных своих продуктов (Video Enhancer) на D делать.
Чисто как язык D прекрасен (хоть и не идеален и отлично может служить заменой как С++, так и питонов/окамлов/сишарпов. Там полный спектр от встроенного асма, SIMD, низкоуровневой работы с памятью до высот функциональщины с выводом типов, иммутабельностью, проверкой чистоты, сильными абстракциями, и компайл-тайм исполнением почти произвольного кода. Плюс удобные средства для параллелизма (parallel for, map, reduce и т.д. в стандартной библиотеке) и concurrency (erlang-style message passing с изоляцией актеров системой типов). Но есть и множество но. Язык делают прожженые практики-плюсовики, далекие от высокой теории CS, поэтому он получается весьма удобным и приятным на практике, но у него нет четкой теории, что в сочетании с компилятором на С++ приводит к череде вечных багов. Последние пару лет багов вроде бы становится заметно меньше (это многие старые пользователи отмечают с каждым релизом правятся сотни этих багов, что наводит на мысли сколько сотен при этом вносится и сколько еще осталось.
Основных компиляторов три - DMD, GDC и LDC. DMD - официальная референсная реализация. Работает быстрее всего (говорят, даже заметно быстрее этого вашего go но код генерит не самый лучший - где-то на уровне VC6. GDC использует фронтенд от DMD, бэкенд от GCC. LDC - фронтенд от DMD, бэкенд LLVM. В винде проще всего поставить DMD, но при компиляции в 32 бита он делает объектные файлы в старинном формате (OMF) и использует свой линкер. Линковать сишные либы можно, либо сконвертировав их в OMF, либо линковать и загружать динамически. При компиляции в 64 бита все проще, используется линкер от VS или гнушный(?).
Отдельного упоминания заслуживает GC. Иметь его в языке очень приятно, можно писать как на шарпе, но получать нативный бинарник, который запускается мгновенно и не имеет левых зависимостей. Но GC там частично консервативный (что на практике не проблема в 64 битах, но бывает проблемой в 32) и главное не generational. Другими словами - тормозной. Если в куче гигабайт мелких объектов, сборка мусора может занять секунд 5. А при неосторожном подходе она может случаться довольно часто. Поэтому с памятью следует обращаться осторожно, что к счастью не так сложно, и средства ручного управления (от delete до умных указателей с подсчетом ссылок) тоже имеются.
Короче, проблем там хватает, но если их представлять и уметь обходить, и они не становятся show-stopper'ами, то получается очень мощная и приятная в использовании штука. Поэтому я и хочу по возможности свои плюсовые проекты на D переводить.
Из открытых источников стоит отметить такой:
http://ddili.org/ders/d.en/
Еще надавно начали делать tutorial:
http://qznc.github.io/d-tut/
Сначала попробую попрактиковаться с библиотекой DFL, которая использовалась для создания GUI в обработчике фотографий и визуализаторе дискового пространства.
Ты IDE пользуешься или vim/emacs?
Для D использую VisualD - плагин для студии (написанный на D тоже). vim'ом пользуюсь для ряда других языков.
Оставить комментарий
nikola1956
На днях случайно обнаружил, что существует замечательный язык, предназначенный для тех же целей, что и C++, то есть для системного программирования, низкоуровневой оптимизации и программирования на уровне нативного кода.Просматривал книжку Alexandrescu "" (2010, zip, pdf) — язык D показался мне довольно красивым и продуманным в отличие от излишне тяжеловесного С++. Остается выяснить, насколько просто можно использовать в D огромное множество C++ библиотек и какое будущее у языка D в качестве замены монструозного С++? Кто-нибудь из читателей раздела знаком с этой темой?
P.S. Кстати, недавно слышал, что Александреску переписал код чего-то с С++ на D и выяснилось, что D работает быстрее. Правда не понятно, насколько плох был этот С++ код и переписывался ли он на D строчка в строчку.