Здравствуйте, serj.e, Вы писали:
SE>Помнится, у Ильфака Гильфанова (IDA, Hexrays) была вакансия с просто-таки щикарным (ц) пожеланием к соискателю: "глубокие знания C++ и столь же глубокое нежелание его использовать"
Надо таки заметить что персонаж этот страдал одиозностью в довольно суровой степени.
SE> То есть да, в сложных проектах Цепепе полезен, и его знание сильно помогает, но писать в наши дни на крестах весь проект от и до — изощренное самоубийство.
Зависит от кривизны рук и области для которой проект пишется.
... << RSDN@Home 1.0.0 alpha 5 rev. 0>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Из шедевральных проектов, написанных относительно недавно на свежих стандартах C++, сразу вспоминается scylladb и асинхронный фреймворк seastar, лежащий в её основе. Просто как примерчик, иллюстрирующий не только актуальность плюсов в наши дни при создании сложных, выжимающих из железа всё, платформ, но и возможность писать на C++ красиво.
Здравствуйте, serj.e, Вы писали:
SE>Из шедевральных проектов, написанных относительно недавно на свежих стандартах C++, сразу вспоминается scylladb и асинхронный фреймворк seastar, лежащий в её основе. Просто как примерчик, иллюстрирующий не только актуальность плюсов в наши дни при создании сложных, выжимающих из железа всё, платформ, но и возможность писать на C++ красиво.
Тут есть один довольно хреновый момент. Альтернативных реализаций одних и тех же концептов в C++ крайне много, что приводит к очень сильной дефрагментации любой предметной области где используется C++ уже на базовом, в теории фундаментальном уровне предоставляемом языком. seastar этому отличный пример со своей, правильной реализацией промисов, управлением памятью и т.д. Подобный подход в теории хорош для небольших команд энтузиастов, но совершенно не годен для промышленной разработки.
Здравствуйте, Denis Ivlev, Вы писали:
DI>У вектора есть метод at бросающий исключение при выходе за границы, статически же такое далеко не всегда возможно проверить.
Так речь была про
путь даже на уровне контроля за выходами за пределы массивов в run-time
Это инструмент, который позволял бы по шагам посмотреть как разворачиваются шаблоны, подбираются наиболее подходящие функции и операторы, вычисляются constexpr.
Здравствуйте, Hobbes, Вы писали:
H>std::vector'у существует намного больше лет, чем Rust. Не понимаю, в чём проблема контроля за выходом за пределы массива.
Метод vector::at редко используют на практике. Например, в шаблонном коде его сложно использовать, т.к. тогда шаблон потеряет возможность работать и с C-шными массивами.
Здравствуйте, Hobbes, Вы писали:
H>Это инструмент, который позволял бы по шагам посмотреть как разворачиваются шаблоны, подбираются наиболее подходящие функции и операторы, вычисляются constexpr.
Гм, с одной стороны интересная щтука, но с практической стороны как то за последние лет десять, если не больше, потребности в таком не возникало.
... << RSDN@Home 1.0.0 alpha 5 rev. 0>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Здравствуйте, lpd, Вы писали:
lpd>Реально мув-семантика играет сколько-то заметную роль в конечном общем быстродействии программы очень-очень редко, и это не стоит реализации ее в C++ языке, тем более такой запутанной. Там где это нужно, можно сделать у объекта руками метод Move(), в том числе для push_back().
move-семантика не 100% про производительность. Появление move-семантики оказывает влияние еще и на надежность кода. Так, благодаря move-семантики стало возможно создание moveable но не copyable типов, наглядным примером которого является unique_ptr. Стало возможно явно передавать владение тем или иным ресурсом.
Как следствие из этого теперь можно писать, например, так:
Здравствуйте, Hobbes, Вы писали:
DI>>У вектора есть метод at бросающий исключение при выходе за границы, статически же такое далеко не всегда возможно проверить.
H>Так речь была про H>
H>путь даже на уровне контроля за выходами за пределы массивов в run-time
Так я и написал: У вектора есть метод at бросающий исключение при выходе за границы. Это как раз в рантайме. Философия С++ не платить за неиспользуемое, поэтому есть и operator[] и at
Здравствуйте, CreatorCray, Вы писали:
CC>Здравствуйте, Denis Ivlev, Вы писали:
DI>>Пока только я тебя носом тычу в твое невежество. CC>Да чота всё промахиваешься и падаешь в лужу CC>Поди тыкалка у тебя уж слишком короткая, обтекай и отращивай
Тем не менее оказалось, что даже про POD типы не слыхал. Сипипи кодерки, такие сипипи кодерки
DI>>Ты и правда упорот. Это не твои что-ли подряд сообщения мне?
CC>Это ответы на твои сообщения CC>Я снова обосрался.
Здравствуйте, Denis Ivlev, Вы писали:
DI>>>Запусти g++ с ключом и -v и удивись, что сначала cc1plus создает .s файл, а его уже as транслирует в объектник. CC>>пишу в терминале g++ -v test.cpp, вижу clang который никаких .s не делает.
DI>Ох, лол, тролятину порвало. А у меня g++, а не clang и он делает.
Здравствуйте, serj.e, Вы писали:
SE>$>А кому нужны десктопные приложения?
SE>Такое ощущение, что кто-то не вылез из 2007-го. Тогда как раз были модными подобные радикальные идеи. Потом реальность внесла свои коррективы. Причём внесла весьма брутально — по крайней мере на Маке всё большее количество профессиональных ниш обратно отвоёвывается Mac App Store'ом, на долю браузера приходится всё меньше активности. А таких монстров, как, например, IDA, Xcode, Photoshop, After Effects, Sketch, Pro Tools, Final Cut Pro в уебе не будет от слова никогда. Да что говорить — даже G.Docs и Office 365 до нативного Ворда–Экселя и близко не дотягивают по возможностям и эргономике, хотя лет первым уже ого-го сколько.
Ты собрался писать убийцу Ворда?
В моей реальности, C++ используется игроделами и HFT-ками. Обе категории — весьма особняком стоят, их крайне мало. Фактически, это сектанты.
В обычных (веб) конторах,намёки сделать кусочек на C++, не оценивают примерно на уровне как сделать кусочек на Clojure.
Здравствуйте, Stanislav V. Zudin, Вы писали:
DI>>Не стыдно не знать язык за который ты тут глотку рвешь? В С++ для совместимости с С есть POD типы у которых расположение полей предсказуемое — в порядке объявления, для не POD типов таких гарантий нет и компилятор может изменять порядок полей по своему усмотрению.
SVZ>Ээ... я правильно понимаю, что если в структуру добавить конструктор, то компилятор может у структуры поменять порядок полей?
зеленый что-то слышал про ПОД, но ничего не понял и додумал как сумел.
SVZ>А можно ссылку на Стандарт, а то что-то я отстал от жизни.
9.2.15 Nonstatic data members of a (non-union) class with the same access control (Clause 11) are allocated so that later members have higher addresses within a class object. The order of allocation of non-static data members with different access control is unspecified (11). Implementation alignment requirements might cause two adjacent members not to be allocated immediately after each other; so might requirements for space for managing virtual functions (10.3) and virtual base classes (10.1).
Здравствуйте, night beast, Вы писали:
SVZ>>А можно ссылку на Стандарт, а то что-то я отстал от жизни.
NB>
NB>9.2.15 Nonstatic data members of a (non-union) class with the same access control (Clause 11) are allocated so that later members have higher addresses within a class object. The order of allocation of non-static data members with different access control is unspecified (11). Implementation alignment requirements might cause two adjacent members not to be allocated immediately after each other; so might requirements for space for managing virtual functions (10.3) and virtual base classes (10.1).
Я всегда считал, что выделенное означает паддинг, а не перестановку мемберов местами.
_____________________
С уважением,
Stanislav V. Zudin
Здравствуйте, sergey2b, Вы писали:
B>>На плюсах много серьезной работы и будет много, так что ищите, плюсы долго еще никуда не денутся. S>в неделю меньше 10 новых вакансий на С++ S>а например для драйверистов 3 вакансии в месяц
Вакансий мало, а работы — много. Хорошего плюсовика искать очень долго.
S>рекруторы активно советуют, что если хочешь найти работу искать на чем то другом.
Тут они правы, С++ — не самый выгодный язык для поиска работы. Но автор сказал что ему заходит, так почему бы и не нет?
Проект Ребенок8020 — пошаговый гайд как сделать, вырастить и воспитать ребенка.
Здравствуйте, Stanislav V. Zudin, Вы писали:
SVZ>>>А можно ссылку на Стандарт, а то что-то я отстал от жизни.
NB>>
NB>>9.2.15 Nonstatic data members of a (non-union) class with the same access control (Clause 11) are allocated so that later members have higher addresses within a class object. The order of allocation of non-static data members with different access control is unspecified (11). Implementation alignment requirements might cause two adjacent members not to be allocated immediately after each other; so might requirements for space for managing virtual functions (10.3) and virtual base classes (10.1).
SVZ>Я всегда считал, что выделенное означает паддинг, а не перестановку мемберов местами.
это и означает паддинг
тут основное
data members of a (non-union) class with the same access control (Clause 11) are allocated so that later members have higher addresses within a class object.
то есть в пределах одного доступа стандарт гарантирует последовательное (с возможным паддингом) размещение.
А в чем я не прав? Классика — трансляция промежуточного представления в ассемблер, современные компиляторы могут в целях ускорения компиляции транслировать сразу в бинарный файл, но так же они все все-равно поддерживают трансляцию в ассемблер. Ознакомься: http://blog.llvm.org/2010/04/intro-to-llvm-mc-project.html
P.S. Ты не бойся, я не злой, не надо ходить за мной и с замиранием сердца ставить минусики, если будешь вежливо общаться, приводить аргументы и задавать вопросы, я тоже буду максимально корректен.
Здравствуйте, night beast, Вы писали:
NB>зеленый что-то слышал про ПОД, но ничего не понял и додумал как сумел.
SVZ>>А можно ссылку на Стандарт, а то что-то я отстал от жизни.
NB>
NB>9.2.15 Nonstatic data members of a (non-union) class with the same access control (Clause 11) are allocated so that later members have higher addresses within a class object. The order of allocation of non-static data members with different access control is unspecified (11). Implementation alignment requirements might cause two adjacent members not to be allocated immediately after each other; so might requirements for space for managing virtual functions (10.3) and virtual base classes (10.1).
Я на плюсах давно не пишу, мне новые стандарты не знать простительно, но кое-что я еще помню:
Здравствуйте, CreatorCray, Вы писали:
CC>Он про то, что для non-POD разрешены data layout optimizations. Некоторые туповатые компиляторы могут радостно утрамбовать поля так, чтоб было поменьше padding, в результате чего иногда может возникнуть false sharing. Эта самодеятельность пресекается declspec, если понадобится.