G>>А еще, написать код это процентов 20% дела максимум. G>>А остальное это либо найти а в чем же проблема.
НС>Все так, но есть один нюанс. Количество проблем и скорость их починки напрямую зависит от качества кода.
Но есть один нюанс. Проблемы из-за кода ну максимум треть от всех проблем.
Там где их больше, там и инструменты другие надо.
Здравствуйте, alex_public, Вы писали:
_>Т.е. если бы C++11/14 не появился, то например я бы уже давно сидел на Rust'е.
Был бы -1 С++ программист, не более.
_>Но если бы язык остановился в развитие (как кстати было в 2000-ых, когда тогдашний лидер в C++ (Microsoft) его забросил), то при появление приличной замены, его бы мгновенно сменили.
Вот это труднопроверяемое утверждение, и на мой взгляд сомнительное.
У сложных вещей обычно есть и хорошие, и плохие аспекты.
Берегите Родину, мать вашу. (ДДТ)
M>Ха-ха, смешно. Но — с другой стороны — симптоматично: самые-самые хейтеры в C++ не умеют и никогда даже не пробовали, зато с легкостью рассуждают про пайтон и гоулэнг
А С++ то действительно схлопывается. Когда видишь одних фанатиков в нем, то явный знак. Секта.
Здравствуйте, so5team, Вы писали:
>Не бросающий move важен для каких-то вещей в стандартной библиотеке, например, в реализации insert-а в std::vector.
Для него и нужен
>Но расставлять noexcept-ы вручную приходится только если вы сами ручками выписываете для своего класса move constructor/operator.\
Они обязательно свои. В подавляющем большинстве случаев компилятор не сможет сгенерировать правильные move операции, и в таком же количестве случаев он их и не генерирует.
Здравствуйте, smeeld, Вы писали:
S>В подавляющем большинстве случаев компилятор не сможет сгенерировать правильные move операции, и в таком же количестве случаев он их и не генерирует.
Откуда статистика про "подавляющее большинство случаев"?
Здравствуйте, gardener, Вы писали:
G>Но есть один нюанс. Проблемы из-за кода ну максимум треть от всех проблем. G>Там где их больше, там и инструменты другие надо.
Здравствуйте, smeeld, Вы писали:
_>>Так ты уже пишешь это сообщение из браузера, написанного на C? Если ещё нет, то беги срочно писать вменяемую замену на C! А то ведь непорядок какой-то, весь мир сидит на не правильно написанных продуктах. S>Браузер-десктопная софтина. Для меня десктопное ПО-это не показатель вообще ничего.
Забавная попытка съехать с темы. ))) А ничего, что 99,9% серверов работают исключительно ради взаимодействия с этим самым "десктопным ПО" (хотя по сути браузер — это уже давно не просто ПО, а полноценная отдельная платформа)? И только в комплекс из серверного ПО и браузера, является реальным решателем прикладных задач, которым и пользуются все люди.
Здравствуйте, Kswapd, Вы писали:
_>>Эм, а что тут подразумевается под переносимостью "Go-ассемблера"? Между чем и чем он переносим? K>Между архитектурами. Так называемый Go-ассемблер является абстрактным низкоуровневым языком, в который превращается код на языке Go в процессе компиляции. При желании можно вывести текстовое представление, нечто вроде такого (взято с сайта go-internals): K>
K>Для каждой аппаратной платформы существует своя реализация Go-ассемблера, выдающая итоговый двоичный код.
Так и не понял, каким образом "переносимость между архитектурами" сочетается с "Для каждой аппаратной платформы существует своя реализация Go-ассемблера"? И с тем фактом, что в рантайме Go мы видим отдельные реализации функций под каждую аппаратную платформу отдельно.
Реально переносимые ассемблеры — это трансляций в некоторый выдуманный процессор (llvm, wasm, и т.п.), который потом (на целевой платформе) транслируется (JIT или АОТ) в реальные машинные коды.
Здравствуйте, lpd, Вы писали:
_>>Т.е. если бы C++11/14 не появился, то например я бы уже давно сидел на Rust'е. lpd>Был бы -1 С++ программист, не более.
Ты считаешь меня настолько уникальным? ))) Приятно конечно же, но боюсь ты мне льстишь — таких были бы многие тысячи. )))
_>>Но если бы язык остановился в развитие (как кстати было в 2000-ых, когда тогдашний лидер в C++ (Microsoft) его забросил), то при появление приличной замены, его бы мгновенно сменили. lpd>Вот это труднопроверяемое утверждение, и на мой взгляд сомнительное.
Ну сменили бы конечно не все, но очень многие. Более того, многие начали бы переходить ещё лет 10 назад, только не на Rust, а на D. И только выход C++11 предотвратил этот процесс.
_>Забавная попытка съехать с темы. ))) А ничего, что 99,9% серверов работают исключительно ради взаимодействия с этим самым "десктопным ПО"
Бред. Вы явно не в курсе того, что там на серверах крутится. С десктопами взаимодействуют специальные фасадные демоны любой природы (за исключением мелких сайтиков инета, поднятых на тазиках, стоящих под столом). За этими демонами-огромные пласты софта, компоненнты которого взаимодействуют только с такими же сетевыми демонами как и они сами, и ни о чём другом не знают.
Здравствуйте, smeeld, Вы писали:
_>>Забавная попытка съехать с темы. ))) А ничего, что 99,9% серверов работают исключительно ради взаимодействия с этим самым "десктопным ПО" S>Бред. Вы явно не в курсе того, что там на серверах крутится. С десктопами взаимодействуют специальные фасадные демоны любой природы (за исключением мелких сайтиков инета, поднятых на тазиках, стоящих под столом). За этими демонами-огромные пласты софта, компоненнты которого взаимодействуют только с такими же сетевыми демонами как и они сами, и ни о чём другом не знают.
Правильно. И всё это крутится исключительно для того, чтобы выдать строчку текста в этот самый браузер. Соответственно если не будет браузера, то и не будет ни одного из этих серверов, просто за ненадобностью.
Здравствуйте, alex_public, Вы писали:
>И всё это крутится исключительно для того, чтобы выдать строчку текста в этот самый браузер. Соответственно если не будет браузера, то и не будет ни одного из этих серверов, просто за ненадобностью.
Неправильно. Задачии могут быть до жути самые разнообразные. Только не пытайтесь доказать, что, например, автоматизированные системы управления только и работают, чтоб выдать какую-то строчку в какой-то там броузер.
Здравствуйте, smeeld, Вы писали:
>>И всё это крутится исключительно для того, чтобы выдать строчку текста в этот самый браузер. Соответственно если не будет браузера, то и не будет ни одного из этих серверов, просто за ненадобностью. S>Неправильно. Задачии могут быть до жути самые разнообразные. Только не пытайтесь доказать, что, например, автоматизированные системы управления только и работают, чтоб выдать какую-то строчку в какой-то там броузер.
Причём тут АСУ, если мы говорили о серверах? ))) АСУ — это вообще другой мир (про который я кстати говоря наверняка больше тебя в курсе), в котором как раз C++ доминирует полностью.
Здравствуйте, alex_public, Вы писали:
_>Ну сменили бы конечно не все, но очень многие. Более того, многие начали бы переходить ещё лет 10 назад, только не на Rust, а на D. И только выход C++11 предотвратил этот процесс.
Уже все перешли на Java и C#. А те, кому эти два языка не подходят ну совсем никак, готовы сбежать куда угодно.
Вообщем С++ из универсального языка превратили в что-то сильно специфическое. Интересен был бы опрос среди С++ программистов чтобы понять процент любителей угловых скобочек, но такого пока не попадалось.
У сложных вещей обычно есть и хорошие, и плохие аспекты.
Берегите Родину, мать вашу. (ДДТ)
Здравствуйте, alex_public, Вы писали:
_>Так и не понял, каким образом "переносимость между архитектурами" сочетается с "Для каждой аппаратной платформы существует своя реализация Go-ассемблера"? И с тем фактом, что в рантайме Go мы видим отдельные реализации функций под каждую аппаратную платформу отдельно.
Он полу-абстрактный. Вещи, общие для всех разумных архитектур делаются в нем одинаково (например, MOV из регистра в регистр). Процессороспецифические вещи делаются специфическим для процессора образом (например, AES).
_>Реально переносимые ассемблеры — это трансляций в некоторый выдуманный процессор (llvm, wasm, и т.п.), который потом (на целевой платформе) транслируется (JIT или АОТ) в реальные машинные коды.
Не обязательно на целевой платформе во время исполнения.
Реализация от Microsoft в ATL была открыта независимо Яном Фалкином (англ. Jan Falkin) также в 1995 году. Он случайно унаследовал базовый класс от класса наследника. Кристиан Бомон (англ. Christian Beaumont), заметив этот код, решил, что он не может быть скомпилирован, но, выяснив, что может, решил положить эту ошибку в основу ATL и WTL.
Pzz>И эти люди меня убеждают, что C++ не является переусложненным языком.
Здравствуйте, Pzz, Вы писали:
S>>Этот чувак для меня как-то больший авторитет, чем анонимные "гуру" C++ с кывта. Последние на этом форме всегда называли Торвальдса неосилятором. Но если анонимам доверить такую массу кода, за которой присматривает Торвальдс, только переписанную на C++, они тогда просто повесятся. Pzz>Интересно, что git, из соображений эффективности написаный на C
Не из этих соображений.
libgit2 is a portable, pure C implementation of the Git core methods provided as a re-entrant linkable library with a solid API, allowing you to write native speed custom Git applications in any language which supports C bindings.
Pzz>делает некоторые вполне повседневные операции медленнее, чем hg, написанный на питоне.
1. Сам алгоритм merge у гита более сложный (типа, заявка на интеллектуальность), к тому же их, вроде бы, 6 разных алгоритмов в наличии, на выбор.
2. Попытка экономить место — по возможности, в репозитории хранятся дельты и активно шарятся внутренние линки на ресурсы, что приводит к повышенной косвенности описания графа состояния.