LINUX.ORG.RU

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

 ,


1

5

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

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

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

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

★★

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

Там слишком много всего, чтобы разбираться, но в основном это тоже написано на интерпретаторе шаблонов. Если эта техника программирования станет распространенной, придется встраивать в компиляторы Си++ JIT :)

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

Если эта техника программирования станет распространенной, придется встраивать в компиляторы Си++ JIT :)

надеюсь, я до того времени успею распрощаться с С++ :)

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

ну а нахрен тогда ты тут такой приперся? :)

Тебя не спросил. :)

ну ты же его пиаришь, а теперь вот смысла не видишь в этом, нестыковочка, ага?

Я проинформировал людей. Да, элемент пиара тут безусловно есть. Но я никого не уговариваю - чувствуешь разницу?

Вот сидит Вася, фанат функциональщины, а за другим монитором в браузер смотрит Петя, фанат моделей памяти типа сегментированного стека и пишут тут - ну-ка, покажи-ка нам в чем крут твой язык! Во-первых, язык не мой, а во-вторых, если я им начну рассказывать например, про CTFE/UFCS/etc, они оба в пол-уха пропустят мимо ушей и скажут, что язык - говно им не подходит. Оно мне надо? Я всего лишь хочу, что Вася с Петей оторвали свою жопу и сами взяли и посмотрели, что им может предложить D - Васе в области ФП, а Пете в области управления памятью. И чтобы они сами решили, нужен он им или нет - не я за них должен делать этот выбор. Меня же никто не уговаривал, я взял и попробовал. Чем Вася с Петей хуже меня?

А у тебя есть конкретный перечень что тебя не устраивает в плюсах?

есть, конечно

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

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

Тебя не смущает то, что в данном случае ты сравниваешь работу реализации C++ (gcc, на оптимизацию которого затрачено много ресурсов) и dmd. Точно так же ты можешь сравнить gcc и clang. О самом языке это ничего не говорит.

Насколько понял Александреску говорил о различии времени компиляции проекта с кучей включаемых файлов, раскрытием шаблонов и т.д. Т.е. include vs import. В твоем примере этого просто нет.

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

если я им начну рассказывать например, про CTFE/UFCS/etc, они оба в пол-уха пропустят мимо ушей и скажут, что язык - говно им не подходит

так надо примеры, может даже вбросы, вот код на D - попробуйте сделать лучше, если пример будет хороший, то на ЛОР без проблем завяжется обсуждение с привлечением самых разных людей

Я всего лишь хочу, что Вася с Петей оторвали свою жопу и сами взяли и посмотрели, что им может предложить D

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

Ну так возьми и посмотри, есть ли в D решение этих проблем.

есть, хоть и не всех, но кроме решений в D есть и проблемы, в том числе и общая сырость, к примеру можно прочитать такое:

«Multiple AliasThis are allowed.» «Multiple AliasThis is currently unimplemented.»

замечательно же

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

Тебя не смущает то, что в данном случае ты сравниваешь работу реализации C++ (gcc, на оптимизацию которого затрачено много ресурсов) и dmd.

а тебя не смущает, что я проверял и gdc, который намного тормознее dmd?

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

он просто вбросил без предоставления реального кода

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

а тебя не смущает, что я проверял и gdc, который намного тормознее dmd?

Это очевидно. gdc это высокоуровневый разборщик кода (который, насколько я понял, вообще не проводит оптимизацию). Оптимизацией занимается gcc, который под D просто не заточен. То же самое с ldc. Итого нормального компилятора D сейчас нет.

он просто вбросил без предоставления реального кода

Я не видел этой новости, но существует множество причин по которым код не представлен. ИМХО для того, чтобы обвинить человека во лжи требуются более серьезные основания.

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

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

Товарищи, у меня возникли смутные сомнения, что kto_tama и был жабой.

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

Однако syntax-parameters + make-rename-transformer делают это ненужным почти всегда.

