LINUX.ORG.RU

Перевод QA-сессии на Reddit с Леннартом Поттерингом

 ,


4

6

Доступен перевод «интервью» (точнее, треда на Reddit) с Леннартом Поттерингом, в котором он отвечает на различные вопросы посетителей сайта о разработке systemd, kdbus, PulseAudio и свободного ПО в целом, о дальнейших перспективах systemd, Linux и OSX, о реакции разработчиков на критику и о многом другом. Сохранён исходный стиль изложения.

Авторы перевода — PaulCarroty и intelfx.

>>> Текст перевода

★★★★★

Проверено: JB ()
Последнее исправление: leave (всего исправлений: 5)

Ответ на: комментарий от intelfx

а посаны, объясните, зачем использовать c а не писать на с++ в с стиле раз уж так хочется, но в местах такого пердолинга использовать std::string std::stringstream etc. ради мифического бутстапа и экономии 1M на libstdc++?

anonymous
()
Ответ на: Глупый вопрос, но интересно от macrohard

Если с изделиями Л. Пота всё так плохо, зачем их повсюду внедряют, причём безальтернативно?

Если коротко то остальное хуже, но сцуко надежнее. А дистроделов «хуже» уже достало и они решили попробовать то, что глючнее.

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

конечно

systemd! Учитывая масштаб этого проекта, основным для меня он останется надолго.

и

Нет никакого плана работ.

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

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

обычный пользователь и так не осилит, но волшебному спецы из красношапки все решат :)

Они и до этого решали, но тут у них есть шанс побольше волшебных под себя сгрести и себе работу облегчить...

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

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

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

некий стартовый гемор

С обещанными релизами раз в две недели есть вероятность, что гемор превратиться в перманентный.

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

не согласился, а пообещал... они повелись...

а потом... «интегрировать его и стабилизировать — это задача разработчиков дистрибутива» (с)

:)

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

интересно, эта строка не очень сложная (но может быть и иначе) в плане отладки и читабельности неужели ты предпочел бы первый вариант?

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

Вдохновляет, однако. Я, пожалуй, распечатаю пару десятков страниц и буду читать их перед сном. Но вот в systemd как-то слишком мало goto, я, если честно, думал, намного будет… Намного лучше будет это всё.

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

«ты сам с собой разговариваешь?»

Риторический вопрос анонимуса, впавшего в рекурсию.

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

Не так страшен черт. Тут вопрос что куда интегрируют :)

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

От бездумного создания локальных переменных под каждый temporary читабельность кода не увеличивается. Особенно когда код утилитарный, т. е. преимущественно самоочевидный, и не реализует какой-либо сложный алгоритм. Отсюда slice - e читабельнее, чем, скажем, slice_basename_length.

То есть если 10 раз будет встречаться это выражение, ты 10 раз будешь вычитать разницу? Кроме того в дебаге будет удобнее сразу видеть значение переменной если потребуется. И не обезательно раздувать имя переменной, достаточно sb_len. Красиво и не занимает много места.

Насчёт new — это очень распространённая вещь, причём именно с такой «сигнатурой» (new от типа данных и количества), поэтому он не может быть непонятным опытному программисту.

То есть делать sizeof(char), а потом умножать это на параметр и скармливать это malloc ты считаешь правильно? Перед этим еще и параметр проверить не забыв. Не хочу тебя растраивать, но подобные вещи подразумевают не только malloc.

Что, неужели второе читабельнее? Первое как раз выглядит «естественно» — присоединяемые строки перечислены слева направо, почти как в ЯВУ.

Конечно читабельнее. Опять же возвращаемся к дебагу. Прогони через дебаг одну строчку и четыре. В первом случае ты не увидишь промежуточные результаты. Во втором ты увидишь как склеиваются строки после каждой функции. Отлаживать такой код удобнее.

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

Мне (субъективно) первый вариант читабельнее, а с точки зрения отладки нет совершенно никакой разницы.

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

«Конечно читабельнее. Опять же возвращаемся к дебагу. Прогони через дебаг одну строчку и четыре. В первом случае ты не увидишь промежуточные результаты. Во втором ты увидишь как склеиваются строки после каждой функции. Отлаживать такой код удобнее.»

+1000

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

СистемГшникам хоть плюй в глаза — всё божья роса :)

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

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

укрощение огня == изобретение велосипедов
Может я пока ещё не во всём разобрался, но интуиция подсказывает, что что-то тут не то. Gnome, NetworkManager, dbus, systemd - так можно докатиться и до изобретения «реестра»
И что вы тут развопились об открытом и свободном ПО. Из вас один человек из пятидесяти умеет читать исходные коды, а остальные просто понтуются. А если вы не умеете читать код, какая к чёрту разница открытый он или закрытый, вы что самолично исследовали его на наличие бэкдоров?
И опять же свобода == анархия, то что творится сейчас в linux-сообществе больше соответствует последнему.
Многие линуксоиды выбирают GNU/Linux не за свободу и открытость. Мне, например, просто нравится коммандная строка и чувство причастности к элите. А платные программы я могу использовать также свободно как и бесплатные, мои убеждения мне это разрешают и никакого воровства я в этом не вижу. А если бы никакой GNU/Linux и FreeBSD не существовало, то до сих пор бы была жива SCO Unix и я бы её админил за высокую, между прочим, зарплату.

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

