Здравствуйте, Артём, Вы писали:
Аё>Плюснутые вместо чтобы признать поломанность плюсплюсного дизайна
Тёмчик, скажу тебе по секрету, ты обкакаешься и забрызгаешь весь форум известной субстанцией, но не сможешь ни продемонстрировать, ни, тем более, обосновать "поломанность плюсплюсного дизайна".
С++ делали и делали люди, гораздо умнее меня. И, подозреваю, что и тебя тоже. Поэтому в C++ у всех решений есть и причины появления, и логическое обоснование, и причины, почему сделано именно так. Даже если кому-то (мне, например) может это казаться странным и непонятным.
Ну а несостыковки в каких-то местах -- это следствие многолетней эволюции.
Если бы тебе повезло и ты (вместо того, чтобы прыгать каждые 2-3 года с технологии на технологию) занимался развитием одного проекта на протяжении 10-15-20 лет, ты бы смог осознать что же это такое, когда твои продуманные решения через N лет выглядят уже несколько не так, как тебе казалось.
S>С++ делали и делали люди, гораздо умнее меня. И, подозреваю, что и тебя тоже. Поэтому в C++ у всех решений есть и причины появления, и логическое обоснование, и причины, почему сделано именно так. Даже если кому-то (мне, например) может это казаться странным и непонятным.
S>Ну а несостыковки в каких-то местах -- это следствие многолетней эволюции.
Добавлю...
Его разрабатывали 40 лет назад. Тогда индустрия только начиналась. Языков до него было не так уж много. Соответственно, проектировать его было куда сложнее. И то, что он до сих пор активно (несмотря на твои, Темчик, фантазии) в течение стольких лет используется и развивается — это лишь показатель его грамотного и продуманного дизайна. И благодаря плюсам мы имеем языки, где приняли более удачные решения на опыте плюсов.
Здравствуйте, so5team, Вы писали:
S>Покажи мне язык без GC, в котором управление памятью не поломано.
Да и вообще с какого перепугу оно "поломано"?
Просто потому что оно не задизайнено подтирать за жидко обосравшимся криворуким говнокодером?
Здравствуйте, CreatorCray, Вы писали:
S>>Покажи мне язык без GC, в котором управление памятью не поломано. CC>Да и вообще с какого перепугу оно "поломано"?
Раз разработчику нужно делать это вручную, да еще и думать (думать!) об этом, значит сломано. Подозреваю, Тёмчик это подразумевает.
CC>Просто потому что оно не задизайнено подтирать за жидко обосравшимся криворуким говнокодером?
Здравствуйте, Nuzhny, Вы писали:
N>Я пишу на С++, признаю неудобства, но выбора как-то нет. N>Я пишу и на Питоне, он меня бесит, но выбора нет. N>Ещё есть код на С# для GUI, с которым надо интегрироваться и отлаживаться, подбешивает, но выбора нет.
Ты пишешь на питоне и шарпе, а плюсплюс
дозированно. Хотя мог бы и ++ отбросить в дозированных кусках. К тебе у меня нет вопросов.
Здравствуйте, DiPaolo, Вы писали:
DP>Его разрабатывали 40 лет назад. Тогда индустрия только начиналась. Языков до него было не так уж много.
Вот именно. Что когда автор плюсплюс предложил добавить классы к C, это было офигенно. Прошло 40 лет, появились и другие языки чтоб заполнить нишу плюсплюс. А сам плюсплюс скатился в с. гно.
S>Просто в C++ из-за обилия возможностей, это страшнее, чем в какой-нибудь условной Java.
Про что и речь.
С++ нужен только там, где он либо уже есть (и его не убрать), либо в очень ограниченных условиях применения. Для остального есть более современные языки.
S>Похоже, главная проблема C++ -- это отсутствие защиты от дурака.
Точно.
Именно так.
Теперь надо смягчить формулировку (чтоб не обидеть этих самых дураков), и получится такое: "язык слишком сложный". О чем, блин, я тут уже раз 5 написал.
Вот только не надо про "а мы дураков не пустим". Пустите, куда денетесь, — у инженеров власти над набором сотрудников как правило нет.
S>Ну а несостыковки в каких-то местах -- это следствие многолетней эволюции.
Именно потому — избыток сложности. Везде торчат рудименты и атавизмы. Про что и было много раз написано: если б не груз совместимости ("сложно переписать на новом языке"), давно бы уже С++ вынесли из большинства важных мест. Примерно как Фортран — он есть, там где нужно старый код гонять.
Здравствуйте, SkyDance, Вы писали:
S>>Похоже, главная проблема C++ -- это отсутствие защиты от дурака.
SD>Точно.
Ой ли?
SD>Именно так.
Можете показать язык, где такая защита есть?
SD>Пустите, куда денетесь,
Отучаемся говорить за всех.
На счет сложности: сопромат -- это непростая дисциплина, но почему-то никому и в голову не приходит утверждать, что сопромат говно, патамушта сильнасложно, и на задачи по расчету прочности конструкций и элементов двигателей почему-то берут именно тех, кто сопромат смог освоить.
Здравствуйте, SkyDance, Вы писали:
SD>Именно потому — избыток сложности.
Это только вершина айсберга, не самая страшная, имхо.
SD>Везде торчат рудименты и атавизмы.
Как и в любом языке возрастом постарше 30 лет. Будь то C++, или Python, или Perl.
SD>Про что и было много раз написано: если б не груз совместимости ("сложно переписать на новом языке"), давно бы уже С++ вынесли из большинства важных мест.
Но пока приходится жить в мире, в котором это счастливое событие еще не наступило. И пока у C++ реальными конкурентами на его поле являются чистый Си, Ada и Rust. И я не могу сказать, что Ada и Rust уступают C++ в сложности. В Rust-е так еще и от ООП с исключениями отказались, потому что сложность языка тогда бы зашкалила до предела, да и не факт, что вообще удалось бы подружить ООП с Rust-овскими принципами. Чистый Си, конечно же, много проще, но там другая проблема: писать на нем в разы сложнее, чем на C++.
Так что если у кого-то есть задача сделать свой условный nginx или ffmpeg, то C++ будет на первых позициях в очень и очень коротком шорт-листе подходящих языков.
SD>Примерно как Фортран — он есть, там где нужно старый код гонять.
Говорят, что ученые, которым приходится заниматься вычислениями (математики, физики, химики и т.д.), гораздо лучше справляются с современным Фортраном, чем с C++. Так что, предположу, что и здесь вы сильно не правы.
Тёмчик, тебя спросили, как RAII приводит к циклическим зависимостям. RAII, а не схема со счётчиком ссылок. Но тебе, видимо, слишком сложно понять разницу.
То же про UB. Проблема обработки ошибок в финализаторе — она общая. Она и в Java, и в C#, и везде, где есть финализатор, как бы он ни назывался.
Аё>Конечно, фанатики плюсплюс сразу пишут код правильно.
"Фанатики плюсплюс" (c), в отличие от Тёмчика, умеют читать и даже обдумывать прочтённое.
Здравствуйте, DiPaolo, Вы писали:
Аё>>Это да. Плюснутые вместо чтобы признать поломанность плюсплюсного дизайна, токсичат друг на дружку. DP>Ага. Так и представляю картину: сидит такой плюсовщик и ничего не делает в понедельник на работе. На вопросы начальства отвечает, что в выходные он осознал и признал "поломанность плюсплюсного дизайна", и отказывается работать в таких ужасных условиях: либо переписываем все на Го, либо давайте надбавку за вредные условия труда!
После чего он читает про defer-recover и про случаи когда nil != nil, вырывает остатки волос по всему телу и начинает требовать ещё в 2 раза больше
Здравствуйте, SkyDance, Вы писали:
SD>Точно. SD>Именно так. SD>Теперь надо смягчить формулировку (чтоб не обидеть этих самых дураков), и получится такое: "язык слишком сложный". О чем, блин, я тут уже раз 5 написал.
Как раз эта "сложность" устраняет большую часть того, что могут принести дураки, по сравнению, например, с C. И для этого нужно совсем немного дисциплины.
SD>Вот только не надо про "а мы дураков не пустим". Пустите, куда денетесь, — у инженеров власти над набором сотрудников как правило нет.
Зато, как правило, есть власть над принятием кода этих сотрудников. И живительные п..юли за полгода-год приводят к норме даже самых упрямых.
Здравствуйте, SkyDance, Вы писали:
SD>Именно потому — избыток сложности. Везде торчат рудименты и атавизмы. Про что и было много раз написано: если б не груз совместимости ("сложно переписать на новом языке"), давно бы уже С++ вынесли из большинства важных мест. Примерно как Фортран — он есть, там где нужно старый код гонять.
Ты отличный пример человека, который рассуждает о вкусе апельсинов, даже ни разу их не видев.
Фортран и сейчас активно используется потому, что
1) на нём не нужно думать о всяких указателях и прочей низкоуровневой специфике — что слишком сложно и не нужно для заметной части математиков.
2) он предельно напрямую отражает, кхм, формулы в виде языка.
3) по ряду особенностей (например, логика алиасинга) позволяет делать даже более эффективный код, чем аналогичный на C/C++.
C++ важен тем, что позволяет на уровне языка плюс _простые_ статические анализаторы форсировать политики, сводящие число багов к минимуму. C такого не позволяет.
S>На счет сложности: сопромат -- это непростая дисциплина, но почему-то никому и в голову не приходит утверждать, что сопромат говно, патамушта сильнасложно, и на задачи по расчету прочности конструкций и элементов двигателей почему-то берут именно тех, кто сопромат смог освоить.
А вот в софтостроении не так. Берут не тех, кто смог освоить, а тех, кто зубрил leetcode. Поэтому требуются более простые и дуракоустойчивые инструменты.
Более того, даже если брать только грамотных людей, более простые и комфортные инструменты ускоряют разработку. Меньше багов, быстрее релизы и т.п..
S>Но пока приходится жить в мире, в котором это счастливое событие еще не наступило.
Возвращаясь к сабжу: это как раз та причина, по которой дальнейшие вложения в С++ как технологию я бы предпочел ограничить. Иными словами, "уходить". Хотя бы для общего образования, поработать с другими языкам и фреймворками. Знание С/С++ все равно пригодится (ну, скажем, ту же JVM подтюнить, или баги какие в определенном варианте оной машины починить).
SD>>Примерно как Фортран — он есть, там где нужно старый код гонять. S>Говорят, что ученые, которым приходится заниматься вычислениями (математики, физики, химики и т.д.), гораздо лучше справляются с современным Фортраном, чем с C++. Так что, предположу, что и здесь вы сильно не правы.
Именно про это я и написал: Фортран есть там, где нужно гонять старый [ментальный] код. Где конкретные математики и физики уже умеют работать с Фортраном — поэтому и продолжают с ним работать.
Самое дорогое в нашей профессии — научиться, и научить других людей. Поэтому так и важны технологии, где учиться нужно меньше. Абстракции всякие там.
N>Зато, как правило, есть власть над принятием кода этих сотрудников.
Могу только позавидовать. Что я вижу в реале, так это отсутствие оной власти. Конечно, можно прокомментировать на тему "наши гайдлайны говорят делать вот так, а не вот так". Но реальной власти ("не пилите свой лас-вегас с блекджеком, используйте готовый вот отсюда") по факту может и не быть. Говорю о том, что вижу сам.