Facebook и язык D - первый шаг наверх.
От: matumba  
Дата: 21.10.13 16:17
Оценка: 7 (2) -17 :))) :))
DrDobbs обрадовал небольшой заметкой про использование языка D в таком крупном проекте, как Facebook. 5K LOC — как говорил Семёныч, выходя из пивной: "Маленький шажок человека, но большой шаг для человечества!". Действительно, ну не может же хороший язык быть вечным мальчиком для битья всякими язвительными сипиписниками — "разум когда-нибудь победит" (ц) Смысловые Галлюцинации.
Надеюсь, что уже сам пример использования таким "гигантом", станет хорошим вдохновителем для масс — многие просто боятся использовать что-то малораздутое или новоиспечённые выскочки типа Rust/Go. Ди развивается уже много лет и к счастью — без давления легаси или коммерческой продавабельности (как C#), так что если под Ди встанет хороший фундамент инвестиций, сипипи-убожества навсегда покинут индустрию.
Re: Facebook и язык D - первый шаг наверх.
От: Vzhyk  
Дата: 21.10.13 16:36
Оценка:
21.10.2013 19:17, matumba пишет:
> так что если под Ди встанет
> хороший фундамент инвестиций, сипипи-убожества навсегда покинут индустрию.
Убожества не в языке, а в прослойке.
Posted via RSDN NNTP Server 2.1 beta
Re: Facebook и язык D - первый шаг наверх.
От: Константин Россия  
Дата: 21.10.13 17:03
Оценка: +5 -1
Здравствуйте, matumba, Вы писали:

M>небольшой заметкой


Минус за попытку интересную новость превратить в срач.


P.S. Александреску сам "сипиписник", и много сделал для развития "сипипи-убожества"
Re: Facebook и язык D - первый шаг наверх.
От: Evgeny.Panasyuk Россия  
Дата: 21.10.13 17:03
Оценка:
Здравствуйте, matumba, Вы писали:

M>так что если под Ди встанет хороший фундамент инвестиций, сипипи-убожества навсегда покинут индустрию.


У каждого языка есть свои цели, свои design guidelines. Язык это не просто набор фич.
Как известно, у C++ основным приоритетом является производительность.
А в D спокойно могут пожертвовать производительностью ради других целей (об этом говорил A.A.). Взять например те же ranges — они проигрывают итераторам по производительности by-design
Re: Facebook и язык D - первый шаг наверх.
От: matumba  
Дата: 21.10.13 17:06
Оценка:
Перевод самой заметки:

Хорошо известный D-разработчик Андрей Александреску внёс в репозиторий Facebook первые 5112 строк кода на языке D, так что теперь гигант социальных сетей может сказать, что "использует язык D в серийном производстве". Язык был разработан Уолтером Брайтом, главным разработчиком компилятора C++ — "Zortech C++".

Александреску подтвердил, что проект, что называется, в "ежедневном, тяжёлом использовании" центром Facebook и в сравнении с оригинальной С++ версией, команда отметила множество выйгрышей во всех аспектах, включая размер исходников, скорость компилляции и скорость исполнения.

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

*здесь пропущены характеристики Ди — всё и даже больше, чем всё есть на оффсайте*

Уолтер Брайт прокомментировал новость как "начало первого сражения, предвещающего конец Средиземья и наступление Эры D" (видимо, отнесение к Толкиену и его Кольцам, прим. пер.)
Другие D-разработчики, такие как J. M. Davis, выразились более прозаично: "Это не означает, что D типа захватил мир программирования, но это хорошо показывает, что язык D взрослеет и реальные компании хотят его реально использовать".

Re[2]: Facebook и язык D - первый шаг наверх.
От: matumba  
Дата: 21.10.13 17:08
Оценка:
Здравствуйте, Vzhyk, Вы писали:

V>Убожества не в языке, а в прослойке.


Чушь. С таким же успехом "Лада Калина" — автомобиль, а все проблемы — от безруких водил. Так штоле?
Re[2]: Facebook и язык D - первый шаг наверх.
От: matumba  
Дата: 21.10.13 17:11
Оценка: 1 (1) -7 :))) :))
Здравствуйте, Константин, Вы писали:

К>Минус за попытку интересную новость превратить в срач.


Никакого срача — это лишь ваше личное восприятие. То, что Ди как язык на голову превосходит С++ — очевидно даже школоло, это я и подчеркнул. Если вам лично обидно за потраченное на С++ время — ССЗБ.

К>P.S. Александреску сам "сипиписник", и много сделал для развития "сипипи-убожества"


