LINUX.ORG.RU

Попытка реинтеграции компилятора D в состав GCC

 , ,


2

6

Как можно заключить из сообщений в рассылке разработчиков gcc, к версии gcc 4.8 будет предпринята попытка официально ввести в состав gcc gdc — свободную реализацию компилятора языка D (digitalmars D).

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

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

D не накладывает жёстких парадигменных ограничений и позволяет записывать код в обобщённом, объектно-ориентированном, функциональном и процедурном стилях, а так же их комбинации. Штатно предоставляются полные средства интроспекции. Дополнительно компилятор несёт в себе нечто вроде интерпретатора языка, позволяющего динамически добавлять/изменять методы во время исполнения.

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

В целом, D представляется интересным для программирующих пользователей, нуждающихся в современных выразительных средствах, но не имеющих возможности изучать все особые случаи C++.

Свободно доступен референсный компилятор dmd, однако он предназначен, скорее, для исследовательских целей. Появление штатного фронтенда D в наборе gcc позволяет надеяться на переход от чисто экспериментального применения этого интересного и мощного языка к широкому внедрению.

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



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

Я не слежу за D, но на CTFE там даже рейтрейсер написали %) Так что CTFE пригоден для гораздо большего, чем склейка строк.

Я вот о чем. В D ты можешь объявить в программе строковый литерал, который будет содержать в себе, скажем, декларацию данных в синтаксисе ASN.1. Посредством CTFE ты сможешь распарсить эту декларацию, сгенерировать, в строковом представлении, кучу D-шного кода для отображения ASN.1-описания на D-шные классы, затем передать сгенерированое строковое представление в строковый mixin и получить эффект, как будто весь этот сгенерированный D-шный код был написан вручную или создан внешним asn1-транслятором.

Т.е. что-то вроде:

