Re[10]: А С++ то схлопывается...
От: Pzz Россия https://github.com/alexpevzner
Дата: 01.11.19 14:38
Оценка: +6
Здравствуйте, Denis Ivlev, Вы писали:

DI>>>Неудачное стечение обстоятельств и вызов ВФ оказывается медленней в сотни раз. При этом в С виртуальные функции при необходимости делаются легко.


Pzz>>Откуда там в сотни раз?


DI>Из архитектуры компьютера:


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

DI>Заинлайненая функция будет запрефетчена в кеш инструкций, поход только в таблицу виртуальных функций, если она не оказалась в кеше может стоить в 200 раз больше, а еще и саму функцию затем надо вызвать, а это еще один поход в память. Но даже если она и не будет заинлайнена, то это все равно сильно дешевле.


Заинланйенная фукция может запросто отжать из кэша инструкций что-нибудь другое, не менее полезное. Я к тому, что инлайн может и ускорять программу, а может наоборот.
Re[18]: А С++ то схлопывается...
От: Pzz Россия https://github.com/alexpevzner
Дата: 01.11.19 14:58
Оценка: 1 (1)
Здравствуйте, удусекшл, Вы писали:

У>В C++ не платишь за то, что не используешь. Жаль, что до тебя, как и до вашего главного пингвина, это не доходит


Как только в проекте появляется кто-то кроме тебя, сразу начинаешь платить.
Re[9]: А С++ то схлопывается...
От: Masterspline  
Дата: 01.11.19 15:28
Оценка: +1 :)
DI>DevOps — это модный базворд.

Если не заниматься пустой болтовней про то, что DevOps — это баззворд или DevOps — это идеология или набор практик или еще какая ересь, а взять и обобщить чем занимаются люди, называющиеся DevOps, то обобщение получится сделать и оно даст довольно четко определенный список задач, которые решают DevOps. По сути — это админы в команде разработчиков.

M>>По сути, DevOps — это квалифицированный админ, который работает с разработчиками


DI>Нет, то что понимают под этим — это разработчик который не говорит "я написал код, деплойте и эксплуатируйте, меня проблемы негров не волнуют", а разработчик который понимает, как его продукт будет эксплуатироваться, то есть понимает процесс сборки, деплоя, мониторинга, прочего и может в это. Соответственно, в нормальных командах каждый разработчик и есть девопс. Если разделять разработку от эксплуатации получается какашка.


Я читал и про такую трактовку термина DevOps, но не согласен с ним. Суть в том, что сисадмин, как и разработчик набирает навыки и опыт годами (это только люди, которые понятия не имеют, чем занимается админ думают, что он дневную работу может сделать на коленке за пол часа ковыряясь с носу, а потом весь день играет в танчики или контрстрайк). Поэтому такого квалифицированного человека (DevOps = admin + programmer) еще поискать придется, да и не понятно как он наработал эти навыки (если свитчер из сисадминов пришедший в разработку, то тогда понятно, а если разработчик решил двигаться не в управленцы, а заняться сисадминством, то совсем непонятно).

По сути, твоя интерпретация термина DevOps (admin + разработчик) аналогична fullstack developer, а с ними, как известно, ситуация проста — отдельный специалист (backend или frontend) и денег больше зарабатывает и в своей сфере деятельности лучше разбирается. И если проект достаточно большой, чтобы каждого загрузить работой на 100% fulltime (а таких большинство), то специализация рулит (по цене и качеству). С admin + разработчик ситуация аналогичная. Лучше в команду разработчиков взять админа, и пусть каждый специализируется на своем, программисты разрабатывают, админ занимается инфраструктурой. Тут есть чисто административная заморочка, если админов/девопсов выделить в отдельный отдел, то их начальник захочет порулить и начнет себе цену набивать в результате проще взять админа в отдел к разработчикам, чем договориться с начальником их отдела. Если еще дать возможность такому админу принимать участие в принятии решений по архитектуре (вместо "у нас тут тормозит — давай разбирайся"), то вообще все станет идеально. Т.е. админ у разработчиков должен быть не задротом, на которого сваливают все подряд и чморят для мотивации, а полноценным членом команды, который участвует в разработке (по своей специализации — построению инфраструктуры, на которой работает проект).

M>>(только настраивает он кормчего "Kubernates", а не индейца "Apache").