То есть если 10 раз будет встречаться это выражение, ты 10 раз будешь вычитать разницу?

Заведу temporary. Но здесь не десять раз, а два, причём через строчку.

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

Нет никакой разницы между p <временная переменная> и p slice-e.

sb_len

И попробуй пойми, что это значит. Нет, спасибо, я предпочитаю именовать локальные переменные либо однобуквенно, если они счётчикоподобные или явно временные, либо развёрнуто.

То есть делать sizeof(char), а потом умножать это на параметр и скармливать это malloc ты считаешь правильно?

Я считаю, что это должно быть как-либо обёрнуто. А вот ты, видимо, считаешь, что нужно каждый раз вписывать sizeof(T) *.

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

Оставь свою ехидную снисходительность для кого-нибудь другого. В чём здесь проблема, помимо «непонятности для программиста»?

В первом случае ты не увидишь промежуточные результаты.

Вообще-то, увижу...

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

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

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

Пойду выброшусь из окна.

Давай! Будь мужиком!

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

Но вот в systemd как-то слишком мало goto, я, если честно, думал, намного будет… Намного лучше будет это всё.

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

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

gdb при использовании next приостанавливает выполнение после возврата из каждой функции, даже если их несколько на строке. Return value тоже можно как-то вывести.

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

я пока ещё не во всём разобрался, но интуиция подсказывает

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

А если бы никакой GNU/Linux и FreeBSD не существовало, то до сих пор бы была жива SCO Unix и я бы её админил за высокую, между прочим, зарплату.

Вот он, классический плач жадного бездаря, который только-только с грехом пополам смог научиться пользоваться счётами, а тут опять проклятый прогресс с логарифмической линейкой и уже калькуляторы на горизонте маячат. Это что же - получается всю жизнь учиться теперь?!

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

gdb при использовании next приостанавливает выполнение после возврата из каждой функции, даже если их несколько на строке. Return value тоже можно как-то вывести.

Не тут-то было.

18        printf("%d\n", plus(d, plus(a, plus(b, c))));
(gdb) next
10
19      }

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

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

интересно узнать о его особенностях работы, увлечениях и прочем

Вот да. Какую одежду покупает, красит ли волосы. Музыку любит какую. Это интересно.

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

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

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

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

то до сих пор бы была жива SCO Unix и я бы её админил за высокую, между прочим, зарплату.

Устройся работать в сбербанк, и админь SCO пока не надоест.

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

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

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

Заведу temporary.

И на пальцах объяснишь как это сделать другому человеку? Если к примеру для отлова ошибки нужен backtrace или дамп?

Но здесь не десять раз, а два, причём через строчку.

ну-ну)) Ты жертвуешь читабельностью кода, ради 2 байт памяти. умно, что скажешь.

И попробуй пойми, что это значит. Нет, спасибо, я предпочитаю именовать локальные переменные либо однобуквенно, если они счётчикоподобные или явно временные, либо развёрнуто.

А прозу писать не пробовал в названиях? Можно другой вид, но если имя переменной занимает больше 20 символов это плохое название, потому как 4 переменной и все конец строки. Читабельность резко падает. Учись давать короткие логические имена, в будущем это облегчит тебе жизнь во многом.

Я считаю, что это должно быть как-либо обёрнуто. А вот ты, видимо, считаешь, что нужно каждый раз вписывать sizeof(T) *.

Ничего, что sizeof(char) равен единице? В данном случае он вообще не нужен.

Оставь свою ехидную снисходительность для кого-нибудь другого. В чём здесь проблема, помимо «непонятности для программиста»?

Проблема в том, что для примитивного типа создали целый макрос конструктора, но если посмотреть код, то это просто имитация. Вот и спрашивается зачем? Если можно просто вызвать malloc?

Вообще-то, увижу...

Ну поделись как ты их увидишь.

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

я поэтому и спросил про отладку, не люблю такие конструкции не из за того что их невозможно читать (строка выглядит компактно, тут не о чем спорить даже)

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

Думаю свалить в gentoo или на фряху, задолбали эти катаклизмы.

Так или иначе в будет два форка: 1 это системд с обвязкой из (полу)пропиетарных модулей который будет развиваться redhat, и 2-ой debian (условно) развиваемый сообществом.

боюсь и туда залезут «упоротые» systemd...

У фряшников есть одна особенность они делают всё медленно, но хорошо.

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

