LINUX.ORG.RU

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

 , ,


3

3

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

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

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



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

Мэйнстрим так буквально и понимают - «основное течение», т.е. то, чем занимается большинство
Сейчас на коне C#

а я думал большинство занимается мобилками и планшетами (Obj-C/Java), серверами (C/C++/Java), вебелью ( Ruby/Python/PHP) и гуем (Obj-C/C++ для топовых программ), играми (C++ для топовых), но гурам конечно виднее

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

В том-то и дело, что Александреску не просто C++ не знает, он вообще программировать не способен. Ну, нарушение психики какое-то, что ли.

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

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

Нормальный, правильный, индустриальный C++ ничего общего с высерами Александреску не имеет.

На память сразу приходят boost и hoomd-blue, где шаблонной магии предостаточно. Впрочем, я не программист, и что там творится в индустриальном С++, мне всё равно.

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

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

Ваша толстота не нужна, уходите.

Впрочем, надо быть именно барышней, чтобы думать, что моё профессиональное мнение о С++ можно изменить.

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

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

Прикладники орудуют в вебе, на готовых фреймворках или через те же системные либы. Так что им небезразлично неумение D напрямую использовать заголовки C/C++.

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

C++ умирает - это просто факт. Хотя обилие средств разработки и большая кодовая база позволят ему существовать еще очень долго, как Фортрану, например. Уже давно назрела необходимость замены С и С++, хотя, D наступает на те же грабли что и С++, но в целом, в концептуальном плане он гораздо лучше С++.

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

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

Нет, это просто голословное утверждение

Хотя обилие средств разработки и большая кодовая база позволят ему существовать еще очень долго, как Фортрану, например

У фортрана не было таких средств разработки, пропасть между C++ и D по человеко-годам больше на несколько порядков.

Уже давно назрела необходимость замены С и С++

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

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

в концептуальном плане он гораздо лучше С++.

Так и не понимаю, в чём.

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

Нет это факт, достаточно посмотреть статистику. Я не говорю, что с С++ бегут на D, бегут на другие языки, C# и Java, например.

И не смотря на это Фортран жив, инерция очень велика, особенно инерция мышления.

Дело не только в препроцессоре, С++ это «Франкинштейн». Исправить его уже нельзя, проще создать новый.

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

Спецификацию прочитайте. Хотя, ИМХО, создатели D слишком его переусложнили.

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

Version Information: Microsoft .NET Framework Version:4.0.30319; ASP.NET Version:4.0.30319.272

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

Сорри, я не согласен с предыдущим анонимом, что SQL не нужен, так как реляционна модель, очень удобно, но согласен, что он синтаксически крайне неприятен, так как имеет различный синтаксис для различных комманд. Создавался он с целью того, чтобы люди не разбирающиеся в CS могли делать запросы к БД, и быть легким в изучении. Но «бизнес» люди, так и не стали сами писать запросы к БД, а стали нанимать для этого программистов.

Сравните SQL с его альтернативой QUEL http://en.wikipedia.org/wiki/QUEL_query_languages, у которого синтаксис для всех комманд похож.

anonymous
()

набирающего популярность языка

2013 год... Забавно :).


Им кто-нибудь пользуется вообще? Я ни одного живого проекта не видел на этом чуде.

Хоть какие-нибудь проекты есть на нём?

Да нет на нем проектов, кроме пары примеров, написанных самим «коллективом авторов».

На нем сейчас ведется разработка приложений каких нибудь ?

Погодите на замену C++ пророчить. К сожалению эта штука тоже не освобождена от сомнительных фич.

Хотя, имхо, D вообще уже стоит закопать.

ЛОР, 2 года назад, тред «Вышли новые версии оригинальных компиляторов языков D2 и D1» (Вышли новые версии оригинальных компиляторов языков D2 и D1).


По существу, что на нём написано то?

не густо, но есть. Просто молодой он еще.

этот язык все начинает поддерживать все больше

Все начинает и начинает...

Не, поезд его уже уехал. Надо было раньше шевелиться.

/me ушел разрабатывать язык E

ЛОР, 4 года назад, тред «Язык D доступен для FreeBSD» (Язык D доступен для FreeBSD).


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

кто-нибудь видел на этом D какой-нибудь серьезный проект? или пока только проги уровня «Hello world» клепаются?

Один вопрос: зачем?

