LINUX.ORG.RU

Компилятор языка D будет переписан с С++ на D

 , ,


3

3

Проект набирающего популярность языка D стал достаточно зрелым чтобы отказаться от использования С++. Как сообщает один из его авторов, Андрей Александреску (Andrei Alexandrescu), в ближайшее время будет начат проект по переписыванию компилятора языка D с С++ на D. Это позволит не только более полно использовать весь потенциал самого D, но и решить ряд проблем местами не слишком красивой архитектуры компилятора.

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

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



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

Теперь базовая библиотека - ОДНА? Или их всё еще две???

А как скрипт программы на языке D работать могут? Вот в Vala такая возможность есть.

И последний вопрос - D может работать поверх каких-то платформ типа JVM или Mono? Была старая реализация для Mono, сейчас заброшена.

Далее, есть ли способы вызова функций из библиотек языка C/C++?

Просто думаю о D, о QtD... Но пока опять же проще просто писать на C++, старательно избегая ранее набитых ошибок.

I-Love-Microsoft ★★★★★
()
Ответ на: комментарий от matumba

Мда, даже по отрывку кода на главной странице видно, что всё тяжёлое наследие 70-х они сохранили в лучшем виде и отказываться от него не собираются. Ну хоть foreach осилили из коробки.

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

Чтобы это понять, нужто всего немного - знать С/С++ и почитать сорсы тех перделок, в которых недавно найдена уязвимость. Ведролинукс тоже пойдёт. Просветление наступит сразу же, как только ты прочтёшь фичи самого Ди (желательно при этом лежать в ванной и кричать «эврика»): Ди просто _принципиально_ не позволяет появиться больше половины тех факапов, которые нагородили «школоло-альтруисты» на своих сипиписях.

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

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

Накой хрен он нужен этот D? Очередной шлак навроде гугловского Go...

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

wota ★★
()
Ответ на: комментарий от I-Love-Microsoft

Есть возможность запускать программу как скрипт.
Си-шные библиотеки использовать достаточно просто, насчёт Си++ не знаю, но раз есть QtD, значит можно.
Проблема QtD в том, что он умер. Последний коммит - 05 июня 2011.
С другой стороны проект всё ещё востребован и я несколько раз слышал о том, как его дорабатывали для собственных нужд - просто апстримить не куда.

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

Си-шные библиотеки использовать достаточно просто

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

П.С. предложенная на сайте dlang тулза лажает даже на весьма скромных библиотеках вроде sqlite

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

Проблема QtD в том, что он умер.

Потому и умер, что !«библиотеки использовать достаточно просто»

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

Просто возьмись и напиши язык... «E»!

Рано, D не готов же еще)

special-k ★★★★
()

Пройдет еще лет 10, а D так и будет сферическим конем в вакууме. Язык совершенно непроработан, разработчики до сих пор спорят о методах реализации многих вещей, которые должны быть продуманы еще лет 8 назад. Хоть на чем его переписывай, не взлетит, т.к. D является игрушкой Брайта и Александреску.

m0rph ★★★★★
()
Ответ на: комментарий от I-Love-Microsoft

У Ди всё его время была единственная официальная библиотека phobos.

А как скрипт программы на языке D работать могут?

Вопрос к авторам rdmd.exe

D может работать поверх каких-то платформ типа JVM или Mono?

Сейчас - нет.
В теории, ЛЮБОЙ компилер это может. На практике, только сейчас индустрия дошла до идеальной архитектуры компиляторов, где можно прикручивать любой бэкенд. Если Ди обрастёт хорошими разрабами, можно прикрутить хоть ARM.

Далее, есть ли способы вызова функций из библиотек языка C/C++?

Советую почитать офсайт, прямо оттуда:

Features To Drop:

Link compatibility with C++. The C++ runtime object model is just too complicated - properly supporting it would essentially imply making D a full C++ compiler too.

Просто думаю о D, о QtD...

ГУЙня к Ди - это больной вопрос.
Существует множество заброшенных байндингов вида gtkD, wxD, qtD, но они катастрофически отстают от последних версий оригиналов.
Есть нативные проекты (DWin, DFC, DFL, DWT, MinWin, Harmonia), некоторые из которых даже в степени готовности «работают примеры из коробки». Но никто их не юзал вдоль и поперёк, чтобы подтвердить их готовность к продакшену. Кроме того, из тех, что я щупал, ни одна не является архитектурно гибкой для лёгкого расширения - тупо хардкодим новые классы и отрисовываем. Так что если запросы - небольшие, можно попробовать DFL.

matumba ★★★★★
()
Ответ на: комментарий от I-Love-Microsoft

Просто думаю о D, о QtD... Но пока опять же проще просто писать на C++, старательно избегая ранее набитых ошибок.

QtD - да, просто «великолепная» штука. Имитировать на D особенности C++ (создание объектов вроде QMutexLocker на стеке и тому подобные костыли) для того чтобы пользоваться всеми возможностями Qt совсем не хочется.

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