DI>Это вообще разные вещи, кубер нужен для оркестрирования, а апач веб сервер, но в серьезном проде я апача давно не видел.


Ты, похоже, вообще не понял, о чем я писал. У админа и девопса различаются только названия сервисов, которые он обслуживает, а остальной опыт на 90% одинаковый. Нет большой разницы в установке и настройке апача и кубернейтса. Разница как писать на C# или Java при условии, что ты пишешь backend для одной и той же прикладной сферы.

M>>Но по сути, DevOps — это админ, а не PM или CTO (при этом девопсу деньги нормальные платят за настройку сервака, а сисадмин — подай, принеси, настрой тот же сервак за 1/2 зарплаты разработчика).


DI>Платят не за настройку сервера, а чтобы продукт легко деплоился и эксплуатировался, что за собой тянет существенный пласт знаний и инструментов.


Или наладить взаимодействие команды разработчиков со своим девопсом, который лучше любого программиста сможет спроектировать инфраструктуру для проекта. И тогда не нужно разработчику быть админом, а админу разработчиком. IMHO, версия, что DevOps = admin+разработчик в одном флаконе имеет шансы на существование, но вариант когда это два специалиста, которые работают ради одной цели — создание и поддержка проекта, и дешевле и надежнее.

Если в проекте возникают трудности с деплоем и эксплуатацией, то тут дело либо в отсутствии понимания конечной цели у разработчиков и админов, либо в отсутствии их взаимодействия. Либо разработчики оборзели до "у меня на localhost все работает, а дальше мне насрать" и админ тупо не может это деплоить и эксплуатировать, либо админы увлеклись "модными" технологиями и забыли, на чем написан проект, либо скорее каждый думает, что он бох и все вокруг его хотелок должны вертеться. Вариант, когда приходит кто-то очень важный, кто решил, что он бох в программировании и администрировании и принимает единолично решение, как оно должно работать, в целом лучше, чем полный бардак. Но в реальности, скорее всего он не особо хорошо разбирается ни в разработке, ни в администрировании (по сравнению с более узкими специалистами) и понапринимает таких решений, что эти самые специалисты начнут искать другого работодателя. Вариант дать каждому делать свою работу и наладить их взаимодействие видится мне более эффективным (админу заниматься инфраструктурой, причем не только поддержкой, но и архитектурой приложения, чтобы его было удобно деплоить, мониторить и находить причины падений, а разработчику разработкой и получением метрик с production, о реальных характеристиках работы приложения).
Re[10]: А С++ то схлопывается...
От: Masterspline  
Дата: 01.11.19 16:16
Оценка:
DI>>Нет, то что понимают под этим — это разработчик который не говорит "я написал код, деплойте и эксплуатируйте, меня проблемы негров не волнуют", а разработчик который понимает, как его продукт будет эксплуатироваться, то есть понимает процесс сборки, деплоя, мониторинга, прочего и может в это. Соответственно, в нормальных командах каждый разработчик и есть девопс. Если разделять разработку от эксплуатации получается какашка.

S>Ну, или админ, который не говорит "ваше приложение говно — я всё настроил, как надо, а оно работает плохо, и меня не парит, почему".


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

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

Альтернативный вариант — объяснить исполнителям конечную цель всей команды, зону ответственности каждого и с кем и как взаимодействовать, если задача выходит за пределы твоей зоны ответственности. Рулевой влезает только когда что-то пошло не так. В результате думать будет сильно больше одной головы, каждый замотивирован рулить с своей зоне ответственности, у каждого квалификация сильно выше, чем у "избранного". Минусы — тимлид не будет чувствовать себя богом, ибо порулить почти не получится — многие задачи решатся без его участия.

S>Привыкайте, камрады — грядёт эпоха смежных специальностей.


Насколько это грядет не знаю, возможно в сферах, где один "бох" сможет рулить смердами ниже среднего и большой текучкой.
Re[19]: А С++ то схлопывается...
От: Masterspline  
Дата: 01.11.19 17:23
Оценка: 5 (2) +6 -1 :))
S>>>Тем более, что Си c классами, С++ без всех тех костылей и подпорок, вроде виртуальных функций, такого же наследования, RAII, шаблонов, плясок с auto, и всего прочего мусора, очень даже нормальный ЯП.

S>>Можно предположить, что в прочий мусор вы отнесли ссылки, перегрузки операторов, перегрузки функций, аргументы по умолчанию, исключения, enum class, nodiscard и deprecated, пространства имен...