Ну так я и говорил (предполагал), что на самом деле это не ограничение.

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

Это очевидно. gdc это высокоуровневый разборщик кода (который, насколько я понял, вообще не проводит оптимизацию). Оптимизацией занимается gcc, который под D просто не заточен

во-первых даже с отключенной оптимизацией gdc намного медленнее g++, во-вторых - дело фронтэнда выплюнуть IR, а там уже плевать - C++, Fortran, D это или что другое

ИМХО для того, чтобы обвинить человека во лжи требуются более серьезные основания.

это не ложь, это сравнение теплого с мягким

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

так надо примеры, может даже вбросы, вот код на D - попробуйте сделать лучше, если пример будет хороший, то на ЛОР без проблем завяжется обсуждение с привлечением самых разных людей

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

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

Ну да, есть. И тем не менее они решаются. А где нет проблем? В плюсах что ли не решается годами?

есть, хоть и не всех, но кроме решений в D есть и проблемы, в том числе и общая сырость, к примеру можно прочитать такое:

«Multiple AliasThis are allowed.» «Multiple AliasThis is currently unimplemented.» Есть такое. Для меня было бы удобнее иметь несколько alias this. Но их отсутствие лично меня абсолютно не останавливает. Для решения моих задач эта фича языка не является ключевой. Поэтому я юзаю язык. И повторюсь, если для кого то эта фича ключевая, он должен искать другую альтернативу, D ему не подходит. Но это абсолютно не значит, что язык не подходит всем - я же спокойно обхожусь без этого. Как и многие другие. Язык вполне годный для использования, несмотря на пробелы.

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

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

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

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

Ну да, есть. И тем не менее они решаются. А где нет проблем? В плюсах что ли не решается годами?

Так зачем менять одни проблемы на другие? Тем более, что D такое же говно, как С++? На rust хотя бы посмотрите. Это почти то, что нужно.

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

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

Сколько людей у вас в команде? Сколько лет проекту(ам)?

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

Ты либо пользуешься, либо нет. Зачем тратить время?

Жалко тех, кого обманет маркетоидиный бред? Тех кто потратит свое время и ресурсы на проект. Ты говоришь, посмотрите на язык и если он вам понравитcя - пользуйтесь. Но это обман. Должен понравиться не только язык, но инструменты, библиотеки, документация и главное гарантия никогда ничего не ломать с выходом новых версий.

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

А что пишут, если не секрет?

untyped.com : половина программ на Scala, вторая — на Racket. На Racket, например, http://www.getkahu.com

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

Если есть, то берешь и смотришь, что именно тебе D может предложить в этом конкретном случае - если он тебе не может предложить ничего что тебе нужно, ты берешь и идешь дальше.

Сведения о D полны лжи и преувеличений. Человек найдет «решение», а потом окажется, что оно еще не поддерживается и/или будет выпилено через пару версий. А то еще возьмут и кинут, начав делать D3. Такой подход клиентам не нужен.

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

А то еще возьмут и кинут, начав делать D3

Да пусть делают. Проблема в том, что делая D2 они параллельно ломали совместимости в D1. Вот эту логику мне точно не понять.

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

что на самом деле это не ограничение.

В Racket вообще единственное ограничение — скорость. Всё остальное при большом желании довольно легко обходится. Хочешь систему типов? Можно привязать к символам (точнее к биндингам) дополнительную информацию. Хочешь отладку/профилирование — есть continuation marks, хочешь генераторы или сопрограммы — есть продолжения и на них всё делается тривиально.

А вот скорость... JIT и boxing почти неустранимы.

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

В C++. Заметь, мы рассуждаем про шаблоннные типы в объявлении виртуальных функций, а не про шаблонные виртуальные функции. Шаблонные виртуальные функции в C++ невозможны. Шаблонные типы (класса) в объявлении виртуальных функций в C++ возможны.

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

во-первых даже с отключенной оптимизацией gdc намного медленнее g++