БЫЛ, но как только Ди набрал обороты, влился в команду Уолтера — тем самым подчеркнув, что даже для матёрого сипиписника С++ не является идолом и отжил свою эпоху.
Re: Facebook и язык D - первый шаг наверх.
От: maloi_alex СССР  
Дата: 21.10.13 17:15
Оценка: +1
Здравствуйте, matumba, Вы писали:

ИМХО, языку D не хватает хорошего финансирования на развитие.
Re[2]: Facebook и язык D - первый шаг наверх.
От: matumba  
Дата: 21.10.13 17:20
Оценка: 1 (1) -11 :))) :)
Здравствуйте, Evgeny.Panasyuk, Вы писали:

EP>У каждого языка есть свои цели, свои design guidelines. Язык это не просто набор фич.


Это разве противоречит тому, что С++ просто УСТАРЕЛ? Ну не думал Страуструп, что его клёвые "игры в указатели" всем надоедят! Да и ООП было прикручено сбоку и является наихудшим его воплощением (и это при наличии Смоллтока!).

EP>Как известно, у C++ основным приоритетом является производительность.


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

EP>Взять например те же ranges — они проигрывают итераторам по производительности by-design


Если вместо 0.0001 секунды работа будет сделана за 0.0003, никто на такую чепуху даже не обратит внимания. Точечное сравнение каких-то фич бессмысленно, тут надо смотреть ширше — язык Ди уже сам по себе спроектирован для безопасного п-я и очевидно намного больше подходит под язык мэйнстрима 21 века.
Re[3]: Facebook и язык D - первый шаг наверх.
От: Evgeny.Panasyuk Россия  
Дата: 21.10.13 17:36
Оценка: +2
Здравствуйте, matumba, Вы писали:

EP>>У каждого языка есть свои цели, свои design guidelines. Язык это не просто набор фич.

M>Это разве противоречит тому, что С++ просто УСТАРЕЛ?

А тут разве кто-то вообще говорит что он устарел?
В следующем году будут концепции — большой шаг вперёд. А что тут может предложить D? duck-typing?

EP>>Как известно, у C++ основным приоритетом является производительность.

M>В эпоху гигагерцовых смартфонов как-то даже неудобно экономить миллисекунды.



M>Не говоря о том, что Ди — тоже не петрушка, это нативный компилятор — ничто не мешает ему вылизать производительность.


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

EP>>Взять например те же ranges — они проигрывают итераторам по производительности by-design

M>Если вместо 0.0001 секунды работа будет сделана за 0.0003, никто на такую чепуху даже не обратит внимания.

Ещё бы, 3x — это уже такая мелочь, да и вообще всё в БАЗУ упирается
Re[2]: Facebook и язык D - первый шаг наверх.
От: matumba  
Дата: 21.10.13 17:38
Оценка: +1
Здравствуйте, maloi_alex, Вы писали:

_>ИМХО, языку D не хватает хорошего финансирования на развитие.


В конечном итоге — да, всё упирается в деньги. На самом деле Ди нужно развитие библиотек, т.к. на одних контейнерах Офис не напишешь. GUI, базы, сеть, 3D — на этих китах можно наворотить большую часть десктоп-софта.
Re[2]: Facebook и язык D - первый шаг наверх.
От: ins-omnia СССР  
Дата: 21.10.13 17:44
Оценка:
Здравствуйте, maloi_alex, Вы писали:

_>ИМХО, языку D не хватает хорошего финансирования на развитие.


Это же можно сказать о множестве бесполезных поделок.
Откуда же его [независимый суд] взять, если в нем такие же как мы? (c) VladD2
Re: Facebook и язык D - первый шаг наверх.
От: ins-omnia СССР  
Дата: 21.10.13 17:49
Оценка: -1
Здравствуйте, matumba, Вы писали:

M>Надеюсь, что уже сам пример использования таким "гигантом", станет хорошим вдохновителем для масс — многие просто боятся использовать что-то малораздутое или новоиспечённые выскочки типа Rust/Go.

Про малораздутое не понял. На счет новоиспеченности смешно. Это Ди новоиспеченный. Вернее непропеченный, и всегда таким останется.
На Rust'е Мозила свой браузер начала переписывать. С такой рекламой дело пойдет очень быстро.
И главное там есть новые полезные идеи. При то, что главная идея Ди — спилить некоторые занозы с C++.
Те что совсем уж страшные.
О Go и говорить нечего. На нём уже куча вещей написана.