S>> Ссылки


S>Это такая хрень, которую создавали чтоб облегчить и упростить разработку, чтоб разрабы не делали ошибок при работе с указателям, чтоб не сегфолтились. Но получили, как и всегда в C++, в разы более сложные и в разы более неочевидные проблемы, по сравнению с типичными проблемами работы с указателями. А потом, как и водится в C++, нагородиили кучу костылей и подпорок разной степени уродливости, чтоб эти проблемы нивелировать, и объявили эту кучу костылей невпендюренным развитием ЯП. Всё как и водится в C++.


S>По остальным пунктам примерно такие же выводы.


Отнести C++ РАЙ к мусору и упорствовать в этом...

Мальчик, иди на LOR, там тебя покормят. Тут более взрослые дяди (в плане мировоззрения) общаются.

Ну, а что касается твоей тирады про C++. Так C++ — это практичный инструмент для решения реальных задач. Все, что в нем есть, добавлено из потребностей в решении какой-то реальной задачи. IMHO, на хайпе добавили только модули, которые ничего нового не дают и никому лучше не делают, но их очень многие очень хотели и потому их добавили. Их настолько хотели, что сначала один чувак пилил реализацию, затем другой несовместимую, затем они совмещали их вместе и в результате получили заголовочные файлы, только сделанные чуть аккуратнее и на уровне языка, а не текстового препроцессора (и, кстати, реализации модулей из стандарта до сих пор нет ни в одном компиляторе, насколько я знаю, только в виде отдельных веток в VCS с не факт, что полной функциональностью).

По мне, так надо было делать по-другому. Сделать минимальную реализацию функциональности, которую однозначно хочется увидеть в модулях. Сделать ее несовместимой ни с C ни с текущим C++, но позаботиться об инструменте, который из такого модуля (и, возможно, заголовочного файла, в котором то, что нельзя запихать в модуль) сгенерирует заголовочный файл для более ранних компиляторов (как JetBrains сделали интеграцию Kotlin Native <-> Swift или Kotlin Native <-> C с генераторами библиотек Swift из котлина и библиотек котлина из Swift). А дальше запихивать в модули все, что потребуется (именно потребуется на практике по результатам использования минимальной функциональности модулей), постепенно избавляясь от заголовочных файлов, и заботится только о том, чтобы генератор заголовочных файлов продолжал работать. Таким образом и обратная совместимость не пострадает (из проекта с модулем можно сгенерировать заголовочный файл для более раннего стандарта, поэтому не будет дублирования в виде поддержки модуля и хедера) и архитектура и функциональность модулей была бы более продуманной, потому что развивалась постепенно.

Так что IMHO, C++ практичный язык, все что в нем есть кому-то для чего-то нужно и если ты этого не понимаешь, то либо ты зеленый студент, которому просто не хватает опыта это понять. Либо, если уже давно не студент, значит — упертый фанатик, который живет в альтернативной реальности и неспособен воспринимать реальную реальность. При этом C++ не идеален, он подходит не для всех задач и, возможно, не подходит для твоих. Но тогда дело не в языке, а в том, что это неподходящий инструмент для тебя и твоих задач — просто, возьми более подходящий. Ну, а если нет ничего лучше, то рассказами какое дерьмо этот ваш C++ ты ничего хорошего для себя не добьешься.
Re[11]: А С++ то схлопывается...
От: Denis Ivlev  
Дата: 01.11.19 17:45
Оценка: :))
Здравствуйте, Pzz, Вы писали:

DI>>Из архитектуры компьютера:


Pzz>Это может вообще любого компьютерного телодвижения коснуться, и не специфично для виртуальных методов.


Лол, шта? Как раз специфичен в силу самого механизма вф, на пальцах это было продемонстрировано.

Pzz>Но вообще, в C++, в котором таблица виртуальных методов общая для всех экземпляров класса,


А что мешает в наколеночной реализации на С иметь одну таблицу на все экземпляры?

Pzz>у нее больше шансов оказаться в кэше


Почему?

Pzz>чем у указателей, размазанных по миллиону структур.


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

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


А может и не отжать.

Pzz>Я к тому, что инлайн может и ускорять программу, а может наоборот.


