LINUX.ORG.RU

Язык D доступен для FreeBSD

 , ,


0

0

Официальная сборка компилятора и рантайм-библиотеки прекрасного языка D теперь доступна и для FreeBSD. Обещана поддержка FreeBSD 7-й версии.
Порт компилятора языка D второй версии пока не готов, т.к., по словам одного из авторов языка, Уолтера Брайта, необходимо провести большую работу по портированию библиотек D.

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

>>> Источник - dprogramming.ru

★★

Проверено: svu ()

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

> С++ -- сомнительно.

Ничего, подожди... Язык D выглядит таким привлекательным, пока на нём мало кто пишет - как увеличится база пользователей, сразу найдется масса способов как писать программу неправильно.

Вот к примеру фича: "Compile time function execution" - ею можно неплохо запутать программу...

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

>Вот к примеру фича: "Compile time function execution" - ею можно неплохо запутать программу...

Сомнительно. Но вот alias параметр шаблона может запутать неподготовленного.

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

> Сомнительно.

Почему же?

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

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

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

D вообще может запутать неподготовленного. )

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

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

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

bose
()

Достаточно нормальный фреймворк сделать для C/C++ вместо стандартно-дыбильных либ и D ненужен. А так провоцируют на велосипеды.

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

Я в начале освоил С было в 2000 году а потом ассемблер в 2002, правда С остается любимым

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

> Вот к примеру фича: "Compile time function execution" - ею можно неплохо запутать программу...
Функция должна иметь один и тот же код независимо от того, выполняется она при компиляции или в рантайме. т.е. ctfe - это такой особый вид сворачивания констант.

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

>> Еще немного и можно переписывать ядра...
> Ога, выкинуть сборщик мусора, с ним ведро не напишешь (=


Сборщик мусора - фича рантайма, а не языка. В языке есть оператор delete. Только есть несколько конструкций, неявно выделяющих память, но их тоже можно на уровне рантайма запретить компилить.

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

> Достаточно нормальный фреймворк сделать для C/C++ вместо стандартно-дыбильных либ и D ненужен.

Так напши!

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

> Функция должна иметь один и тот же код независимо от того, выполняется она при компиляции или в рантайме.

Код, или результат работы? Странно предпологать, что _код_ может отличатся. Вот разные side-effects могли бы быть, но тут уже выше написали, что работу с внешним миром CTFE блокирует.

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

Спасибо за ссылку. Впечатляет, по сложности на уровне C++ :)

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

А так-же предпоследний, в частности пункт 5.

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

>>Еще немного и можно переписывать ядра... > Ога, выкинуть сборщик мусора, с ним ведро не напишешь (=

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

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

Какой же сторонний код в ядре? :D

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

Ну про Колибри и прочее я слышал, но это как то брутально очень

Gorthauer ★★★★★
()

Сколько бы ни закапывали С и С++ ими будет пользоваться всё равно больше людей, чем всякими С-шарпами и прочими с-подобными. Причём мне кажется, это не только из-за того, что просто приходится тянуть проекты. Скорее произойдёт качественный переход на другой уровень программирования, когда С--/С/С++/Сшарп/Java просто отойдут на второй план, например, освободив дорогу Лиспам, Прологам и пр., как это в своё время сделал ассемблер, с появлением С.

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

>>Надо сразу язык Z#++ его еще точно нет

>Надо Ъ++


лучше Ъ_Ъ

gaux ★★
()

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

может наконец избавятся от ненавистнейшего gcc

black7
()

>Еще немного и можно переписывать ядра

давайте вы этим будете заниматься, а мы, как-нибудь, сями обойдёмся.

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

>Представляю что творится в голове человека который освоил первым ассемблер :)

ассемблер вполне простая штука, вот команды БЗ-34 и наследников интереснее.

а некоторые вообще с перфокарт начинали

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

>С++ -- сомнительно.

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

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

> В DMD 2.027 появилось неполиморфное наследование для структур. Пример из документации:

Я понял идею, но неужели это называется "неполиморфное наследование для структур" ???

И почему только для структур?

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

ХЗ. Все вопросы после релиза D2. Автором неоднократно отмечалось, что фича ещё недописана. Как она будет выглядеть в готовом виде он не признаётся.

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

> Например с помощью структуры с одним полем (Proxy) можно красиво избавиться от необходимости выделять память под промежуточные результаты в матричных выражениях. C++ решает эту проблему (и получает пачку других) выделением классов и структур на стеке и обращением к ним по значению.

Ты лучше дай ссылку, где подробно написано.

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

> ХЗ. Все вопросы после релиза D2. Автором неоднократно отмечалось, что фича ещё недописана. Как она будет выглядеть в готовом виде он не признаётся.

Идея сделать (в синтаксисе плюсов) struct my_int: public int { .... }; безусловно интересная, такую вещь можно назвать неполиморфным наследованием. alias внутри меня запутал.

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

Но по-моему это "неполиморфное наследование" -- костыль. Правильно было бы с самого начала объявить int структурой (в понимании Д), и иметь структуры открытыми.

З.Ы. в Д классы открыты, как в С#, или закрыты, как в плюсах?

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

> В приведённом выше примере пользователь может использовать структуру S, как int с методом foo.

Вру. foo просто лежит снаружи. Вот пример поглобальнее: http://paste.dprogramming.com/dpclwyvr

Выводит:
Hello!
A - base struct

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

> Правильно было бы с самого начала объявить int структурой
Не уверен что понял мысль. А в чём тогда хранить собственно данные?

> в Д классы открыты, как в С#, или закрыты, как в плюсах?

Всё открыто по-умолчанию.

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

> Я не въехал, объясни подробно, где у плюсов проблемы с проксированием.
Нигде но из-за того, что к классам обращение происходит по значению появляются другие проблемы.

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

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

Пример глобальнее наличием методов в обоих структурах.

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

> В D структур ни при каких обстотельствах не могут иметь скрытых полей в т.ч. таблиц виртуальных функций. т.е. от структур тоже нельзя отнаследовать.

Это 2 совсем разные вещи. Ты хочешь сказать, что в Д от структур нельзя наследовать без alias this?

www_linux_org_ru ★★★★★
()

Кстати, опасная фича. :)

struct Int {
    int a;
    alias a this;
    
    Int opAdd(int other) {
        launchNuclearMissiles();
        return Int(0); // Какая теперь разница?
    }
}

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

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