Haters gonna hate but with proofs
От: bc_kaya  
Дата: 12.01.19 14:59
Оценка: +2 -3 :)
Хотел бы поинтересоваться у знающих людей, за что весь мир недолюбливает плюсы. Конкретно у меня данный язык вызывает симпатию (возможно потому, что это мой самый первый более менее освоенный язык программирования);
Поделитесь впечатлением и опытом программирования с использованием языка С++?
Холивары просьба не разводить, иначе уйдём не в ту степь обсуждения

14.02.21 02:19: Перенесено из 'Священные войны'
Re: Haters gonna hate but with proofs
От: Слава  
Дата: 12.01.19 15:01
Оценка: +3 -9 :))) :))) :))) :))
Здравствуйте, bc_kaya, Вы писали:

_>за что весь мир недолюбливает плюсы.




PS: Минусующим правда глаза колет
Отредактировано 12.01.2019 19:29 Слава . Предыдущая версия .
Re: Haters gonna hate but with proofs
От: LaptevVV Россия  
Дата: 12.01.19 15:24
Оценка: 1 (1) +9 :))
Думаю, потому недолюбливает, что С++ требует предельной внимательности и аккуратности.
Большинство же людей (и, соответственно, программеров) с этим не дружат.
Мне С++ нравится. Это второй язык, красоту которого я понял (вернее, третий, поскольку второй был С)
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re: Haters gonna hate but with proofs
От: Kswapd Россия  
Дата: 12.01.19 15:29
Оценка: 3 (1) +7 :))
Здравствуйте, bc_kaya, Вы писали:

_>это мой самый первый более менее освоенный язык программирования


Синдром утёнка. После изучения других хороших языков (если что, C++ я считаю тоже хорошим) станет понятнее.

Совсем кратко: C++ страдает переусложнизмом.
Отредактировано 12.01.2019 15:57 Kswapd . Предыдущая версия .
Re: Haters gonna hate but with proofs
От: scf  
Дата: 12.01.19 15:37
Оценка: 9 (3) +5 :)
Здравствуйте, bc_kaya, Вы писали:

_>Хотел бы поинтересоваться у знающих людей, за что весь мир недолюбливает плюсы. Конкретно у меня данный язык вызывает симпатию (возможно потому, что это мой самый первый более менее освоенный язык программирования);

_>Поделитесь впечатлением и опытом программирования с использованием языка С++?
_>Холивары просьба не разводить, иначе уйдём не в ту степь обсуждения

Как человек, которого когда-то уговорили уйти с плюсов на яву и который очень навряд ли вернется:
— библиотеки и управление зависимостями. Для C/С++ есть всё, но найти, подключить и начать использовать чужие библиотеки — нетривиально.
— бедная стандартная библиотека. Хочется нормальную юникодную строку с поддержкой кодировок, регулярок и богатого набора операций. Хочется качественные многопоточные коллекции. Хочется нормальные функции для работы со временем с поддержкой часовых поясов. и т.д. и т.п.
— феерическая сложность языка и сложность написания качественного (устойчивого к утечкам памяти и exception-safe) кода
— значительно меньшая терпимость программы к ошибкам программиста — где managed язык отделается exception-ом, программу на C++ лучше прибить. Это ограничивает применимость в серверных приложениях
— типы ошибок, которых нет в managed языках: порча памяти, утечки памяти
— менее развитый тулинг для отладки, логгирования и обнаружения проблем
— время компиляции

Претензии отсортированы по убыванию важности для меня.
Re[2]: Haters gonna hate but with proofs
От: σ  
Дата: 12.01.19 16:48
Оценка: +11 -3 :)))
scf>- типы ошибок, которых нет в managed языках: утечки памяти

Re[2]: Haters gonna hate but with proofs
От: Marty Пират https://www.youtube.com/channel/UChp5PpQ6T4-93HbNF-8vSYg
Дата: 12.01.19 18:15
Оценка: +7
Здравствуйте, scf, Вы писали:


scf>Как человек, которого когда-то уговорили уйти с плюсов на яву и который очень навряд ли вернется:


Как человек, попробовавший яву — люблю плюсы еще больше
Маньяк Робокряк колесит по городу
Re[2]: Haters gonna hate but with proofs
От: Vain Россия google.ru
Дата: 12.01.19 19:17
Оценка:
Здравствуйте, scf, Вы писали:

cf>- типы ошибок, которых нет в managed языках: порча памяти, утечки памяти

Это, мягко говоря, не так.
Как минимум жаба, которая крутиться под апачей, под другой платформой, типа, дженкинса, имеет массу утечек, к примеру, в плагинах, так что сервак начинает тормозить и приходится перезапускать.
[In theory there is no difference between theory and practice. In
practice there is.]
[Даю очевидные ответы на риторические вопросы]
Re[3]: Haters gonna hate but with proofs
От: scf  
Дата: 12.01.19 20:04
Оценка: +6
Здравствуйте, Vain, Вы писали:

V>Здравствуйте, scf, Вы писали:


cf>>- типы ошибок, которых нет в managed языках: порча памяти, утечки памяти

V>Это, мягко говоря, не так.
V>Как минимум жаба, которая крутиться под апачей, под другой платформой, типа, дженкинса, имеет массу утечек, к примеру, в плагинах, так что сервак начинает тормозить и приходится перезапускать.

"Утечкой памяти" в С++ и в Java называют совершенно разные вещи — как по причине возникновения, так и по сложности поиска и устранения.
Re[4]: Haters gonna hate but with proofs
От: Vain Россия google.ru
Дата: 12.01.19 20:56
Оценка: +1 -1
Здравствуйте, scf, Вы писали:

scf>"Утечкой памяти" в С++ и в Java называют совершенно разные вещи — как по причине возникновения, так и по сложности поиска и устранения.

Снаружи это будет видно как неумеренный жор памяти и провал производительности, с той и с другой стороны. Какой это имеет значения, когда всю систему/пайплайн приходится ресетить?
[In theory there is no difference between theory and practice. In
practice there is.]
[Даю очевидные ответы на риторические вопросы]
Re[2]: Haters gonna hate but with proofs
От: scf  
Дата: 12.01.19 21:07
Оценка:
Здравствуйте, Слава, Вы писали:

С>PS: Минусующим правда глаза колет


Мы все-таки в 21 веке живем. Всё уже есть — и симпатичные стектрейсы с символами, и дампы с возможностью поднять отладчик, и отправка отчетов на сервер разработчику.
Re[2]: Haters gonna hate but with proofs
От: rudzuk  
Дата: 12.01.19 21:13
Оценка: 26 (3) +5 :))) :))) :))) :))) :))) :))) :))) :))
Здравствуйте, Слава, Вы писали:

С> _>за что весь мир недолюбливает плюсы.


С> https://i.stack.imgur.com/rGNam.jpg


С> PS: Минусующим правда глаза колет


https://stackoverflow.com/questions/20271220/access-violation-at-address-09a878ee-in-module

avalon/2.0.6
Re: Haters gonna hate but with proofs
От: Somescout  
Дата: 12.01.19 22:50
Оценка: +3 :)
Здравствуйте, bc_kaya, Вы писали:

_>Хотел бы поинтересоваться у знающих людей, за что весь мир недолюбливает плюсы. Конкретно у меня данный язык вызывает симпатию (возможно потому, что это мой самый первый более менее освоенный язык программирования);

_>Поделитесь впечатлением и опытом программирования с использованием языка С++?

* Шаблоны, а точнее обработка ошибок компиляции с ними. Говорят что сейчас ситуация лучше, но прекрасно помню моё (мягко скажу) удивление, когда на забытую ";" после объявления класса в заголовочном файле, компилятор выдал больше 200 строк ошибок, показывающих что угодно, только не точку с запятой.
* Я хотел бы не называть .h(pp)+.c(cpp) идиотской, поскольку (наверно) есть случаи когда это полезно, но всё-же система идиотская, для ускорения компиляции которой придумали всякого рода костыли, вроде precompiled headers.
* CPPшники никогда не признают что в языке хреновая стандартная библиотека, но она всё-же хреновая.
* Сам язык использующий указание значимых конструкция без ключевых слов, т.е. допустим copy constructor обозначается как (const type &var), пропустил "const" или "&" и внезапно у объекта нет копирующего конструктора, и компилятор это не смущает. Почему нельзя было ввести явное указание — хз. А есть ещё move constructor (и хрен знает что ещё — не слежу за текущей ситуацией), который опять же объявляется соглашением.
ARI ARI ARI... Arrivederci!
Re[3]: Haters gonna hate but with proofs
От: Somescout  
Дата: 12.01.19 22:52
Оценка:
Здравствуйте, rudzuk, Вы писали:

R>


Типа это всё поклёп и C++ никогда не выдаёт таких ошибок?

PS.

ARI ARI ARI... Arrivederci!
Отредактировано 12.01.2019 22:54 Somescout . Предыдущая версия .
Re[4]: Haters gonna hate but with proofs
От: wander  
Дата: 13.01.19 01:46
Оценка: +1
Здравствуйте, Somescout, Вы писали:

S>Здравствуйте, rudzuk, Вы писали:


R>>


S>Типа это всё поклёп и C++ никогда не выдаёт таких ошибок?


Типа С++ тут не при чем, это свойство среды исполнения.
Нет песочницы — получайте такие ошибки. На любом языке. И паскаль, и Си, и всякие
новомодные Rust`ы могут быть языками, на которых потенциально будут написаны приложения, падающие таким образом.
А раз это свойство не является целиком и полностью присущим только С++,
то и записывать его в причины ненависти как-то не стоит.
Отредактировано 13.01.2019 1:49 wander . Предыдущая версия .
Re: Haters gonna hate but with proofs
От: wander  
Дата: 13.01.19 02:03
Оценка: +5
Здравствуйте, bc_kaya, Вы писали:

_>Хотел бы поинтересоваться у знающих людей, за что весь мир недолюбливает плюсы.


Честно говоря я такого не замечал.
В интернете есть парочка статей с критикой и отзывы Торвальдса, критика эта разной степени адекватности.
Некоторые люди на форумах яро ругают ( можно сказать с пеной у рта ).
Но это разве весь мир?
По-моему нет.
За пределами интернета я очень и очень редко слышу негативные отзывы, общаюсь много с разработчиками из других организаций (и на других языках),
командировки бывают в разные совершенно места. Не видел тенденции негативной.

Я вообще не понимаю, чего ругать-то? Ну не подходит он если кому-то — ну возьмут они другой инструмент.
Появится для него адекватная замена в текущих нишах, ну заменят. Вон как в десктопной винды его выгнали.
Разве кто-то умер от этого?
Честное слово, посмотришь на этих ругателей — фанатики. Чего их слушать-то?
Re[2]: Haters gonna hate but with proofs
От: LaptevVV Россия  
Дата: 13.01.19 02:20
Оценка: +1 -1
scf>- библиотеки и управление зависимостями. Для C/С++ есть всё, но найти, подключить и начать использовать чужие библиотеки — нетривиально.
Эт смотря какие. Qt работает из коробки.
scf>- бедная стандартная библиотека. Хочется нормальную юникодную строку с поддержкой кодировок, регулярок и богатого набора операций. Хочется качественные многопоточные коллекции. Хочется нормальные функции для работы со временем с поддержкой часовых поясов. и т.д. и т.п.
В стандарте С++17 все это есть.
В стандарте С++14 не было только многопоточных контейнеров.
scf>- феерическая сложность языка и сложность написания качественного (устойчивого к утечкам памяти и exception-safe) кода
Феерическая сложность ТОЛЬКО при ГЛУБОКОМ использовании шаблонов.
Без шаблонов С++ не сложнее паскаля.
scf>- значительно меньшая терпимость программы к ошибкам программиста — где managed язык отделается exception-ом, программу на C++ лучше прибить. Это ограничивает применимость в серверных приложениях
да, писать на С++ — не для среднего программиста...
scf>- типы ошибок, которых нет в managed языках: порча памяти, утечки памяти
Ну, сказть ничего не могу — не писал серьезных программ на других языках.
Но по опыту могу сказать, что в других языках — свои проблемы...
scf>- менее развитый тулинг для отладки, логгирования и обнаружения проблем
Не понял? Мне так отладчик нужен ОЧЕНЬ редко...
scf>- время компиляции
Зато время работы!
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re[2]: Haters gonna hate but with proofs
От: netch80 Украина http://netch80.dreamwidth.org/
Дата: 13.01.19 07:58
Оценка: +1
Здравствуйте, Somescout, Вы писали:

S>* Шаблоны, а точнее обработка ошибок компиляции с ними. Говорят что сейчас ситуация лучше, но прекрасно помню моё (мягко скажу) удивление, когда на забытую ";" после объявления класса в заголовочном файле, компилятор выдал больше 200 строк ошибок, показывающих что угодно, только не точку с запятой.


200 — ещё мало. Я четыре тысячи получал (и то, gcc сказал, что он урезал самые многословные куски).
boost::spirit, в semantic action, вписав функцию, забыл удалить прежнее простое выражение.
Дочитав до конца, я таки понял с точностью до строки, где случилась проблема, но не её суть

S>* CPPшники никогда не признают что в языке хреновая стандартная библиотека, но она всё-же хреновая.


Тут таки надо какое-то обоснование — чего именно не хватает или что не так сделано.

S>* Сам язык использующий указание значимых конструкция без ключевых слов, т.е. допустим copy constructor обозначается как (const type &var), пропустил "const" или "&" и внезапно у объекта нет копирующего конструктора, и компилятор это не смущает. Почему нельзя было ввести явное указание — хз. А есть ещё move constructor (и хрен знает что ещё — не слежу за текущей ситуацией), который опять же объявляется соглашением.


Согласен. Но начинать надо с отсутствия слов var и func.
The God is real, unless declared integer.
Re[3]: Haters gonna hate but with proofs
От: netch80 Украина http://netch80.dreamwidth.org/
Дата: 13.01.19 08:00
Оценка: +3
Здравствуйте, scf, Вы писали:

scf>Мы все-таки в 21 веке живем. Всё уже есть — и симпатичные стектрейсы с символами, и дампы с возможностью поднять отладчик, и отправка отчетов на сервер разработчику.


И фиг они чем помогут в ситуации "структуры порушены несколько минут назад совершенно другим кодом, каким — ХЗ".
The God is real, unless declared integer.
Re: Haters gonna hate but with proofs
От: netch80 Украина http://netch80.dreamwidth.org/
Дата: 13.01.19 08:05
Оценка: 47 (9) +6 -3 :)
Здравствуйте, bc_kaya, Вы писали:

_>Хотел бы поинтересоваться у знающих людей, за что весь мир недолюбливает плюсы. Конкретно у меня данный язык вызывает симпатию (возможно потому, что это мой самый первый более менее освоенный язык программирования);

_>Поделитесь впечатлением и опытом программирования с использованием языка С++?
_>Холивары просьба не разводить, иначе уйдём не в ту степь обсуждения

1. Основная маса проблем C++ происходят из синтаксического наследия, а именно, синтаксиса объявлений, доставшегося из C, а там — по инерции из предшественников.
Когда пишешь "int i" вместо "var i: int" это удобно. Но немасштабируемо. Уже конструкции типа "int (*f)(void)" вызывают проблемы понимания и необходимость тренировки выворачивать парсер в мозгу. Усложнение этого хотя бы до уровня "функция, возвращающая указатель на функцию" доводит до того, что нормально пишется только с промежуточным typedef.
Когда из этого возникает most vexing parse, а затыкается мерами типа {} в инициализации (C++11); когда ты не знаешь заранее смысл синтаксической конструкции, написанной тобой (или такое с похожим результатом) и он может меняться от непредсказуемых заранее факторов...
Обратный сишному порядок объявлений (назовём его "паскалевским") многословнее, но принципиально полезнее для сложных конструкций.

2. Калечные эффекты с undefined behavior в местах, совершенно неожиданных для многих и особенно тех, кто не прошёл неплановые курсы "здесь водятся драконы". Арифметика
Автор: Кодт
Дата: 18.06.14
. Алиасинг. Другие оптимизации. Ещё несколько похожих эффектов.

Самое тяжёлое то, что, да, такие степени свободы компилятора полезны для оптимизации, но само оно ускоряет с пользой дай бог чтобы 5% кода, а бороться с ними приходится и в оставшихся 95%. По-нормальному надо было бы регулировать все эти суперфичи контекстными опциями, с умолчанием на запрещение свободы компилятору.

3. Таки да, шаблоны, а именно — попытка их уложить в те же синтаксически ущербные рамки и "не вводить лишних сущностей", приводящая к фокусам типа std::enable_if.

4. Необходимость одновременно мыслить на нескольких разных уровнях — от высот рекурсивных шаблонов до укладки битов в памяти.

Всё сказанное выше — результат исторического развития методом "каждый раз шаг, полностью логичный из предыдущего состояния, но в новом направлении".

Здесь ещё обсуждаются следствия прямого управления памятью, но я их не включаю в этот набор — они будут неизбежны для любого языка с такими возможностями.
The God is real, unless declared integer.
Отредактировано 13.01.2019 8:50 netch80 . Предыдущая версия .
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.