Re[2]: Оставаться в С++ или уходить?
От: CreatorCray  
Дата: 01.10.19 00:19
Оценка:
Здравствуйте, serj.e, Вы писали:

SE>Помнится, у Ильфака Гильфанова (IDA, Hexrays) была вакансия с просто-таки щикарным (ц) пожеланием к соискателю: "глубокие знания C++ и столь же глубокое нежелание его использовать"


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

SE> То есть да, в сложных проектах Цепепе полезен, и его знание сильно помогает, но писать в наши дни на крестах весь проект от и до — изощренное самоубийство.


Зависит от кривизны рук и области для которой проект пишется.
... << RSDN@Home 1.0.0 alpha 5 rev. 0>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Re: Оставаться в С++ или уходить?
От: serj.e  
Дата: 01.10.19 00:21
Оценка:
Из шедевральных проектов, написанных относительно недавно на свежих стандартах C++, сразу вспоминается scylladb и асинхронный фреймворк seastar, лежащий в её основе. Просто как примерчик, иллюстрирующий не только актуальность плюсов в наши дни при создании сложных, выжимающих из железа всё, платформ, но и возможность писать на C++ красиво.
Re[2]: Оставаться в С++ или уходить?
От: kaa.python Ниоткуда РСДН профессионально мёртв и завален ватой.
Дата: 01.10.19 00:41
Оценка:
Здравствуйте, serj.e, Вы писали:

SE>Из шедевральных проектов, написанных относительно недавно на свежих стандартах C++, сразу вспоминается scylladb и асинхронный фреймворк seastar, лежащий в её основе. Просто как примерчик, иллюстрирующий не только актуальность плюсов в наши дни при создании сложных, выжимающих из железа всё, платформ, но и возможность писать на C++ красиво.


Тут есть один довольно хреновый момент. Альтернативных реализаций одних и тех же концептов в C++ крайне много, что приводит к очень сильной дефрагментации любой предметной области где используется C++ уже на базовом, в теории фундаментальном уровне предоставляемом языком. seastar этому отличный пример со своей, правильной реализацией промисов, управлением памятью и т.д. Подобный подход в теории хорош для небольших команд энтузиастов, но совершенно не годен для промышленной разработки.
Отредактировано 01.10.2019 0:42 kaa.python . Предыдущая версия .
Re[17]: Оставаться в С++ или уходить?
От: Hobbes Россия  
Дата: 01.10.19 04:18
Оценка:
Здравствуйте, Denis Ivlev, Вы писали:

DI>У вектора есть метод at бросающий исключение при выходе за границы, статически же такое далеко не всегда возможно проверить.


Так речь была про

путь даже на уровне контроля за выходами за пределы массивов в run-time

Re[15]: Оставаться в С++ или уходить?
От: Hobbes Россия  
Дата: 01.10.19 04:21
Оценка:
Здравствуйте, CreatorCray, Вы писали:

CC>Это как?


Это инструмент, который позволял бы по шагам посмотреть как разворачиваются шаблоны, подбираются наиболее подходящие функции и операторы, вычисляются constexpr.
Re[16]: Оставаться в С++ или уходить?
От: so5team https://stiffstream.com
Дата: 01.10.19 04:42
Оценка:
Здравствуйте, Hobbes, Вы писали:

H>std::vector'у существует намного больше лет, чем Rust. Не понимаю, в чём проблема контроля за выходом за пределы массива.


Метод vector::at редко используют на практике. Например, в шаблонном коде его сложно использовать, т.к. тогда шаблон потеряет возможность работать и с C-шными массивами.
Re[16]: Оставаться в С++ или уходить?
От: CreatorCray  
Дата: 01.10.19 04:50
Оценка:
Здравствуйте, Hobbes, Вы писали:

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