Может, если человек форсинлайнит не понимая, что делает. Но я не понял, ты сейчас будешь доказывать, что инлайнниг не оптимизация, а пессимизация?
Re[8]: А С++ то схлопывается...
От: CreatorCray  
Дата: 01.11.19 17:45
Оценка: +2
Здравствуйте, Denis Ivlev, Вы писали:

DI>1. В каждом объекте появляется указатель на таблицу виртуальных функций, выросший размер объекта приводит, например, к тому, что твой объект перестает помещаться в кеш линию, а это значит, что в память надо ходить чаще

Как это мешает работать в кернеле?

DI>3. Чтение таблицы ВФ по этому указателю тоже может означать поход по памяти и плюс к этому вытеснение из кеша данных, которые могут скоро понадобится

Как это мешает работать в кернеле?

DI>4. И еще один поход по памяти собственно в функцию

Как это мешает работать в кернеле?

DI>Неудачное стечение обстоятельств и вызов ВФ оказывается медленней в сотни раз.

Только для тех, кто не имеет понятия что творит.

DI>При этом в С виртуальные функции при необходимости делаются легко.

Врукопашную а в итоге точно так же.

DI>Вот теперь, когда ты знаешь про стоимость этой абстракции, скажи будут в ядре ОС использовать ВФ?

Почему нет?
... << RSDN@Home 1.0.0 alpha 5 rev. 0>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Re[12]: А С++ то схлопывается...
От: CreatorCray  
Дата: 01.11.19 17:45
Оценка:
Здравствуйте, Denis Ivlev, Вы писали:

DI>Скоро зачетная неделя

Тебе виднее
... << RSDN@Home 1.0.0 alpha 5 rev. 0>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Re[14]: А С++ то схлопывается...
От: CreatorCray  
Дата: 01.11.19 17:45
Оценка: +2
Здравствуйте, Denis Ivlev, Вы писали:

DI>Да хорош заливать. Всегда забавно, как подростки своего возраста стесняются

Ну так не стесняйся
... << RSDN@Home 1.0.0 alpha 5 rev. 0>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Re[10]: А С++ то схлопывается...
От: CreatorCray  
Дата: 01.11.19 17:45
Оценка:
Здравствуйте, Denis Ivlev, Вы писали:

DI>Так ты сам сказал. Речь шла про подмножество С++ в ядре ОС, ты туда предложил добавить ВФ


Ты банально не умеешь в С++, раз считаешь что будет пихаться всё подряд не думая.
... << RSDN@Home 1.0.0 alpha 5 rev. 0>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Re[9]: А С++ то схлопывается...
От: CreatorCray  
Дата: 01.11.19 17:45
Оценка: +4
Здравствуйте, AlexGin, Вы писали:

AG>А разве STL (namespace std) это не интегральная, неотъемлемая часть C++

Нет конечно. Просто библа из стандартной поставки.
Чтоб писать на С++ она не нужна.

AG>Вроде как стандартные библиотеки...

То, что они есть искаропки совершенно не означает что надо их использовать и никаких вариантов нет.
В perf/kernel даже рантайм свой берут, вплоть до тех функций, которые компилятор ожидает что будут присутствовать.

CC>>Это всё решается на уровне библиотек и требований к стилистике кода. Функционал языка же остаётся.

AG>Как бы функционал языка это IMHO как сами по себе операторы языка, так и библиотеки, стандартоно поставляемые с ним.
Нет. Функционал языка это сам язык. Всё остальное перекрываемо и там работает "не надо — не платишь".

Дофига людей это не осознаёт и оттого у них неправильное представление что и как язык может. И начинается: не бывает контейнеров кроме тех что в STL или бусте, аллокация только так как в runtime либе прописано по дефолту, и.т.п.
... << RSDN@Home 1.0.0 alpha 5 rev. 0>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Re[20]: А С++ то схлопывается...
От: Denis Ivlev  
Дата: 01.11.19 17:47
Оценка:
Здравствуйте, Masterspline, Вы писали:

M>Тут более взрослые дяди (в плане мировоззрения) общаются.


Вот это прям отлично
Re[21]: А С++ то схлопывается...
От: Masterspline  
Дата: 01.11.19 17:51
Оценка:
S>>>Всё как и водится в C++.

S>>Да почему же вы на этом .......... пишете-то до сих пор?


S>>Неужели из-за денег?


S>Причины самые разные, и "ради денег" среди них нет. В треде уже писал, что в нишах, занимаемых C++, деньги средние и ниже того.


