Как стать автором
Обновить
12
0
Андрей Сатеренко @saterenko

Волшебник

Отправить сообщение

Вы задаёте вопросы по стандартной библиотеке для решения задачи генерации случайного uuid, которая была приведена в качестве примера, в ответ на утверждение, что стандартное читается проще. Мне странно, что вы от меня ждёте ответов на вопросы, которые должны быть адресованы авторам библиотеки, а не мне. Но ваша реакция говорит о том, что моя "отсебятина" читается лучше, чем стандарт...

Вместо использования 4 строк стандартного кода вы предлагаете написать обёртку вокруг стандартной библиотеки, это должно как-то упростить понимание кода???

Если вы хотели сказать, что в вашем случае uuid получатся одной строкой, а не 4-мя, то в у меня он тоже обёрнут в функцию:

std::string
Utils::makeUUID()
{
    uuid_t uuid;
    uuid_generate_random(uuid);
    char cuuid[37];
    uuid_unparse_lower(uuid, cuuid);
    return std::string(cuuid);
}

Вроде как профессионал может ввести в гугле "uuid_unparse_lower" и понять по первому результату, что это "стандартная" библиотека для генерации uuid в linux и вопрос надо адресовывать авторам библиотеки, а не мне. Не к тому докопались ))

Ну и опять таки, если зайти по этой первой ссылке, то в первом же предложении секции DESCRIPTION есть ответ на ваш вопрос

The uuid_unparse() function converts the supplied UUID uu from the binary representation into a 36-byte string (plus trailing '\0') of the form 1b4e28ba-2fa1-11d2-883f-0016d3cca427 and stores this value in the character string pointed to by out

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

Если в одном, слабо нагруженном месте я использую std::unordered_map, потому как высокая производительность тут не нужна, то в другом, высоконагруженном месте, я использую JudyArray, потому как он даёт (или давал на момент разработки) более чем двухкратный выигрыш по производительности.

Скажите, пожалуйста, JudyArray -- это стандарт или осебятина от "кулибина"? Если CoCo Hash на моих данных работае лучше контейнеров из std и я его использую -- это стандарт или отсебятина?

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

    uuid_t uuid;
    uuid_generate_random(uuid);
    char cuuid[37];
    uuid_unparse_lower(uuid, cuuid);

исключительно лучше понимается проффесионалом, чем такой

    rapiduuid::Value uuid;
    rapiduuid::Parser parser;
    parser.generate(uuid);
    std::string s = parser.toString(uuid);

Если только у вас там не совсем что-то оооочень специфическое (например, высокочастотный трейдинг, где все на lock-free построено и хардкорные оптимизации), в чем я сильно сомневаюсь, да и это всё-таки в любом случае редкое явление.

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

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

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

Управлял проектами на "стандартных" Django, Symfony, где тоже было всё стандартно, но трудно для понимания и оптимизации другими программистами, с хорошим опытом в этих фреймворках.

Были проекты от "кулибиных" с отсебятиной, но читались они как хороший роман. Да вон nginx сплошь отсебятина от "Кулибина".

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

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

Проекты бывают разные.

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

Если не брать новичков и собеседования, обычно программист работает в какой-то "своей" сфере: разработка для микроконтроллеров, gamedev, мобильные приложения и т.п. и работодатель покупает не знание языка и умение решать олимпиадные задачи, а опыт работы в конкретной сфере, а с опытом программист "обрастает" инструментами для решения задач в этой сфере.

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

Как показывает мой опыт, для новичков в сфере, к которым вы аппелируете выше ("абстрактные задачи" типа "на голом языке и std" обретают реальное воплощение) фреймоврки значительно затормаживают вхождение в проект, потому как они весьма наворочены и требуют отдельного изучения фреймворка и его осбенностей. Одного языка знать недостаточно.

С другой стороны, хорошо написанный проект, например nginx, написанный на голом C, с собственной реализацией подавляюшего большинства алгоритмов (в том числе деревьев, hash-таблиц и т.п.), читается легко и непринуждённо... На понимание nginx на С мне потребовалось сильно меньше времени, чем на понимание проекта на PHP на Symfony.

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

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

