• Научиться программировать становится сложнее
    0
    Да не будет никакого провала. С точки зрения нормального разработчика 80х все наши компьютеры — глубоко неполноценны.

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

    Просто нельзя всё одновременно делать: и гайки закрчивать и новую платформу «запускать».
  • Файл-оборотень: образ картриджа NES и ZIP-файл в одном
    +1
    зачем в винде пользоваться tar'ом?
    Кто вам сказал, что это было на винде? Я под Linux это делал. Вернее с rescue-диска (Windows грузиться перестала и надо было спасать ситуацию).

    зачем полученный архив tar распаковывть 7zip'ом?
    А ВОТ ЭТО — уже было в винде. И там с распаковщиками tar'а… не очень хорошо. 7zip — один из известнейших.

    P.S. Я ещё промолчал про кое-что
    Ну так расскажите как сами вы бы переносили кучку архивов с Linux'а на Windows. Притом что Linux — это rescue диск, интернета на нём нет и просто так что-то поставить проблематично…
  • Горе от ума, или Почему отличники пишут непонятный код
    +1
    > Всё что происходит в краткосрочной перспективе — им перестают давать товары в обмен на бумажки. Какое ж это самоубийство?

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

    Развал США в результате возможне, но «на следующий день» это точно не случится.

    Вы реально рассматриваете Саддама и Каддафи в качестве хоть сколько-нибудь «надежных долгодателей»???? Давайте еще Ким Чен Ыну в долг надаем, он-то точно отдаст!
    Вообще-то ни тому, ни другому, кредиты были не нужны. Ливия вообще была одной из богатейших стран на континенте. Но они совершили «кощунство»: предложили отказаться от торговли нефтью за доллары… а ведь только торговля товарами за доллары в рамках всего мира и позволяет США не особенно заботится о том, кто будет покупать их бумажки! Ирак и Ливию быстренько «демократизировали», а вот Сирию — уже не смогли… после чего страны, наконец, смогли начать строить альтернативу.

    Но это уже проблема Китая, что ему некому продавать свои товары, по-этому _приходится_ продавать за долги. Вы полагаете, если бы эти товары остались на китайских складах — кто-то бы там выиграл?
    Америка бы точно проиграла. А в долгосрочной перспективе — да, Китай бы выиграл. Вы тут поёте ту же песню, что и абразийцы.

    Собственно про это я уже говорил
    : Китай уже давно мог бы «убить дракона», но не факт, что уцелел бы при этом сам… но он работает над этим: Начали с Азиатского банка (ага — очень азиатский с Великобританией, Францией и Бразилией в списке членов), потом — нефть за юани (вернее, на самом деле, за золото), дальше будут постепенно отходить от «драконьей экономки» всё дальше и дальше.

    А как к своему «переходу на самообеспечение» готовится «дракон»? Пока незаметно, чтобы вообще какая-либо подготовка шла. Кроме песен на тему «если должник сказал, что он надёжный заёмщик — то так оно и есть, мнение кредитора можно не учитывать»… ничего и нету…
  • Горе от ума, или Почему отличники пишут непонятный код
    0
    > Серьёзно? Рейтинг BBB- — это у нас уже «крепче золота»?

    Очень забавляет, когда люди не читают свои же линки. Не BBB-, а топовые ААА/АА+:

    > International ratings agencies Fitch and Moody’s Investors Service both give the United States their top AAA ratings. S&P Global has put the U.S. on a slightly lower grade of AA+ since 2011.
    Ещё больше забавляет, когда люди не читают заголовков, которые не поддерживают их точку зрения. Я специально ошибся — мне было интересно: придерётесь вы к тому, что я написал BBB-, а не BBB+ или просто проигнорируете мнение не-американцев. Вы выбрали второе. Притом что даже из заголовока статьи — видно, что речь-то не про них.

    Скажите, вы, когда кредит берёте в банке, тоже убеждаете его принять во-внимание мнение своего племянника, сестры и близкого друга? Или банк, в первую очередь, выслушает мнение своего кредитного комитета?

    Fitch Ratings, Moody’s и S&P — это американские компании, краха доллоравой пирамиды они, скорее всего, не переживут, зачем им говорить о ней правду? Напомнить вам, что ваш любимый Fitch давал Lehman Brothers оценку A+ за два месяца до того, как Lehman Brothers обанкротились?

    Статья же в целом говорит о том, что Китайцы (а они, вообще-то, как раз и являются крупнейшими кредиторами США) оценивают американские облигации уже на BBB+ — а это далеко не «самое низкорисковое вложение из в принципе существующих вариантов», извините.

    > Серьёзно? Когда в прошлый раз кредитором было заявлено: кому должен — всем прощаю они это проглотили.

    Кто кому и что простил, уточните? По вашему линку ничего такого нет.
    Ну если вы вашу собственную историю так плохо знаете… Вначале французов послали с их мешком долларов, потом и всех остальных. Вообще-то — это полновесный дефолт, такой же, как и у Барди.

    > А уж сколько столетий Рим выходил из всех кризисов! Аж до IIIго века. А Англия — до XIVго. Всё когда-то случается первый раз.

    Конечно же, случается. Просто с США случится последними, в самом маловероятном сценарии (никто не говорит, что вероятность равна нулю).
    Сценарий, во-первых, не маловероятный, а, фактически, неизбежный. Вопрос только «когда». Барди продержались 6 лет, а у них ни армии, ни флота, ни ядерной бомбы не было. И варианта «напечатать хрениллион „фантиков“ у них тоже не было» (тогда кредиты в золоте брались).

    Странно, что все кругом, и внутри и снаружи Америки, об этом говорят — а вы всё то же самое талдычите.
  • Научиться программировать становится сложнее
    0
    Концепция приложений из магазинов, изолированных, с закрученными гайками безопасности. Это сейчас как iOS, так и в Android.
    Ну так и там и там и разработчики и пользователи ненавидят это! Просто им других вариантов не дают.

    Проблема в том, что нельзя сначала сделать платформу популярной за счёт того, что программам разрешать в ней делать-всё-что-угодно… а потом взять — и завинтить гайки. Ваше поделие окажется тупо никому не нужным! См. WART
  • Горе от ума, или Почему отличники пишут непонятный код
    0
    > До тех пор, пока не решат, что больше они этого делать не хотят.

    А как они могут не захотеть? Это ведь такой синоним массового самоубийства.
    Да ладно вам. Сколько правительств уже обьявляли дефолт — в том числе недавно. Всё что происходит в краткосрочной перспективе — им перестают давать товары в обмен на бумажки. Какое ж это самоубийство?

    > > С этого моментьа поподронее. В 2017м году США отдали Китаю бумажек на 100 миллиардов и получило взамен товаров на эти же 100 миллиардов. Что произшло после этого, и что именно Китай получил взамен?

    Китай получил доллары по этим долговым распискам и купил товар на эти деньги. Что тут непонятного?
    Если бы произошло так, как вы говорите, то их бы на балансе — не было. А они — есть. Можно было бы предположить, что вместо того, чтобы трежерис просто обменять на доллары эти доллары был взяты в долг… но нет: было закуплено 126 миллиардов трежерис, а долг увеличился меньше, чем на 40 миллиардов. Я потому и спрашиваю о конкретном механизме препращение трежерис в товары, что его, как бы, не очень-то наблюдается.

    Что за надежные долгодатели? Кто и какой заряд из бомболюков получал?
    Там ссылочки, в общем-то были. До того, как Китай попробовал отказаться от американской «крыши» по этой же «запретной тропе» прошлись Иран, Ирак, Ливия и Сирия. И в них всех — оказывались через некоторое время после этого американские войска. Когда с разрешения ООН, а когда и без. В последнем случае, впрочем, и другой серьёзный повод.

    > Кому?

    Да кому угодно. Спрос на столь надежный инвестиционный инструмент есть всегда.
    Ну уж нет. «Кому угодно» — это не ответ. В мире, в общем, не так много стран и/или огранизаций, способных вдруг вложить вдвое больше, чем они вкладывали ранее.
  • Горе от ума, или Почему отличники пишут непонятный код
    0
    На данный момент, вложения в госдолг США — общепризнанно самое низкорисковое вложение из в принципе существующих вариантов. Госдолг сша на данный момент крепче золота, недвижимости, любых материальных и не материальных активов.
    Серьёзно? Рейтинг BBB- — это у нас уже «крепче золота»? Или если агенство контролируется не должником, а кредитором — то к нему уже меньше доверия? Обычно считается наоборот, как бы.

    На данный момент нету никаких предпосылок к тому, чтобы что-то случилось с долларом и США.
    Серьёзно? Когда в прошлый раз кредитором было заявлено: кому должен — всем прощаю они это проглотили. Так как деваться было некуда. Но почему у вас такая уверенность, что то же самое случится и в этот раз?

    Более того — если что-то и случится, правительство США уже доказало, что может в кратчайшие сроки с минимальными потерями выходить из крупнейших кризисов.
    А уж сколько столетий Рим выходил из всех кризисов! Аж до IIIго века. А Англия — до XIVго. Всё когда-то случается первый раз.
  • Haskell. Задача о мудрецах и колпаках
    0
    del
  • Горе от ума, или Почему отличники пишут непонятный код
    0
    И кто занимается подстановкой правильных значений в GOT?
    Динамический загрузчик во время запуска программы.

    Кто занимается подстановкой правильных значений перед %rip?
    Статический линкер во время сборки программы. В готовой программе, в бинарнике, там уже ничего не меняется никогда.

    Из бинарника пропадают релокейшены. Правда-правда.
    Я говорил о foo(%rip).
    В бинарнике — это не релокейшен. Когда линкер из нескольких обьектных файлов делает бинарник там записывается фиксированное число, которое больше уже никогда не меняется. Что там было на этапе сборки программы — никого не волнует, мы же всё это обсуждаем в контексте влияния на скорость.

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

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

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

    Изоляция систем и сужение интерфейсов между ними — естественное требование.
    И вот тут, как раз, глобальные флаги — отличная вещь. Ибо когда «высокоуровневая обёртка над горячим кодом может [что-то там] решить» — это как раз и нарушает принцип изоляции.

    Ибо получается, что параметры кроме пользователя с командной строки или конфигурационного файла кто-то там ещё может менять.

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

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

    А всё потому, что чтение хостнейма и его валидация размазана что по kbd_gethostbyname (почему бы ей не передавать рейндж указатель на начало и конец строки, чёрт возьми?) и по вызывающей функции.
    В С функции получают строку закрытую нулём. gethostbyname — не исключение. Можно было бы создать язык, где они принимали бы рейнджи… но это уже будет не C.

    Кстати, в kbd_gethostbyname есть обработка случая, когда длина строки больше или равна 128. Так что искомая проверка на 63 символа — это баг? Или тут должна быть не kbd_gethostbyname? Или тут может быть не только хостнейм? Или что вообще почему тут так?
    Можете посмотреть на код, однако. Или нет? kbd_gethostbyname запросы кеширует, но только для коротких (не более 128 символов) имён. Для длинных — пропускает как есть. Это механизм вообще не имеет никакого отношения к ограничению на 64 символа, которые приходят прямо из DNS'а. В главной программе допускаются только весьма ограниченное множество «правильных» имён хостов… хотя непонятно — зачем их на этом уровне-то проверять, когда gethostbyname(3) это сама должна сделать.

    Потому что кривая работа с памятью — это не только всегда свежие 0-day, но и ваш личный геморрой по отладке багов, проявляющихся через 10 вызовов функций, 10 секунд или 10 часов в совсем другом модуле. Спасибо, я этого в своё время наелся достаточно.
    Для этого Asan есть.

    P.S. Вот, кстати, kdb_gethostbyname огорчила больше. В частности тем, что граница в 128 символов для кешированного имени выглядит какой-то абсолютно произвольной… и встречается в коде далеко не в одном месте. Тут уже и константу бы не грех сделать…
  • Научиться программировать становится сложнее
    0
    Можно пример таковой гибкости?
    true, false, file_not_found.

    Но обратной стороной такой гибкости является вылетающие странные ошибки в рантайме — от чего, как раз статическая типизация и призвана защитить.

    Так что… лучше не надо. Если вам очень хочется вернуть что-то, что не лезет в заданный тип — значит вам нужно как-то эту информацию донести (std::optional и std::variant вам в помощь). Поступать как в динамических языках (документация говорит что вернётся целое число, а на самом деле могут вернуться ещё True и None) — не стоит.
  • Научиться программировать становится сложнее
    0
    Пока попытки внедрить «мобильную» идеологию на десктопные системы (UWP) терпит неудачи.
    А когда UWP был популярен на мобильниках? Расскажите — мне правда интерено.

    Движение с мобильников на десктоп идёт — но очень запутанным путём. Через ChromeOS. Именно потому, что уж очень легко Андроид взламывается и root'уется.

    У нас (да и не только у нас, кстати говоря) телефон — это статусный аксессуар и если у человека будут финансовые возможности, то выбор будет сделан в пользу флагмана известного производителя.
    Когда-то и PC был «статусным акссесуаром». И брендовые PackardBell'ы и IBM'ы покупались «потому что иначе несолидно».
  • Горе от ума, или Почему отличники пишут непонятный код
    +1
    Или потому что они уже(или пока еще) Too Big To Fail.
    И «уже» и «пока ещё». Когда долларовая пирамида рухнет (рухнет ли при этом США — неизвестно, может быть, что и нет), то накроется вся существующая система мировой торговли.

    Долгое время попытки выстроить алтернативу приводили к тому, что у тех, кто пытался это сделать обнарживали острый недостаток демократии и зашкаливающее количество нарушений прав человека, но… после того, как «Акела промахнулся» в Сирии (почти все чиновники, заявлявшие «Ассад должен уйти» уже ушли… а Ассад — ещё нет) процесс сдвинулся с мёртвой точки и, наконец, Китай решился. АБИИ и выключение доллара (а значит и тережерис) из процесса торговли нефтью — это фактически работа над тем, чтобы США не были Too Big To Fail.

    Устроить панику на биржах и коллапс экономики США Китай мог уже лет 10 как — но проблема была в том, что при этом сколлапсировала бы и экономика самого Китая тоже. Вот над этим сейчас и ведётся работа…
  • Горе от ума, или Почему отличники пишут непонятный код
    +1
    Но Ланнистеры всегда платят свои долги.
    До тех пор, пока не решат, что больше они этого делать не хотят. Барди тоже по своим долгам платили… до поры до времени.

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

    Так что никакой отдачи благ нет, все эти расписки конвертируются в деньги, а те — в свою очередь, в блага.
    С этого моментьа поподронее. В 2017м году США отдали Китаю бумажек на 100 миллиардов и получило взамен товаров на эти же 100 миллиардов. Что произшло после этого, и что именно Китай получил взамен?

    Или же расписки могут быть проданы напрямую.
    Кому? Если даже от слухов о том, что Китай начнёт покупать меньше бумажек биржи начинает лихорадить и Китайю приходится говорить нет-нет, нас неправильно поняли?
  • Горе от ума, или Почему отличники пишут непонятный код
    +1
    Это вам так кажется. Далеко не всегда. Как я уже писал — я никогда не имел проблем с необходимостью прочитать «мой собственный код годовой давности» (если его за прошедшее время время не отрефакторил до неузнаваемости… но это тогда уже не совсем мой код), а при чтении чужого кода, как правило, больше проблем вызывает безумное количество модулей индирекции.

    Одно время мне казалось, что это разница между «старой школой» и «поколением твиттера» — но увидев недавно исходники Turbo Vision, нашинкованные в мелкую лапшу, понял, что нет — это таки не так, во все времена были как люди, для которых один метод на 100 строк иметь комфортнее, чем 100 методов по 5 строк, так и наоборот.
  • Горе от ума, или Почему отличники пишут непонятный код
    –1
    Первые пропустили явно спорную задачу, а второй этого не заметил и дал её аудитории – после чего даже не признал «спорности вопроса»…
    Не бывает задач, которые могут быть решены только одним способом.

    Например почти все геометрические школьные задачи можно расписать в координатах и свести к решению уравнений.

    Это не значит, что все другие методы не имеют смысла.

    Даже ответы в конце задачника были одним значением…
    Именно поэтому учитель не появляется на 5 мин в начале урока со списков задач, которые нужно решить, а общается с учениками все 45 минут.
  • Горе от ума, или Почему отличники пишут непонятный код
    0
    Для мировой экономики без разницы где учился, а где работает.
    Серьёзно? На расскажете на досуге — как налоги, уплоченные в США, попадают в закрома МГУ?
  • Горе от ума, или Почему отличники пишут непонятный код
    0
    А можете объяснить, каким именно образом и в чем эти все страны платят за хорошую жизнь США?
    Всё тот же Китай, например. Если Китай отправил в США товара на 100 миллиардов, а взамен получил только долговые расписки — то как раз и получается, что «эта страна оп! И отдала эти блага США».
  • Научиться программировать становится сложнее
    0
    Для обеспечения возможности общения по протоколам следует знать протоколы, их и учат (топологии, алгоритмы кодирования/декодирования, передачи и т.п.).
    Вы предлагаете готовить водителя, но так, чтобы он не водил, а ковырялся в моторе.
    На заре автомобилестроения — так и учили. Вообще есть ощущение, что при взляде назад окажется, что водителей почти всегда так учили.

    Просто потому, что период времени, когда техника стала достаточно «умной» для того, чтобы это было не нужно, но ещё «недостаточно умной» для того, чтобы полностью заменить водителей (последние лет 20, наверное), окажется, по историческим меркам, весьма коротким…
  • Горе от ума, или Почему отличники пишут непонятный код
    0
    А вы как считаете?
    Это не я считаю, а Bloomberg.

    Интересно только, чего китайцы потом едут во всякие Штаты, а не наоборот.
    И эти сведения — тоже устарели.

    Один из немногих показателей, по которым США пока что безусловно опережают другие страны — это количество и качество войск. Но их уже не хватает для того, чтобы «доставить демократию из бомболюка» во все страны, которые не хотят платить за хорошую жизнь жителей США… а ведь в последние лет 10 — только за счёт этого и удавалось поддерживать иллюзии о том, что у США — самая большая экономика, самые эффективные рабочие и прочее.
  • Горе от ума, или Почему отличники пишут непонятный код
    –1
    И GOT и прочие механизмы для релокейшнов как обеспечивают это самое ваше конкретное число, ради интереса? Или я опять не в ту степь зашёл, и это всё не то?
    Нет — это уже почти то. GOT «включается в работу» когда ваш символ экспотрируется из библиотеки. Вот эта ссылочка — она ровно про это. Третий вариант.

    И там хорошо видно — у вас либо GOT, две инструкции и %rbx, либо одна инструкция, прямой доступ и %rip. То есть да — если у вас переменнай экспортируется из библиотеки, то доступ к ней будет через индирекцию — но и обычный регистр, не %rip

    Как-то я упустил пропажу таких выражений из итогового бинарника. Если с малым влиянием ввиду лёгкости работы для декодера (но это нужно бенчмаркать) я ещё готов согласиться, то это уже как-то перебор.
    Из бинарника пропадают релокейшены. Правда-правда. Ну проверьте:
    $ cat test.c
    int i;
    int main() {
      return i;
    }
    $ gcc -O3 -c test.c -o test.o
    $ objdump -dr test.o
    
    test.o:     file format elf64-x86-64
    
    
    Disassembly of section .text.startup:
    
    0000000000000000 <main>:
       0:	8b 05 00 00 00 00    	mov    0x0(%rip),%eax        # 6 <main+0x6>
    			2: R_X86_64_PC32	i-0x4
       6:	c3                   	retq   
    $ gcc -O3 test.o -o test
    $ objdump -dR test 
    
    test:     file format elf64-x86-64
    
    
    Disassembly of section .init:
    
    ...
    Disassembly of section .text:
    
    0000000000000530 <main>:
     530:   8b 05 f6 0a 20 00       mov    0x200af6(%rip),%eax        # 20102c <i>
     536:   c3                      retq   
     537:   66 0f 1f 84 00 00 00    nopw   0x0(%rax,%rax,1)
     53e:   00 00 
    ...
    


    Как видите всё было сделано на этапе сборки бинарника, ничего для динамического линкера не осталось…

    Эти флаги можно отдельно внутрь горячего кода и передать (и я бы сказал, что и нужно).
    Ну это вопрос очень и очень философский. Глобальный флаг — быстрее. Передача в горячий код — медленнее, но более гибко.

    3 — нет. Это не дело кода, парсящего конфиги.
    А почему, собственно?

    Я, как бы человек простой. Если в меня начинают бросаться всякими вумными словами типа «неSOLIDно», «нарушение инкапсуляции» и прочее, то я обычно останавливаю этот поток сознания и прошу снизойти до «простых смертных». И описать пример цепочки начиная с бизнес-требований.

    Ну то есть «если мы сделаем по-другому и владелец нашего бизнеса потребует X, для чего нам потребуется Y и мы можем это сделать без переписывания половины программы только если у нас будет выполняться условие Z»… ну и кончаться это должно заключением «вот поэтому -это не дело кода, парсящего конфиги». Иначе — это архитектурная астронавтика какая-то.

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

    Почему 63 байта на длину хоста магическим числом?
    RFC1025: labels must be 63 characters or less.

    Где ещё 63, 62 и 64 вылезает из проверок?
    Не понял вопроса.

    Что за танцы с s и c на строках 1520-1521 и потом на 1534-1535? За что так ненавидеть читающего код?
    Кто вам сказал, что читающего код здесь кто-то ненавидит? gethostbyname требует там '\0', а мы там имеем что-то другое… что такого странного в том, чтобы записать туда требуемый '\0', а потом вернуть всё «как было»?

    А тестами это вообще покрыто? А как автор покрывать будет? Куда послал, я не расслышал?
    А для вас тесты — как религия? Или? Они, вообще-то, средство, не цель.

    То есть да, можно сделать этого код более модульным, более удобным для рефакторинга и прочее… Но это точно окупится? Человек, могущий менять конфиги у вас на сервере — и так, в общем-то, имеет над ним более-менее полный контроль… так зачем всё это дело обильно покрывать тестами и, скажем, фаззить? С чем боремся-то?
  • Горе от ума, или Почему отличники пишут непонятный код
    0
    Серьёзно? Что там применяют в самой большой экономике мира — не подскажите?
    Не слышал про отработки в США.
    А кто тут заикался о США? Самая большая экономика мира — это, вы уж извините — Китай. И там — обучение устроено ровно так, как я сказал: обучение платно, но если едешь «куда партия сказала» — кредит за тебя покрывает государство. А если хочешь за границу… выплати кредит — и езжай спокойно!

    Можно ещё, кстати, подискутировать, что выгоднее для экономики и государства — отработка на предприятии по неразрывному контракту этак спустя рукава, или работа за рыночную зарплату с рыночной конкуренцией и прочими рыночными условиями.
    Да легко! Возьмите, опять-таки, две крупнейшие экономики, обратите внимание какая из них была крупнейшей лет 20 назад, а какая — сегодня.
  • Горе от ума, или Почему отличники пишут непонятный код
    0
    Это уже лучше на личной машине попробовать, из godbolt'а мне не удалось выковырять нужный выход, но соберите на x86_64 бинарь из двух файлов (с пустой doFoo() рядом, например) и сравните его дизасм с дизасмом объектного файла из одного только main. Во втором случае там будет что-то вроде 0(%rip), который именно что заполняется линкером.
    О боги. Вам про разницу между статическим и динамическим линкером никто не рассказывал? И про то, что relocationы бывают динамическими и статическими? О чём мы тогда, вообще, тут говорим?

    Конечно в обьектном файле там будет 0(%rip)! А вот уже в исполняемом файле или в динамической библиотеке — там будет конкретное число.

    Вы, я извиняюсь, обьектный файл собрались запускать или как?

    А загрузчик в ОС — как раз эти самые ваши исключения, по крайней мере, для не-PIC-кода (я в исходном комментарии описался на эту тему, да).
    Ну нельзя так. Просто нельзя. Если вы понятия не имеете о том, как работают обьектные файлы, динамические библиотеки и загрузчик OS — то не очень понятно, о чём дальше говорить. Почитайте хотя бы Drepperа, что ли…

    С точностью до определений, считать foo(%rip) за индирекцию или нет.
    Давайте не считать ангелов на кончике иглы, а? Мы вроде об эффективности говорим. То, что существует в промежуточном представлении, но не в итоговом бинарнике на эффективность ну никак не может влиять. А вопросы терминологии — не так важны и интересны.

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

    Если класс на стеке, то там скорее всего оно всё относительно (%rsp), и опыт показывает, что можно забить.
    На стеке у вас скорее всего будет какой-нибудь другой класс. Вряд лы вы будете передавать класс с настройками программы по значению (ну то есть можно, конечно — но это ещё большее извращение, чем глобальные переменные).

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

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

    Давайте я попробую вам лес показать? Это же несложно!

    1. Время разбора конфи гурационного файла — мало кого интересует. За исключением очень редких и патологических случаев — это очень быстро даже если конфигурационные файлы большие и сложные.
    2. Время обращения к данным (флагам и разным настройкам), напротив, может быть очень критически важным и может случаться даже в самых внутренних циклах (например какой-нибудь флаг может влиять на количество вызовов VRECPS в вашем алгоритме).
    3. Если ваша программа не требует хитрых «атомарных» изменений конфига «на лету», то результат разбора конфига разумно поместить в набор глобальных переменных
    4. А вот уже временные переменные, предназначенные только для разбора конфига — лучше бы в глобальные переменные не класть. Тут я согласен. Ибо на скорость не влияют, а место занимают.

    В это смысле у GNU LD парсер почище будет. Я больше про него думал, чем про пример от VK. Пример от VK, конечно, доставляет. Код в стиле C89, но при этом с кучей C99 фич — это нечто. Кто и зачем такое пишет — мне непонятно.

    Зачем rpc_default_ct глобал — я могу понять. И даже то, что парсер конфигов всё прямо туда пишет — не страшно. Но вот зачем делать глобальной переменную config_buff — загадка, этого я ничем обьяснить не могу…
  • Горе от ума, или Почему отличники пишут непонятный код
    0
    Добро пожаловать в Советский Союз! Метод кнута в современном мире работает плохо.
    Серьёзно? Что там применяют в самой большой экономике мира — не подскажите?

    Большое количество квалифицированных специалистов положительно влияет на экономику.
    Согласен.

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

    Представьте себе, многие государства обучают даже иностранцев бесплатно. Эти иностранцы потом уезжают и никому ничего не должны. И все равно обучение в этом случае получается выгодным.
    За счёт чего? За счёт того, что часть всё-таки остаётся — так ведь? Как с этим у России?

    Вот когда отучившиеся не будут массово уезжать — можно и бесплатное обучение устраивать. Всему своё время и не бывает рецептов, одинаково хорошо работающих везде. Потому и законы всё время меняются, однако.
  • Горе от ума, или Почему отличники пишут непонятный код
    –1
    Налоги можно снизить или отправить на строительство новых аэропортов, автострад или, на худой конец, танков. Как народные избранники решат — они для этого и существуют. Это вообще к образованию отношения не имеет.

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

    Либо платное обучение, либо отработка.

    Есть страны, типа Германии, которые пытаются к себе завлечь иностранцев бесплатным обучением на «национальном языке». Но у России как-то не очень выходит: обучаться — обучаются, а работать всё больше на Запад стараются уехать.
  • Горе от ума, или Почему отличники пишут непонятный код
    0
    А адрес глобальной переменной относительно текущей инструкции на каком этапе становится известен?
    Зависит от настроек компиляции. Обычно на этапе статической линковки, но бывают и исключения. Смотрим сюда. Первое окошечко — главная программа, там индирекции нет. Второе окошечко — разделяемая библиотека, скомпилированная нормальным программистом, там тоже индирекции нет. Третье окошечко — варинт «на отвали», там индирекция есть.

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

    P.S. Впрочем обычно потеря 10-15% скорости не так критична, как потеря безопасности. Потому глобальные переменные сейчас часто не используют даже для очень «горячего кода». Но таки задержки эти есть — даже на самых современных процессорах.
  • Научиться программировать становится сложнее
    0
    Запрещают администрировать в любой компании, где есть хоть какой-то намек на нормальную СБ.
    Не путайте «нормальную СБ» и «надувающую щёки СБ».

    Нормальная СБ (Google, Microsoft, Yandex и тд. и т.п.) знает, что запрещать человеку администрировать систему = получить снижение производительности без увеличения безопасности. Надувающая щёки СБ (банки, разного рода госструктуры и т.д. и т.п.) — да, может закрутить гаки до состояния, что разработчики оттуда просто сбегут.

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

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

    Приведёт только к снижению производительности и вряд ли повысит безопасность.

    Программист, неспособный взломать современную систему, дырявую, как решето (а других, увы, и нету) — однозначно плохой программист.
  • Научиться программировать становится сложнее
    0
    У вас профдеформация, вам кажется, что все должны уметь то, что вам видится очевидным, хотя это совершенно не очевидно для человека из иной сферы.
    Нет.

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

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

    Моя бабушка тоже всегда удивлялась: ну как же так, в деревне живут — а хлеб в магазине покупают! Как там можно-то? Со временем, впрочем, и сама перестала печь, когда ей уже под 90 было, но пока была моложе — это её поражало.

    Так вот: установка программ и администрирование компьютера — это бытовой навык того поколения, которое сейчас, в основном и, учится программировать.
  • Горе от ума, или Почему отличники пишут непонятный код
    0
    Практику лесом. Получится узаконенное рабство.
    Почему рабство? Отработка кредита. Государство на вас денежку тратило — так отработайте на него 2-3-5 лет.

    Не хотите? Платите за обучение и делайте что хотите.
  • Горе от ума, или Почему отличники пишут непонятный код
    0
    Нет. Его линкер/загрузчик не подправляет, учите матчасть.

    В 32-битном режиме адрес задаётся прямо в команде. А в 64 битах так сделать нельзя: требовалось бы 64-битное смещение, что расточительно.

    Потому кроме режима абсолютной адресации, который позволяет добраться только до первых 4GB (на самом деле первых 2GB и последних 2GB, но не суть), в x86-64 есть ещё и «адрес относительно текущей инструкции». И в 64-битном режиме именно он и используется обычно. Вот именно его мы видим по вашей ссылке.

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

    А при обращении к «обычному» регистру ничего подобного сделать нельзя. Там — нужно «вынуть» адрес из регистра, возможны разного рода задержки и прочее.
  • Горе от ума, или Почему отличники пишут непонятный код
    0
    Не очень понятно о чём вы спорите. Для разработчика — во многих случаях «лобовое» решение — правильный выбор. Для ученика — нет.

    Потому что первому таки-надо решить задачу. Второму-таки нужно научиться определённым приёмам.
  • Горе от ума, или Почему отличники пишут непонятный код
    0
    Только вот какой в этом смысл? Как это первокласнику обьяснить?
  • Горе от ума, или Почему отличники пишут непонятный код
    0
    К сожалению вашу фразу можно сократить до так всегда бывает. Очень мало абстракций, которые действительно никогда не текут. Как какой-нибудь TCP, который превращает ненадёжное средство доставки в надёжное… но так вещь не бывает! Если я кабель выдернуть — как вы куда-либо что-либо «надёжно» доставите? И как «качество инкапсуляции» вам поможет?
  • Горе от ума, или Почему отличники пишут непонятный код
    0
    И да, индирекшон всё равно есть.
    Где? %rip это ж не регистр, это просто запись такая, адрес в декодере вычисляется…
  • Снова EA, снова NFS, снова баги. Чиним
    0
    Нужно регулярно поставлять какой-нибудь контент, который будет людей привлекать. Если вы книжку пишите или что-то подобное, то это легко… а вот если игру…

    Хотя можно какие-то наработки выкладывать, полуфабрикаты…
  • В защиту swap'а [в Linux]: распространенные заблуждения
    0
    Средствами CPU считать контрольные суммы — получится безумно дорого.
    Ну вам же крипто-хеш не нужен! А CRC32 — за один такт вычисляется. BTRFS контролирует целостность всех файлов — и это не сильно её замедляет (у неё другие проблемы есть, но замедление от вычисления CRC к ним не относится).

    Хотя идея, безусловно, интересная.
    Идея совершенно дурацкая, потому что вся электроника, выпущенная несколько лет назад — гораздо дороже, чем современная. Вот когда Закон Мура, пресловутый, себя исчерпает совсем — тогда да. А пока — бессмысленно.

    Почему? Да потому что, блин, математика! Геометрическая прогрессия, блин!

    На одну чашу весов кладём всё, что выпущено с доисторических времён до 2015го года включительно. Вот все флешки, всю память, всё-всё-всё-что-только-бывает.

    На другую — флеш-память, встроенную в смартфоны выпущенные за 2016й-2017й годы.

    Где будет больше флеша? Правильно — справа.

    Ни и какую, нафиг, вы собираетесь делать «дешёвую» память при таких раскладах?

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

    А в рамках индустрии — оно не работает и работать не будет. Потому что нет ни старой памяти, ни старых флешек в достаточных обьёмах! Просто нету в природе! Закон Мура это гарантирует!
  • Научиться программировать становится сложнее
    0
    нет возможности набросать интерфейс мышкой без колупания в стилях и HTML, что предыдущее поколение инструментов разработки, на десктопе, освоило ещё четверть века тому назад
    То, что «набрасывалось мышкой без колупания в стилях», как правило, нормально работало только на компьютере автора.

    Я ещё помню как в бухгалтерии все компьютеры были c «мылом» на экране, потому что при переходе на LCD 800x600 стало выглядеть фигово (LCD плохо себя ведут с ненативным разрешением), а выставить что-либо другое было нельзя, так как половиной программ становилось невозможно пользоваться при выставлении нестандартного DPI.
  • Горе от ума, или Почему отличники пишут непонятный код
    +1
    Не знаю что в этой «фиче» хорошего, тоже писал так 10 лет назад по глупости, потом перестал.
    Хорошего то, что легко можно увидеть где и как эта переменная используется.

    А то, что тут у нас смесь C89 и C99 стилей — это как раз плохо. Надо бы выбрать что-нибудь одно, по хорошему-то…
  • Научиться программировать становится сложнее
    –2
    Спиральное инкрементальное развитие в любой области жизнедеятельности человека теперь религией называется?
    Религией называется заявление о том, что «рынок — всегда рассудит». Этого и близко нет.

    Рынок не создал человека ядерную бомбу, не создал интернет и не запустил человека в космос. Всё это пришлось делать другими путями — причём два события из трёх случились в стране, буквально помешанной на проповедуемой вами религии… странно, правда?

    Но кто, кроме него, будет вас кормить, пока вы будете писать свой идеальный код?
    Тот, кто, собственно, кормит людей, когда «рынок» решает что проще и удобнее их уморить голодом — государство.

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

    Возьмите «закон об авторском праве» — это ж категорически нерыночной подход. Какой-то «дядя» за меня решает — могу я копировать файл, который у меня лежит на компьютере или нет. Предлагаете отменить?
  • Горе от ума, или Почему отличники пишут непонятный код
    –1
    Существует, особенно если напрямую работаешь с неформализованными требованиями бизнеса.
    Ok, будем знать.

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

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