Отличная новость. 1.0 это уже серьёзно, значит язык стабилизировался.

А что на нём РЕАЛЬНО можно писать?

Это все конечнно хорошо - только что хорошего в самом языке?

Я хоть и профессионал, а не понимаю - нах нужен этот D?

ЛОР, более 6 лет назад, тред «Язык программирования D 1.00» (Язык программирования D 1.00).


И надо было, спрашивается создавать D?

А вобще зачем этот D нужен ? Есть и так уже туева куча языков налюбой вкус, любого уровня...

D приобретает популярность...

D - очередная С/C++-образная ерунда, отличия чисто косметические.

ЛОР, 8 лет назад, тред «Вышел GDC 0.12» (Вышел GDC 0.12).


я не понял он че под си/си++ заделался?

не хотел бы писать на этом языке.

ЛОР, 10 лет назад, тред «D Programming Language» (D Programming Language).

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

А когда g++ на C++ перепишут?

У меня для тебя (плохие) новости.

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

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

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

> C++ умирает - это просто факт.
Нет, это просто голословное утверждение

Каждый волен заблуждаться в меру своей слепоты. Когда неуклюжесть С++ станет очевидна как тупиковость паровой машины, тогда твоё мнение уже не понадобится. Так что внемли сейчас, пока есть возможность влиться в нормальные языки. Даже C# стоит на порядок выше этого ассемблера с объектами.

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

Stalin, повеселил, спасибо. :)
Весь ЛОР можно уместить практически в единственную фразу:
«А вобще зачем этот {подставить нужное} нужен?»

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

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

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

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

matumba> Сейчас на коне C#
wota>...список областей и действительно популярных там ЯП...
matumba> ты вылез сюда потрясать своими познаниями языков

о_О

matumba> ты глуп и неуместен - я всё это знаю без тебя

О_О, окай

wota>....список областей и действительно популярных там ЯП...
matumba> А если ты считаешь мобильный пузырь чем-то важным и распространённым, глуп вдвойне.

ты очень избирательно читаешь, ну и насчет «не распространённый мобильный пузырь» - сильно сказано

П.С. не забудь в ответе назвать меня глупым, я переживаю по этому поводу

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

Лично мне в SQL не нравится сама нерегулярность синтаксиса различных комманд

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

И еще неуклюжестью, при написании действительно больших и сложных запросов дергающих различные части БД.

А почему вы считаете его ужасным?

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

Смотрю тред сначала. Вывод: да ты упоротый

anonymous
()

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

Ээээ, я правильно понял: только от самого переписывания реализации на другом языке архитектура вдруг из кривой становится просто таки идеалом красоты?
Пусть не мается фигней а тупо переделывает архитектуру, а уже потом может и по переводить на какой-угодно язык.

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

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

А как в Ди у динамических массивов увеличивается длина: увеличивается автоматически при использовании или перед использованием надо задавать конкретную длину? А также представляет ли динамический массив непрерывный кусок памяти и если представляет то добавление длины каждый раз по нескольку байт не сильно ли терроризирует дишный менеджер памяти?

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

Прикладники орудуют в вебе, на готовых фреймворках или через те же системные либы. Так что им небезразлично неумение D напрямую использовать заголовки C/C++.

Напрямую использовать заголовки C/C++ ненужно, достаточно иметь утилиты конвертирующие их в правильные с точки зрения языка файлы.

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

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

Полноценный язык «на котором можно написать всё» не должен страдать от зависимости от языка на котором собирается компилятор. Странно что они так поздно это поняли. Это же дурдом: хочешь пропатчить Ди - выучи сначала все С++ хаки на котором он написан.

Napilnik ★★★★★
()

О каком системном программировании речь? D использует автоматический сборщик мусора, в том числе и его стандартная библиотека. Потом этот разброд с двумя стандартными либами, Tango/Phobos. Две разные верии языка D1/D2...

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

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

Это затянется на годА.

Лучше бы они просто сделали транслятор в C++(или C), с языка D.

tp_for_my_bunghole
()

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

Vala с таким подходом более высокоуровневый и прагматичный язык. Легче найти информацию в поисковиках. Reference count контролируем и легче поддаётся прогнозированию его работы в программе.

Все технологии движутся в сторону сингулярности, как ты ни крути. C++ в этом преуспел, но языку много лет. D доказал это уже даже на этапе зарождения.

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

D использует автоматический сборщик мусора, в том числе и его стандартная библиотека.

