LINUX.ORG.RU

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

 , ,


0

0

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

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

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

★★

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

Да. Структуры - точная копия сишных, только с методами. Классы же устроены примерно как в Java.

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

> Да. Структуры - точная копия сишных, только с методами.

Д действительно фиксит кое-какие неудобства плюсов, но я не ожидал, что он вводит новые. Наследование структур в плюсах + полиморфные указатели, конечно, вместе дают возможность ошибки "срезка", но запрещать вообще наследование структур -- это идиотизм. Теперь вот (если я все правильно понял) в Д фиксят это.

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

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

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

Именно поэтому, кстати, синтаксис отличается от классового:
class Derived : Base {}
но
struct Derived {
Base base;
alias base this;
}

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

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

А на Си этих способов тысячи, и что теперь?

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

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

Спасибо троллтеху, да.

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

> А на Си этих способов тысячи, и что теперь?

И потом появится масса заявлений, что D не нужен, и новая мутация намного лучше.

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

> И потом появится масса заявлений, что D не нужен, и новая мутация намного лучше.

Это называется "прогресс".

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

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

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

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

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

----------------------------------------------------------------

naryl>> на каком языке невозможно написать программу неправильно.

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

----------------------------------------------------------------

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

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

Вселенский парадокс из-за нескольких постов на LORе? Странные у тебя ожидания.

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

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

Это чертовски хорошая мысль, она ваша?

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

>> И потом появится масса заявлений, что D не нужен, и новая мутация намного лучше.

> Это называется "прогресс".

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

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

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

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

Вот вы сидите в сторонке, ждёте пока всё за вас обкатают, потом пользуетесь плодами обкатки и при всём при этом не забываете при каждом удобном случае называть обкатывающих "пионерами зелёные штанишки". :) Я не прошу присоединиться к процессу. Научитесь хотя бы уважать людей, получающих удовольствие от использования экспериментальных технологий. (в первую очеред в адрес klalafuda)

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

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

Почти невозможно неправильно написать на яве -- т.е. тебе кажется, что с указателями все в порядке, и на самом деле это почти что так (за исключением некоторых случаев утечки памяти, против чего НУЖЕН weak pointer).

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

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

Я -- уважаю. Другое дело, у меня другой взгляд чем у У.Б., какие технологии надо обкатывать.

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

> Почти невозможно неправильно написать на яве

Мну не имел ввиду таких проколов в оригинальном посте. Кстати, я там и пример привел, в каком контексте была речь про неправильность (кстати, с кем я вел диалог - меня прекрасно понял). А речь шла про различные неочевидные возможности, в которых может быть side effect - которые будут использовать, что приведет к проблемам.

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

> кстати, с кем я вел диалог - меня прекрасно понял

да и я тебя понял, не беспокойся.

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

> потом пользуетесь плодами обкатки и при всём при этом не забываете при каждом удобном случае называть обкатывающих "пионерами зелёные штанишки".

Насчет пионеров -- в этом есть правда. Язык Д примерно того же уровня, что и С++ -- поэтому переходить на него смысла нет.

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

А пока -- я буду использовать обидное слово "мутация" :-)

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

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

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

Боюсь, что в языке более высокого уровня не будет понятий "структура" и "наследование".

Можно здесь повторить холивар tailgunner'а не помню с кем на тему "что такое высокоуровневый язык?"

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

> Боюсь, что в языке более высокого уровня не будет понятий "структура" и "наследование".

Вероятно "структура" и "наследование" будут вводиться в стандартной библиотеке. > Можно здесь повторить холивар tailgunner'а не помню с кем на тему "что такое высокоуровневый язык?"

давай ссылку, а потом можно и повторить :-)

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

> Вероятно "структура" и "наследование" будут вводиться в стандартной библиотеке.

Предлагаешь определять низкоуровневые сущности через высокоуровневые?

(Нафиг ссылку. Само пошло. :])

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

А как ты предлагаешь делать высокоуровневый язык, без сокрытия низкоуровневых абстракций средствами языка или библиотек? Он тогда уже не будет высокоуровневым, а низкоуровневым с надстройками.

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

Именно так. "структура" и "наследование" будут скрыты за более высоким уровнем абстракции и ни в языке ни в библиотеках не будет в них нужды.

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

> будут скрыты за более высоким уровнем абстракции

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

> и ни в языке ни в библиотеках не будет в них нужды.

Не совсем понятно. Либо структуры, либо списки - или есть другой подход к организации данных?

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

> (Нафиг ссылку. Само пошло. :])

Ты иногда заходи на огонек, в девелопменте недавно был хороший (попал на первую страницу сайта на 2 место) флейм "зачем нужны динамические языки". Вполне возможно продолжим.

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

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

> Либо структуры, либо списки - или есть другой подход к организации данных?

Есть еще пролог, в котором можно обойтись без списков, но вопрос -- нужно ли обходиться.

А так в "обычном" языке списки должны быть. Через них надо уже определять структуры.

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

>> будут скрыты за более высоким уровнем абстракции

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

ммм... у меня другое обоснование. Безусловно полезную абстракцию "мне не надо заботится об указателях" можно поддерживать как в яве -- сделав принудительную сборку мусора, а можно совсем по-другому, используя например что специфику конкретной задачи. Допустим, у нас память выделяется по-немножку, но освобождается пулом. Т.е. плюсист, в отличие от явишника, может выбирать для себя способ реализации абстракции.

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

> Именно так. "структура" и "наследование" будут скрыты за более высоким уровнем абстракции и ни в языке ни в библиотеках не будет в них нужды.

Как конкретная цель -- это маниловщина (предложи, как это будет делаться), но как направление движения -- правильное.

