Цитата: ps_ от 07.11.2024 23:59:32Так я про это и говорю.
Вот сижу я и пишу на с++ с классами и все у меня работает. Но я не один в группе. И есть еще много других групп.
Раз в год появляется студент, идет на курсы продвинутого с++, приходит обратно и под лозунгом "я вас научу ретрограды на современном с++ писать", начинает использовать все эти продвинутые шаблоны и typedecl. А я потом сижу и пытаюсь понять, почему сервер рухнул.
Цитата: ps_ от 07.11.2024 23:59:32
Не надо давать ВОЗМОЖНОСТИ использовать всякие хитрые конструкции при написании обычного кода.
В том же rust все эти бесконечные проверки можно отключить при компиляции или внутри специального блока. И разработчики библиотек этим пользуются. Но они знают, что делают. А в нормальной ситуации они помогают писать правильный код
Цитата: ivrom от 08.11.2024 00:50:36На С++ можно писать безопасный код. Один запрет на использование голых указателей может убрать 99% проблем. В С++ несколько видов "умных" указателей на любой вкус, вопрос только в дисциплине. Но в больших проектах без дисциплины и явно написанных правил кодирования всё равно нельзя.
...
Всякие хитрые возможности в С++ в абсолютном большинстве по наследству заимствованы из С. Обратную совместимость с С в С++ никогда не уберут. Но можно просто не писать код "как на С" и использовать новые стандартные средства управления памятью и работы с типами данных С++ и радоваться [безопасной] жизни. И это можно сделать писаной политикой компании.
Цитата: Прокруст от 08.11.2024 09:28:33У вас боязнь указателей, бывает. Еще можно не пользоваться ножом чтобы не порезаться ненароком.
Все ваши умные указатели, идеальные абстракции - дырявые. В реальном коде эти абстракции то и дело рушатся. Да, их каждый раз починяют и говорят что теперь они совершенны, мда.
Цитата: Прокруст от 08.11.2024 09:28:33Код сложных шаблонов - практически невозможно контролировать. Взаимодействие двух сложных шаблонов - это хаос.
Цитата: Прокруст от 08.11.2024 09:28:33А вот свои указатели - легко и контролировать и тестировать. Если конечно умеешь. Как и с ножом.
Цитата: ivrom от 08.11.2024 12:24:44Нет у меня боязни указателей. Есть проблема невладения выделенной памятью обычными указателями в С/С++. При их использовании в С++ без должной дисциплины или утечка памяти случится или обращение к уже удалённому сегменту памяти.
Цитата: ivrom от 08.11.2024 12:24:44Нет у меня боязни указателей. Есть проблема невладения выделенной памятью обычными указателями в С/С++. При их использовании в С++ без должной дисциплины или утечка памяти случится или обращение к уже удалённому сегменту памяти. И должная дисциплина программирования с использованием указателей на выделенную память подразумевает обязательное определение операторов присваивания и перемещения (operator=()|operator=(&&)) для каждого класса с указателями. Или запрет на копирование/перемещение. Это слишком глупо и утомительно, и кто-то об этом обязательно забудет (но не вы, правда?). std::unique_ptr/std::shared_ptr сделают всю нудную работу за вас. unique_ptr не имеет издержек времени выполнения по сравнению с обычными указателями.Можете ассемблер глянуть.
ЦитатаКстати, о каких дырявых умных указателях вы толкуете? Условно неудачным был std::auto_ptr, но он был создан до появления оператора перемещения в языке. Как только он появился - так auto_ptr из языка и убрали уж 10 лет как. И предупреждали не использовать с С++11. И unique_ptr его прямая замена без недостатков.
ЦитатаШаблоны - это вершина code reuse. Вот просто никаких проблем с ними нет у тех, кто понимает в абстракцию. А кто нет - тем от С++ нужно держаться подальше.
ЦитатаНапример, мой личный библиотечный код как правило на 50-80% состоит из шаблонов. А иногда и на все 100%. Я просто не представляю, как без шаблонов писать универсальный type safe код.
Ну и стоит упомянуть, что STL - это сплошь шаблоны на шаблонах.
ЦитатаА вот обычные указатели в С++ почти никогда использоваться не должны. Для этого есть ссылки (если мы не используем управление памятью), которые невозможно не инициировать. Иначе - null pointer dereferencing будет иногда на чаёк заглядывать, не у вас, так у соседа. Редко, действительно редко необходимы именно указатели. Их можно применять в случае частого изменения указателя, как например в связном списке/дереве. Да и то по уму нужно использовать ссылки (и placement new по необходимости) или std::reference_wrapper. У программиста С++ должен выработаться рефлекс: видишь указатель - это выделенная из кучи память. Иначе - используй ссылку!
ЦитатаВпрочем, если вы толкуете о библиотечном коде/API, вызываемом из С, то да, без указателей не обойтись. Но это же нишевое решение!
PS У меня создаётся впечатление, что большинство рассуждающих о С++ здесь его просто не знают, застряли в прошлом с С++98 в багаже в лучшем случае, или пишут на нём "как на С". И это катастрофа, для С++, конечно же ;(
Цитата: adolfus от 08.11.2024 12:48:56Вот вы и озвучили один из базовых рецептов безопасности.
Утечки памяти и обращения в никуда неплохо убираются прогонами тестов под valgrind или под проприетарными аналогами. Другое дело, что мало кто желает писать тесты.
Цитата: Прокруст от 08.11.2024 16:19:28Нету у меня в Си классов, нет возможности делать определение операторов присваивания и перемещения.
Ваши заморочки - у вас в голове.
Цитата: Прокруст от 08.11.2024 16:19:28Те кто действительно понимает, предпочитает результат играм в абстракцию. Эти игры - весело, понтово, круто. Результат только тоже абстрактный.
Цитата: ivrom от 08.11.2024 20:39:51 И мир продолжит экстенсивный путь развития в виде увеличения размера памяти и количества ядер процессора для покрытия издержек "непонимания". Так тоже делать можно.
Цитата: ivrom от 08.11.2024 20:39:51Я так и подозревал, что говоря о С++ вы имели в виду код в виде "пишу как на С". Так, конечно, делать можно. И ошибок в коде будет меньше, так как С++ более безопасен с точки зрения преобразования типов. Но в этом случае - зачем ругать язык, который вы не особо понимаете?
Это оставлю без комментариев. Шаблоны - это ядро языка. И этот язык вам просто не нужен. Забудьте его.
Цитата: Прокруст от 08.11.2024 22:05:45Сколько высокомерия. Вы просто не наигрались в свои игрушки.
И да, шаблоны ядро этого языка. И игры с ними отнимают большую часть времени. Бессмыленно сие.
PS.
Вся эта возня с шаблонами в С++ напоминает мне написание текста на иероглифах. Красиво и кратко, угу.
Но я устал в каллиграфию, предпочитаю писать текст буквами.
Цитата: ivrom от 08.11.2024 22:34:18PPS У С++ есть один недостаток, и это даже не ложка, а бочка дёгтя. Стандартизованный ABI отсутствует напрочь. Призыв "ABI - now or never", который проталкивали при принятии последнего стандарта С++ , потерпел крах. В смысле от "now" похоже осталось "never". А ABI - это всё о библиотекописании. Аминь.
Цитата: DeC от 11.11.2024 23:56:46Новый закон Тайваня запрещает TSMC производить 2-нанометровые (2 нм) чипы за пределами страны
Этот запрет распространяется также на США.
TSMC должна хранить свои самые сложные технологии, такие как производство 2 нм чипов, в пределах границ Тайваня в целях национальной безопасности.
Цитата: Vaal от 12.11.2024 11:06:17Ога... А сканеры двухнанометровые эти недокитайцы где возьмут?
У ASML, как всегда? Так ASML полностью под американским контролем. Не захотят янкесы, и не будет никаких 2нм.
Цитата: South от 12.11.2024 11:11:56ASML это не царь и бог, а лишь конечный сборщик труда многих компаний, в том числе и инженеров TSMС. Грубо говоря если Тайвань, отрезать от голландцев то и самим голландцам может очень сильно поплохеть.
Цитата: Moksha от 12.11.2024 12:21:48Вы перепутали ASML с TSMC . ASML в Голландии.
Цитата: Vaal от 12.11.2024 11:06:17Ога... А сканеры двухнанометровые эти недокитайцы где возьмут?
У ASML, как всегда? Так ASML полностью под американским контролем. Не захотят янкесы, и не будет никаких 2нм.
Цитата: adolfus от 09.11.2024 19:13:50ABI -- не стандарт, это соглашения платформы, а не языка.
Нет ни одного языка, который выдвигает требования к платформе и ABI. Мало того, стандарты языков пестрят замечаниями "определяется реализацией". Реализация -- это компилятор и если компилятор "желает" присутствовать на платформе, он просто молча "берет под козырек".
ABI -- это двоичный программный интерфейс.
Цитата: LightElf от 13.11.2024 00:32:21 отсутствие стандарта на двоичное представление классов, объектов, виртуальных функций и тыды. Невозможно описать класс, собрать одним компиляторов в .so/DLL а потом в приложении собранном другим компилятором произвести от этого класса потомка.У нас пользовались в интерфейсах только чисто виртуальными функциями. Тогда в структуре первым элементом идет адрес таблицы с адресами функций. Конечно все равно могут быть разночтения типа 32\64 или соглашения о вызове функций. Во всяком случае так можно было взаимодействовать между борландом и микрософтом.
Цитата: ps_ от 12.11.2024 22:42:44Фотошаблоны делает stepper. Обычно покупается вместе с литографом.
Кстати, я не знаю кто сейчас производит степперы