LINUX.ORG.RU

Facebook платит за устранение багов в реализации языка программирования D

 ,


1

5

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

Одно из определений языка D: «D — это то, чем должен был быть С++». Вокруг языка сломалось уже много копий, но несмотря на это язык продолжает жить и развиваться, демонстрируя свои замечательные возможности и расширяя свое сообщество. Все больше разработчиков из мира С++/Java пристально следят за развитием языка и стараются держать руку на пульсе. Должен отметить, что сообщество D не является ортодоксальным и фундаменталистким (что бы это ни значило), и нередко в ньюсгруппах можно увидеть, что в ответ на вопрос, можно ли использовать D для решения определенной задачи, члены сообщества рекомендуют задавшему вопрос использовать другой язык, отличный от D. Так что в лице сообщества D любой найдет грамотных специалистов своего дела, готовых ответить на нужный вопрос кратко и по существу. Все это делает развитие языка неизбежным и неотвратимым.

Список багов с ценами за их устранение

>>> Оригинал новости

★★

Проверено: Shaman007 ()
Последнее исправление: cetjs2 (всего исправлений: 6)
Ответ на: комментарий от forCe

Не позорьтесь, D на голову выше C++. Реализация и инфраструктура пока хромает, но концептуальное превосходство неоспоримо.

anonymous
()

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

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

Вы можете подтвердить эти тезисы? Я это неоднократно слышал, но не видел в описании языка ничего их подтверждающего.

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

Не позорьтесь,

Шёл бы ты отсюда, анонопетушок, с такими «аргументами».

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

Вы можете подтвердить эти тезисы? Я это неоднократно слышал, но не видел в описании языка ничего их подтверждающего.

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

yetanother ★★
() автор топика

Все это делает развитие языка неизбежным и неотвратимым.

Как-то двояко звучит...

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

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

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

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

Вы читаете, что я пишу? Еще раз:

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

У меня есть еще определенные надежды на Rust. Go и D мои надежды не оправдали=)

Для проектов другого рода, я использую другие языки. Например Scala. А так же Python.

forCe
()

Знаю что не по теме, но...

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

Help a fellow artist...

Поддержать человека морально и материально можно здесь.

http://www.gofundme.com/THEFIGHTBEGINS

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

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

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

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

нечто вроде Common LISP но с нормальной стандартной библиотекой и приличной типизацией

Чем тебе не хватило Quicklisp в качестве библиотеки и SBCL declare type в качестве типизации?

Ну или, если хочется именно в _стандартной библиотеке_, то бери Racket (или Typed Racket с типизацией): в стандартной библиотеке GUI, многопоточность, XML, SSL, JSON, ...

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

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

Посмотри на ATS.

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

Поздно, плюсы уже есть и уже есть чем их заменять.

Чем? Только чур дотнет и джаву не предлагать.

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

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

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

Ведь если вас все устраивает, то чтобы вам не приводили в качестве доводов вас никак не затронет - смысл вам делать лишние телодвижения, если у вас все хорошо? А вот если вас не будут например, устраивать плюсовые шаблоны и вы будете искать им замену - тогда я вам посоветую присмотреться к шаблонам D - это небо и земля. Например потому, что в D, для того чтобы написать шаблон функции достаточно знать лишь как пишутся функции. В плюсах нужно еще дополнительно знать как пишутся именно шаблоны. А если брать нетривиальные примеры, то разница будет существеннее.

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

Если бы было нечто вроде Common LISP но с нормальной стандартной библиотекой и приличной типизацией (Qi?)

А про typed racket что скажешь?

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

А я говорил о преимуществах C++ перед D? D лучше, но это, как я уже говорил, косметический ремонт, не более того. И это только если мы рассматриваем языки сами по себе, при прочих равных условиях. А ведь условия не равны. Т.е. переписывать проект на D бессмысленно, брать D вместо C++ для новых проектов рискованно.

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

Спасибо, поржал. Цукерберг умеет издеваться.

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

Но для привлечения внимания и это неплохо.

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

Ведь если вас все устраивает, то чтобы вам не приводили в качестве доводов вас никак не затронет - смысл вам делать лишние телодвижения, если у вас все хорошо?

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

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

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

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

В С++ нет даже модулей. :) Обобщенное программирование реализовано худшим из возможных способов. Убогое ООП и плохая поддержка компонентного программирования. И многое многое другое.

Сравниваем именно языки, а не тулчейн.

PS Я тоже не стал бы сейчас что-то переписывать на D, но преимущества ЯЗЫКА D бесспорны!

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

Кстати, кто-нибудь знает, как переводят shape analysis на русский язык? А то я только в буржуйских источниках об этом читаю и никак не перевожу=)

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

Преимущества С++ над D перечислите.

Я не знаток D, потому назову то, что видно издалека:

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

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

Нормальный язык - это понятие каждый трактует по своему. Более лучший статический контроль - тоже расплывчатое понятие. Shape analysis вещь довольно специфичная и, на мой неискушенный взгляд, больше относится к инфраструктуре языка, а не к самому языку. Насчет вывода регионов, кастомных распределителей, опционального(полностью) сборщика мусора я бы вам посоветовал посмотреть новый модуль Фобоса std.allocator. Очень мощный функционал.

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

Вы не отличаете концепцию т.е. САМ ЯЗЫК от его реализации (компилятор+ стандартная библиотека), а также тулчейн и комьюнити.