В этом направлении, например, надо изжить недостаток как Д, так и С++ -- логическая организация "классы, поля, наследование" строго привязана к физической организации данных в памяти. При этом, конечно, доступ к физической памяти должен остаться возможным

Язык без такой привязки -- это кандидат на звание "новый язык", а не просто мутант.

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

> Версия 2.x поддерживается только dmd, а его нет для x86_64.

Вообще-то нормально работает под x86_64 :)

Чего тебе ещё нужно? :)

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

> Во. r vs tailgunner vs eao197: http://www.linux.org.ru/view-message.jsp?msgid=3240821

Идеи r более-менее понятны и даже правильны, за исключением того, что я наоборот предпочитаю библиотеку перед встроенными функциями. Его примеры сложны, странны и скорее всего не правильны.

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

0. возможность прибита к компилятору гвоздями или можно ее модернизировать, отключить, и сделать самому еще одну похожую?

1. чисто синтаксические удобства, даются хотя бы макропроцессором как в С

2. синтаксические удобства уровнем выше, например возможность определить свой атрибут syncronized для функции и класса

3. верификацию компилятором

4. вычисления компилятором (ctfe, вычисление через шаблоны, ...)

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

> Вот вы сидите в сторонке, ждёте пока всё за вас обкатают, потом пользуетесь плодами обкатки и при всём при этом не забываете при каждом удобном случае называть обкатывающих "пионерами зелёные штанишки". :) Я не прошу присоединиться к процессу. Научитесь хотя бы уважать людей, получающих удовольствие от использования экспериментальных технологий. (в первую очеред в адрес klalafuda)

В последнее время у меня усиливается впечатление, что лучшие идеи из D 2.0 (immutable и pure) придут в массы вовсе не из D. И гораздо раньше, чем D 2.0 станет стабильным и перестанет считаться экспериментальной технологией. Поскольку разработчик C# Андерс Хейсберг стал говорить о практически тех же самых проблемах (http://broadcast.oreilly.com/2009/04/an-interview-with-anders-hejls-1.html):

>...There are things that are required in our programming languages today in order for us to be able to do that properly. One of them we already have, which is the ability to pass code as parameters. As APIs get more and more complex in their capabilities, you can't just pass in flat values or data structures to the API. You've got to pass in pieces of code that the API then orchestrates and executes... ...Higher-order functions. Exactly. In order to be able to do that, you need stuff like lambdas and closures and so on. In order for you to be able to do that in a concurrent environment, you also need guarantees on whether these lambdas are pure, or do they have side effects. Could I just automatically run this in parallel, or are there side effects that would cause that not to be possible. How can I know that? Those are things that we don't have in our languages today, but we can certainly speculate about adding these. Of course, the trick is adding them in a way that doesn't constrain you too much and that doesn't break too much of your existing code. That's a big challenge.

>That is something our team thinks about daily.

Так что не ровен час, году эдак в 2011 выйдет C# 5.0 в котором будут immutable и pure. И все это с офигенным фреймворком, с IDE, с толпами евангилистов и миллионами готовых обратиться в новую религию пользователей. И все. С-шники и C++-ники останутся на своих языках (поскольку наработки не выбросишь, плюс C++0x уже будет основательно поддержан основными компиляторами). Сидящие на managed платформах получат более продвинутый C# (под оффтопиком и в виде Mono). Может и для JVM Scala аналогичным образом докрутят. Опять окажется, что экспериментальный D никому не нужен.

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

> Брайту предлагалась очень интересная мысль - оператор opImplicitCast. 

по мотивам того поста -- в плюсах у нас даааавно...

// g++ test2.cxx && ./a.out
// output:
// 0.5

#include <iostream>

class my_float
{
    public: 
	my_float(int x): value(x) {}
	operator float () { return value/1024.0; }
    private: 
	int value;
};

void f(float x) { std::cout << x << '\n'; }

int main()
{
    my_float x(512);
    f(x);
    return 0;
}

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

> С-шники и C++-ники останутся на своих языках (поскольку наработки не выбросишь, плюс C++0x уже будет основательно поддержан основными компиляторами).

Выход -- сделать возможность определять СВОИ атрибуты (в т.ч. immutible & pure) и проверять их компиллятором.

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

> C# уже сейчас лучше плюсов тем, что классы открыты

Ага, и хуже Ruby, потому что открыты не так сильно :)

Сравнение C#/Java с C++ не имеет большого смысла, поскольку это сравнение managed vs native. У них слишком разные ниши. Поэтому C#/Java и C++ могут спокойно сосуществовать друг с другом десятилетия.

А вот D нацеливается на нишу C++, т.к. тоже является native. Только против D работает то, что пока D допиливают энтузиасты, на C++ клепают очередной миллион строк кода (пусть временами и говнокода) в реальных проектах. И этот лишний миллион строк будет дополнительным аргументом в пользу того, чтобы и дальше работать на C++ (C++0x), а не заниматься переходом на D.

Вот и получится, что в нише native против D работает существующая кодовая база C++. А в нише managed -- такие языки, как C#, F# и Scala.

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

>по мотивам того поста -- в плюсах у нас даааавно...

Но с другой стороны alias this(множественный) - opImplicitCast + нп наследование

class Boo
{
   public void _bar(){}
}
...
class Foo
{
   public void _foo(){}
}
class D
{
   Boo boo;
   //...
   Foo foo;

   alias boo this;
   alias foo this; 
}

void f0(boo b){}
//...
void fn(foo f){}

void main()
{
  auto d = new D;

  d._bar; 
  d._foo;

  f0(d);
  fn(d);
}

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