Заведу temporary.

И на пальцах объяснишь как это сделать другому человеку? Если к примеру для отлова ошибки нужен backtrace или дамп?

При чём здесь другой человек? При чём здесь backtrace или дамп? Вообще-то «завести temporary» — это то, что ты предлагаешь, поэтому ты сейчас споришь сам с собой.

Но здесь не десять раз, а два, причём через строчку.

ну-ну)) Ты жертвуешь читабельностью кода, ради 2 байт памяти. умно, что скажешь.

Эти варианты в скомпилированном виде эквивалентны, man common subexpression elimination. И я утверждаю, что e - slice читабельнее.

Я считаю, что это должно быть как-либо обёрнуто. А вот ты, видимо, считаешь, что нужно каждый раз вписывать sizeof(T) *.

Ничего, что sizeof(char) равен единице? В данном случае он вообще не нужен.

Ничего, что умножение на заведомую единицу соптимизируется в compile-time?

<...> В чём здесь проблема, помимо «непонятности для программиста»?

Проблема в том, что для примитивного типа создали целый макрос конструктора, но если посмотреть код, то это просто имитация. Вот и спрашивается зачем? Если можно просто вызвать malloc?

Чтобы улучшить читабельность кода и не забывать вписывать sizeof.

Вообще-то, увижу...

Ну поделись как ты их увидишь.

Уже выяснили, что не увижу. Я спутал с этим какое-то другое поведение отладчика.

Да: у меня такое ощущение, что ты знаком с Си исключительно понаслышке.

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

Да: у меня такое ощущение, что ты знаком с Си исключительно понаслышке.

А у меня, что лучше бы ты был знаком с Си исключительно понаслышке.

Неизвестно, какая фатальная уязвимость с красивым названием нас ждет от тебя.

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

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

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

это про била, нашего, гейтса или про ленчика... хотя и тут и там есть что-то похожее... корпорация...

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

При чём здесь другой человек? При чём здесь backtrace или дамп? Вообще-то «завести temporary» — это то, что ты предлагаешь, поэтому ты сейчас споришь сам с собой.

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

Эти варианты в скомпилированном виде эквивалентны, man common subexpression elimination. И я утверждаю, что e-slice читабельнее.

Скомпилированый код давай оставим, речь сейчас не о нем.
То есть, читать этот код
(e - slice) + 1 + strlen(name) + 6 + 1
удобнее, нежели
sb_len + 1 + strlen(name) + 6 + 1?
Когда смотришь первую строчку, то сразу задаешь вопрос что такое e, а что такое slice.
И каждый раз нужно возвращать взгляд на эти переменные.
Во втором случае имя переменой сразу дает понять что в ней.
Глупо утверждать обратное и что удобно оперировать голыми адресами.

Ничего, что умножение на заведомую единицу соптимизируется в compile-time?

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

Уже выяснили, что не увижу. Я спутал с этим какое-то другое поведение отладчика.

Ну об этом надо было сразу думать.

Да: у меня такое ощущение, что ты знаком с Си исключительно понаслышке.

Странно, у меня сложилось впечатление, что это у тебя поверхностные знания Си.

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

Просто «обычный пользователь» (tm) вряд ли осилит.

У систем инициализации нет обычных пользователей. Если ты туда лезешь - ты уже специалист. Если не умеешь с ними обращаться и не понимаешь, как они должны работать - плохой специалист. Как показывает практика, активные системд-хейтеры - специалисты плохие.

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

активные системд-хейтеры - специалисты плохие

ты забыл добавить...

специалисты плохие в системд...

хотя открытие так себе :)



вот интересно другое...

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

ЗЫ: сужу по тредам с проблемами системГ. Покричать как крут системд народу завались, а как помочь решить проблему, то все фанбои резко по кустам или максимум «УМВР». Ну за исключением пары человек.

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

у него под рукой нет исходников

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

<чего-то там> ради 2 байт памяти

Скомпилированый код давай оставим, речь сейчас не о нем.

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

Когда смотришь первую строчку, то сразу задаешь вопрос что такое e, а что такое slice.

...или сразу задаёшь вопрос «что такое sb_len». Опять же, аргумент несостоятелен. Не даёт оно понять, что в ней.

Но если бы этой оптимизации не было

Если бы да кабы. Она есть, причём есть везде. Так что очередной твой аргумент (про лишнюю операцию) несостоятелен, и new(char, ...) «побеждает» malloc(...) просто потому, что в проекте надо соблюдать общий стиль.

Ну об этом надо было сразу думать.

Давай я как-нибудь сам решу, о чём надо было думать. Уже написал, что признаю ошибку и в контексте отладки «многострочный» вариант лучше.

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

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

Оба те еще клоуны. Я сначала думал, что хоть один из них что-то писал не на коленке, а оказалось, что совсем совсем.

Эх, куда этот мир катится.

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