LINUX.ORG.RU

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

 , ,


3

3

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

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

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



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

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

ЛОР онолитеги, скажите - есть смысл в этом (в изучении D)?

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

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

Так что же произошло бы, если б проблемный участок ядра был бы написан на D - выпало бы исключение?

Что за ахинея? Память бы просто выделилась столько, сколько нужно!
А если подразумевается неизвестный поток с атакующими намерениями, тут сам бог велел читать порциями и проверять общую длину. Обычная практика, но которую легче проводить на D, чем прыгать с Сишными аллоками.

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

эээ... а в чём проблема иметь опытного «компиляторщика»??

Проблема в том, что этот конкретный компиляторщик мало знает о языках программирования, отличных от Си++.

Не это ли гарантия того, что язык не скатится к реализации «популярных плюшек» (как C#) ?

Нет, но это неважно. Чтобы сконструировать приличный язык, нужно нечто большее, чем просто «гарантия от реализации популярных плюшек».

у Ди есть один серьёзный бенефит - он УЖЕ ОБКАТАН

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

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

Сам-то понял, что сказал? Еще разок вдумайся и представь процесс: писать компилятор на языке, для которого еще нет рабочего компилятора. Такое могут предложить только эксперты с ЛОРа-опеннета.

А как по твоему создаётся первый компилятор на новой платформе?

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

Если вам не нравится printf, можно в личном порядке рекомендовать потоковый ввод-вывод

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

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

Write(Variable1,' ',Variable2,' Hello World! ',Variable3);
Writeln('');

Грамотные обёртки рулят.

Откуда инфа?

Из текта новости - они разбили переписывание компилятора на 3 этапа, первые 2 из которых ненужные.

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

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

Вот когда его компилятор перепишут, тогда будет смысл ознакомиться с ним подробнее а пока писать на нём что-то большое опасно.

А спрашивать по форумам «а умеет ваш %%%%% вот так?» - нет смысла, ни себе польза, и людей отвлекаешь.

Польза есть - можно сравнить фичи разных языков.

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

О! Добрый вечер товарищ мэйнстрим.. Заждались-соскучились..

Подсказываю: а есть еще слово мэйнфрейм.

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

как оно в сравнении с go, rust, vala?

По сравнению с go сейчас в D гораздо больше возможностей, шине стандартная библиотека. vala вообще-то неплохой проект, но учитываю переход гномеров на JS, загнётся она. В Вале нет многого, что есть в Д, например, я могу в Д написать x[0 .. $] = y[0 .. $], а в Вале не могу. Ещё там у них массивы массивов не поддерживаются и срезы многомерных массивов недоступны. rust просто не знаю.

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

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

как долго ты пробыл в анабиозе.

man array of const; man varargs;

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

string? когда он начал уметь юникод? сравни его с CString,QString

нормальная модульность - без инклюдов. Чтобы запилить класс, надо инклюдить. При инклюде ты получаешь зависимость от private полей и лишние полчаса компиляции. Про pimpl знаю, считаю ненужным костылем.

rtti? сравни с reflection в яве или c# и пойми, почему для C++ нету автоматических сериализаторов, ORM и прочих достижений 21 века.

Лично для меня сейчас C# является эталоном фич языка.

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

Там особый отбор фич. Где события (как в C# или Qt), рефлексия, динамические типы, графический тулкит?

farafonoff ★★
()

Удивительно, тред не был атакован лисперами и хацкелистами

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

А Rust давно сам на себе написан!!1

krab@aspire [~/temp] ldd test
linux-gate.so.1 => (0xb7707000)
libcore-c3ca5d77d81b46c1-0.5.so => /home/krab/temp/./../../../usr/lib/rustc/i686-unknown-linux-gnu/lib/libcore-c3ca5d77d81b46c1-0.5.so (0xb751e000)
librustrt.so => /home/krab/temp/./../../../usr/lib/rustc/i686-unknown-linux-gnu/lib/librustrt.so (0xb74ce000)
libgcc_s.so.1 => /lib/i386-linux-gnu/libgcc_s.so.1 (0xb7496000)
libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0xb72ec000)
libm.so.6 => /lib/i386-linux-gnu/libm.so.6 (0xb72c0000)
libdl.so.2 => /lib/i386-linux-gnu/libdl.so.2 (0xb72ba000)
libpthread.so.0 => /lib/i386-linux-gnu/libpthread.so.0 (0xb729f000)
librt.so.1 => /lib/i386-linux-gnu/librt.so.1 (0xb7296000)
libstdc++.so.6 => /usr/lib/i386-linux-gnu/libstdc++.so.6 (0xb71ad000)
/lib/ld-linux.so.2 (0xb7708000)

Какой ужас :(

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

C++ был совместим с основой системного программирования - си. Cмотрите, что из этого получилось.

И что получилось? язык не идеален как и все, но лучше на данный момент нет.

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

D хорош уже тем, что несовместим с C/C++. ++C++ никому не нужен.

Ты упоротый наглухо. Если про ++ ещё можно поспорить(и то ему замены нет), то уж Си трогать это ....

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

Потому что такой же дырявый как Java )))

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

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

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