Гм, с одной стороны интересная щтука, но с практической стороны как то за последние лет десять, если не больше, потребности в таком не возникало.
... << RSDN@Home 1.0.0 alpha 5 rev. 0>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Re[17]: Оставаться в С++ или уходить?
От: CreatorCray  
Дата: 01.10.19 04:50
Оценка:
Здравствуйте, so5team, Вы писали:

S>Метод vector::at редко используют на практике.

Я бы даже сказал что практически никогда.
... << RSDN@Home 1.0.0 alpha 5 rev. 0>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Re[20]: Оставаться в С++ или уходить?
От: so5team https://stiffstream.com
Дата: 01.10.19 04:53
Оценка:
Здравствуйте, lpd, Вы писали:

lpd>Реально мув-семантика играет сколько-то заметную роль в конечном общем быстродействии программы очень-очень редко, и это не стоит реализации ее в C++ языке, тем более такой запутанной. Там где это нужно, можно сделать у объекта руками метод Move(), в том числе для push_back().


move-семантика не 100% про производительность. Появление move-семантики оказывает влияние еще и на надежность кода. Так, благодаря move-семантики стало возможно создание moveable но не copyable типов, наглядным примером которого является unique_ptr. Стало возможно явно передавать владение тем или иным ресурсом.

Как следствие из этого теперь можно писать, например, так:
std::ifstream infile = open_input_file(...); // Бросает исключение при ошибке.
std::ofstream outfile = open_output_file(...);
...

вместо
std::ifstream infile;
open_input_file(infile);
std::ofstream outfile;
open_output_file(outfile);

И даже если исключения в проекте запрещены, благодаря move-семантике можно писать:
expected<std::ifstream> infile = open_input_file(...);
if(infile) {
   expected<std::ofstream> outfile = open_output_file(...);
   if(outfile) {
      ...
   }
}

А если добавить сюда еще и лямбды, то можно дойти и до такого:
open_input_file(...).on_success([&](auto & infile) {
   open_output_file(...).on_success([&](auto & outfile) {
      ...
   });
});

Так что совокупность новых возможностей C++ позволяет теперь писать на C++ совсем в другом стиле (естественно, можно и переборщить).

Но в Rust-е с move-семантикой пошли еще дальше.
Re[18]: Оставаться в С++ или уходить?
От: Denis Ivlev  
Дата: 01.10.19 06:18
Оценка:
Здравствуйте, Hobbes, Вы писали:

DI>>У вектора есть метод at бросающий исключение при выходе за границы, статически же такое далеко не всегда возможно проверить.


H>Так речь была про

H>

H>путь даже на уровне контроля за выходами за пределы массивов в run-time


Так я и написал: У вектора есть метод at бросающий исключение при выходе за границы. Это как раз в рантайме. Философия С++ не платить за неиспользуемое, поэтому есть и operator[] и at
Re[23]: Оставаться в С++ или уходить?
От: Denis Ivlev  
Дата: 01.10.19 06:22
Оценка: -3 :))
Здравствуйте, CreatorCray, Вы писали:

CC>Здравствуйте, Denis Ivlev, Вы писали:


DI>>Пока только я тебя носом тычу в твое невежество.

CC>Да чота всё промахиваешься и падаешь в лужу
CC>Поди тыкалка у тебя уж слишком короткая, обтекай и отращивай

Тем не менее оказалось, что даже про POD типы не слыхал. Сипипи кодерки, такие сипипи кодерки

DI>>Ты и правда упорот. Это не твои что-ли подряд сообщения мне?


CC>Это ответы на твои сообщения

CC>Я снова обосрался.

Да, ты снова обосрался.
Re[28]: Оставаться в С++ или уходить?
От: AlexRK  
Дата: 01.10.19 06:48
Оценка:
Здравствуйте, Denis Ivlev, Вы писали:

DI>>>Запусти g++ с ключом и -v и удивись, что сначала cc1plus создает .s файл, а его уже as транслирует в объектник.