M>Ди развивается уже много лет и к счастью — без давления легаси или коммерческой продавабельности (как C#),

Читай: на нём ничего до сих пор не написали.
Откуда же его [независимый суд] взять, если в нем такие же как мы? (c) VladD2
Re: Facebook и язык D - первый шаг наверх.
От: D. Mon Великобритания http://thedeemon.livejournal.com
Дата: 21.10.13 17:51
Оценка: 10 (1) +1
Здравствуйте, matumba, Вы писали:

M>DrDobbs обрадовал небольшой заметкой про использование языка D в таком крупном проекте, как Facebook.


Эта заметка — краткий пересказ вот этой дискуссии, где Александреску раскрывает некоторые детали:
http://www.reddit.com/r/programming/comments/1o7p2f/facebook_is_using_d_in_production_starting_today/
Re[4]: Facebook и язык D - первый шаг наверх.
От: matumba  
Дата: 21.10.13 17:53
Оценка: -1 :))
Здравствуйте, Evgeny.Panasyuk, Вы писали:

M>>Это разве противоречит тому, что С++ просто УСТАРЕЛ?


EP>А тут разве кто-то вообще говорит что он устарел?


Нда... вроде криокамеры ещё не изобрели?




EP>В следующем году будут концепции — большой шаг вперёд.


Большой шаг вперёд из той задницы, откуда шагает С++ — это всё то же сидение в заднице. Хуже того — даже при введении самых суперских фич, в руках остаётся всё тот же тротиловый С++, готовый не то что отстрелить ногу, а вообще всю башку снести! И синтаксис — как гляну, КАК С++ адаптирует всякие новшества, так сразу хочется послать сухарей Страуструпу.

EP> А что тут может предложить D?


эээ... в смысле "какие новые ежемесячные печеньки"? Бог ты мой, да ДАВНО УЖЕ ВСЁ РЕАЛИЗОВАНО!

EP>"Вылизывать" производительность можно в компиляторе, а вот когда сам язык приносит производительность в жертву другим фичам, то тут особо ничего не поделаешь


Да и не надо тут играть похоронный марш! Вон, ассемблер — не чета всяким Сям — забыли? И правильно сделали, ибо некоторые игры свеч не стóят. Если написание программ можно сильно обезопасить, слегка прогнув производительность, это обязательно надо сделать. А некоторые вещи (типа неизменяемости) — вообще дадены забисплатна (почитайте про это у Ди).

EP>Ещё бы, 3x — это уже такая мелочь, да и вообще всё в БАЗУ упирается


Я уверен на 146%, что большинство программ упираются в интеллект прогера, а не возможности CPU. Десктоп софт — тот вообще живёт от клавиши до клавиши, нажатой юзером.
Re[5]: Facebook и язык D - первый шаг наверх.
От: Evgeny.Panasyuk Россия  
Дата: 21.10.13 18:20
Оценка: +2
Здравствуйте, matumba, Вы писали:

M>>>Это разве противоречит тому, что С++ просто УСТАРЕЛ?

EP>>А тут разве кто-то вообще говорит что он устарел?
M>Нда... вроде криокамеры ещё не изобрели?

Аргументы?

EP>>В следующем году будут концепции — большой шаг вперёд.


M>Большой шаг вперёд из той задницы, откуда шагает С++ — это всё то же сидение в заднице.


Откуда столько злости и ненависти?

EP>> А что тут может предложить D?

M>эээ... в смысле "какие новые ежемесячные печеньки"? Бог ты мой, да ДАВНО УЖЕ ВСЁ РЕАЛИЗОВАНО!

Реализованы концепции с автоматической перегрузкой?

EP>>"Вылизывать" производительность можно в компиляторе, а вот когда сам язык приносит производительность в жертву другим фичам, то тут особо ничего не поделаешь

M>Да и не надо тут играть похоронный марш!

Я лишь говорю то, что слышал в интервью от одного из создателей языка

M>Вон, ассемблер — не чета всяким Сям — забыли?


Чтобы на ассемблере обогнать результат современных C++ компиляторов, надо очень сильно постараться
Re[4]: Facebook и язык D - первый шаг наверх.
От: D. Mon Великобритания http://thedeemon.livejournal.com
Дата: 21.10.13 19:00
Оценка:
Здравствуйте, Evgeny.Panasyuk, Вы писали:

EP>В следующем году будут концепции — большой шаг вперёд. А что тут может предложить D? duck-typing?


Я не знаю всех подробностей плюсовых концептов, но судя по тому, что Страуструп недавно рассказывал на Going Native, обещая в С++14, это уже очень давно есть в D в намного более удобном и мощном виде. Об этом же говорит Александреску.