Я в непонятках.

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

Хобби-проекты — ради удовольствия и получения опыта работы с интересующими технологиями.

Если ни того ни другого нет (ни бабла ни удовольствия), то зачем работать над проектом? Чую, чел лукавит где-то...
Re[9]: А С++ то схлопывается...
От: Denis Ivlev  
Дата: 01.11.19 18:01
Оценка: :))) :))
Здравствуйте, CreatorCray, Вы писали:

CC>Как это мешает работать в кернеле?

CC>Как это мешает работать в кернеле?
CC>Как это мешает работать в кернеле?

Вызов становится сильно недетерменированным.

DI>>Неудачное стечение обстоятельств и вызов ВФ оказывается медленней в сотни раз.

CC>Только для тех, кто не имеет понятия что творит.

Ну вот ты, я так понимаю, понимаешь. Расскажи.

DI>>Вот теперь, когда ты знаешь про стоимость этой абстракции, скажи будут в ядре ОС использовать ВФ?

CC>Почему нет?

Все расписано подробно, кормить зеленого не буду. Есть, что сказать — аргументируй, нет — гуляй.
Re[11]: А С++ то схлопывается...
От: Denis Ivlev  
Дата: 01.11.19 18:05
Оценка: -1 :)
Здравствуйте, CreatorCray, Вы писали:

CC>Ты банально не умеешь в С++


Насколько бы ты хорошо не знал С++, всегда найдется тот, кто скажет, что ты его знаешь плохо (и это так). Ты кстати, в прошлом разговоре, как оказалось, в плюсах побольше меня плаваешь, а я на плюсах уже давно не пишу.
Re[7]: А С++ то схлопывается...
От: landerhigh Пират  
Дата: 01.11.19 18:05
Оценка:
Здравствуйте, B0FEE664, Вы писали:

BFE>Например, в авионике это 100% покрытие кода тестами.


А вне авионики давно поняли, что 100% покрытие сценариев исполнения != 100% покрытия кода. См. 737 MAX.

BFE>В частности, если у вас есть вызов new, то надо предоставить тест, который обрабатывает исключение бросаемое new при нехватке памяти.


А в чем, собственно, проблема?
www.blinnov.com
Re[15]: А С++ то схлопывается...
От: Denis Ivlev  
Дата: 01.11.19 18:07
Оценка:
Здравствуйте, CreatorCray, Вы писали:

DI>>Да хорош заливать. Всегда забавно, как подростки своего возраста стесняются

CC>Ну так не стесняйся

7-8 будет хайлоад, я там выступаю с докладом — приходи, попьем кофе, потрындим, посмотришь сколько мне лет.
Re[5]: А С++ то схлопывается...
От: landerhigh Пират  
Дата: 01.11.19 18:10
Оценка: :))
Здравствуйте, Sharov, Вы писали:

S>Лучшие программисты в мире такие как Торвальдс, Фабрис Беллард, Ричард Хит (sqlite) и т.д. как раз являются Си программистами.


Угадай, на чем программируют:

Oliver Kowalke (Ок, если не в курсе, тыц)
Крис Колхофф (если не знаешь, кто это, возникают уже определенные сомнения)

www.blinnov.com
Re[8]: А С++ то схлопывается...
От: Marty Пират https://www.youtube.com/channel/UChp5PpQ6T4-93HbNF-8vSYg
Дата: 01.11.19 18:16
Оценка: 1 (1) +2
Здравствуйте, CreatorCray, Вы писали:

BFE>>В частности, если у вас есть вызов new, то надо предоставить тест, который обрабатывает исключение бросаемое new при нехватке памяти.

CC>Ващета исключения отключаемы, и new будет неотличим от malloc.

За два года под STM32 ровно 0 раз использовал new. На C++11.

Более того, коллеги используют аппаратный watchdog, чтобы в случае чего робот тупо перезапустился. Я на этот watchdog забил, но пара десятков моих прошивок всё равно работает как часы
Маньяк Робокряк колесит по городу
Re[16]: А С++ то схлопывается...
От: Ночной Смотрящий Россия  
Дата: 01.11.19 18:23
Оценка: +2
Здравствуйте, Denis Ivlev, Вы писали:

DI>7-8 будет хайлоад, я там выступаю с докладом


Не нашел
... << RSDN@Home 1.3.17 alpha 5 rev. 62>>
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.