CC>>пишу в терминале g++ -v test.cpp, вижу clang который никаких .s не делает.

DI>Ох, лол, тролятину порвало. А у меня g++, а не clang и он делает.


утверждения я делаю только о том, что мне хорошо знакомо и если неправ, признаю неправоту
Автор: Denis Ivlev
Дата: 30.09.19
(c)

Назвался груздем — лезь в кузов.
Re[10]: Оставаться в С++ или уходить?
От: $$ Австралия жж
Дата: 01.10.19 07:06
Оценка:
Здравствуйте, 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.
Re[23]: Оставаться в С++ или уходить?
От: night beast СССР  
Дата: 01.10.19 07:15
Оценка: 8 (1) +1
Здравствуйте, 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).

Re[24]: Оставаться в С++ или уходить?
От: Stanislav V. Zudin Россия  
Дата: 01.10.19 07:20
Оценка:
Здравствуйте, 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
Re[3]: Оставаться в С++ или уходить?
От: Basil2 Россия https://starostin.msk.ru
Дата: 01.10.19 07:24
Оценка: 10 (2)
Здравствуйте, sergey2b, Вы писали:

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

S>в неделю меньше 10 новых вакансий на С++
S>а например для драйверистов 3 вакансии в месяц

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

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


Тут они правы, С++ — не самый выгодный язык для поиска работы. Но автор сказал что ему заходит, так почему бы и не нет?
Проект Ребенок8020 — пошаговый гайд как сделать, вырастить и воспитать ребенка.
Re[25]: Оставаться в С++ или уходить?
От: night beast СССР  
Дата: 01.10.19 07:25
Оценка:
Здравствуйте, 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.

то есть в пределах одного доступа стандарт гарантирует последовательное (с возможным паддингом) размещение.
Отредактировано 01.10.2019 7:26 night beast . Предыдущая версия .
Re[29]: Оставаться в С++ или уходить?
От: Denis Ivlev  
Дата: 01.10.19 07:26
Оценка: :))
Здравствуйте, AlexRK, Вы писали:

DI>>Ох, лол, тролятину порвало. А у меня g++, а не clang и он делает.


ARK>утверждения я делаю только о том, что мне хорошо знакомо и если неправ, признаю неправоту
Автор: Denis Ivlev
Дата: 30.09.19
(c)


ARK>Назвался груздем — лезь в кузов.


А в чем я не прав? Классика — трансляция промежуточного представления в ассемблер, современные компиляторы могут в целях ускорения компиляции транслировать сразу в бинарный файл, но так же они все все-равно поддерживают трансляцию в ассемблер. Ознакомься: http://blog.llvm.org/2010/04/intro-to-llvm-mc-project.html

P.S. Ты не бойся, я не злой, не надо ходить за мной и с замиранием сердца ставить минусики, если будешь вежливо общаться, приводить аргументы и задавать вопросы, я тоже буду максимально корректен.
Re[24]: Оставаться в С++ или уходить?
От: Denis Ivlev  
Дата: 01.10.19 07:38
Оценка: :))) :))
Здравствуйте, 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).


Я на плюсах давно не пишу, мне новые стандарты не знать простительно, но кое-что я еще помню:

https://stackoverflow.com/questions/15763091/do-these-members-have-unspecified-ordering/15763092

А вот как сипипи кодерки в лужу садятся (один про под не слыхал, другой что-то нагуглил, но не полностью) доставляет.
Re[24]: Оставаться в С++ или уходить?
От: Denis Ivlev  
Дата: 01.10.19 07:39
Оценка: :)
Здравствуйте, CreatorCray, Вы писали:

CC>Он про то, что для non-POD разрешены data layout optimizations. Некоторые туповатые компиляторы могут радостно утрамбовать поля так, чтоб было поменьше padding, в результате чего иногда может возникнуть false sharing. Эта самодеятельность пресекается declspec, если понадобится.


Ты не достаточно точно нагуглил.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.