mixin( AsnOneToD(
q"{
  FooProtocol DEFINITIONS ::= BEGIN

    FooQuestion ::= SEQUENCE {
        trackingNumber INTEGER,
        question       IA5String
    }

    FooAnswer ::= SEQUENCE {
        questionNumber INTEGER,
        answer         BOOLEAN
    }

  END
}" ) );

auto f = new FooQuestion();
f.trackingNumber = 1;
f.question = "To D or not to D";

В принципе, это тот же самый подход, который точно так же может использоваться в динамических языках вроде Ruby/Python, когда результат генерации текста передается в eval и объявленные в тексте сущности «магическим» образом появляются в программе.

«It is possible that a more general AST macro facility will replace mixin tenplates in a future revision of language».

Так что это именно макросы.

Того, о чем ты здесь говоришь, в D2 нет. А вещает о синтаксических макросах и модификации AST Александреску чуть ли не с момента появления D2.

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

Того, о чем ты здесь говоришь, в D2 нет. А вещает о синтаксических макросах и модификации AST Александреску чуть ли не с момента появления D2.

Что бы об этом сказали лисперы...

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

В D ты можешь объявить в программе строковый литерал, который будет содержать в себе, скажем, декларацию данных в синтаксисе ASN.1. Посредством CTFE ты сможешь распарсить эту декларацию, сгенерировать, в строковом представлении, кучу D-шного кода для отображения ASN.1-описания на D-шные классы, затем передать сгенерированое строковое представление в строковый mixin и получить эффект, как будто весь этот сгенерированный D-шный код был написан вручную или создан внешним asn1-транслятором.

Шо это? «Виртуальные метапарадигмы»? Сколько тысяч страниц в спецификации этого нового и духоподъёмного стандарта ASN.1?

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

facepalm

Действительно, всего лишь на четверть века моложе лиспа.

«One may use an ASN compiler which takes as input an ASN.1 specification and generates computer code (for example in the language C) for an equivalent representation of the data structures. This computer code, together with supplied run-time libraries, can then convert encoded data structures to and from the computer language representation. Alternatively, one can manually write encoding and decoding routines.»

Компилятор в компиляторе, и интерпретатор ECMASript сбоку. У Уолтера Брайта хобби такое, компиляторы писать.

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

Компилятор в компиляторе, и интерпретатор ECMASript сбоку. У Уолтера Брайта хобби такое, компиляторы писать.

Осталось понять, причем тут Брайт и ECMAscript.

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

Осталось понять, причем тут Брайт и ECMAscript.

DMDScript ни при чём. Да и Bright ни при чём, D тоже.

Главное ведь что? Процесс. На CTFE/WTF напишут столько кода что это сподвигнет кого-то на создание другого языка.

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

нового и духоподъёмного стандарта ASN.1

Нового? Вы последние 30 лет были в заморозке, я вижу?

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

Наверно. Такая бюрократия до меня не дошла. А вы в заморозке с 1958 года судя по всему?

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

А вещает о синтаксических макросах и модификации AST Александреску чуть ли не с момента появления D2.

Месье Александреску помог в очередной раз изобрести лисп?

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

Осталось понять, причем тут Брайт и ECMAscript.

DMDScript ни при чём.

ECMAscript.

DMDScript

Сдается мне, что ты норкоман, мил человек.

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

Сдается мне, что ты норкоман, мил человек.

Психически здоровый. Просто я не знал что имею дело не с человеком.

Как-то ты спотыкаешься на некоторых словах и дальше просто перестаёшь воспринимать информацию. Ты эти слова мне показываешь в своём комменте. Я даже не знаю какие опции тебе предоставлять.

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

Vala прагматичней.

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

CTFE похоже на корявую реализацию некоторых возможностей лиспов.

Эсли это немного перефразировать ближе к настоящим идеям Уолтера, то будет так: «Мы взяли только самые удобные и надёжные элементы других языков, чтобы получить практический язык для реальных задач». Грубо говоря, шизоидный ЛИСП нет смысла куда-то тащить - лишь некоторые его идеи могут быть полезны.

И вообще, прежде чем сравнивать вкус устриц, кому-то хорошо бы сходить на сайт Ди и немного окунуться в идеи языка. Ди даже в мыслях не собирается конкурировать с Жабами, Шарпами или, прости господи, Лиспами, он просто пилится для решения задач. Любые попытки его сравнивать с другими языками - это проявление дилетантства и убогости мировоззрения, т.к. Ди сравнения не нужны - это просто ЯЗЫК. Хочешь - пиши, не хочешь - займись крайне полезным трындением на форумах - в сети ведь так мало твоих увековеченных фраз!....

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

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

Клевый постулат. Святая инквизиция на лоре?

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

О, у языка уже есть фанаты.

Грубо говоря, шизоидный ЛИСП нет смысла куда-то тащить - лишь некоторые его идеи могут быть полезны.

И вообще, прежде чем сравнивать вкус устриц, кому-то хорошо бы сходить на сайт Ди и немного окунуться в идеи языка. Ди даже в мыслях не собирается конкурировать с Жабами, Шарпами или, прости господи, Лиспами

Ди сравнения не нужны - это просто ЯЗЫК. Хочешь - пиши, не хочешь - займись крайне полезным трындением на форумах - в сети ведь так мало твоих увековеченных фраз!....

В результате ноль.

Во что там окунаться? В ASN.1?

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

хорошо бы сходить на сайт Ди и немного окунуться в идеи языка

Во что там окунаться? В ASN.1?

Тебе для начала нужно окунуться в русский язык.

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

Эсли это немного перефразировать ближе к настоящим идеям Уолтера, то будет так: «Мы взяли только самые удобные и надёжные элементы других языков, чтобы получить практический язык для реальных задач». Грубо говоря, шизоидный ЛИСП нет смысла куда-то тащить - лишь некоторые его идеи могут быть полезны.

Одна из идей лиспа это одинаковое представление кода и данных. Это даёт «бесплатно» сериализацию, макросы(изменение AST). И реализация ECMAScript для скриптования лиспам не нужна, по очевидным причинам.

В языке D нет идей лиспа кроме сборщика мусора. Я вижу корявую реализацию возможностей лиспа, с затрачиванием немалых усилий по реализации(CTFE/ASN.1), которые трудно полноценно повторить в альтернативных реализациях(GDC).

Ди даже в мыслях не собирается конкурировать с Жабами, Шарпами или, прости господи, Лиспами

В таком случае что означает «практический язык для реальных задач»?

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

Тебе для начала нужно окунуться в русский язык.

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

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

Два шприца этому наркоману.

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

Угу, а Брайт - гений, который знает что в каких языках шизоидно, а что нет.

Любые попытки его сравнивать с другими языками - это проявление дилетантства и убогости мировоззрения, т.к. Ди сравнения не нужны

Ха-ха-ха-ха...

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

Любые попытки его сравнивать с другими языками - это проявление дилетантства и убогости мировоззрения, т.к. Ди сравнения не нужны - это просто ЯЗЫК.

Это сильно сказано. Очень сильно. Но хотелось бы ещё и обоснований. Веских. Без сколь-нибудь убедительного обоснования так можно сказать про любой ЯП. Даже про басик. :)

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