PS когда-то про С++ говорили тоже самое что Вы сейчас о D.

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

Язык годный, но унылый. Ждем, что получится из Rust

Я что-то слышал, что там перегрузки функций не планируется. Это правда? И если да, то чем аргументируют?

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

Я тоже не стал бы сейчас что-то переписывать на D

А все остальное и не важно в реальной жизни.

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

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

После C++ как-то не верится.

Ну шаблоны там и правда слегка поудобнее.

DarkEld3r ★★★★★
()

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

И это прекрасно.

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

Shape analysis может быть частью языка и реализован именно компилятором. В том или ином виде. Вывод регионов должен быть статическим, иначе у него не будет преимуществ перед GC в плане производительности в рантайме. std.allocator посмотрю, спасибо.

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

САМ ЯЗЫК

Меня не интересует САМ ЯЗЫК. Что я с ним буду делать? Меня интересует инструмент и его качество.

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

Я не знаток D, потому назову то, что видно издалека:

- у С++ нет «ломки», которой очень страдает D;
- С++ позволяет использовать практически все сишные библиотеки >без каких либо дополнительных движений и без кривых и >устаревающих оберток.

Ключевое слово - я не знаток D. Ломки уже давно нет, да, вносятся изменения, которые иногда требует удаления deprecated кода, но это следствие развития языка. Breaking changes уже давным давно нет. Сишные либы можно использовать в D без лишных телодвижений, единственно что нужнен интерфейсный файл (аналог заголовочного), который создается автоматически на основе заголовочного с помощью, например, dstep. Если запуск утилиты и передача ей аргументов без плясок с бубном это тяжелая нагрузка, тогда да, лучше D не использовать.

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

Ломки уже давно нет

вранье

Breaking changes уже давным давно нет

чейнджлоги почитай - много узнаешь

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

вранье, тот же sqlite оно не осилило, да и не зря клепают вручную библиотеки-обертки

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

Я критикую инструмент. Вернее даже не критикую. Он просто бесполезен. Существенных преимуществ перед C++ у него нет. Он так же «сложен», так же породит кучу неосиляторов и быдлокодеров, как и С++, при чем того же рода. ИМХО.

Отрасли нужны новые подходы...

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

Не позорьтесь, D на голову выше C++. Реализация и инфраструктура пока хромает, но концептуальное превосходство неоспоримо.

Прямо так уж на голову? Холиварить не хочу, надеюсь на нормальное обсуждение. Так вот - не так давно начал читать «D programming language» и местами прочитанное вызывает недоумение. Не буду отрицать - есть весьма приятные вещи. Просто когда смотришь на «удобную замену С++», то ожидаешь избавления от всех кривостей. И когда находишь там новые, свои собственные неприятные мелочи, то несколько разочаровываешься. Разумеется, часть претензий — это просто от непривычки или «вкусовщина», ещё какая-то часть (наверное) чем-то обьясняется и является разумным компромиссом. Но некоторые вещи понять не могу, возможно, кто-нибудь сумеет объяснить.

Например, приведение типов. Я так понимаю, что на все случаи жизни один каст (cast) предусмотрен? Может в С++ их «многовато», но по моему это удобно. В том смысле, что меньше вероятность случайно что-то не то сделать.

Не очень понял пример отсюда: Тот где cast+mutate = UB:

const(int)* p;
int* q = cast(int*)p;
*q = 3;   // undefined behavior
Это не разрешено что ли? Если так, то какой смысл в приведении вообще?

В С++ в этом плане как-то более логично — если кастуешь и модифицируешь «константные» данные, то сам отвечаешь за то реально ли они константные. Или это просто в документации как-то непонятно выразились?

Ну и обьявление указателей мне как-то проще в С++ читать:

// D:
//ptr to const ptr to const int
const(int*)* p;
//const ptr to const ptr to const int
const int** p;
**p = 3; // error

// C:
//ptr to const ptr to const int
const int *const *p;
Например, как будет выглядеть аналог следующего?
// C:
//ptr to const ptr to int
int *const *p;

Ещё не очень понял со строками. В С++ долгое время не хватало «raw string literals». В Д они есть, но в виде кучи разных вариантов со своими (местами не очень прозрачными) правилами. Например:

auto a1 = "just a string";
auto a2 = r"raw string\n\r";
auto a3 = `raw string\n\r`;
Плюс строки с задаваемыми разделителями. Правда в качестве «разделителя» может быть только один символ и только из этого списка: «[(<{» (так написано в книге, на самом деле такое тоже работает (q"|123|"), а вот такое уже нет (q"a123a"). Разделители допускают вложение (если честно, то не понял зачем это надо):
auto а5 = q"/test/eee/"; // Error.
auto a6 = q"[]]"; // Error.
auto a7 = q"[[]]"; // OK, a7 = "[]".

Можно задавать разделители из более чем одного символа, но при этом надо разбивать такой литерал на несколько строк (разделители должны быть на разных строках):

auto a1 = q"EOS
Test string
EOS";
Вот так написать нельзя, ну и отступ попал бы в строку:
auto a1 = q"EOS
  Test string
  EOS";

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

R"delimiter(The String Data \ Stuff " )delimiter"

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

std.allocator посмотрю, спасибо.

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

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

Просто погуглите картинки по запросу «vampire hunter D»

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