LINUX.ORG.RU

Экспериментальная поддержка С++ компилятором LDC

 calypso, ,


0

4

Одной из главных проблем затрудняющих переход программистов С++ на D является отсутствие возможности простой работы с уже написанными библиотеками на С++.

Проект Calypso призван решить эту проблему и дать программистам D возможность прямого взаимодействия с С++ кодом без необходимости создания соответсвующих оберток. Calypso базируется на компиляторе LDC и к настоящему моменту поддерживает: - глобальные переменные - функции - структуры - перечисления - виртуальные вызовы функций - наследование классов и многое другое

В настоящий момент рассматривается возможность о перспективах слияния Calypso с основным компилятором DMD.

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

★★

Проверено: anonymous_incognito ()
Последнее исправление: anonymous_incognito (всего исправлений: 1)

Ответ на: комментарий от Xroft

Java тоже туда внезапно компилируется. Это ей не помогает, точно так же, как и D с сишарпами и прочим.

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

толпы сипиписников дожили до наших дней, восхваляющие сей язык (т.к. в других не разбираются)

Просто бред. Ты-то сам во многом разбираешься?

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

А зачем учить С++ когда на том же C#/D можно в два раза быстрее решение сделать?

Особенно на D с отсутствием библиотек, ага. А так области разные, много где С++ оправдан.

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

тогда он окончательно перестанет быть заменой C

Не перестанет. Как обычно, это будет опциональным. И почему-то кажется, что не особо используемым.

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

Java тоже туда внезапно компилируется. Это ей не помогает, точно так же, как и D с сишарпами и прочим.

То что Java тормозит, это не значит, что другие языки тормозят.

D примерно равен производительности С++ с поправкой на используемый компилятор и задачу +\- 5%. Работа со строками будет быстрее чем на плюсах.

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

Да троллоло он толстенное и неостроумное ни разу.

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

Я про Java тоже много таких сказок читал. Вот прямо здесь, на лоре. Причем, утверждалось, что java не только не медленнее «+/-», но даже и БЫСТРЕЕ. Причем даже на JVM c JIT. Только в жизни всегда оказывалось, что это мягко говоря не так. И GC в этом играет немаловажную роль.

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

И вот тут Ди и проявляет всю свою мощь, включая помощь GC.

Ну так пилите свой тулкит для гуя, а то у вас «Ди проявляет всю свою мощь» исключительно как презерватив между С/С++ и пользователем. Софта никакого серьезного на D нет, а уже самомнение выше крыши.

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

И GC в этом играет немаловажную роль.

Ну так управляйте памятью вручную, кто вам мешает? В Ди это уже давно реализовано.

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

Так и управляем. И не нужен нам для этого никакой D (возвращаясь к первому моему посту). D опоздал. Это просто ещё один велосипед, который ничем сильно не лучше C++14 (из которого вовсе не обязательно использовать все фичи), зато кое-чем сильно хуже.

asaw ★★★★★
()

В настоящий момент рассматривается возможность о перспективах слияния Calypso с основным компилятором DMD.

Нет. Рассматривается слияние с основным кодом LDC в качестве дополнения, шансов попасть в стандарт языка это почти не имеет.

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

который ничем сильно не лучше C++14

Если присмотреться получше, то видно, что лучше и сильно.

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

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

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

Профит знания С++ какой? Чтобы просто время убить?

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

Профит знания С++ какой?

За него платят деньги? Большинство оупенсоурс проектов написаны на нем?

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

Затем, что «проще и быстрее» «все» в твоём D делается только в радужных мечтах. В реальности сам D - пустая трата времени. На нем невозможно сделать ничего серьезного по причине отсутствия поддержки соответствующим инструментарием, а поддержки таковой нет потому, что люди видят и понимают, что нет в этом твоём D по сравнению с C++ никаких существенных преимуществ, и гораздо легче сделать C++11, чем такую поддержку делать для D.

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

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

он оказался слаб духом, не выдержал нагрузки на моск )

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

Не перестанет.

Да как же не перестанет, если накроется совместимость по линковке?

Как обычно, это будет опциональным.

На уровне линковки это будет два разных языка.

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

В C++11 сделаны первые шаги.

Речь про declare_reachable/ undeclare_reachable и т.д.? Сделаны-то они сделаны, но по моему, это скорее «предоставление возможности», а сама реализация в стандарте не факт, что появится в обозримом будущем. Ну или я про это просто не слышал. Потому и поинтересовался правда ли что-то в этом направлении делается.

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

Линковке чего с чем?

С кодом, который в качестве указателей использует аппаратные указатели.

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

Пишешь новые MySQL, Photoshop, LibreOffice, Maya, Skyrim и GTA 5? Молодца!

Не знаю объём исходников Photoshop, Maya и GTA. С MySQL примерно в одной весовой категории, Libreoffice далеко впереди. Не самый удачный вброс.

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

Добавь туда ещё «ЧСВ over 9000»)

Не могу, этот уровень зарезервирован за экспертами LOR.

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

С кодом, который в качестве указателей использует аппаратные указатели.