Поверю на слово. :)

Но я вообще фанатиков не понимаю. Для меня ЯП - инструмент, который либо подходит, либо не подходит для решения конкретной задачи. Кричать о том, что какой-то один ЯП лучше других на десять голов, по-моему, глупо (мягко говоря).

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

Но я вообще фанатиков не понимаю.

+1

Для меня ЯП - инструмент, который либо подходит, либо не подходит для решения конкретной задачи. Кричать о том, что какой-то один ЯП лучше других на десять голов, по-моему, глупо (мягко говоря).

А на основании чего вы стоите ваши суждения? На основании личного опыта?

PS: Поскольку ЯП разные и возможности у них разные. Следовательно, равенства быть не может. То есть, если взять ряд криетриев с их весомыми коэффициентами и провести анализ - то мы получим разные результаты. В свое время, изучая разные ЯП на профипригодность, универсальность и гибкость, я проделал что-то подобное для себя. Несомненно, на полноту я не претендую, поскольку некоторые языки не рассматривались в силу их экзотичности и низкой распространенности, но с тем что рассматривал я не поленился и покопался в собственной реализации языков чтобы понять сильные и слабые стороны. Одним из основных требовании было что-то наподобие «язык должен позволять достичь любых требуемых решении» (на самом деле были ряд конкретных требовании). Ну и, в конечном счете, мне удалось выбрать лишь несколько достойных, которые «лучше других на десять голов» (вкупе с тех сторонами также рассматривались важные нетехнические свойства, как например, лицензия). Полагаю, мой подход к выбору если и не самый правильный с научно-исследовательской позиции, но как минимум, он достоен уважения. И я легко мог бы устроить дискуссию (лично мне очень интересно) по разбору конкретных языков и их свойств на 100500+ страниц, но, свое время мне нужно расходовать более рационально. Хотя, скажу вам что время от времени в просторах реала и рунета нечто подобное я устраивал ранее, и, скажу что до сих пор ярые сторонники php, python, java, C# и C++ полностью сливали дискуссию и в некоторых случаях просто удаляли весь тред (особенно обидчивые ребята\^W девочки по разбору питона на опеннете). Тут два варианта: мне попадались фанаты/быдлокодеры которые не сильно задумывались над возможностями в выборе языка, либо обычные чернорабочие\^W хомячки, которые используют тот или иной ЯП потому что просто используют его :-).

PPS: А на основании чего строяться ваши суждения? И, да, уточните ваш склад мышления если вдруг наберетесь смелости ответить.

PPPS: «Я лишь категорически против этого бездумного обезьянства ... ведь таких пользователей, как известно, 95% - они своей массой задавят любой здравый смысл.» (с) anonymous ( Выпущена первая опытно-промышленная партия российского микропроцессора MultiClet MCp0411100101 (комментарий) )

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

А на основании чего вы стоите ваши суждения? На основании личного опыта?

В основном - да.

PS: /* простыня поскипана */

Интересный подход. Но у меня нет столько времени на исследование языков. Знакомство с ЯП и их функциональными возможностями происходит случайно и хаотично. Исключительно на практике. Ни один из знакомых мне языков не стану называть ни «плохим», ни «идеальным». Незнакомые - тем более. Исключение - бейсик. Когда-то давно мне пришлось разбираться с «наследием»-ворохом программ на этом... и дописывать новые. С тех пор я полностью согласен с Э.Дийкстрой.

PPS: А на основании чего строяться ваши суждения? И, да, уточните ваш склад мышления если вдруг наберетесь смелости ответить.

См.выше - по большей части личный опыт. Склад мышления...не знаю...обычный: оцениваю то, что знаю, стараюсь заранее не принимать на веру суждения о том, чего не знаю. Например, Си знаю, давно пишу на нём, хороший язык, подходит для решения около 50% моих задач. С++ знаю хуже, но в связке с Qt - подходит для решения около 30% моих задач. И у Си, и С++ есть свои недостатки. А вот Java знаю на уровне HelloWorld, поэтому выносить окончательное суждение по нему не имею права. Приблизительно так.

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

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

А может самоутверждается таким образом. Только напрасно это - я уже давно говорил, что я не претендую на звание «супер-пупер-программера-эксперта», я среднестатистический программист среднего уровня.

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

См.здесь

Цитирую:

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

