|
|
3.5, Аноним (-), 22:29, 03/06/2012 [^] [^^] [^^^] [ответить] [к модератору]
| +/– |
несколько тематических библиотек, решающих определённый небольшой круг задач. Со своим коммьюнити, заинтересованном хорошо выполнить задачу. А не комньюнити, которому в принципе насрать на все фичи мегакомбайна, но главное чтобы фичь было много.
| |
|
4.6, тоже Аноним (ok), 23:28, 03/06/2012 [^] [^^] [^^^] [ответить] [↓] [к модератору]
| +4 +/– |
Интересно, каковы критерии "комбайновости". Тот же Boost - далеко не монолит, это как раз скорее общая крыша для тематических библиотек.
Здесь же, насколько я понимаю, объединяющий фактор - ориентация на веб с его спецификой, вовсе не обязательно плотное взаимодействие классов библиотеки между собой. При чем здесь комбайны и фичи?
| |
|
5.11, Аноним (-), 00:48, 04/06/2012 [^] [^^] [^^^] [ответить] [к модератору]
| +/– |
> Тот же Boost - далеко не монолит, это как раз скорее общая крыша для тематических библиотек.
Что не мешает ему быть еще тем переростком...
| |
|
6.30, jerhsell (?), 09:56, 04/06/2012 [^] [^^] [^^^] [ответить] [к модератору]
| +1 +/– |
В каком смысле переростком? Много разных библиотек, есть большие и сложные, есть маленькие и простые, и все это объединено под названием boost, с единым стилем документации. А по вашему как должно быть? Точнее а как вообще может быть иначе, да ещё так, чтоб было ещё лучше?
| |
|
7.41, arisu (ok), 12:39, 04/06/2012 [^] [^^] [^^^] [ответить] [к модератору]
| +/– |
> и все это объединено под названием boost, с
> единым стилем документации
…и граблями с обратной совместимостью.
| |
7.42, тоже Аноним (ok), 12:39, 04/06/2012 [^] [^^] [^^^] [ответить] [↓] [к модератору]
| +2 +/– |
Не только единый стиль документации - качество библиотеки, включенной в Boost, не может быть ниже определенного уровня. Отдельные библиотеки, допиливаемые неизвестно кем, такой предварительной гарантии качества не дают.
Очень мешает в отладке возможность, что ошибка, которую ты ищешь, может быть вовсе не в твоем коде. Boost позволяет этот вариант игнорировать до последнего.
| |
7.98, Аноним (-), 17:21, 05/06/2012 [^] [^^] [^^^] [ответить] [↑] [к модератору]
| +/– |
> В каком смысле переростком?
В таком что здоровенная либа, которую при случае совершенно задолбаешься пересобрать, например.
> Много разных библиотек, есть большие и сложные, есть
> маленькие и простые, и все это объединено под названием boost,
При том большие и сложные - с кучей зависимостей, а пересобирать все это счастье just in case - вообще замахаешься. Кутю пересобрать и то пожалуй проще.
| |
|
|
|
4.7, Guest (??), 23:58, 03/06/2012 [^] [^^] [^^^] [ответить] [↑] [к модератору]
| +/– |
>>Со своим коммьюнити, заинтересованном хорошо выполнить задачу.
ты че, это же продукт фейсбука. Их собственный. И ничего переделывать в угоду какого то мифического коммьюнити никто не будет. Я вообще не понимаю, какой им резон открывать.
| |
|
|
|
|
2.16, Crazy Alex (??), 01:04, 04/06/2012 [^] [^^] [^^^] [ответить] [↓] [↑] [к модератору]
| +6 +/– |
Если Александреску что-то сотворил на плюсах - я бы не десять, а все сто раз подумал прежде чем критиковать. Он как бы из самых крутых экспертов по ним.
| |
|
3.18, Аноним (-), 01:23, 04/06/2012 [^] [^^] [^^^] [ответить] [↓] [к модератору]
| –4 +/– |
Если Александреску что-то сотворил на плюсах - я бы не десять, а все сто раз подумал прежде чем использовать. Так правильнее.
| |
3.27, kshetragia (ok), 07:37, 04/06/2012 [^] [^^] [^^^] [ответить] [↓] [↑] [к модератору]
| –4 +/– |
Если человек что-то сотворил на плюсах, я бы не десять - сто раз подумал об его адекватности. А уж если задействовал boost..
| |
|
4.33, Aaa (?), 10:19, 04/06/2012 [^] [^^] [^^^] [ответить] [к модератору]
| +/– |
выкинь тогда половину системы (если не больше). выкинь все браузеры, утилиты etc. Они ведь написаны на плюсах
| |
|
|
|
7.57, arisu (ok), 18:31, 04/06/2012 [^] [^^] [^^^] [ответить] [к модератору]
| +1 +/– |
> Плюсы уметь готовить надо, это да. Так вот Александреску - умеет.
он, конечно, круто делает из палок и верёвок космолёты. только это не using, а abusing.
| |
|
|
|
|
3.32, Некто (??), 10:18, 04/06/2012 [^] [^^] [^^^] [ответить] [↑] [к модератору]
| +/– |
То, что сотворил Александреску, должно быть круто, и он действительно один из самых серьёзных экспертов, и, более того, один из оказавших очень серьёзное влияние на весь современный C++. Но, ИМХО, ценность его разработок скорее именно во влиянии на современный C++, чем в возможности практического использования. Использовать его разработки напрямую я бы тоже поостерёгся.
Вспомним ту же библиотеку Loki. По идеям -- великолепно. Но многие ли используют её, а не возникшие позже аналогичные фичи в boost?
| |
|
4.36, тоже Аноним (ok), 11:07, 04/06/2012 [^] [^^] [^^^] [ответить] [↓] [к модератору]
| +/– |
Видимо, потому, что сильно шаблонизированный код хорошо работает, только когда он работает.
А вот отлаживать код с хитро закрученными шаблонами... неприятно. Внезапно оказывается, что от высокоуровневого языка ты должен снова вернуться к машинной логике и эмулировать мозгами компилятор.
| |
|
|
6.74, arisu (ok), 00:36, 05/06/2012 [^] [^^] [^^^] [ответить] [к модератору]
| +/– |
вообще-то можно ещё механизм формального доказательства использовать. особенно если вспомнить, что шаблоны цпп — это, по сути, функциональный язык с очень уродливым синтаксисом.
правда, не уверен, что это будет проще толпы тестов.
| |
6.99, kshetragia (ok), 17:21, 05/06/2012 [^] [^^] [^^^] [ответить] [к модератору]
| +/– |
Вообще говоря в коммерческом проекте за лихо закрученные шаблоны убивать надо веником. Проще уж сразу выкинуть это г-но вместе с тестами, чтобы не вздрагивать по ночам. Код в больших проектах все-таки должен быть прежде всего читабельным и максимально доступным для понимания.
| |
|
|
4.46, anonymous (??), 13:44, 04/06/2012 [^] [^^] [^^^] [ответить] [↓] [↑] [к модератору]
| +/– |
> То, что сотворил Александреску, должно быть круто, и он действительно один из самых серьёзных экспертов, и, более того, один из оказавших очень серьёзное влияние на весь современный C++.
> ...
"Не читайте Александреку" - А. Степанов
| |
|
|
6.79, anonimous (?), 09:28, 05/06/2012 [^] [^^] [^^^] [ответить] [к модератору]
| –1 +/– |
Да. Александреску плодит фенечки ради фенечек на радость "программистам", которые не желают быть математиками и инженерами. Характерный пример --- упоминавшийся где-то здесь vector. Вместо того чтобы взять контейнер с нужными гарантиями под алгоритм (или видоизменить алгоритм под гарантии контейнера) пишем ещё-один-самый-лучший-vector. Конечно, если у тебя vector от Дольче Габбана, тьфу, от Александреску, то ты, без сомнения крутой программист, а не конь педальный, в натуре.
| |
|
7.84, arisu (ok), 10:35, 05/06/2012 [^] [^^] [^^^] [ответить] [к модератору]
| +/– |
мда. когда Александреску критикую я или Crazy Alex — это можно понять. но когда подобная тебе амёба, вместо чтобы стыдливо молчать, начинает Высказывать Мнение, то Шариков кажется титаном интеллекта.
| |
|
|
|
4.52, Crazy Alex (??), 18:21, 04/06/2012 [^] [^^] [^^^] [ответить] [↑] [к модератору]
| +/– |
Наскольок я помню сам Александреску рекомендует использовать "аналогичные фичи в boost". Время прошло - появились хорошие альтернативы.
| |
|
5.63, Ytch (?), 22:49, 04/06/2012 [^] [^^] [^^^] [ответить] [к модератору]
| +/– |
> Наскольок я помню сам Александреску рекомендует использовать "аналогичные фичи в boost". Время прошло - появились хорошие альтернативы.
Да дело, имхо, даже не втом, что "время прошло". Александреску - это учебник, в каких-то областях/смыслах очень практичный (близкий к практике), но именно - учебник. Множество вариантов, множество тонкостей, универсализм и т. п. Для изучения и понимания особенностей и возможностей - самое то. Boost - чисто практическая реализация конкретных вещей - бери и используй (в идеале, сначала крепко подумав).
| |
|
6.71, Некто (??), 00:00, 05/06/2012 [^] [^^] [^^^] [ответить] [к модератору]
| +/– |
Да-да, я как раз об этом. Отчасти это учебник, отчасти -- освоение новых областей, но не основа для промышленного кода.
| |
|
|
|
|
|
3.64, Ytch (?), 22:55, 04/06/2012 [^] [^^] [^^^] [ответить] [к модератору]
| +/– |
>> fbstring
> Так ведь это старая добрая традиция - писать свой велосипед для строк
> :D
Собственно, Страуструп первый и начал )) Но он прав (в этом смысле) - строки это идеальный учебный пример. Все понимают о чем речь, у каждого в голове с ходу есть несколько вариантов реализации (от того и сотни вариантов), а он описывает как можно задействовать возможности языка для того, чтобы сделать реализацию проще в использовании. Сложно найти учебный пример лучше.
| |
|
4.80, anonimous (?), 09:34, 05/06/2012 [^] [^^] [^^^] [ответить] [к модератору]
| +/– |
> - строки это идеальный учебный пример. Все понимают о чем речь,
> у каждого в голове с ходу есть несколько вариантов реализации (от
> того и сотни вариантов), а он описывает как можно задействовать возможности
> языка для того, чтобы сделать реализацию проще в использовании. Сложно найти
> учебный пример лучше.
Построить хороший интерфес для работы со строками + хорошую реализацию --- очень не тривиальная задача. И есть мнение, что эта задача ещё не решена.
| |
|
|
|
|
2.13, Аноним (-), 00:52, 04/06/2012 [^] [^^] [^^^] [ответить] [к модератору]
| +2 +/– |
> Да... ориентировано на скорость :) fbstring копирует данные по-бай-то-во!))) На помойку.
Ну это как snappy от гугля. Есть например менее распиаренный LZ4. Он умудряется жать и быстрее и лучше. Одновременно. И на сях сразу, вместо каких-то огрызков от си++, притянутых за уши. Которые нафиг не уперлись и ничего кроме добавочного геморроя не создают (например в ядро хрен просто так включишь, etc).
| |
2.17, Crazy Alex (??), 01:20, 04/06/2012 [^] [^^] [^^^] [ответить] [к модератору]
| +/– |
Побайтовое копирование там в одном единственном случае, в больлшинстве мест - memmove. В логике глубоко не копался, так что насчет того, что когда в коде встречается - не знаю. Но вообще из опыта обсуждений в группах по D - Александреску к таким вещам очень аккуратно относится, вряд ли случайно такое сотворил.
| |
|
1.14, Аноним (-), 00:54, 04/06/2012 [ответить] [﹢﹢﹢] [ · · · ] [↓] [↑] [к модератору]
| +2 +/– |
То же самое что есть у любой крупной конторы - свой закос под STL, обросший своими же костылями. Такое есть и у Google и у Яндекс, логично что такой же урод родился и у Facebook. Грустно то, что местный менеджмент не пресекает костыли на корню.
| |
|
2.23, VoDA (ok), 02:30, 04/06/2012 [^] [^^] [^^^] [ответить] [↓] [к модератору]
| +5 +/– |
> То же самое что есть у любой крупной конторы - свой закос
> под STL, обросший своими же костылями. Такое есть и у Google
> и у Яндекс, логично что такой же урод родился и у
> Facebook. Грустно то, что местный менеджмент не пресекает костыли на
> корню.
Грустно, что компаниям ТРЕБУЕТСЯ перепиливать либы вместо использования стандартных для получения высокой скорости.
| |
|
3.24, R (?), 03:06, 04/06/2012 [^] [^^] [^^^] [ответить] [к модератору]
| +2 +/– |
> Грустно, что компаниям ТРЕБУЕТСЯ перепиливать либы вместо использования стандартных для
> получения высокой скорости.
Да вроде как все закономерно - если хочется стандартного (т.е. универсального, чтоб на всех платформах одинаково и без костылей) - то и получится не самый быстрый вариант. А если нужна высокая скорость - то не получится универсальность, поскольку, придется "пилить костыли" под конкретную платформу и под конкретные наборы данных.
Увы, "за все нужно платить" (С)
| |
|
4.28, kshetragia (ok), 07:42, 04/06/2012 [^] [^^] [^^^] [ответить] [↓] [к модератору]
| +1 +/– |
Под конкретные наборы данных - да.
Под конкретную платформу - нет.
Меня не волнует как это реализовано внутри. Пусть даже алгоритм уникален для каждой платформы. Главное, чтобы интерфейс был одинаков.
| |
|
5.29, тоже Аноним (ok), 08:51, 04/06/2012 [^] [^^] [^^^] [ответить] [к модератору]
| +/– |
Вас будет волновать, как оно устроено внутри, когда каждый нюанс умножится на количество информации.
Если вектор из STL, например, несколько неаккуратно ест память (с редко используемым запасом), то при умножении на миллиарды векторов получится лишний датацентр для поддержки этого запаса. Простая замена его на "велосипед", экономящий память, позволит внезапно и безболезненно сократить расходы...
| |
|
6.34, Ваня (??), 10:44, 04/06/2012 [^] [^^] [^^^] [ответить] [↓] [к модератору]
| +/– |
Хоть один что-то понял...
Плюс независимость от изменений стандартов и пр. мутотни. Было два параметра, сделали три - не трогает и не колышет.
Итог: прогнозируемое поведение. Когда это твой бизнес и твои деньги - это резко становится очень важным.
| |
|
7.35, тоже Аноним (ok), 11:02, 04/06/2012 [^] [^^] [^^^] [ответить] [к модератору]
| +/– |
Ну, изменение стандартов и параметров в STL - это очень маловероятно.
Но абстрагирование от деталей языка и библиотек обычно здорово облегчает сопровождение программы.
| |
7.47, anonymous (??), 13:56, 04/06/2012 [^] [^^] [^^^] [ответить] [к модератору]
| +2 +/– |
> Хоть один что-то понял...
> Плюс независимость от изменений стандартов и пр. мутотни. Было два параметра, сделали
> три - не трогает и не колышет.
> Итог: прогнозируемое поведение. Когда это твой бизнес и твои деньги - это
> резко становится очень важным.
Действительно, это классический аргумент защитников парадигмы NIH (Not Invited Here).
На практике они порождают и поддерживают легенду о том, что их велосипед самый качественный, самый быстрый, самый стабильный, ну и так далее. Ньюанс в маленьком: корректно сравнить этот велосипед с альтернативой не представляется возможным. Эта невозможность и является ключевой для поддержания легенды об исключительных качествах данного конкретного велосипеда.
| |
|
6.39, VoDA (ok), 12:06, 04/06/2012 [^] [^^] [^^^] [ответить] [↓] [↑] [к модератору]
| +/– |
> Если вектор из STL, например, несколько неаккуратно ест память (с редко используемым
> запасом), то при умножении на миллиарды векторов получится лишний датацентр для
> поддержки этого запаса. Простая замена его на "велосипед", экономящий память, позволит
> внезапно и безболезненно сократить расходы...
Продолжим пример: этот вектор потребляет на 1% памяти больше. Тогда чтобы набралось издержек на лишний датацентр нужно чтобы у компании уже было 100 ДЦ. Даже Гугл не набрал столько.
С другой стороны - этот же вектор упрощает программирование на 1% (продолжая потреблять на тот же 1% больше памяти). Для компании отдать приложению на 1% больше ОЗУ практически бесплатно - вместо планки 2Гб поставить 4Гб обойдется в 450 руб (сейчас же даже блейды таскают на 16Гб и больше).
С другой стороны 1% от ЗП программиста это примерно 14-16 тыс рублей в месяц (сама ЗП, налоги, выплаты в гс-фонды).
Так что если вы работаете не в гос-структуре (где лучше больше освоить, но меньше сделать), то главные критерий - производительность программиста, а не такты процессора или байты ОЗУ.
| |
|
7.40, тоже Аноним (ok), 12:23, 04/06/2012 [^] [^^] [^^^] [ответить] [↓] [к модератору]
| +/– |
Вы неправильно продолжаете пример. Стандартный вектор при добавлении элемента сверх выделенной памяти добавляет себе еще до полстолька памяти про запас, в зависимости от реализации. Это совсем не 1%.
Экономия памяти, конечно, выльется в лишние такты, но в вебе процессор давно уже не узкое место, а вот память... Вместо 2Гб 4Гб - это просто. Но сервера датацентров FB, надо думать, не дураки собирали, и памятью они забиты по максимуму.
Программирование же не усложнится вовсе, если вместо std::vector будет использоваться fb::vector. Напротив, может упроститься - за счет ненужности низкоуровневых оптимизаций там, где std::vector был неудачен.
Так что - оба раза мимо.
| |
7.58, Ананимуз (?), 19:04, 04/06/2012 [^] [^^] [^^^] [ответить] [к модератору]
| +/– |
> С другой стороны 1% от ЗП программиста это примерно 14-16 тыс рублей в месяц (сама ЗП, налоги, выплаты в гс-фонды).
Программист, обходящийся конторе в полтора ляма ежемесячно? Это наверное очень хороший программист и его наверняка не затруднит помочь конторе сэкономить на железе в пользу своей зарплаты.
Ну а если между цифрами таки должны стоять точки, то видно что при увеличении количества экземпляров кода, расходы на железо действительно стремительно растут выше экономии на программисте.
| |
|
6.45, kshetragia (ok), 13:43, 04/06/2012 [^] [^^] [^^^] [ответить] [↑] [к модератору]
| +/– |
Значит STL реализация вектора не подходит в данном случае и должна быть подходящая "искаробки".
man queue - там почему-то не стесняются указать чего и как лучше использовать:
Linked lists are the simplest of the doubly linked data structures and support only the above functionality over singly-linked lists.
Tail queues add the following functionality:
1. Entries can be added at the end of a list.
2. They may be traversed backwards, from tail to head.
3. They may be concatenated.
However:
1. All list insertions and removals must specify the head of the
list.
2. Each head entry requires two pointers rather than one.
3. Code size is about 15% greater and operations run about 20%
slower than singly-linked lists.
И как видите, меня снова не волнует как оно устроено внутри. достаточно знать чем мне грозит использование функциональности.
| |
|
|
4.38, VoDA (ok), 11:58, 04/06/2012 [^] [^^] [^^^] [ответить] [↑] [к модератору]
| +2 +/– |
> Да вроде как все закономерно - если хочется стандартного (т.е. универсального, чтоб на всех платформах одинаково и без костылей) - то и получится не самый быстрый вариант. А если нужна высокая скорость - то не получится универсальность, поскольку, придется "пилить костыли" под конкретную платформу и под конкретные наборы данных.
я под стандартным понимаю соответствие внешнему API и идентичное поведение при использовании API. А как оно будет внутри - на самолете, на самокате или окостылено по небалуйся - не волнует. Главное соответствует спеке и работает.
Так что было бы круто, если все либы от Гугла, Яндекса и прочих Мордокниг реализовали стандартное API и таким образом их можно было бы интегрировать в базовые либы.
List list = new List(); // базовая реализация
List list = new ListFromFacebookImprovedForIntegers(); // улучшенная реализация от Мордокниги
> Увы, "за все нужно платить" (С)
Вопрос в том кто платит и за что.
| |
|
5.61, Crazy Alex (??), 20:57, 04/06/2012 [^] [^^] [^^^] [ответить] [к модератору]
| +/– |
Ну вот сразу навскидку - чтобы указанное сделать List должен все свои методы иметь виртуальными. Что для многих случаев будет вести к основательным потерям в производительности.
Это не говоря о том, что в разных фирмах coding guidelines могут капитально отличаться.
| |
5.68, all_glory_to_the_hypnotoad (ok), 23:14, 04/06/2012 [^] [^^] [^^^] [ответить] [к модератору]
| +/– |
> Так что было бы круто, если все либы от Гугла, Яндекса и прочих Мордокниг реализовали стандартное API и таким образом их можно было бы интегрировать в базовые либы.
это совершенно не было бы круто, ибо API тоже нужно разрабатывать, точно так же, как и писать сам код и мозговать алгоритмы. Твоия идиллия возможна если это самое API вдруг спустит с небес сам Он и скажет - лучше не придумаете.
Но такого не бывает, пока ещё.
Разнообразие в подходах помогает найти нормальное решение в процессе эволюции и ествественного отбора наиболее удачных реализаций.
| |
|
|
|
2.66, all_glory_to_the_hypnotoad (ok), 23:09, 04/06/2012 [^] [^^] [^^^] [ответить] [↑] [к модератору]
| +/– |
Нужно учитывать исторический аспект проблемы. Когда многие проекты начинали расти не было много чего в стандартных библиотеках или поддержка компиляторами была посредственного качества. У меня у самого на руках есть такие проекты с бородатой историей и с аналогичным вагоном уже велосипедных библиотек если смотреть на них сейчас.
Хз как это было у мордокниги, мб там всё развивалось похожим образом.
| |
|
1.19, Аноним (-), 01:24, 04/06/2012 [ответить] [﹢﹢﹢] [ · · · ] [↓] [↑] [к модератору]
| +/– |
> представлена большая коллекция C++ классов, дополняющих стандартные библиотеки
> C++ и набор Boost.
Угу, правда работать будет только с GCC (может быть Clang), ибо GCC __attribute__ syntax встречается, ну и использует фичи нового стандарта типа move semantics. Переносимость на другие платформы хромает. Хотя оно и верно, Мордокниге на другие платформы плевать :)
| |
|
2.101, anonymous (??), 18:09, 05/06/2012 [^] [^^] [^^^] [ответить] [к модератору]
| +/– |
> Угу, правда работать будет только с GCC (может быть Clang), ибо GCC
> __attribute__ syntax встречается, ну и использует фичи нового стандарта типа move
> semantics. Переносимость на другие платформы хромает. Хотя оно и верно, Мордокниге
> на другие платформы плевать :)
Не могу понять, это Вы про aCC, Apogee или (извините, если плохо о Вас подумал) про VS (тьфу)?
| |
|
1.50, Аноним (-), 18:04, 04/06/2012 [ответить] [﹢﹢﹢] [ · · · ] [↓] [↑] [к модератору]
| +1 +/– |
Итить. Ну написала челы для себя либы. Ну катаются они в их приложениях у себя в конторе - их устраивает. Ну выложили они их в общий доступ. Спасибо посмотрим? Нет! Срачь на хрен пойми сколько!
| |
|
2.70, Ytch (?), 23:29, 04/06/2012 [^] [^^] [^^^] [ответить] [к модератору]
| +/– |
> Итить. Ну написала челы для себя либы. Ну катаются они в их
> приложениях у себя в конторе - их устраивает. Ну выложили они
> их в общий доступ. Спасибо посмотрим? Нет! Срачь на хрен пойми
> сколько!
+1. Прям с языка снял.
Никто ведь не заставляет ни одних открывать, ни других использовать. Никто не пихает это как "стандарт" (всем делать так) или как "что-то супероригинальное" (смотри как круто я умею). Просто еще одна открытая реализация того, о чем и так все заинтересованные в курсе. Не больше и не меньше.
| |
|
1.59, 4ertus2 (?), 19:21, 04/06/2012 [ответить] [﹢﹢﹢] [ · · · ] [↑] [к модератору]
| +/– |
Однако, товарищ умеет заинтересовать!
FBVector.h:521
size_type max_size() {
// good luck gettin' there
return ~size_type(0);
}
| |
|