Тут всё хитрее. D по вызовам с сями совместим (и частично с плюсами). А вот чтобы понимать сишные .h он должен был бы нести в себе фактически полный препроцессор и компилдятор сей. Что сочли ненужным. Это «техническое» обоснование.

Есть ещё архитектурное. Тупая трансляция сишных хидеров в D дает совершенно чужеродный код, вокруг которого всё равно нужна обёртка. При это усилия на проектирование и написание приличной обертки сравнимы с самой трансляцией ручками (там штук пять глобальных замен плюс потом поправить руками совсем немного) примерно как 100:1 - смысла ради этого писать довольно сложный автоматический транслятор никакого.

P.S. хидер sqlite (350к) переводится в D руками минут за 15. А толку - в родном виде в дишном коде вызовы sqlite смотрятся как дикарь в городе. Там даже если не делать ормы и прочие удобства надо как минимум прятать работу с памятью и добавление \0 в конец строковых данных.

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

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

Александреску не гуру С++, а додбоёб. Ты его книги читал? С++ надо использовать с умом и аккуратно.

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

Замен С++ полно. Начиная от D, С#, Java, заканчивая скриптовыми языками.

С с легкостью могли бы заменить Модула, Оберон, например

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

Если про ++ ещё можно поспорить(и то ему замены нет)

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

то уж Си трогать это ....

Вы правда не понимаете, насколько лучше (я не говорю популярнее) были бы плюсы без совместимости с си?

unsigned ★★★★
()

Как интересно, теперь, чтобы скомпилировать сам компилятор D, придётся написать его сначала ?)

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

без этого их просто бы не было.

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

Начиная от D

Ну-ну. По этой теме видно насколько зрелая замена.

С#, Java, заканчивая скриптовыми языками.

Не то.

Троллишь, да?

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

«Языки делятся на два типа: те, которые все ругают, и те, на которых никто не пишет.»

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

Тогда покажи, как будет выглядеть такой D-код на Си++.

о! с такими возможностями предвижу тонны говнокода, из которого никуя не понятно, где какая сущность используется. Или вы думаете, что «индусы» не будут совать это где нужно и где не нужно?

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

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

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

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

C++ умирает - это просто факт.

Факты требуют пруфов. Где пруфы?

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

Даже сейчас D на голову выше С++

То самое. Из самой массовой ниши С++ уже вытеснили.

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

Так что внемли сейчас, пока есть возможность влиться в нормальные языки

Слушайте этого пророка! ПОКАЙТЕСЬ!

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

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

Ванга в треде, все в машину.

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

Ванга в треде, все в машину.

If the member is a class or struct, undefined lookups will be forwarded to the AliasThis member

да еще в купе с:

Multiple AliasThis are allowed.

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

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

То есть ты отрицаешь использование разных фишек языка «как попало» всякими индусами, из-за которых и возникают «этот язык полное говно, если такое допускает»?

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

class bar {
    ....
    foo f;
    std::string s;
    ....
    operator foo () { return f; }
    operator char * () { return s.c_str(); }
};

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

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

undefined lookups will be forwarded

кстати еще одна «мина», стоит добавить метод или поле, которое раньше бралось из AliasThis, причем бралось в каком-нибудь богом забытом месте - и привет баги, при правке класса или структуры такие места отследить очень трудно

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

Почему то сейчас ты мне этого индуса напоминаешь.

Это разбивает мне сердце. Пойду плакать в уголке.

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

Ты в исходники Буста давно заглядывал?

я принципиально не пользуюсь бустом

Я не спрашивал, пользуешься ли ты им.

а что?

Как знают даже те, кто Бустом не пользуется (и ты тоже знаешь), там кромешный ад нечитабельного кода. И ничего, Си++ все пользуются и многие (например, ты) даже похваливают. Прдъявлять при этом претензии D за alias this - это больше всего похоже на понты «знатоков» проектирования ЯП.

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

Когда-то мне код ядра казался очень непонятным и нечитабельным. Потому как Си я знал только на уровне for, if и while.

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

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

Я не спрашивал, пользуешься ли ты им.

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

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

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

Прдъявлять при этом претензии D за alias this - это больше всего похоже на понты «знатоков» проектирования ЯП.

у вас женская логика и аргументация

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

Когда-то мне код ядра казался очень непонятным и нечитабельным. Потому как Си я знал только на уровне for, if и while.

D ты на таком уровне и знаешь.

В общем-то ниосилятор ты обычный

А обо мне ты знаешь еще меньше, чем о D.

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

D ты на таком уровне и знаешь.

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

А обо мне ты знаешь еще меньше, чем о D.

Уже из сообщений в теме можно сделать вывод о твоем «знании» плюсов, ага.

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

Я не спрашивал, пользуешься ли ты им.

ты мог бы догадаться, но раз не догадался

Не догадался ты.

я не пользуюсь бустом и не читаю его код

А теперь еще и солгал.

у вас женская логика и аргументация

Я описал твое поведение. Если оно кажется тебе женским - это повод задуматься.

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

Уже из сообщений в теме можно сделать вывод о твоем «знании» плюсов, ага.

В этом треде полно Ванг.

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

Среди компиляторостроителей не-ламеров такое же количество, как и в любой другой группе - все те же 5% против 95% недоумков. Это нормально.

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

Wamcc уже упоминался. GNU Prolog так же. Ты тупой, да?

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