Картина маслом: «обезьяна с гранатой».

Manhunt прав. Но вывод сделанный им настолько далек от причины что, вряд ли, среднестатистический читатель сможет отследить связи: скорее тупо отрефлексирует на сообщение и повесит на него какой-нибудь ярлык (например такой). Но ваше суждение тоже не беспочвенно, хотя и довольно поверхностно.

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

например такой

Вот вставил я ссылку, притом в правильном формате, а падает java исключение прямо в браузер. Как считаете, это нормальное и закономерное явление что класс «обычных» программистов (Java, C#, Python и подобные им) допускают ошибки быдлокодеров? Нет, я видел асов которые пишут на Java так что код выглядит песней, но странное получается что такие программисты, в первую очередь, мастера и поклонники не этих г#$но языков.

PS: Вот эксепшн который вывалился: «Failed to convert value of type 'java.lang.String' to required type 'java.lang.Integer'; nested exception is java.lang.NumberFormatException: For input string: „7956708/“. Пофиксите быдлокод.

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

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

В цитируемом случае я и не претендовал на «глубину суждения». Там речь зашла о некотором «пороге вхождения» в ЯП. То есть, подразумевалась конкретная задача - как можно быстрее научить людей писать программы на заданном ЯП. Далее произошла некоторая подмена понятий, и, разумеется, моё суждение стало выглядеть слишком поверхностным. Я же не утверждал, что стандарты читать не нужно (я сам по всем вопросам в первую очередь лезу именно в стандарт).

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

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

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

Все линейно (однобоко).

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

Неважно что произошло в том отдельном случае - важен сам принцип (далее).

Я же не утверждал, что стандарты читать не нужно (я сам по всем вопросам в первую очередь лезу именно в стандарт).

Вот в этом то и дело, вы не стремитесь к полноте знании. Вас устраивают сиюминутные решения «на от#$бись».

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

Это ваше лично дело какую «оборонительную» позицию занимать. Позиция по#@иста никому чести не добавляет.

PS: Инженер так не может жить, поскольку он копает вглубь и вширь пока полностью (в достаточной мере) не разберется с чем имеет дело. Гуманитарный стиль мышления (не стоится полная картина) - это удел слабаков, поскольку интеллект не готов держать нервное напряжение (мозговая активность) с целью разобраться с предметом сферы деятельности. Слабый интеллект думает примерно так: зачем же напрягаться и разбираться если можно сделать на от#$бись и больше не напрягаться (в нашем случае получить минимальное знание и набыдлокодить). Поэтому выбор языков с минимальным порогом вхождения - ваш выбор, поскольку набыдлокодить для вас является нормой. Я же выбрал связку языков исходя из цели необходимости построения системы с любой архитектуры и с любым требованием и в любой момент времени. Правда сказать, здесь кроме анализа языка и постоянного повышения уровня программирорвания необходимо повышать мастерство в сферах изучения существующих архитектурных решении, повышения опыта проектирования и поиска новых решении. Но вы и вам подобные сразу спасуют перед этими, неосиливаемыми для них сложностями.

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

Всё ясно. Та же болезнь. Из одного частного случая ты наделал кучу обобщающих выводов, в большинстве своём абсолютно неверных (я читал и страшно поражался: откуда были рождены сии глубокомысленные выводы? но так и не понял). Зато я понял твой склад ума. Постарайся в следующий раз не делать глобальных и обобщающих выводов по одному факту и одному комментарию, ибо телепат из тебя пока плохой. Желаю успехов в автоопределении типов программистов.

PS: Впрочем, скорее всего, я зря стараюсь, излагая тут свои возражения - тебе же наверняка неинтересны такие «слабаки-быдлокодеры», как я и «мне подобные». Исходя из этого - адью.

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

Всё ясно. Та же болезнь. Из одного частного случая ты наделал кучу обобщающих выводов, в большинстве своём абсолютно неверных (я читал и страшно поражался: откуда были рождены сии глубокомысленные выводы? но так и не понял). Зато я понял твой склад ума. Постарайся в следующий раз не делать глобальных и обобщающих выводов по одному факту и одному комментарию, ибо телепат из тебя пока плохой. Желаю успехов в автоопределении типов программистов.

PS: Впрочем, скорее всего, я зря стараюсь, излагая тут свои возражения - тебе же наверняка неинтересны такие «слабаки-быдлокодеры», как я и «мне подобные». Исходя из этого - адью.

Спасибо за то вы не буквоед. Могло быть хуже.

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