Это просто говорит, что C++ в gcc достаточно хорошо сделан. Так было далеко не всегда.

во-вторых - дело фронтэнда выплюнуть IR, а там уже плевать - C++, Fortran, D это или что другое

Это не совсем так. Например решить требуется или нет какой то метод у объекта, используемого в другом модуле можно только на этапе линковки. Насколько понимаю также могут быть проблемы с делегатами и GC. Например dmd (и gdc) сейчас делают все методы виртуальными, это работает, но возможности для оптимизации есть.

это не ложь, это сравнение теплого с мягким

Александреску знает и C++ и D. То есть, в данном случае, получается что он вводит в заблуждение своего работодателя.

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

Вот это «При этом нормальная многопоточность, возможность использовать замыкания и продолжения, вложенные функции, макросы.» почти всё в питоне отсутствует. Есть Scala, но создавать проект ради программы из 5 строк лень.

Нормальная многопоточность в питоне отсутствует.

Но разве там нет, скажем, вложенных функций или замыканий?

def foo(x):
 def bar(y):
  return x + y
 return bar

Scala ужасна уже одним своим невменяемым синтаксисом. Один XML прямо посреди кода чего стоит ... Таки LISP рулит и педалит.

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

immutable string в лиспах называется symbol

Неужели они эквивалентны?

Ну например, могу ли я создавать и «забывать» миллиарды symbolов, без утечек памяти? И может ли symbol хранить действительно любой текст, или только ASCII, причём case insensitive?

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

Он, AFAIK, deprecated. Вместо него Weblocks (weblocks-framework.info/installation)

Может быть. Но когда я с ним играл, он было живее всех живых. Вот только процесс сборки (да и чего там таить, отладки тоже) был адовым.

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

А вот скорость... JIT и boxing почти неустранимы.

То, что я видел, было хуже чем boxing. Там было разворачивание рекурсии на высоком уровне. Т.е. макросы делали что-то вроде loop unrolling, но для рекурсии. Я ещё понимаю, зачем иногда стоит разворачивать цикл на уровне native code, но такое ... Очевидно, что у разработчиков какой-то карго культ и нет понимания того, как работает железо.

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

Каждой программист в какой-то момент времени изучает новый ЯП, его стандарт, теорию и технику разработки ПО. Если бы это было не так, то ни один программист не знал бы ни одного языка. Так что всегда можно поиграться с новым языком, а затем и детально его изучить, особенно если владение даст какие-нибудь преимущества.

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

Проблема в том, что делая D2 они параллельно ломали совместимости в D1

И правильно сделали, если в D1 были ошибки реализации лучше от них избавиться вначале разработки, нежели тащить это из версии в версию. Java и С++ тащили ошибки реализации из старых версий и во что это вылилось?

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