Я ни в коем случае не намекаю на то что ваш подход не верен. Вы нашли свою нишу, ваш подход в ней эффективен и правилен, бизнес выбирает вас для решения своих задач. Так же как и я, пишу себе код под 8 кБайт оперативки и доволен Си. Автор же говорит о других областях, в которых подход Си устарел

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

Мир шагнул дальше. То что делается на си, за неделю, а раньше и на плюсах делалось за неделю, сейчас на плюсах делается за день.

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

Если говорить о реальных проектах и о программистах с опытом и багажом библиотек, время будет сопоставимо, а может на C даже меньше, потому как проект собирается за 10 секунд, а не за минуту, потому как при отладке больше всего времени в плюсах уходит на сборку...

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

Я долго разрабатывал на C и у меня накопился некислый багаж как сторонних библиотек для решения задач, так и собственных решений под все нужды проектов в моей сфере (системы управления рекламой). И из этого конструктора я собираю решение не медленнее, чем на плюсах, на котором пишу проекты последние лет 5.

Кстати пробовал golang, прекрасный язык, красивый, куча стандартных и сторонних библиотек, но не получилось на нём разрабатывать быстрее, чем на C/C++.

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

И в чём противоречие? Что запрещает найти что-то в галактике, изучая пространство вокруг...

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

Без понятия, вы это можете узнать у производителя или дилера.

Потому, что из производит только одна компания и iOS нельзя ставить на другие устройства, в отличии от Android.

У нас есть 3 вакцины и на подходе 4-ая. Двенедели назад вакцинировался в районной поликлинике, было две на выбор: Спутника V и ЭпиВакКорона.

У вас в машине есть компьютер, но за софт (Android Auto и Media Link) просят денег. В чём тут отличие от того же фотошопа на компах?
Разработку финансирует разработчик. Клиент её потом покупает или нет.
Фикс для фиксированного софта. За новую винду, фотошоп, Sublime и так далее вы будете платить. CLion вон вообще по подписке продаётся. Автопилот — это не фиксированный софт, он постоянно будет обновляться.

И опять таки мы рассуждаем не зная, как будет на самом деле, какие будут условия: на сколько всё это будет «фиксированное» и какое будет ценообразование.
Мы не знаем, какие там будут условия, гадать бесполезно. Игровые приставки продают по себестоимости или ниже, отбивая на играх. Телефоны некоторые операторы дают «бесплатно» за подписку. Что мешает в машинах реализовать подобную схему?

Ну или, к примеру, всё это железо будет использоваться для контроля безопасности, автоматической парковки и т.п., а чтобы включить автопилот, надо будет загрузить и активировать соответствующий софт. Таки автопилот — это очень дорогая штука как в разработке, так и в поддержке, он требует постоянной работы дорогих специалистов, требует постоянного сбора и анализа данных, которые надо где-то хранить и обрабатывать.
Первая реакция была — возмущение, а потом подумал, это же не фотошоп, где купил софт и пользуешься, ну прилетают иногда патчи ошибок. Автопилот будет постоянно развиваться, обновляться. Наверняка они будут принимать информацию по вождению, анализировать камеры, датчики, обновлять нейросеть и т.п. Если, к тому же, они не будут брать деньги за весьма недешёвые железки для автономного вождения (детчики, камеры, комп), то почему бы и нет. Это даже будет выгодно, $8.5 за час когда надо, а не $5-10К за опцию, от которой многие просто откажутся… Посмотрим как будет реализовано…

Всë даже проще. Подал на продление недавно. В Москве записался на прохождение медкомиссии через mos.ru, прошëл всë за 40 минут (5 лет назад убил день на это). Не помню как было с первичным, по продлению услуга должна быть оказана в течение 30 дней. За 5 лет проверять сейф ни кто не приходил...

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

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

Валила меня немилосердно :) Дальнейшая её судьба меня не интересовала, у меня есть собственная блондинка )))

Информация

В рейтинге
Не участвует
Откуда
Москва, Москва и Московская обл., Россия
Дата рождения
Зарегистрирован
Активность