«Управляемые» языки вполне могут сишные либы использовать. А «бесшовной» интеграции вряд ли кто-то ожидает. А так есть ведь консервативный ГЦ для С/С++.

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

И что после этого софт вдруг волшебным образом стал работать параллельно по ядрам и перестал течь? Не верю!

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

Не знаю объём исходников
С MySQL примерно в одной весовой категории, Libreoffice далеко впереди

норм аналитика

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

Проект открытый или какой-то закрытый/внутренний?

Sociomantic же. Речь идёт примерно о нескольких десятках сетевых сервисов (~половина - soft real-time) - сбор и обработка данных о покупателях, реализация торговых алгоритмов, генерация медийных данных, различные вариации DHT и тому подобное. Пока всё закрыто, планируется открыть базовые библиотеки, но воз уже год как стоит в юридическом отделе и непонятно, когда дадут добро.

Я это в целом не к тому, что D - панацея и нужно срочно бросать C++, а к тому, что возгласы о «невозможно» и «не нужно» столь же глупы, как и возгласы «за D будущее!». В некоторых проектах можно воспользоваться сильными сторонами D, чтобы получить конкурентное преимущество. Во многих это не имеет смысла. Компетентные инженеры для того и нужны, чтобы принимать такие решения основываясь на конкретной ситуации, а не мнении анонимусов в интернете.

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

Sociomantic

Бывают люди, для которых это название ни о чем не говорит :)

За информацию спасибо, но терзают меня смутные сомнения. Имхо, сложность и объем задачи разработки движка СУБД будет несколько повыше, чем аналогичного по объему кода пачки сервисов, работающих вместе. Впрочем, не видя кода, судить не берусь.

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

какие киллер-фичи d определили выбор?

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

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

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

какие киллер-фичи d определили выбор?

Полагаю, там у основ стоял один из самых больших фанатов языка, Don Clugston, который успешно использовал D для решения различных вычислительных/околовычислительных задач. Вроде как здесь должно быть подробнее: http://dconf.org/2013/talks/clugston.html

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

Sociomantic же. Речь идёт примерно о нескольких десятках сетевых сервисов (~половина - soft real-time) - сбор и обработка данных о покупателях, реализация торговых алгоритмов, генерация медийных данных, различные вариации DHT и тому подобное

Т.е. делаете то же, что и типичные обезьянки на Java, а меряете крутость объемом кода. Окай

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

т.е. этот самый господин и является киллер-фичей? ок.

на всякий случай подожду ответ от оригинала.

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

Полагаю, что как и в C++: заранее преаллоцированные структуры данных и буфера.

Не помню, чтобы в D компилятор мог проверять такие вещи, как отсутствие работы с динамической памятью. Другое дело, что там за счет шаблонов и строковых mixin-ов из нескольких строк eDSL в compile-time можно развернуть довольно навороченные конструкции (можно нагенерировать кучу объектов, который будут статическими, кучу алгоритмического кода и т.д.).

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

какие киллер-фичи d определили выбор?

Я не работал в компании, когда всё только начиналось, но со слов основателей ситуация была примерно такова (5-6 лет назад) : нужно разработать сервисы с real-time элементами, есть 3 программиста (сами основатели) и 0 инвестиций. Решили рискнуть и попробовать D, так как: - скорость и удобство разработки намного выше, чем с C/C++ - потребление ресурсов сопоставимо (и сильно меньше чем у языков с виртуальными машинами) - если взлетит, то можно будет нанимать людей с опытом C/C++ и легко переучивать

Так примерно и произошло.

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

У нас очень разное представление о том, для чего нужны инженеры :) Не менеджерам же эти решения принимать.

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

Интересно, как они обходят использование кучи и проверяется ли это компилятором

Никак. Вместо этого сервисы написаны таким образом, чтобы одни и те же буферные массивы использовались снова и снова, не создавая новых корневых указателей для GC. Такое приложение на практике создаёт O(1) аллокаций относительно времени работы приложения. То есть суть та же, что и с преаллокацией всех данных, но размер динамический и определяется пиковой нагрузкой.

+ используется свой самодельный concurrent GC вместо стандартного для редких случаев, когда мусор таки нужно почистить

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

Т.е. делаете то же, что и типичные обезьянки на Java, а меряете крутость объемом кода. Окай

Изначально речь шла о сложности (разработки/поддержки/модификации), там вполне себе линейная корреляция с объёмом кода. Но я с интересом послушаю формальные критерии оценки крутости исходников :)

Dicebot
()

как у D с лицензионной чистотой?

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

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

То есть вы только выделяете память, но не освобождаете ее, а используете повторно?

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

То есть вы только выделяете память, но не освобождаете ее, а используете повторно?

Да, по большей части. Есть небольшое количество мусора (для которого и нужен concurrent GC), но редко больше 5% от всей используемой памяти.

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

Пока всё ещё D1. Я как раз занимаюсь портированием на D2, но это займёт не меньше нескольких лет (первый сервис полностью на D2 запланирован на конец след. года)

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

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