Иначе, например, (define: (test [l : (Listof Number)] (add1 (list-ref l))) работать не будет, так как add1 для Any не определён.

Теперь понятно.

Но ведь это проверится тоже в момент «инстанцирования». То есть если я сделаю свой list-ref через Any, то получу ошибку не в рантайме.

То есть я не очень понимаю есть ли какие-то отличия в наблюдаемых результатах по сравнению с С++ шаблонами.

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

Это просто говорит, что C++ в gcc достаточно хорошо сделан. Так было далеко не всегда.

на самом деле он там сделан плохо, clang++ на моих проектах до 3-х раз быстрее, msvc тоже быстрее, но я с ним давно не работал, это к тому, что десятилетия разработки gcc не означают, что он должен быть быстрее

Александреску знает и C++ и D. То есть, в данном случае, получается что он вводит в заблуждение своего работодателя.

все проще, возьми свой старый код, да на старых кривых библиотеках, и просто перепиши, используя новые библиотеки, которые за это время ты написал «под себя», у тебя однозначно и кода будет меньше, и читаться будет лучше, практически наверняка и собираться быстрее, но к ЯП это отношения будет мало иметь, т.е. если он переписывал старый код на C++03 с бустом, то да - он однозначно мог сделать лучше на D, правда как и на С++11

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

Java и С++ тащили ошибки реализации из старых версий и во что это вылилось?

ну дык они к успеху пришли, чо

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

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

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

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

Ну например, могу ли я создавать и «забывать» миллиарды symbolов, без утечек памяти?

В целом, да. Только в пакет их intern'ить не надо.

И может ли symbol хранить действительно любой текст, или только ASCII, причём case insensitive?

Может. Типа

'#:|моя константная Cтрока. И вообще любой Unicode|

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

А у тебя есть конкретный перечень что тебя не устраивает в плюсах?

Есть, конечно.

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

Только не надо кричать, что я ищу «дерьмо» в языке специально. Лучше обьясни почему это не проблемы, как решать и почему такие решения приняли.

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

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

Для тематической презентации ваше утверждение верно на 100%. Для анонса новости - на 0%. На тематическую презентацию придут заинтересованные люди, имеющие интерес к конкретной теме. Анонс же будут читать заинтересованные люди, случайные читатели и, обязательно, любители постебаться и запостить что-то-не-по-теме. В тематической презентации вы можете говорить о конкретных вещах, обоснованно предполагая, что люди в этих вещах заинтересованы. В анонсе можно говорить только об общих вещах, потому что интересы у читателей могут совершенно различными. Это называется ориентация на целевую аудиторию, если не ошибаюсь. Тем самым отсеиваются лишние и чужеродные элементы, а действительно заинтересовавшийся человек, у которого назрели вопросы спокойно сможет задать их в той же группе новостей. А если у вас нет вопросов и вы максимум что ищете так это просто чего-то новенького - это не к нам.

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

А вот скорость... JIT и boxing почти неустранимы.

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

Всё остальное при большом желании довольно легко обходится.

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

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

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

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

Расскажи это Торвальдсу - он же ведь сразу Линукс написал! И он всем понравился, а за 20 лет его существования люди только «темки» к нему рисовали. Так штоле?

matumba ★★★★★
()

Ещё одна отличная новость! Теперь в паруса Ди дохнуло немного финансами. :)
Ди просто обязан стать «новым С++», потому что то мракобесие, которое есть сейчас, не нужно ни мэйнстриму, ни даже для хобби.
Теперь (с появлением кое-какой монетизации) даже матёрым профи есть приятный стимул помогать языку, потому что «Си с перекрещёнными костылями» достал.

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

Расскажи это Торвальдсу - он же ведь сразу Линукс написал! И он всем понравился, а за 20 лет его существования люди только «темки» к нему рисовали. Так штоле?

О Торвальдс уже язык какой-то придумал? Расскажи. :)

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

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

а я все думал, когда это ты тему про D заметишь :)

Ди просто обязан стать «новым С++», потому что то мракобесие, которое есть сейчас, не нужно ни мэйнстриму, ни даже для хобби.

так а тебе какая разница? ты же к мейнстриму даже близко отношения не имеешь

Теперь (с появлением кое-какой монетизации) даже матёрым профи есть приятный стимул помогать языку,

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

потому что «Си с перекрещёнными костылями» достал.

а ты не можешь от него отказаться? быдлокодер на нищенской зарплате штоле?

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

Теперь (с появлением кое-какой монетизации) даже матёрым профи есть приятный стимул помогать языку, потому что «Си с перекрещёнными костылями» достал.

Матерый проффи, который за $100 правит двухлетний баг в чужом коде, это ты мощно задвинул, внушаить!

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

Даже у них на сайте когда фичи сравнивают, то результат получается неоднозначный. Часто «просто» (немного) удобнее, а по возможностями или паритет (где-то одного нет, где-то другого) или даже нехватает чего-то.

Именно. Такой же корявый монстр, как кресты. Только без совместимости с Си и с никуда негодной инфраструктурой.

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