C++ считают плохим те, кто не осилил C++.

C++ считают хорошим те, кто не осилил программирование =)

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

Компиляторы - крайне специфичная задача,требующая особых свойств от языка, нигде более не нужных: ADT, pattern matching. При этом язык даже не обязан быть Тьюринг-полным.

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

Предложенная тулза не просто лажает, она же win-only, вроде? Я писал свою. Доводил до состояния требующего минимальной-минутной ручной правки получившегося файла. Конвертил gl.h и несколько других. Не помню.
Я отвечал на вопрос «возможность вызова функций». Она есть и её можно автоматизировать.

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

Спросите Александреску, чего он влез в этот «академический язык», будучи признанным гуру С++! Наверное не от скуки, правда?

Завидует Страуструпу. И такой ли он знаменитый гуру, когда даже на ЛОРе его фамилию с ошибками написали.

Alex-Alex
()
Ответ на: комментарий от quiet_readonly

В ядре едва ли не по байтикам считают, потому и возникают переполнения буфера.

Не вижу логической связи. Если алгоритм - бестолковый, выделяется 10 байт, принимается _неограниченное_ количество входной инфы, которая и переполняет буфер. Как минимум такая лажа требует хотя бы проверки длины входных данных (чего школолам лениво делать), либо обработка порциями = длине буфера (и это надо ещё умудриться написать). А так как энтузазизма - много, а усердия - никакого, получается ведролинукс.

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

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

И да, мне кажется, критика С++ - это своего рода пижонство.

Это всего лишь ваше уязвлённое самолюбие

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

Спросите Александреску

Вы свое мнение имеете? (не в половом смысле)

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

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

После «ДАЖЕ НА ЛОРе» выпал в состояние «пацталом» и не вернулся :))))
Александреску просто рыдает, будучи непризнанным в ЛОР-тусе.

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

В этом и состоит прелесть Ди

О, сколько их было,
Один другого круче,
И каждый знал правду,
И каждый был лучше
Того, что был прежде
anonymous
()
Ответ на: комментарий от anonymous

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

Будь мужиком, б^#^#^! Признай, что язык, на который ты угрохал кучу времени, не оправдал твоих надежд и ты танцуешь в гамаке и ластах на обочине мэйнстрима!
Впрочем, надо быть именно барышней, чтобы думать, что моё профессиональное мнение о С++ можно изменить.

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

Это пока только обещания. Перепишите уже что-нибудь.

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

и не имея практически никогда тупых проблем «переполнения»

для этого D не нужен, нужно знание одного ключа конкретного компилятора ;)

http://en.wikipedia.org/wiki/Buffer_overflow_protection

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

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

Спросите Александреску

Вы еще приведите в пример Александра «Степаноу» - я так понимаю биологический возраст не пошел ему на пользу..

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

Не как не могу понять зачем нужен язык D

Это замена неудобному и костыльному C++.

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

Компиляторы - крайне специфичная задача,требующая особых свойств от языка, нигде более не нужных: ADT, pattern matching

Так толсто, что даже тонко.

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

Будь мужиком, б^#^#^

«Будь мужиком - не ведись на „будь мужиком“»

«я професcионал» - вы «барышня».. Вы разнервничались..? Уровень аргументации упал.. Будь мужиком - подними аргументацию

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

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

... «признай» так приятно почувствовать себя Д'Артаньяном в своих фантазиях... не так ли?

И да: по сути что-нибудь будет?

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

И что получилось?

Обильный корм для троллей.

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

Нет вы спросите Паниковского, у него есть что сказать. До революции Паниковский был человеком....

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

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

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

А ничего, что pattern matching отсутствует во всех мейнстримных языках? Он не нужен для бухгалтерии, CRUD, игрушечек и прочего general purpose говна. А вот компиляторы без него писать уныло.

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

++C++ никому не нужен.

У C++ есть как минимум два применения:

корм для троллей

язык для написания реальных приложений.

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

В дебиане вообще много чего нет.

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

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

А ничего, что pattern matching отсутствует во всех мейнстримных языках?

Совершенно ничего.

А вот компиляторы без него писать уныло.

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

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

В дебиане вообще много чего нет.

В данном случае это звучит особенно смешно.

Но и в генте я тоже его не наблюдаю

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

Значит, физзегов в генте больше, чем системных программистов.

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

тыж гентушник? Будь гентушником, @#$, напиши ебилд

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

Во первых, большинство компиляторов написаны криворукими ламерами.

Во вторых, те, что написаны не ламерами, используют кучу косых, самопальных DSL для компенсации отсутсивия вменяемого pattern matching.

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

++C++

У C++ есть как минимум два применения

Весьма показательно, что из пятерых ответивших на этот пост никто не обратил внимания на преинкремент. Страшно представить, какой код вы все пишете… :)

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