Отключаемо.

Потом этот разброд с двумя стандартными либами, Tango/Phobos.

Либа одна - Phobos.

Две разные верии языка D1/D2...

Одна D2. D1 уже давно не развивается. Выходили только баг-фиксы. К тому же если посмотреть на плюсы, там вообще ад C++98 C++03 C++10 C++11 и тд реально 100500 версий получается.

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

К тому же если посмотреть на плюсы, там вообще ад C++98 C++03 C++10 C++11 и тд

развитие старого != выкидывание и написание нового, ты и сейчас можешь писать на C++98

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

Нет это факт, достаточно посмотреть статистику.

Статистика не показывает отмирания C++, лишь некоторые колебания в разные стороны. Кроме того, метод сбора статистики обычно не меняется, а вот области применения C++ - меняются, например, в последние 4-5 лет благодаря Qt4, управлению Нокией, новым модулям и QtCreator неплохо поднялся Qt. Отсюда метод сбора статистики постепенно становится более неточным.

Дело не только в препроцессоре, С++ это «Франкинштейн». Исправить его уже нельзя, проще создать новый.

Если будет убран препроцессор, то многие оставшиеся проблемы решатся с помощью инструментов, а сложность превратится в преимущество - т.к. можно сделать больше проверок во время компиляции.

Исправить вообще можно всё, если без разбора создавать новое - это будет нигилизм и NIH-синдром. Не вижу причин, почему исправление C++ встанет дороже, чем переписывание исходников, переобучение программистов и перевод инфраструктуры на какой-нибудь D.

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

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

К тому же если посмотреть на плюсы, там вообще ад C++98 C++03 C++10 C++11 и тд реально 100500 версий получается.

Все версии обратно совместимы с предыдущими, в отличие от. Про C++10 слышу впервые. В C++03 были крошечные косметические изменения и подготовка к C++11.

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

Напрямую использовать заголовки C/C++ ненужно, достаточно иметь утилиты конвертирующие их в правильные с точки зрения языка файлы.

Почему бы это не делать компилятору?

quiet_readonly ★★★★
()

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

Вот когда перепишут тогда и можно смотреть, это ведь основной признак зрелости проекта.

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

А это не мантры. Доля С++ неуклонно падает и тенденция сохранится. Причина проста - он не отвечает современным требованиям к ЯВУ.

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

Улыбнуло. Спасибо товарищу Сталину, за проделанный труд.

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

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

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

Из того что нет в С++

GC

не нужен

строки

тех что в STD вполне хватает

нормальная модульность,

соглашусь

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

спорно, и опять же ООП скрывает детали (хотя указатели на объекты никто не отменял - увы)

нормальный rtti,...

согласен

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

1. GC - открываем книгу «Дизайн и эволюция языка C++» на с. 226 и читаем. А можно вообще с 218й читать. 2. Строки? класс string ? Он вроде как и был создан для того чтоб уйти от костылей с Cишными char'ами. 3. Нормальная модульность? Что для Вас значит «нормальная» ? Запилить класс, а потом его юзать где угодно нельзя чтоли? 4. Непонятно в чем проблема. 5. Чем Вам RTTI в C++ не понравился? Вполне работоспособная функция. Ну а если для Вас C# - ЯВУ который отвечает современным требованиям, то цитата: «C# В C# для определения типа объекта во время исполнения используется метод GetType, а также ключевые слова is и as, которые являются аналогами для typeid и dynamic_cast в C++ соответственно.»

Ещё?

yTo4kO
()

Ну а вообще - советую почитать что-нибудь чуть больше, чем статью на википедии по C++. Кто-то ещё писал что foreach нормальный запилить в C++ не осилили. Читаем стандарт C++11 на тему «Range-based for-loop». Ну или 239я страница в книге «C++ Primer Plus, 6th Edition» автор Prata S.

yTo4kO
()

Хотя язык D я бы посмотрел. Но что-то пока не собрался. ЛОР онолитеги, скажите - есть смысл в этом (в изучении D)? Или мертворожденный ЯП?

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

Для написания корпоративных приложений очень полезен.

Это костыль заменяющий встроенную поддержку строк .

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

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

1. есть смысл в этом (в изучении D)?

2. Или мертворожденный ЯП?

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

Не взлетит. Тем более появились более интересные ЯП: Scala например. Java никто не списывал.

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