Про производительность range'й не очень понял — где именно она хуже? В плюсах принято передавать два итератора, begin и end, в D их объединили в одну структуру, получили range. Смысл тот же, но меньше писанины и меньше ошибок.

Про конкретный пример с фейсбуком, его слова:
"I wrote the core of the C++ implementation. Then many engineers contributed on top of it. The translation to D has been near-verbatim, i.e. as close to the C++ code as possible. Even git detected the new files as modified copies of the existing ones (!).
As I mentioned elsewhere: the D version compiles 5 times faster, runs 1.67 times faster on real workloads, and has 17% less code."
Re[2]: Facebook и язык D - первый шаг наверх.
От: include2h  
Дата: 21.10.13 19:14
Оценка:
Здравствуйте, ins-omnia, Вы писали:

IO>На Rust'е Мозила свой браузер начала переписывать. С такой рекламой дело пойдет очень быстро.

IO>И главное там есть новые полезные идеи. При то, что главная идея Ди — спилить некоторые занозы с C++.

Что за идеи? Встроенные смартпоинтеры или что-то еще?
Re[3]: Facebook и язык D - первый шаг наверх.
От: ins-omnia СССР  
Дата: 21.10.13 19:25
Оценка:
Здравствуйте, include2h, Вы писали:

IO>>И главное там есть новые полезные идеи. При то, что главная идея Ди — спилить некоторые занозы с C++.


I>Что за идеи? Встроенные смартпоинтеры или что-то еще?


Там вроде нет встроенных смартпоинтеров.
Зато есть вменяемая модель многопоточности. И модель памяти, которая с этой многопоточностью работает.
И всё это безопасно — на уровне "управляемых платформ", но без их оверхеда.

Плюс некоторые функциональные фичи. Это конечно трудно назвать новой идеей, но если
уж мы серьёзно рассматриваем C++ и D...
Откуда же его [независимый суд] взять, если в нем такие же как мы? (c) VladD2
Re[5]: Facebook и язык D - первый шаг наверх.
От: Evgeny.Panasyuk Россия  
Дата: 21.10.13 19:38
Оценка: 7 (1)
Здравствуйте, D. Mon, Вы писали:

EP>>В следующем году будут концепции — большой шаг вперёд. А что тут может предложить D? duck-typing?

DM>Я не знаю всех подробностей плюсовых концептов, но судя по тому, что Страуструп недавно рассказывал на Going Native, обещая в С++14, это уже очень давно есть в D в намного более удобном и мощном виде. Об этом же говорит Александреску.

Александреску скорей всего говорил о static if — что хоть и пересекается в некоторых простых use-case'а с концепциями, но всё таки является более примитивной feature. Пример использования концепций:
void sort(RandomAccessRange &x)
{
   //...
}
void sort(BidirectionalRange &x)
{
   //...
}

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

DM>Про производительность range'й не очень понял — где именно она хуже? В плюсах принято передавать два итератора, begin и end, в D их объединили в одну структуру, получили range.

DM>Смысл тот же, но меньше писанины и меньше ошибок.

Нет — range в D это другое — там совсем убрали итераторы, к ним вообще нет доступа.
Объедение итераторов в структуру это больше про Boost.Range — что действительно сокращает "писанину" и позволяет избежать некоторые ошибки, но из таких Range можно получить доступ к итераторам — они их не прячут.

Итераторы C++ обеспечивают эффективную композицию. Если у нас есть 4 итератора, то из них можно получить 6 range бесплатно, без runtime penalty — просто выбери нужную пару итераторов.

Но, чисто range'ы без итераторов, как в D — теряют свойства композиции, код алгоритмов получается менее эффективным, что неприемлемо для C++. Например тот же partition:
auto result = r;
for (;;)
{
    for (;;)
    {
        if (r.empty) return result;
        if (!pred(r.front)) break;
        r.popFront();
        result.popFront();
    }
    for (;;)
    {
        if (pred(r.back)) break;
        r.popBack();
        if (r.empty) return result;
    }
    swap(r.front, r.back);
    r.popFront();
    result.popFront();
    r.popBack();
}

Чтобы вернуть вменяемый результат, параллельно "рабочему" range'у приходится передёргивать дополнительный range result. В то время как в STL, нет этих лишних телодвижений — возвращается итератор, который практически бесплатно определяет два range'а.
Например код из SGI STL:
while (true)
{
    while (true)
        if (first == last) return first;
        else if (pred(*first)) ++first;
        else break;
    --last;
    while (true)
        if (first == last) return first;
        else if (!pred(*last)) --last;
        else break;
    iter_swap(first, last);
    ++first;
}
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.