LINUX.ORG.RU

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

 , ,


3

3

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

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

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



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

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

Ну и кто тут толстый?!?

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

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

Ну и кто тут толстый?!?

Ты. А я просто стараюсь тебе соответствовать.

Еще как имеет

Не-а. На языке без поддержки ADT и PM написаны и компиляторы, и бухгалтерии, и игры => поддержка ADT и PM не является необходимой ни для компиляторов, ни для компиляторов, ни для бухгалтерии, ни для игр.

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

Примеры препроцессоров - в студию.

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

Ты, tailgunner, известный ламер и неосилятор. В компиляторах разбираешься хуже, чем свинья а апельсинах.

Смотри на tablegen в llvm, например.

Да, конечно же можно и на брейнфаке компилятор написать. Но не нужно.

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

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

++C++

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

Поскольку это был не исходный код, вполне предположить, что это усиление аллегории Как (C++)^2

anonymous
()

Это будет первая программа, написанная на D?

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

Ты, tailgunner, известный ламер и неосилятор. В компиляторах разбираешься хуже, чем свинья а апельсинах.

А я честно признаюсь, что ничего сложнее компилятора DSL не написал и не претендую на многое .

Смотри на tablegen в llvm, например.

Да надоел ты уже со своим tablegen. Каким образом это препроцессор для паттерн-матчинга?

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

После этого ты должен предъявить собственноручно написанный компилятор или тихо слиться.

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

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

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

Особенно радует сравнение с COBOL. Прямо так и верится, что анонимный аналитик не в википедии статью глянул, а правда на нём писал. :)

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

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

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

Реально недогоняю, но это пока. wamcc конвертит в C а не в машинные коды. Это не беда конечно, но нужно смотреть что за код на С при этом получается. Если это будет выглядеть как <префикс из wam на с> + <байткод программы>, то конечно не нужно. Так что аргумент понятен, буду посмотреть.

A-234 ★★★★★
()

Free Pascal написан на объектном Pascal. IDE на нём же. И компилятор сверхбыстрый.

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

Полно и нативных реализаций WAM. В любом случае, не ясны твои невнятные претензии. Компилятор Пролога можно элементарно написать на Прологе. Какие тут еще могут быть претензии?

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

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

о май гаД

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

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

зато прикольно, когда пишешь что-то про этот язык, и в конце предложения смайлик D

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

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

Так в чем у тебя проблема-то?

anonymous
()

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

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

Я аноним, ты регистратишка. К тебе требований больше. А ваще, называй простой язык, напишу тебе персонально тупой компилятор.

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

Я аноним, ты регистратишка. К тебе требований больше.

Сфигале?

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

Зачем? Мне нужен с препроцессором для ADT и паттерн-матчинга.

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

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

Похоже, что написать компилятор пока и не осилили.

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

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

Придумай язык, покажу, насколько проще с pattern matching чем без него.

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

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

Я и не против.

Придумай язык, покажу, насколько проще с pattern matching чем без него.

ЛОЛШТО? По-твоему, это нуждается в показывании?

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

Ну ты же тут втираешь, что этп фича не нужна.

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

И засилье у окодемегов язычков с ADT - прямое следствие дебильной традиции бутстрапить языки. Так понятнее, или будешь дальше тупить?

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

Ну ты же тут втираешь, что этп фича не нужна.

Чо, правда?

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

Я назвал это толстым троллингом - значит, я согласился с ненужностью фич?

Но только для компиляторов. А для всего остального нах не нужна.

Нихрена подобного. И pattern matching, и ADT - инструменты общего назначения.

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

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

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

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

Классический пример с red-black tree подойдет?

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

Ты усомнился, что на Прологе легко написать компилятор Пролога.

anonymous
()

А вдруг при компилировании компилятора языка возникнет ошибка и без пересборки компилятора ее не решить? :)

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

значит временная заглушка будет сооружена на другом языке.
/и.о. КЭП

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

На даже Жабке ничуть не более сложно выходит.

Mkay. Давай аналог на Жабе.

  fun restoreRight (Black (x, d1, Red (y, d2, Red (z, d3, d4)))) =
        Red (y, Black (x, d1, d2), Black (z, d3, d4))
    | restoreRight (Black (x, d1, Red (z, Red (y, d2, d3), d4))) =
        Red (y, Black (x, d1, d2), Black (z, d3, d4))
    | restoreRight dict = dict

  fun insert (dict, entry as (key, datum)) =
    let
      (* val ins : 'a dict -> 'a dict insert entry *)
      (* ins (Red _) may violate color invariant at root *)
      (* ins (Black _) or ins (Empty) will be red/black tree *)
      (* ins preserves black height *)
      fun ins (Empty) = Red (entry, Empty, Empty)
	| ins (Red (entry1 as (key1, datum1), left, right)) =
	  (case String.compare (key, key1)
	     of EQUAL => Red (entry, left, right)
	      | LESS => Red (entry1, ins left, right)
	      | GREATER => Red (entry1, left, ins right))
        | ins (Black (entry1 as (key1, datum1), left, right)) =
	  (case String.compare (key, key1)
	     of EQUAL => Black (entry, left, right)
	      | LESS => restoreLeft (Black (entry1, ins left, right))
	      | GREATER => restoreRight (Black (entry1, left, ins right)))
    in
      case ins dict
	of Red (t as (_, Red _, _)) => Black t (* re-color *)
	 | Red (t as (_, _, Red _)) => Black t (* re-color *)
	 | dict => dict
    end
tailgunner ★★★★★
()
Ответ на: комментарий от x_hash

У C++ есть как минимум два применения:
корм для троллей
язык для написания реальных приложений.

У вас в слове ошибка: «реКТальных» приложений. «Ассемблер с объектами» страшен чуть менее, чем ядерный реактор на изоленте. А потому для забав студоты вполне сойдёт, но в мэйнстриме ему делать нечего.

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

с задней парты интересуются - а что понимается под мэйнстримом, и что гуру посоветует использовать в нем?

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

SQL как раз пример ненужного языка. Он ужасен, снаружи и внутри, как кобол.

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

В этом плане интересно взглянуть на подход FoxPro (файлсерверная СУБД): открываем таблицу и можем что-то с нею _последовательно_ делать. Скажем, к текущему счётИД найти записи позиций. При этом с сервера берётся только текущая запись о счёте и только позиции этого счёта - к этим позициям не нужно прилеплять дублирующие данные. Т.е. имеем неплохую гибкость в обработке данных ценой небольших потерь на последовательные команды серверу.

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

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

Сейчас на коне C# как лучший язык + IDE для виндовых приложений (и серверных тоже). Если хочется откусить кусочег мобильного пирога, можно заняться JavaScript+HTML5. Но JS безвозвратно портит мышление и строгость разработки, поэтому даже автор не может поручиться за свой скриптокод.

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

Ну и в чём проблема? Есть сорсы с++ из которых сделан «полноценный Ди» (пДи). Этим пДи мы компилируем ДиДи (Ди-сорсы компилятора Ди). Если в ДиДи проблема, просто бери и фикси! Потом опять компилируй ДиДи при помощи пДи.

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

matumba ★★★★★
()

Проект «D» по изучению разработчиками C++ так и не достиг цели? Что ж, этого следовало ожидать.

asaw ★★★★★
()

Александреску допустил стратегическую ошибку, надо было назвать язык C!!!!, и тогда он бы взлетел, как взлетели C++ и C#

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

Языки вообще глупо называть единственной буквой, да ещё с небуквенными знаками! Фик чё найдёшь.

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