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 . Предыдущая версия .
Re[5]: Haters gonna hate but with proofs
От: Kswapd Россия  
Дата: 13.01.19 08:24
Оценка: +4 :)
Здравствуйте, wander, Вы писали:

W>На любом языке. И паскаль, и Си, и всякие

W>новомодные Rust`ы могут быть языками, на которых потенциально будут написаны приложения, падающие таким образом.

Да, только в некоторых языках надо сильно постараться, чтобы выстрелить себе в ногу, а в C++ это получается легко, незаметно и непринуждённо. На любом языке можно творить хорошие качественные приложения. Только себестоимость разработки будет разная. А у С++ она заметно выше, чем у некоторых других языков со сравнимыми возможностями. Всё просто: бизнес решает.
Re[2]: Haters gonna hate but with proofs
От: jamesq Россия  
Дата: 13.01.19 08:56
Оценка: +4 :)
Мои 5 копеек про достоинства C++
Re[3]: Haters gonna hate but with proofs
От: Somescout  
Дата: 13.01.19 11:32
Оценка:
Здравствуйте, jamesq, Вы писали:

J>Мои 5 копеек про достоинства C++

J>Возможность работать на системах с очень ограниченными ресурсами, вроде микроконтроллеров. Яву вы туда не запихнете.

Если не ошибаюсь, J2ME и NetCompact позволяли работать на очень слабых системах. А на совсем слабых возможности c++ точно не нужны (если каждая типизация шаблона будет создавать отдельный шмат кода — то в микросистемах оно только вредит).

J>Возможность написать класс "по кусочкам". Т.е. я сначала пишу определение самого класса, без определений его методов. А потом, ниже определяю все его методы. Очень удобно читать код. Не знаю про Яву, в Питоне надо писать все одним блоком, и когда в класс распухает на много строк, становится очень неудобно иметь со всем этим дело. В C# вроде аналогичная ситуация.


До возможностей современных языков не дотягивает: в C# вы можете нарезать класс на столько partial реализаций, сколько вам будет угодно, при необходимости отдельно реализуя каждый интерфейс в своём partial-классе.


J>То, что есть отдельные .h и .cpp файлы, позволяет работать над исходниками по-отдельности. Перекомпилировать только то, что требуется. Если я поменял только .cpp файл, перекомпилируется только он.


Зато если поменялся .h(pp) файл перекомпилируется пол проекта. В том же C# или Java изменение одного класса влияет исключительно на зависимые от него сборки, и то только в том случае если изменился интерфейс.

J>Считаю, что маленькая стандартная библиотека — преимущество. Она может быть реализована на обширнейшем количестве систем.

J>Я бы еще ее подсократил, или расчленил на опциональные компоненты. Например, не везде существуют файлы и потоки ввода/вывода — взять те же микроконтроллеры. В оконных приложениях Windows, потоки cout/cin не имеют смысла. Я бы даже time.h сделал бы опциональным. Если у вас есть обширная стандартная библиотека, она влечет зависимости от наличия фич платформы, которые не везде присутствуют. Хотя опять же, опциональность компонентов библиотеки может спасти ситуацию.

Напоминаю, что CPPшники гордятся тем, что "платишь только за то что используешь" — то есть ширина и глубина стандартной библиотеки не мешает использовать только те функции из неё, которые необходимы. Остальное отрежет линкер.

ЗЫ. Просьба: не используйте список — сайт глючит при цитировании списка (например все мои ответы помечаются как цитаты, даже если сам тег "list" убран), приходится убирать все его теги.
ARI ARI ARI... Arrivederci!
Отредактировано 13.01.2019 11:34 Somescout . Предыдущая версия . Еще …
Отредактировано 13.01.2019 11:33 Somescout . Предыдущая версия .
Re[4]: Haters gonna hate but with proofs
От: wander  
Дата: 13.01.19 12:27
Оценка: -1
Здравствуйте, Somescout, Вы писали:

S> если каждая типизация шаблона будет создавать отдельный шмат кода — то в микросистемах оно только вредит.

У вас значительно устаревшие данные по этому вопросу. Примерно на уровне 1998 года.
Сейчас и в компиляторах и в самом языке есть возможности по устранению оверхеда связанного с генерацией кода по шаблону.
Re[2]: Haters gonna hate but with proofs
От: Privalov  
Дата: 13.01.19 12:38
Оценка: +1
Здравствуйте, LaptevVV, Вы писали:

LVV>Мне С++ нравится. Это второй язык, красоту которого я понял (вернее, третий, поскольку второй был С)


А первый? Фортран?
Re[3]: Haters gonna hate but with proofs
От: andyp  
Дата: 13.01.19 14:52
Оценка: +2
Здравствуйте, Privalov, Вы писали:

P>А первый? Фортран?


Без иронии, Фортран вполне себе был и остается прекрасен кое в чем. Единственной претензией к нему может быть желание писать нечто, выходящее за рамки этого "кое-что". А при том обилии листингов на Фортране в журналах ACM, он останется с нами еще очень надолго.
Re[4]: Haters gonna hate but with proofs
От: Privalov  
Дата: 13.01.19 15:03
Оценка:
Здравствуйте, andyp, Вы писали:

A>Без иронии, Фортран вполне себе был и остается прекрасен кое в чем. Единственной претензией к нему может быть желание писать нечто, выходящее за рамки этого "кое-что". А при том обилии листингов на Фортране в журналах ACM, он останется с нами еще очень надолго.


Дак и я без иронии. В свое время я успел черкнуть на нем пару строк. Лучше инструмента, чтобы писать матан, я не знаю.
Re[5]: Haters gonna hate but with proofs
От: andyp  
Дата: 13.01.19 15:24
Оценка:
Здравствуйте, Privalov, Вы писали:

P>Лучше инструмента, чтобы писать матан, я не знаю.


Многие люди, которые эти самые алгоритмы придумывают, тоже считают его вполне достаточным. Да и вычислительные либы живут несколько десятилетий, всё это время в них вылавливают ошибки, так что на существующий момент они на высоком уровне безглючности. Даже с тупым переписыванием на С видимо связываться боятся, хотя наверняка у многих наверняка руки чешутся
Re[3]: Haters gonna hate but with proofs
От: LaptevVV Россия  
Дата: 13.01.19 16:55
Оценка:
P>А первый? Фортран?
Упаси Господи!
Хотя я его сдал досрочно и на отлично.
Первый — это Алгол-68...
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re[3]: Haters gonna hate but with proofs
От: Слава  
Дата: 13.01.19 17:44
Оценка:
Здравствуйте, jamesq, Вы писали:

J>Возможность работать на системах с очень ограниченными ресурсами, вроде микроконтроллеров. Яву вы туда не запихнете.


Туда можно запихать Java Card и Аду. Кстати, запихивание в систему с очень ограниченными ресурсами — это скорее про Си.

J>Возможность написать класс "по кусочкам". ... Не знаю про Яву, в Питоне надо писать все одним блоком, и когда в класс распухает на много строк, становится очень неудобно иметь со всем этим дело. В C# вроде аналогичная ситуация.


Так узнали бы. В яве-то есть интерфейсы, но это ладно, в C# есть вообще partial.

J>То, что есть отдельные .h и .cpp файлы, позволяет работать над исходниками по-отдельности. Перекомпилировать только то, что требуется. Если я поменял только .cpp файл, перекомпилируется только он.


Или не только он. pre-compiled headers не от хорошей жизни появились, макросы до сих пор глобальны, модулей как не было, так и нет.
Re[4]: Haters gonna hate but with proofs
От: Privalov  
Дата: 13.01.19 17:56
Оценка: +1
Здравствуйте, LaptevVV, Вы писали:

LVV>Упаси Господи!


Неожиданная, признаюсь, реакция. А почему?

LVV>Хотя я его сдал досрочно и на отлично.


А я — в срок и на хорошо. Подвел меня вопрос про вычисляемые и назначаемые GOTO. Мы на лабах задачки решали, а не отрабатывали операторы языка. Потому я остался полным теоретиком в этом вопросе. Правда, в реальном коде я эти GOTO видел дважды, может, трижды.

LVV>Первый — это Алгол-68...


Ну и где сейчас тот Алгол? А Фортран — живее всех живых. И переносимость у него такая, что Си не не снилась.
Re[6]: Haters gonna hate but with proofs
От: Privalov  
Дата: 13.01.19 17:59
Оценка: 2 (1)
Здравствуйте, andyp, Вы писали:

A>Даже с тупым переписыванием на С видимо связываться боятся, хотя наверняка у многих наверняка руки чешутся


И мы через это прошли. Оказалось гораздо проще и легче сделать переходники от Си к Фортрану и обратно. Единственное, что не заработало — доступ к безымянному COMMON-блоку. Но такого нормальные люди не допускают. Процедура в 5000 строк — сколько угодно, а безымянных COMMON я не видел ни разу.
Re[2]: Haters gonna hate but with proofs
От: ononim  
Дата: 13.01.19 18:56
Оценка: :)
scf>- бедная стандартная библиотека. Хочется нормальную юникодную строку
std::wstring

scf>с поддержкой кодировок,

std::codecvt&co

scf>регулярок

std::regex&co

scf>и богатого набора операций.

http://memesmix.net/media/created/8hjlm0.jpg

scf>Хочется качественные многопоточные коллекции.

Берем обычный качественный set, оборачиваем операции с ним mutex-ом и получаем качественный многопоточный set. Ну и подсказывают выше что в С++17 оно есть, но я еще это не юзал.

scf>Хочется нормальные функции для работы со временем с поддержкой часовых поясов. и т.д. и т.п.

std::chrono::time_zone

scf>- феерическая сложность языка и сложность написания качественного (устойчивого к утечкам памяти и exception-safe) кода

Решается RAII и умными указателями, правда постоянно приходится объяснять шериданам что они не правы.

scf>- значительно меньшая терпимость программы к ошибкам программиста — где managed язык отделается exception-ом, программу на C++ лучше прибить. Это ограничивает применимость в серверных приложениях

В результата java приложения этими ошибками сыпят. Ну а че — ведь можно же не прибиваться.

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

Подавляющее ошибок порча памяти в современном С++ коде (см через пункт выше) происходят изза race condition. И тут java ничем не лучше С++.

scf>утечки памяти

Ну да конечно. А потом удивляются.

scf>- менее развитый тулинг для отладки, логгирования и обнаружения проблем

На вкус и цвет.. Я раньше юзал 100500 логгеров, писал свои, с преферансом и поэтессами, теперь все больше довольствуюсь стандартным выводом.
Как много веселых ребят, и все делают велосипед...
Отредактировано 13.01.2019 19:18 ononim . Предыдущая версия .
Re[5]: Haters gonna hate but with proofs
От: Somescout  
Дата: 13.01.19 19:02
Оценка:
Здравствуйте, wander, Вы писали:

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


S>> если каждая типизация шаблона будет создавать отдельный шмат кода — то в микросистемах оно только вредит.

W>У вас значительно устаревшие данные по этому вопросу. Примерно на уровне 1998 года.
W>Сейчас и в компиляторах и в самом языке есть возможности по устранению оверхеда связанного с генерацией кода по шаблону.

Читал я обсуждение подобного в этом же форуме: во-первых фича далеко не 98 года, а весьма недавняя, во-вторых работает не всегда и не везде.
ARI ARI ARI... Arrivederci!
Re[2]: Haters gonna hate but with proofs
От: ononim  
Дата: 13.01.19 19:08
Оценка: 2 (1) +3 :))
K>Совсем кратко: C++ страдает переусложнизмом.
Это не то что переусложнизм, это черезчур-мультипарадигменность.
В результате когда в С++ приходят люди с других ЯП они сразу начинают писать в той парадигме к которой привыкли.
С-шники хреначат на С-с-классами, кладя болт на исключения, джависты хреначат свои любимые try..catch, удивляясь отсутсвию finally и т.п. Беда С++ в том что он этот зоопарк позволяет.
Как говорится 40% С++ знает почти каждый. Проблема в том что это всегда разные 40%.
Как много веселых ребят, и все делают велосипед...
Re[4]: Haters gonna hate but with proofs
От: AleksandrN Россия  
Дата: 13.01.19 20:20
Оценка: +1
Здравствуйте, netch80, Вы писали:

N>И фиг они чем помогут в ситуации "структуры порушены несколько минут назад совершенно другим кодом, каким — ХЗ".


Тут помогут инструменты типа valgrind.
Re[6]: Haters gonna hate but with proofs
От: wander  
Дата: 13.01.19 20:24
Оценка: -1
Здравствуйте, Somescout, Вы писали:

S>Читал я обсуждение подобного в этом же форуме: во-первых фича далеко не 98 года, а весьма недавняя, во-вторых работает не всегда и не везде.


Я разве говорил, что фича 98 года? Какой вы странный ей-богу.
Что за привычка выкидывать из фразы 10 важных слов, и отвечать только на те, которые удобно?

Еще раз (последний): в 98 году (или около того) действительно было множество проблем с шаблонами,
можно было ненароком сильно раздуть бинарник.
Всякие VC++6, GCC 2.95 и т.п. У нас до сих пор есть legacy проекты, где используются эти компиляторы и видно насколько они отличаются
от современных и по качеству генерации кода в общем и по работе с шаблонами в частности.

А что касается именно фичи, то да, она появилась только в С++11. Но это уже было 8 лет назад, прошу заметить.
Но я писал не только про эту фичу, если внимательно прочитать, а в целом про поддержку шаблонов компиляторами и, что немаловажно, линковщиками.

Поэтому сейчас, если не заниматься чем-то монструозным на шаблонах, вроде Boost.Spirit, т.е. обычному программисту, весьма трудно будет
заставить инструментарий строить раздутый код.
Re[7]: Haters gonna hate but with proofs
От: Somescout  
Дата: 14.01.19 04:56
Оценка: +1 -1 :)
Здравствуйте, wander, Вы писали:

S>>Читал я обсуждение подобного в этом же форуме: во-первых фича далеко не 98 года, а весьма недавняя, во-вторых работает не всегда и не везде.


W>Я разве говорил, что фича 98 года?


Да, ваше сообщение вполне однозначно: "У вас значительно устаревшие данные по этому вопросу. Примерно на уровне 1998 года".

W>Какой вы странный ей-богу.


Я действительно жалею что на сайте нет игнор листа.
ARI ARI ARI... Arrivederci!
Re[2]: Haters gonna hate but with proofs
От: kaa.python Ниоткуда РСДН профессионально мёртв и завален ватой.
Дата: 14.01.19 05:47
Оценка: +1
Здравствуйте, netch80, Вы писали:

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


Все вышесказанное верно, но тут есть интересный момент, про который часто забывают говоря о C++ – санитарайзеры. Я наугад взял два примера из приведенных тобой и собрал следующим образом:
clang++ -fsanitize=undefined main.cpp

Пример с арифметикой
Автор: Кодт
Дата: 18.06.14

test> ./a.out                              
0 : 0 : 27
1 : 1000000000 : 82
2 : 2000000000 : 41
main.cpp:8:38: runtime error: signed integer overflow: 3 * 1000000000 cannot be represented in type 'int'
3 : -1294967296 : 124
4 : -294967296 : 62
5 : 705032704 : 31
6 : 1705032704 : 94
7 : -1589934592 : 47
8 : -589934592 : 142
9 : 410065408 : 71


Пример с оптимизацией
test> ./a.out                              
UndefinedBehaviorSanitizer:DEADLYSIGNAL
==2982==ERROR: UndefinedBehaviorSanitizer: SEGV on unknown address 0x000000000000 (pc 0x0001078c7ef1 bp 0x7ffee83389a0 sp 0x7ffee8338980 T298609)
==2982==The signal is caused by a READ memory access.
==2982==Hint: address points to the zero page.
    #0 0x1078c7ef0 in main (a.out:x86_64+0x100000ef0)

==2982==Register values:
rax = 0x0000000000000000  rbx = 0x0000000000000000  rcx = 0x0000000000000000  rdx = 0x00007ffee83389d0  
rdi = 0x0000000000000001  rsi = 0x00007ffee83389c0  rbp = 0x00007ffee83389a0  rsp = 0x00007ffee8338980  
 r8 = 0x0000000000000000   r9 = 0xffffffff00000000  r10 = 0x00007fff9828f0c8  r11 = 0x00007fff9828f0d0  
r12 = 0x0000000000000000  r13 = 0x0000000000000000  r14 = 0x0000000000000000  r15 = 0x0000000000000000  
UndefinedBehaviorSanitizer can not provide additional info.
==2982==ABORTING


Так что с одной стороны проблемы есть, наследие тяжелое, грабли тщательно прикрыты листьями и т.д. С другой стороны, знать наизусть про то, где и как разложены грабли не надо, надо писать юнит-тесты и гонять их под всеми имеющимися санитайзерами и в общем случае проблемы не будет, ну или она будет сопоставима по сложности с проблемами в управляемых языках.
Re[3]: Haters gonna hate but with proofs
От: netch80 Украина http://netch80.dreamwidth.org/
Дата: 14.01.19 06:50
Оценка: +1
Здравствуйте, kaa.python, Вы писали:

KP>Все вышесказанное верно, но тут есть интересный момент, про который часто забывают говоря о C++ – санитарайзеры. Я наугад взял два примера из приведенных тобой и собрал следующим образом:


Так это примеры. Они намеренно очевидны, и санитайзеры опознают их ситуации. Я же говорю, что для подавляющего большинства кода нужен не какой-то санитайзер особый, а просто постоянно действующий контроль и более очевидные правила. Например, с тем же переполнением — если санитайзер не заподозрил проблему, то он допустит сложение со скрытым переполнением, а по-нормальному должен проверить и сигнализировать ошибку.

Причём он должен давать не тяжёлый вылет (типичный санитайзер генерирует недопустимую процессорную инструкцию), а нормальное исключение или его выбранный аналог (например, установку переменной — флага ошибки).

И эти санитайзеры пока что есть ой далеко не везде, никакой стандарт их не требует. (Неудивительно.)

KP>Так что с одной стороны проблемы есть, наследие тяжелое, грабли тщательно прикрыты листьями и т.д. С другой стороны, знать наизусть про то, где и как разложены грабли не надо, надо писать юнит-тесты и гонять их под всеми имеющимися санитайзерами и в общем случае проблемы не будет, ну или она будет сопоставима по сложности с проблемами в управляемых языках.


Нет, совсем как в управляемых — ты не добьёшься.
То, что санитайзеры, если доступны, должны входить в базовый набор инструментов — да, согласен.
Но это как те assert'ы, которые в релизном варианте не включаются. В 70-х, может, такой подход был и нормален. Сейчас — нет, нормально это когда 95% таких ассертов всё равно оставлены, а убраны только там, где критично по скорости.
The God is real, unless declared integer.
Re[5]: Haters gonna hate but with proofs
От: netch80 Украина http://netch80.dreamwidth.org/
Дата: 14.01.19 07:23
Оценка: 5 (1) +1
Здравствуйте, AleksandrN, Вы писали:

N>>И фиг они чем помогут в ситуации "структуры порушены несколько минут назад совершенно другим кодом, каким — ХЗ".


AN>Тут помогут инструменты типа valgrind.


Спасибо, кэп. Но:
1. Часть проблем — да, выловят. До конца — нет, и valgrind не поможет в случае сложных ситуаций. Говорю по своему опыту.
2. Вы его видели где-то за пределами Linux? У меня сейчас всё на Linux, ok. А если кому-то таки надо под другое писать?
3. Вместо того, чтобы сначала плодить проблемы работы с памятью, а потом их ловить — причём может оказаться, что диверсант сидит в чужом проприетарном коде, и ты фиг запинаешь его авторов исправить свою ошибку — можно изначально использовать инструмент, у которого этих проблем нет.
Собственно на этом выезжают managed среды, начиная с BASIC и Java: какой бы говнокод на них не писался и не импортировался, он не доведёт обстановку до совсем нерабочего состояния, если не использовать спец. средства, которые легко детектируются. А в unmanaged — наоборот.
The God is real, unless declared integer.
Re[6]: Haters gonna hate but with proofs
От: rg45 СССР  
Дата: 14.01.19 07:47
Оценка: +8 :))
Здравствуйте, netch80, Вы писали:

N>Собственно на этом выезжают managed среды, начиная с BASIC и Java: какой бы говнокод на них не писался и не импортировался, он не доведёт обстановку до совсем нерабочего состояния, если не использовать спец. средства, которые легко детектируются. А в unmanaged — наоборот.


Все зашибись, конечно, только разработчики managed сред как-то выпустили из виду, что ресурсы, в общем случае, это не только память. И как только дело доходит до разного рода хэндлов системы, разработчики управляемых языков начинают выглядеть достаточно бледно, ибо организовать RAII, равнозначный плюсовому, невозможно, пользуясь недодеструкторами этих языков. Образно говря, сделали красивый памперс, но на всю попу его не хватает.
--
Не можешь достичь желаемого — пожелай достигнутого.
Отредактировано 14.01.2019 7:49 rg45 . Предыдущая версия .
Re[7]: Haters gonna hate but with proofs
От: kaa.python Ниоткуда РСДН профессионально мёртв и завален ватой.
Дата: 14.01.19 07:56
Оценка:
Здравствуйте, rg45, Вы писали:

R>Все зашибись, конечно, только разработчики managed сред как-то выпустили из виду, что ресурсы, в общем случае, это не только память. И как только дело доходит до разного рода хэндлов системы, разработчики управляемых языков начинают выглядеть достаточно бледно, ибо организовать RAII, равнозначный плюсовому, невозможно, пользуясь недодеструкторами этих языков. Образно говря, сделали красивый памперс, но на всю попу его не хватает.


Не так элегантно как в C++, но всё же работает достаточно надежно:
f := createFile("/tmp/defer.txt")
defer closeFile(f)
writeFile(f)
Re[8]: Haters gonna hate but with proofs
От: rg45 СССР  
Дата: 14.01.19 07:59
Оценка:
Здравствуйте, kaa.python, Вы писали:

KP>Не так элегантно как в C++, но всё же работает достаточно надежно:

KP>
KP>f := createFile("/tmp/defer.txt")
KP>defer closeFile(f)
KP>writeFile(f)
KP>


А как на счет мемберов классов? "Не так элегантно" — это слишком мягко сказано.
--
Не можешь достичь желаемого — пожелай достигнутого.
Re[8]: Haters gonna hate but with proofs
От: rg45 СССР  
Дата: 14.01.19 08:06
Оценка: +1
Здравствуйте, kaa.python, Вы писали:

KP>Не так элегантно как в C++, но всё же работает достаточно надежно:

KP>
KP>f := createFile("/tmp/defer.txt")
KP>defer closeFile(f)
KP>writeFile(f)
KP>


И еще одно важное отличие. На C++ у меня, как у разработчика какой-нибудь библиотеки, есть возможность сделать ошибку юзера невозможной (пардон за каламбур):

std::shared_ptr<HANDLE> createFile(const boost::file_system::path&);


В твоем же случае надежность работы программы полностью отдана на откуп тому самому юзверю.
--
Не можешь достичь желаемого — пожелай достигнутого.
Re[9]: Haters gonna hate but with proofs
От: kaa.python Ниоткуда РСДН профессионально мёртв и завален ватой.
Дата: 14.01.19 08:31
Оценка: +2
Здравствуйте, rg45, Вы писали:

R>И еще одно важное отличие. На C++ у меня, как у разработчика какой-нибудь библиотеки, есть возможность сделать ошибку юзера невозможной (пардон за каламбур):

R>
R>std::shared_ptr<HANDLE> createFile(const boost::file_system::path&);
R>

R>В твоем же случае надежность работы программы полностью отдана на откуп тому самому юзверю.

А в этих случаях
Автор: netch80
Дата: 13.01.19
надежность работы программы на откуп кому отдана?

P.S. в теории согласен с твоими доводами, но за последнии два года я на практике пришел к странному выводу. Несмотря на то, что в теории на C++ можно написать более надежный код благодаря RAII, разделяемым указателям и прочее, на Go он волшебным образом содержит меньше ошибок и проще поддерживается, пусть даже тут есть только defer.
Re[10]: Haters gonna hate but with proofs
От: rg45 СССР  
Дата: 14.01.19 08:46
Оценка: +5 :)))
Здравствуйте, kaa.python, Вы писали:

KP>А в этих случаях
Автор: netch80
Дата: 13.01.19
надежность работы программы на откуп кому отдана?


То есть, вопрос владения/освобождения закрыт, правильно я понимаю? Переходим к другим вопросам — "дегенеративного сишного говносинтаксиса" и "невероятной переусложненности С++? Ну, дальше без меня, если можно. Я уже не единожды высказывал свою точку зрения: в каждом инструменте разработки есть свои сильные и слабые стороны и настоящий профессионал просто умеет правильно сочетать их извлекать пользу, а не устраивать холивары "какие травмы я получил, дотронувшись до шаблонов".
--
Не можешь достичь желаемого — пожелай достигнутого.
Отредактировано 14.01.2019 8:54 rg45 . Предыдущая версия .
Re[11]: Haters gonna hate but with proofs
От: kaa.python Ниоткуда РСДН профессионально мёртв и завален ватой.
Дата: 14.01.19 09:15
Оценка: +1
Здравствуйте, rg45, Вы писали:

R>Здравствуйте, kaa.python, Вы писали:


KP>>А в этих случаях
Автор: netch80
Дата: 13.01.19
надежность работы программы на откуп кому отдана?


R>То есть, вопрос владения/освобождения закрыт, правильно я понимаю?


Ничего подобного, я говорю о том, что за пределами освобождения НЕпамяти есть гора других толком не решённых проблем. Ну а возможность забыть вызвать defer вполне сопоставима с возможностью забыть завернуть handle в умный указатель. По моим наблюдениям, не всякий программист работающий с C++ вообще знает о такой возможности.
Re[12]: Haters gonna hate but with proofs
От: rg45 СССР  
Дата: 14.01.19 09:25
Оценка:
Здравствуйте, kaa.python, Вы писали:

KP>Ничего подобного, я говорю о том, что за пределами освобождения НЕпамяти есть гора других толком не решённых проблем. Ну а возможность забыть вызвать defer вполне сопоставима с возможностью забыть завернуть handle в умный указатель. По моим наблюдениям, не всякий программист работающий с C++ вообще знает о такой возможности.


Не сопоставима. Ибо, как правило, функции и классы используются существенно большее количество раз, чем реализуются, а значит, и вероятность допустить ошибку при использовании существенно выше, чем при реализации, это во-первых. А главное, у ОПЫТНОГО разработчика C++ есть возможность недопустить некоторые грубые ошибки в исплользовании разработанных им функций и классов, а у ОПЫТНОГО разработчика Java и C# такой возможности нет.

P.S. При этом заметь, я не иду в атаку с криками "Долой C#!" и "Java — отстой!". Повторюсь: в каждом инструменте есть свои слабые и сильные стороны и нужно просто уметь их исполльзовать.
--
Не можешь достичь желаемого — пожелай достигнутого.
Отредактировано 14.01.2019 11:29 rg45 . Предыдущая версия . Еще …
Отредактировано 14.01.2019 9:42 rg45 . Предыдущая версия .
Re[7]: Haters gonna hate but with proofs
От: netch80 Украина http://netch80.dreamwidth.org/
Дата: 14.01.19 09:39
Оценка:
Здравствуйте, rg45, Вы писали:

N>>Собственно на этом выезжают managed среды, начиная с BASIC и Java: какой бы говнокод на них не писался и не импортировался, он не доведёт обстановку до совсем нерабочего состояния, если не использовать спец. средства, которые легко детектируются. А в unmanaged — наоборот.


R>Все зашибись, конечно, только разработчики managed сред как-то выпустили из виду, что ресурсы, в общем случае, это не только память. И как только дело доходит до разного рода хэндлов системы, разработчики управляемых языков начинают выглядеть достаточно бледно, ибо организовать RAII, равнозначный плюсовому, невозможно, пользуясь недодеструкторами этих языков. Образно говря, сделали красивый памперс, но на всю попу его не хватает.


Я знаю. На прошлой неделе боролся с этим на питоне У CPython одна логика, у PyPy — другая, и скрестить их можно только если по-разному в них работать. Финального решения ещё не сделал, вот закончу с другой частью и вернусь к той.
Но реально получается, что через finally можно побороться с заметной частью этих случаев, через слабые ссылки — с другой, через явные деструкторы — с третьей, и в подавляющем большинстве случаев выход находится. В разных языках, да, он сильно по-разному тут сделан, иногда удорожает реализацию.

Но для тех задач, которые в основном покрываются managed средами, это не очень критично.
The God is real, unless declared integer.
Re[13]: Haters gonna hate but with proofs
От: netch80 Украина http://netch80.dreamwidth.org/
Дата: 14.01.19 09:40
Оценка:
Здравствуйте, rg45, Вы писали:

R>Не сопоставима. Ибо, как правило, функции и классы используются существенно большее количиство раз, чем реализуются, а значит, и вероятность допустить ошибку при использовании существенно выше, чем при ее реализации, это во-первых. А главное, у ОПЫТНОГО разработчика C++ есть возможность недопустить некоторые грубые ошибки в исплользовании разработанных им функций и классов, а у ОПЫТНОГО разработчика Java и C# такой возможности нет.


О каких случаях речь в последнем утверждении?
The God is real, unless declared integer.
Re[14]: Haters gonna hate but with proofs
От: rg45 СССР  
Дата: 14.01.19 09:45
Оценка:
Здравствуйте, netch80, Вы писали:

R>>Не сопоставима. Ибо, как правило, функции и классы используются существенно большее количиство раз, чем реализуются, а значит, и вероятность допустить ошибку при использовании существенно выше, чем при ее реализации, это во-первых. А главное, у ОПЫТНОГО разработчика C++ есть возможность недопустить некоторые грубые ошибки в исплользовании разработанных им функций и классов, а у ОПЫТНОГО разработчика Java и C# такой возможности нет.


N>О каких случаях речь в последнем утверждении?


Ну хотя бы вот о таких
Автор: rg45
Дата: 14.01.19
. Я надеюсь, ты понимаешь, что пример абстрактный и мы не станем углубляться в проблему открытия/закрытия файлов.
--
Не можешь достичь желаемого — пожелай достигнутого.
Re[9]: Haters gonna hate but with proofs
От: netch80 Украина http://netch80.dreamwidth.org/
Дата: 14.01.19 09:46
Оценка:
Здравствуйте, rg45, Вы писали:

KP>>Не так элегантно как в C++, но всё же работает достаточно надежно:

KP>>f := createFile("/tmp/defer.txt")
KP>>defer closeFile(f)
KP>>writeFile(f)

R>А как на счет мемберов классов? "Не так элегантно" — это слишком мягко сказано.


Ну мне решение с defer нравится. Тем более что оно есть и в C++ — BOOST_SCOPE_EXIT. Это реально удобнее в таких последовательных действиях типа "открыли A, открыли B, аллоцировали C, открыли D, временно подменили E и F...", для которых нужен обратный откат (а если закоммитили то можно просто поставить флажок об этом).

Задержка освобождения по GC, да, проблема. Не буду повторять предыдущий свой комментарий, но решается, хоть и заметно другими методами.
The God is real, unless declared integer.
Re[15]: Haters gonna hate but with proofs
От: netch80 Украина http://netch80.dreamwidth.org/
Дата: 14.01.19 09:50
Оценка:
Здравствуйте, rg45, Вы писали:

R>>>Не сопоставима. Ибо, как правило, функции и классы используются существенно большее количиство раз, чем реализуются, а значит, и вероятность допустить ошибку при использовании существенно выше, чем при ее реализации, это во-первых. А главное, у ОПЫТНОГО разработчика C++ есть возможность недопустить некоторые грубые ошибки в исплользовании разработанных им функций и классов, а у ОПЫТНОГО разработчика Java и C# такой возможности нет.


N>>О каких случаях речь в последнем утверждении?


R>Ну хотя бы вот о таких
Автор: rg45
Дата: 14.01.19
. Я надеюсь, ты понимаешь, что пример абстрактный и мы не станем углубляться в проблему открытия/закрытия файлов.


То есть ты всё о той же несвоевременной финализации. Я думал, будет что-то другое.
Так вот — возможность "не допустить некоторые грубые ошибки" есть. Главное — заранее об этом позаботиться.
Если бы это было что-то со вкусом хаскеля, надо было бы на такие объекты навешивать специальную монаду кстати, интересно, можно ли это без особой крови ввести в Java/C#/etc.
The God is real, unless declared integer.
Re[16]: Haters gonna hate but with proofs
От: rg45 СССР  
Дата: 14.01.19 10:01
Оценка: +1
Здравствуйте, netch80, Вы писали:

N>То есть ты всё о той же несвоевременной финализации. Я думал, будет что-то другое.

N>Так вот — возможность "не допустить некоторые грубые ошибки" есть. Главное — заранее об этом позаботиться.

Да, я все о том же. Вопрос принципиальный — кто должен/может об этом позаботиться. В одном случае это разработчик класса/функции, в другом — сам пользователь. И, с моей точки зрения, это не просто какая-то там ерунда.
--
Не можешь достичь желаемого — пожелай достигнутого.
Re[8]: Haters gonna hate but with proofs
От: wander  
Дата: 14.01.19 10:01
Оценка: -1
Здравствуйте, Somescout, Вы писали:

S>Да, ваше сообщение вполне однозначно: "У вас значительно устаревшие данные по этому вопросу. Примерно на уровне 1998 года".


Ну здесь написано, что у вас данные 98 года, а не фича 98 года.

Фича появилась в С++11, а компиляторы научились разбираться с шаблонами гораздо раньше.
Было же написано:
W>Сейчас и в компиляторах и в самом языке есть возможности по устранению оверхеда связанного с генерацией кода по шаблону.
Вот эта вот вторая часть "в самом языке" было про фичу. А первая, веделенная болдом, — про компиляторы в целом.
И научились они с этим справляться гораздо раньше принятия 11 стандарта.

Вон netch80 гораздо более объективный недостаток шаблонов указал. И это вовсе не лишняя генерация кода,
а многословность и вычурность в определенных аспектах. С этимм как раз нельзя не согласиться.

И вы еще удивляетесь почему я так реагирую? Да, я сорвался на личность. Извините. Но подобные демагогические приемы с
выкидыванием всех неудобных слов и выворачиванием смысла наизнанку истощают последние запасы терпения.
Re[9]: Haters gonna hate but with proofs
От: Somescout  
Дата: 14.01.19 10:04
Оценка: -2 :)
Здравствуйте, wander, Вы писали:

S>>Да, ваше сообщение вполне однозначно: "У вас значительно устаревшие данные по этому вопросу. Примерно на уровне 1998 года".


W>Ну здесь написано, что у вас данные 98 года, а не фича 98 года.


Да простят модераторы (или пусть банят, плевать): вы придуривайтесь? Если фича не в 98 году появилась, то с чего вдруг вы вообще его упомянули? Почему не 2002? Не ещё какой год из диапазона? Facepalm, блин.
ARI ARI ARI... Arrivederci!
Re[10]: Haters gonna hate but with proofs
От: wander  
Дата: 14.01.19 10:11
Оценка: -1
Здравствуйте, Somescout, Вы писали:

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


S>>>Да, ваше сообщение вполне однозначно: "У вас значительно устаревшие данные по этому вопросу. Примерно на уровне 1998 года".


W>>Ну здесь написано, что у вас данные 98 года, а не фича 98 года.


S>Да простят модераторы (или пусть банят, плевать): вы придуривайтесь? Если фича не в 98 году появилась, то с чего вдруг вы вообще его упомянули? Почему не 2002? Не ещё какой год из диапазона? Facepalm, блин.


Я же выше объяснил.
Вы транслировали мнение, что С++ шаблоны не подходят для Embedded потому что раздувают код.
А я вам сказал, что в 98 году (или около того) действительно было такое явление, и компиляторы С++ 98 года (или около того) действительно не подходили для Embedded.
Но с тех пор все изменилось.
И сейчас есть прекрасные примеры Embedded-проектов на С++, в том числе с шаблонами. И возможно это благодаря тому, что с тех пор сильно развились техники оптимизации, в том числе шаблонного кода (доработаны компиляторы). А помимо этого (в С++11) появились дополнительные фичи по контролю лишний инстанцирований (доработан язык).
Re[10]: Haters gonna hate but with proofs
От: rg45 СССР  
Дата: 14.01.19 10:18
Оценка: +1
Здравствуйте, netch80, Вы писали:

N>Ну мне решение с defer нравится. Тем более что оно есть и в C++ — BOOST_SCOPE_EXIT. Это реально удобнее в таких последовательных действиях типа "открыли A, открыли B, аллоцировали C, открыли D, временно подменили E и F...", для которых нужен обратный откат (а если закоммитили то можно просто поставить флажок об этом).


Все та же проблема — этот самый defer должен написать полльзователь функции, а не разработчик.

Другая проблема — не работает для подобъектов. Какждый раз требуется ручное управление, что плодит ошибки времени выполнения.

Третья проблема, использую сишарпный аналог defere-а — using. Много ли найдется разработчиков C#, которые скажут сходу, какой из следующих вариантов является правильным (пример, опять же, абстрактый, просьба не придираться к прикладным аспектам):

        public static T Deserialize<T>(Stream input)
        {
            var textReader = new StreamReader(input);
            // че-то читаем из textReader

            using (var xmlReader = XmlReader.Create(textReader))
            {
                return Deserialize<T>(xmlReader);
            }
        }

или
        public static T Deserialize<T>(Stream input)
        {
            using (var textReader = new StreamReader(input))
            {
                // че-то читаем из textReader
                using (var xmlReader = XmlReader.Create(textReader))
                {
                    return Deserialize<T>(xmlReader);
                }
            }
        }


Или может, вообще можно без всяких using, как правильно?

И даже на этом веселуха еще не заканчивается — обязательно ведь найдется грамотей, который позовет Dispose (прямо либо через using) для входного стрима.

И подобные проблемы неминуемо возникают везде, где ресурс выделяется провайдером, а отвестсвенность за его осводождение лежит на консумере. Остается только радоваться разнообразию этих проблем: неосвобождение ресурсов (учетчки), повторное освобождение, несвоевременное освобождение.
--
Не можешь достичь желаемого — пожелай достигнутого.
Отредактировано 14.01.2019 11:27 rg45 . Предыдущая версия . Еще …
Отредактировано 14.01.2019 11:22 rg45 . Предыдущая версия .
Отредактировано 14.01.2019 11:20 rg45 . Предыдущая версия .
Отредактировано 14.01.2019 11:00 rg45 . Предыдущая версия .
Отредактировано 14.01.2019 11:00 rg45 . Предыдущая версия .
Отредактировано 14.01.2019 10:41 rg45 . Предыдущая версия .
Отредактировано 14.01.2019 10:30 rg45 . Предыдущая версия .
Отредактировано 14.01.2019 10:22 rg45 . Предыдущая версия .
Отредактировано 14.01.2019 10:21 rg45 . Предыдущая версия .
Отредактировано 14.01.2019 10:19 rg45 . Предыдущая версия .
Re[4]: Haters gonna hate but with proofs
От: landerhigh Пират  
Дата: 14.01.19 10:28
Оценка: +1
Здравствуйте, Слава, Вы писали:

С>Туда можно запихать Java Card и Аду. Кстати, запихивание в систему с очень ограниченными ресурсами — это скорее про Си.


Ага, берешь такой какую-нибудь Atmega 328 и запихиваешь
www.blinnov.com
Re[5]: Haters gonna hate but with proofs
От: Слава  
Дата: 14.01.19 10:37
Оценка:
Здравствуйте, landerhigh, Вы писали:

С>>Туда можно запихать Java Card и Аду. Кстати, запихивание в систему с очень ограниченными ресурсами — это скорее про Си.

L>Ага, берешь такой какую-нибудь Atmega 328 и запихиваешь

https://sourceforge.net/p/avr-ada/wiki/Home/
Re[6]: Haters gonna hate but with proofs
От: landerhigh Пират  
Дата: 14.01.19 10:43
Оценка:
Здравствуйте, Слава, Вы писали:

С>>>Туда можно запихать Java Card и Аду. Кстати, запихивание в систему с очень ограниченными ресурсами — это скорее про Си.

L>>Ага, берешь такой какую-нибудь Atmega 328 и запихиваешь

С>https://sourceforge.net/p/avr-ada/wiki/Home/


gcc based Ada compiler

The compiler generates AVR object code based on your Ada code.


www.blinnov.com
Re[7]: Haters gonna hate but with proofs
От: Слава  
Дата: 14.01.19 10:54
Оценка:
Здравствуйте, landerhigh, Вы писали:

С>>https://sourceforge.net/p/avr-ada/wiki/Home/


L>

L>gcc based Ada compiler
L>The compiler generates AVR object code based on your Ada code.


И что? Вам смысл компилятора понятен? Можно и сразу в машинных кодах писать, конечно.
Re[3]: Haters gonna hate but with proofs
От: kov_serg Россия  
Дата: 14.01.19 11:02
Оценка:
Здравствуйте, kaa.python, Вы писали:

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


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


KP>Все вышесказанное верно, но тут есть интересный момент, про который часто забывают говоря о C++ – санитарайзеры. Я наугад взял два примера из приведенных тобой и собрал следующим образом:

KP>
KP>clang++ -fsanitize=undefined main.cpp
KP>

KP>Пример с арифметикой
Автор: Кодт
Дата: 18.06.14

KP>
test>> ./a.out                              
KP>0 : 0 : 27
KP>1 : 1000000000 : 82
KP>2 : 2000000000 : 41
KP>main.cpp:8:38: runtime error: signed integer overflow: 3 * 1000000000 cannot be represented in type 'int'
KP>3 : -1294967296 : 124
KP>4 : -294967296 : 62
KP>5 : 705032704 : 31
KP>6 : 1705032704 : 94
KP>7 : -1589934592 : 47
KP>8 : -589934592 : 142
KP>9 : 410065408 : 71
KP>

  Скрытый текст
# gcc --version
gcc (Ubuntu 4.8.4-2ubuntu1~14.04.4) 4.8.4

# gcc -O3 a.cpp && ./a.cpp
0 : 0 : 27
1 : 1000000000 : 82
2 : 2000000000 : 41
3 : -1294967296 : 124
4 : -294967296 : 62
5 : 705032704 : 31
6 : 1705032704 : 94
7 : -1589934592 : 47
8 : -589934592 : 142
9 : 410065408 : 71
10 : 1410065408 : 214
11 : -1884901888 : 107
12 : -884901888 : 322
13 : 115098112 : 161
14 : 1115098112 : 484
15 : 2115098112 : 242
16 : -1179869184 : 121
17 : -179869184 : 364
18 : 820130816 : 182
19 : 1820130816 : 91
20 : -1474836480 : 274
21 : -474836480 : 137
22 : 525163520 : 412
23 : 1525163520 : 206
24 : -1769803776 : 103
25 : -769803776 : 310
26 : 230196224 : 155
27 : 1230196224 : 466
28 : -2064771072 : 233
29 : -1064771072 : 700
30 : -64771072 : 350
31 : 935228928 : 175
32 : 1935228928 : 526
33 : -1359738368 : 263
34 : -359738368 : 790
35 : 640261632 : 395
36 : 1640261632 : 1186
37 : -1654705664 : 593
38 : -654705664 : 1780
39 : 345294336 : 890
40 : 1345294336 : 445
41 : -1949672960 : 1336
42 : -949672960 : 668
43 : 50327040 : 334
44 : 1050327040 : 167
45 : 2050327040 : 502
46 : -1244640256 : 251
47 : -244640256 : 754
48 : 755359744 : 377
49 : 1755359744 : 1132
50 : -1539607552 : 566
51 : -539607552 : 283
52 : 460392448 : 850
53 : 1460392448 : 425
54 : -1834574848 : 1276
55 : -834574848 : 638
56 : 165425152 : 319
57 : 1165425152 : 958
58 : -2129542144 : 479
59 : -1129542144 : 1438
60 : -129542144 : 719
61 : 870457856 : 2158
62 : 1870457856 : 1079
63 : -1424509440 : 3238
64 : -424509440 : 1619
65 : 575490560 : 4858
66 : 1575490560 : 2429
67 : -1719476736 : 7288
68 : -719476736 : 3644
69 : 280523264 : 1822
70 : 1280523264 : 911
71 : -2014444032 : 2734
72 : -1014444032 : 1367
73 : -14444032 : 4102
74 : 985555968 : 2051
75 : 1985555968 : 6154
76 : -1309411328 : 3077
77 : -309411328 : 9232
78 : 690588672 : 4616
79 : 1690588672 : 2308
80 : -1604378624 : 1154
81 : -604378624 : 577
82 : 395621376 : 1732
83 : 1395621376 : 866
84 : -1899345920 : 433
85 : -899345920 : 1300
86 : 100654080 : 650
87 : 1100654080 : 325
88 : 2100654080 : 976
89 : -1194313216 : 488
90 : -194313216 : 244
91 : 805686784 : 122
92 : 1805686784 : 61
93 : -1489280512 : 184
94 : -489280512 : 92
95 : 510719488 : 46
96 : 1510719488 : 23
97 : -1784247808 : 70
98 : -784247808 : 35
99 : 215752192 : 106
100 : 1215752192 : 53
101 : -2079215104 : 160
102 : -1079215104 : 80
103 : -79215104 : 40
104 : 920784896 : 20
105 : 1920784896 : 10
106 : -1374182400 : 5
107 : -374182400 : 16
108 : 625817600 : 8
109 : 1625817600 : 4
110 : -1669149696 : 2
111 : -669149696 : 1

# g++ -O3 -fwrapv a.cpp && ./a.out
0 : 0 : 27
1 : 1000000000 : 82
2 : 2000000000 : 41
3 : -1294967296 : 124
4 : -294967296 : 62
5 : 705032704 : 31
6 : 1705032704 : 94
7 : -1589934592 : 47
8 : -589934592 : 142
9 : 410065408 : 71


И что раз переполнение возникло в промежуточном вычислении, результат которого может никому и не нужен. На этом основании надо выкидывать проверку условия выхода из цикла for?
Вообще всегда надо компилировать с опцией -fwrapv чтоб компилятор не чудил.
Re[6]: Haters gonna hate but with proofs
От: wander  
Дата: 14.01.19 11:03
Оценка: 1 (1) +4
Здравствуйте, Kswapd, Вы писали:

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


W>>На любом языке. И паскаль, и Си, и всякие

W>>новомодные Rust`ы могут быть языками, на которых потенциально будут написаны приложения, падающие таким образом.

K>Да, только в некоторых языках надо сильно постараться, чтобы выстрелить себе в ногу, а в C++ это получается легко, незаметно и непринуждённо. На любом языке можно творить хорошие качественные приложения. Только себестоимость разработки будет разная. А у С++ она заметно выше, чем у некоторых других языков со сравнимыми возможностями. Всё просто: бизнес решает.


Все-таки похоже, что логика немного хромает.
Если мы говорим "С++ недолюбливают из-за ошибок сегментации", далее "Ошибки сегментации (выстрелы в ногу) возникают в С++ легко и непринужденно", из-за этого (в том числе) "себестоимость разработки — высокая". Ладно. С этими утверждениями (кроме самого первого) нет смысла спорить. Это правда.
Но с первым я все-таки хочу поспорить (и собственно делал это с самого начала). Если ошибки сегментации — это одна из причин "нелюбви", то где эта "нелюбовь" проявляется по отношению к другим подобным языкам, где выстрелы в ногу также легки? Например в языке Си. Но похоже, что никакой "нелюбви" к Си нет. Почему-то все понимают, что язык Си — это приближенный к машине инструмент, обладающий соответствующими особенностями, предъявляющие повышенные требования к стоимости программиста. А в случае в С++ — эта особенность внезапно становится кареугольным камнем и причиной нападок. Нет ли здесь двойного дна?

Да, можно возразить, что мол, в С++ куча всяких возможностей, а в Си — нет. Из-за этого С++ гораздо проще неправильно применить (это правда). Но в Си низкая сложность базовых фич языка с лихвой компенсируется количеством умения их применять. Чем более скуден набор инструментов, чем большим мастерством должен обладать разработчик, чтобы сделать что-то качественно. Так что, вроде бы чаши весов здесь если не равны, то колеблются из стороны в сторону, однозначного перевеса нет. Но "не любим" мы все-таки С++.

Поэтому, мне кажется, что настоящая причина не в этом.
Re[8]: Haters gonna hate but with proofs
От: landerhigh Пират  
Дата: 14.01.19 11:03
Оценка: :)
Здравствуйте, Слава, Вы писали:

L>>

L>>gcc based Ada compiler
L>>The compiler generates AVR object code based on your Ada code.


С>И что? Вам смысл компилятора понятен? Можно и сразу в машинных кодах писать, конечно.


Внезапно "затолкать Java" превратилось в "Написать на языке, к которому есть фронтенд к GCC".
Ловкость рук и никакого мошенства, да.
www.blinnov.com
Re[4]: Haters gonna hate but with proofs
От: netch80 Украина http://netch80.dreamwidth.org/
Дата: 14.01.19 11:17
Оценка:
Здравствуйте, kov_serg, Вы писали:

_>И что раз переполнение возникло в промежуточном вычислении, результат которого может никому и не нужен. На этом основании надо выкидывать проверку условия выхода из цикла for?

_>Вообще всегда надо компилировать с опцией -fwrapv чтоб компилятор не чудил.

Вот тут действительно надо советовать взять Java или Go: у них именно так и сделано.
Но в случае C, C++ — я не хочу повторяться по 300-му разу, но есть достаточно свидетельств, что полагание на корректность решения программистом вопроса "переполняется ли" даёт возможность заметных оптимизаций.
The God is real, unless declared integer.
Re[7]: Haters gonna hate but with proofs
От: netch80 Украина http://netch80.dreamwidth.org/
Дата: 14.01.19 11:20
Оценка:
Здравствуйте, wander, Вы писали:

W>Да, можно возразить, что мол, в С++ куча всяких возможностей, а в Си — нет. Из-за этого С++ гораздо проще неправильно применить (это правда). Но в Си низкая сложность базовых фич языка с лихвой компенсируется количеством умения их применять. Чем более скуден набор инструментов, чем большим мастерством должен обладать разработчик, чтобы сделать что-то качественно. Так что, вроде бы чаши весов здесь если не равны, то колеблются из стороны в сторону, однозначного перевеса нет. Но "не любим" мы все-таки С++.


W>Поэтому, мне кажется, что настоящая причина не в этом.


Именно в этом. Очень сложно работать с тем, что _и_ со сложностями высоких уровней, _и_ с граблями низких уровней, _и_ со своим специфическим характером в отдельных местах, дающим неожиданные и неприятные эффекты.
The God is real, unless declared integer.
Re[8]: Haters gonna hate but with proofs
От: wander  
Дата: 14.01.19 11:23
Оценка:
Здравствуйте, netch80, Вы писали:

N>Именно в этом. Очень сложно работать с тем, что _и_ со сложностями высоких уровней, _и_ с граблями низких уровней, _и_ со своим специфическим характером в отдельных местах, дающим неожиданные и неприятные эффекты.


Вопросов нет. Почему тогда в списке нелюбимчиков только С++?
Отредактировано 14.01.2019 11:24 wander . Предыдущая версия .
Re[9]: Haters gonna hate but with proofs
От: netch80 Украина http://netch80.dreamwidth.org/
Дата: 14.01.19 11:25
Оценка:
Здравствуйте, wander, Вы писали:

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


N>>Именно в этом. Очень сложно работать с тем, что _и_ со сложностями высоких уровней, _и_ с граблями низких уровней, _и_ со своим специфическим характером в отдельных местах, дающим неожиданные и неприятные эффекты.


W>Вопросов нет. Почему тогда в списке нелюбимчиков только С++?


Вы сказали, вопросов нет? И в чьём именно списке?
The God is real, unless declared integer.
Re[5]: Haters gonna hate but with proofs
От: kov_serg Россия  
Дата: 14.01.19 11:27
Оценка: :))
Здравствуйте, netch80, Вы писали:

_>>И что раз переполнение возникло в промежуточном вычислении, результат которого может никому и не нужен. На этом основании надо выкидывать проверку условия выхода из цикла for?

_>>Вообще всегда надо компилировать с опцией -fwrapv чтоб компилятор не чудил.

N>Вот тут действительно надо советовать взять Java или Go: у них именно так и сделано.

N>Но в случае C, C++ — я не хочу повторяться по 300-му разу, но есть достаточно свидетельств, что полагание на корректность решения программистом вопроса "переполняется ли" даёт возможность заметных оптимизаций.

В C++ как всегда вместо того чтобы явно спросить оно тебе надо делают как "лучше" и таких место с каждым разом всё больше и больше.
Сделали бы тогда уже циклы для допустимых значений for(auto i) y[i]=x[i-1]-2*x[i]+x[i+1];
Re[9]: Haters gonna hate but with proofs
От: Слава  
Дата: 14.01.19 11:31
Оценка:
Здравствуйте, landerhigh, Вы писали:

L>Внезапно "затолкать Java" превратилось в "Написать на языке, к которому есть фронтенд к GCC".

L>Ловкость рук и никакого мошенства, да.

Я там про Аду писал, вообще-то. Вам нужен компилятор Ады не на gcc?
Re[10]: Haters gonna hate but with proofs
От: wander  
Дата: 14.01.19 11:41
Оценка: +2 -1
Здравствуйте, netch80, Вы писали:

N>Вы сказали, вопросов нет?

Это выражение такое.

N>И в чьём именно списке?


Ну хейтеров видимо. Тема же так называется.

На самом деле ответы на это просты. С++ "недолюблювают", потому что он популярен. Причина (изначальная) не в его сложности и чем-то другом объективном, а в популярности. Люди просто не могут пройти мимо. И именно поэтому Вася Пупкин из третьего подъезда колотит жену и всем плевать, а вот как только условный актер это сделает, так вой на всех каналах.
Или вот как только Rust стал широко известен, так появились, как грибы, статьи о его недостатках.

Это говорит лишь о человеческой страсти осуждать популярное.
Re[11]: Haters gonna hate but with proofs
От: rg45 СССР  
Дата: 14.01.19 11:48
Оценка: +2 -1 :))
Здравствуйте, wander, Вы писали:


W>Ну хейтеров видимо. Тема же так называется.

W>На самом деле ответы на это просты. С++ "недолюблювают", потому что он популярен. Причина (изначальная) не в его сложности и чем-то другом объективном, а в популярности. Люди просто не могут пройти мимо. И именно поэтому Вася Пупкин из третьего подъезда колотит жену и всем плевать, а вот как только условный актер это сделает, так вой на всех каналах.
W>Или вот как только Rust стал широко известен, так появились, как грибы, статьи о его недостатках.
W>Это говорит лишь о человеческой страсти осуждать популярное.

ИМХО, не стоит тебе воспринимать все сказанное так близко к сердцу. "Хейтеры" — это далеко не "весь мир". И вообще, человек с нормальной психикой не может ненавидеть средства разработки

P.S. Помнится, когда я учился в институте, у нас на потоке один бедолага крышей поехал — охотился на операторы набла — хватал все книжки, которые попадали в его поле зрения и выдирал страницы, на которых находил эти самые "наблы". Вот у всех С++ хейтеров наблюдается очень похожий синдром.
--
Не можешь достичь желаемого — пожелай достигнутого.
Отредактировано 14.01.2019 12:07 rg45 . Предыдущая версия .
Re[12]: Haters gonna hate but with proofs
От: wander  
Дата: 14.01.19 12:07
Оценка:
Здравствуйте, rg45, Вы писали:

R>ИМХО, не стоит тебе воспринимать все сказанное так близко к сердцу. "Хейтеры" — это далеко не "весь мир". И вообще, человек с нормальной психикой не может ненавидеть средства разработки


Но я ведь и не воспринимаю. Ты все-таки не совсем уловил посыл.

Я пытаюсь в форме диалога вывести мысль о том, что любые конкретные недостатки могут быть у любых средств разработки.
И если задаться идеей найти их все, то могут возникнуть вот такое проекты: https://dorinlazar.ro/why-c-sucks-2016-02-edition/
Но разве это характеризует объективно конкретное средство?
По-моему нет. Вы только посмотрите: у него даже несколько редакций есть.
Это скорее характеризует степень заинтересованности публики в нем, и спрос на такой контент, соответственно.
Если бы на С++ программировал 1 программист на миллион, то никто бы не задавал таких вопросов.

И я не говорю, что в этих статьях и т.п. нет хотя бы частично адекватной критики, просто я хотел обозначить именно этот момент, как первопричину.
Отредактировано 14.01.2019 12:13 wander . Предыдущая версия .
Re[11]: Haters gonna hate but with proofs
От: netch80 Украина http://netch80.dreamwidth.org/
Дата: 14.01.19 12:15
Оценка:
Здравствуйте, wander, Вы писали:

N>>Вы сказали, вопросов нет?

W>Это выражение такое.

Неуместно, если сразу после этого следует вопрос.

N>>И в чьём именно списке?

W>Ну хейтеров видимо. Тема же так называется.
W>На самом деле ответы на это просты. С++ "недолюблювают", потому что он популярен. Причина (изначальная) не в его сложности и чем-то другом объективном, а в популярности. Люди просто не могут пройти мимо. И именно поэтому Вася Пупкин из третьего подъезда колотит жену и всем плевать, а вот как только условный актер это сделает, так вой на всех каналах.
W>Или вот как только Rust стал широко известен, так появились, как грибы, статьи о его недостатках.
W>Это говорит лишь о человеческой страсти осуждать популярное.

И это вполне правильно. Сильно меньше смысла обсуждать и искать недостатки у того, чем никто не пользуется. Есть смысл — у популярного. Потому что
1) это даёт шанс, что какие-то из них исправят,
2) это усиливает шанс, что новое средство будет без таких недостатков, за счёт известности такой критики.

Сравнение с популярным актёром тоже в тему, в том смысле, что если его обстановка и судьба людям интересны, то на его примере можно и нужно обсуждать, что правильно, а что нет. Может, плохо, что используется именно такой пример, но это уже следствие популярности.

А вот почему из всех популярных C++ критикуют _именно за то_, за что критикуют — это и есть конструктивная часть тематики.
The God is real, unless declared integer.
Re[12]: Haters gonna hate but with proofs
От: wander  
Дата: 14.01.19 12:29
Оценка:
Здравствуйте, netch80, Вы писали:

N>Неуместно, если сразу после этого следует вопрос.

Вам это настолько важно?

N>А вот почему из всех популярных C++ критикуют _именно за то_, за что критикуют — это и есть конструктивная часть тематики.

Ну так если некий (даже конструктивный) недостаток приписывают чему-то одному популярному, а другим, обладающим тем же недостатком, не приписывают только исключительно засчет их меньшей популярности, то об этом надо бы сказать. Очень характерна картинка, которая послужила стартом ветки, она оказалась продуктом другого языка, но привели ее как доказательство для С++. И именно поэтому я решил разбавить это немного рассуждениями на тему первопричин такого явления. Ведь ТС интересовало ПОЧЕМУ хейтят ИМЕННО С++.
Re[13]: Haters gonna hate but with proofs
От: netch80 Украина http://netch80.dreamwidth.org/
Дата: 14.01.19 12:40
Оценка:
Здравствуйте, wander, Вы писали:

N>>Неуместно, если сразу после этого следует вопрос.

W>Вам это настолько важно?

Если обсуждать конструктивно — да, важно.

N>>А вот почему из всех популярных C++ критикуют _именно за то_, за что критикуют — это и есть конструктивная часть тематики.

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

А с чего вывод про "не приписывают"? Приписывают. Но не настолько обсуждают.
А ещё — какое-то свойство становится недостатком не само по себе, а попав в комплекс с другими свойствами. Даже с популярностью, потому что масштаб его воздействия как недостатка становится выше терпимого предела.

W> Очень характерна картинка, которая послужила стартом ветки, она оказалась продуктом другого языка, но привели ее как доказательство для С++. И именно поэтому я решил разбавить это немного рассуждениями на тему первопричин такого явления. Ведь ТС интересовало ПОЧЕМУ хейтят ИМЕННО С++.


Про картинку я посмотрел, но мне такая ситуация за пределами интересного.
Ну а в случае C++ его известные недостатки очень сильно вылазят боком, поэтому переход на другие средства, если можно, или пинания разработчиков, чтобы исправить — нормальная реакция от того, кто хочет с большей пользой тратить свои усилия.
The God is real, unless declared integer.
Re[14]: Haters gonna hate but with proofs
От: wander  
Дата: 14.01.19 12:56
Оценка:
Здравствуйте, netch80, Вы писали:

N>А ещё — какое-то свойство становится недостатком не само по себе, а попав в комплекс с другими свойствами. Даже с популярностью, потому что масштаб его воздействия как недостатка становится выше терпимого предела.


Если говорить абстрактно, то да. Но если говорить про C++, то похоже вы несколько сгущаете краски.
Будь это так, то все уже давно бы отказались от него. А если нет, то терпимый предел все-таки чуть повыше.

N>Ну а в случае C++ его известные недостатки очень сильно вылазят боком, поэтому переход на другие средства, если можно, или пинания разработчиков, чтобы исправить — нормальная реакция от того, кто хочет с большей пользой тратить свои усилия.

Ну так я ниже, буквально над вашим постом написал, что если будут объективные причины заменить на другие средства, то заменят — и это нормально,
а не будут каталогизировать недостатки
Re[11]: Haters gonna hate but with proofs
От: Jack128  
Дата: 14.01.19 13:12
Оценка:
Здравствуйте, rg45, Вы писали:


R>И даже на этом веселуха еще не заканчивается — обязательно ведь найдется грамотей, который позовет Dispose (прямо либо через using) для входного стрима.

Он и так задиспозится, стрим дазиспозится ридером. Это вообще в .NET стандарт, все ридеры по умолчанию закрывают переданный им конструктор стрим. + Обычно есть перегруженный конструктор с флажком, который явно говорит закрывать или нет стрим.
Re[10]: Haters gonna hate but with proofs
От: landerhigh Пират  
Дата: 14.01.19 13:22
Оценка: -1
Здравствуйте, Слава, Вы писали:

L>>Внезапно "затолкать Java" превратилось в "Написать на языке, к которому есть фронтенд к GCC".

L>>Ловкость рук и никакого мошенства, да.
С>Я там про Аду писал, вообще-то. Вам нужен компилятор Ады не на gcc?

Туда можно запихать Java Card и Аду...


Только оказывается, что "запихать" — это скомпилировать в итоге тем же gcc, не получив в итоге ни одного из плюсов "запиховываемого" языка.
www.blinnov.com
Re[12]: Haters gonna hate but with proofs
От: rg45 СССР  
Дата: 14.01.19 13:31
Оценка: +1
Здравствуйте, Jack128, Вы писали:

R>>И даже на этом веселуха еще не заканчивается — обязательно ведь найдется грамотей, который позовет Dispose (прямо либо через using) для входного стрима.

J>Он и так задиспозится, стрим дазиспозится ридером. Это вообще в .NET стандарт, все ридеры по умолчанию закрывают переданный им конструктор стрим. + Обычно есть перегруженный конструктор с флажком, который явно говорит закрывать или нет стрим.

Ну этот же пример можно переписать с набором каких-нибудь других классов, не покрываемых требованиями .NET стандарта. Мы же сейчас не ридеры и стримы обсуждаем, а вопросы владения ресусами и их освобождения. И как ни верти, ответсвенность за правильное освобождение ресурсов, в общем смысле этого слова, в управляемых языках лежит на плечах пользовательского кода. И тут разработчики этих языков оказываются ровно в той же ситуации, что и разработчики языка C его ручным управлением памятью.
--
Не можешь достичь желаемого — пожелай достигнутого.
Отредактировано 14.01.2019 13:34 rg45 . Предыдущая версия .
Re[7]: Haters gonna hate but with proofs
От: Kswapd Россия  
Дата: 14.01.19 13:42
Оценка:
Здравствуйте, wander, Вы писали:

W>Если ошибки сегментации — это одна из причин "нелюбви", то где эта "нелюбовь" проявляется по отношению к другим подобным языкам, где выстрелы в ногу также легки? Например в языке Си. Но похоже, что никакой "нелюбви" к Си нет.


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

Просто тема о C++. Не перечислять же все плохие языки. Хороших тоже много; мне, например, нравятся на данный момент Go, Haskell и Elixir.
Re[15]: Haters gonna hate but with proofs
От: netch80 Украина http://netch80.dreamwidth.org/
Дата: 14.01.19 14:12
Оценка: +3
Здравствуйте, wander, Вы писали:

N>>А ещё — какое-то свойство становится недостатком не само по себе, а попав в комплекс с другими свойствами. Даже с популярностью, потому что масштаб его воздействия как недостатка становится выше терпимого предела.


W>Если говорить абстрактно, то да. Но если говорить про C++, то похоже вы несколько сгущаете краски.

W>Будь это так, то все уже давно бы отказались от него. А если нет, то терпимый предел все-таки чуть повыше.

Так и отказываются же. Java, C#, Rust, Go — это всё примеры, как массово уходят от C++ только потому, что не осиливают или сложность, или непредсказуемость и отсутствие надёжности контроля за использованием памяти.
А у меня на глазах был даже переход C++ -> Python, потому что дал неглючащий результат. Правда, это было в 2003. Сейчас туда бы выбрали Java.
А "все" никогда не будет (или будет лет через 100) — есть же и сейчас те, кто на Cobol или RPG что-то пишет.

Просто для уровня "переносимого ассемблера" альтернатив мало, а "переносимого ассемблера с плюшками" так и совсем нет.
Поэтому ниша есть. Но когда можно задачу реализовать на чём-то ином, пусть даже теряя в эффективности — это делают.
"Бутербродное" построение давно стало нормой. Где-то C# + C++/CLI + C//C++, где-то Python поверх C, где-то Java поверх C++...

N>>Ну а в случае C++ его известные недостатки очень сильно вылазят боком, поэтому переход на другие средства, если можно, или пинания разработчиков, чтобы исправить — нормальная реакция от того, кто хочет с большей пользой тратить свои усилия.

W>Ну так я ниже, буквально над вашим постом написал, что если будут объективные причины заменить на другие средства, то заменят — и это нормально,
W>а не будут каталогизировать недостатки

Почему это не будут? Недостатки надо знать, о них надо говорить, их надо каталогизировать и сводить в таблички. Надо, чтобы о них знали и менеджеры, и юниоры/интерны...
The God is real, unless declared integer.
Re[8]: Haters gonna hate but with proofs
От: netch80 Украина http://netch80.dreamwidth.org/
Дата: 14.01.19 14:15
Оценка:
Здравствуйте, Kswapd, Вы писали:

W>>Если ошибки сегментации — это одна из причин "нелюбви", то где эта "нелюбовь" проявляется по отношению к другим подобным языкам, где выстрелы в ногу также легки? Например в языке Си. Но похоже, что никакой "нелюбви" к Си нет.


K>Си я даже не рассматриваю как язык высокоуровневой разработки. Мне кажется, он безнадёжно устарел даже на низком уровне, где сейчас почти всегда практичнее взять хотя бы тот же C++, не говоря о Rust и т.п. Про покойника или хорошо, или ничего.


C++ для низкого уровня часто годится только в очень специфическом варианте "без исключений, без RTTI". После этого C может быть и легче использовать.

K>Просто тема о C++. Не перечислять же все плохие языки. Хороших тоже много; мне, например, нравятся на данный момент Go, Haskell и Elixir.


Я надеюсь, на тему Elixir была шутка. Erlang уже сам по себе для 2018-2019 давно неадекват, но он хотя бы в основном разумно построен в своих рамках. А Elixir — говноподелка прыщавых хипстеров, которые не сумели ничего нормально придумать, начиная с тупейших глюков синтаксиса, зато накидали понтов.
The God is real, unless declared integer.
Re[13]: Haters gonna hate but with proofs
От: scf  
Дата: 14.01.19 14:16
Оценка:
Здравствуйте, rg45, Вы писали:

R>Ну этот же пример можно переписать с набором каких-нибудь других классов, не покрываемых требованиями .NET стандарта. Мы же сейчас не ридеры и стримы обсуждаем, а вопросы владения ресусами и их освобождения. И как ни верти, ответсвенность за правильное освобождение ресурсов, в общем смысле этого слова, в управляемых языках лежит на плечах пользовательского кода. И тут разработчики этих языков оказываются ровно в той же ситуации, что и разработчики языка C его ручным управлением памятью.


Так выше приводили же пример на шарпе с using? Можно ограничить ресурс скоупом точно так же, как и в С++. Плюс дополнительная фича — если криворукий программист не вызвал close(), ресурс автоматически освобоится сам когда GC удалит объект.
Re[14]: Haters gonna hate but with proofs
От: rg45 СССР  
Дата: 14.01.19 14:27
Оценка: +2 :)
Здравствуйте, scf, Вы писали:

scf>Так выше приводили же пример на шарпе с using? Можно ограничить ресурс скоупом точно так же, как и в С++.


Здесь два момента:

1. Конструкция using полезна только в тех случаях, когда объект создается и уничтожается в рамках одного блока, что значительно беднее возможностей, предоставляемых плюсовым RAII;

2. Криворукий юзер может тупо забыть написать "using", или наоборот, сделать это не там, где нужно, или не так, как нужно, не в той последовательности. Или напишет код так, что Dispose будет зваться в двух разных местах для одного и того же объекта. В общем, все те же "радости", что и для ручного управления памятью в C.

scf>Плюс дополнительная фича — если криворукий программист не вызвал close(), ресурс автоматически освобоится сам когда GC удалит объект.


Мы это проходили Этот момент настолько недетерменирован, что практически полностью бесполезен.
--
Не можешь достичь желаемого — пожелай достигнутого.
Отредактировано 14.01.2019 14:37 rg45 . Предыдущая версия . Еще …
Отредактировано 14.01.2019 14:30 rg45 . Предыдущая версия .
Re[11]: Haters gonna hate but with proofs
От: Слава  
Дата: 14.01.19 15:37
Оценка:
Здравствуйте, landerhigh, Вы писали:

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


L>Только оказывается, что "запихать" — это скомпилировать в итоге тем же gcc, не получив в итоге ни одного из плюсов "запиховываемого" языка.


GCC умеет компилировать Аду. Не в си, а в машинный код. Плюсы вы получите во время разработки на Аде и использования её рантайма (если он есть на целевой платформе, можно и без него).
Re[9]: Haters gonna hate but with proofs
От: Kswapd Россия  
Дата: 14.01.19 15:49
Оценка:
N>Я надеюсь, на тему Elixir была шутка. Erlang уже сам по себе для 2018-2019 давно неадекват, но он хотя бы в основном разумно построен в своих рамках. А Elixir — говноподелка прыщавых хипстеров, которые не сумели ничего нормально придумать, начиная с тупейших глюков синтаксиса, зато накидали понтов.

Если честно, Elixir у меня ещё в планах на изучение. Go знаю хорошо, Haskell изучал, но не применял на практике.
Re[10]: Haters gonna hate but with proofs
От: netch80 Украина http://netch80.dreamwidth.org/
Дата: 14.01.19 16:52
Оценка: 4 (1)
Здравствуйте, Kswapd, Вы писали:

N>>Я надеюсь, на тему Elixir была шутка. Erlang уже сам по себе для 2018-2019 давно неадекват, но он хотя бы в основном разумно построен в своих рамках. А Elixir — говноподелка прыщавых хипстеров, которые не сумели ничего нормально придумать, начиная с тупейших глюков синтаксиса, зато накидали понтов.


K>Если честно, Elixir у меня ещё в планах на изучение. Go знаю хорошо, Haskell изучал, но не применял на практике.


Тогда лучше посмотрите просто на Erlang
Функциональный, параллельный с CSP, кластеризуемый прозрачным образом. Лучшая (до сих пор) реализация обновления кода на ходу, прозрачного для пользователей. Неплохая стандартная библиотека, особенно всякие сетевизмы. Особенно любим в вебе, видеораздаче и т.п.
Недостатки: медленный (чистая динамика), отвратительное поведение под плотным входящим потоком (последнее мне убило два проекта и я его больше не хочу; но есть масса народу, которому это пофиг).
The God is real, unless declared integer.
Re[14]: Haters gonna hate but with proofs
От: netch80 Украина http://netch80.dreamwidth.org/
Дата: 14.01.19 17:01
Оценка:
Здравствуйте, scf, Вы писали:

scf>Так выше приводили же пример на шарпе с using? Можно ограничить ресурс скоупом точно так же, как и в С++. Плюс дополнительная фича — если криворукий программист не вызвал close(), ресурс автоматически освобоится сам когда GC удалит объект.


Я недавно в Питоне нарвался — было в цикле что-то вроде

    open(target, 'a').write(data)


и... исчерпались файловые дескрипторы

Правильно такие вещи писать как

    with open(target, 'a') as tg:
        tg.write(data)


with — тут аналог C# using.

(почему надо переоткрывать на каждую запись — вопрос отдельный. вот надо было. да, знаю, что дорого.)

А ведь в Питоне GC более агрессивный, чем в C# — по умолчанию по счётчику ссылок сразу собирается.
Но не помогло.
The God is real, unless declared integer.
Re[15]: Haters gonna hate but with proofs
От: netch80 Украина http://netch80.dreamwidth.org/
Дата: 14.01.19 17:08
Оценка:
Здравствуйте, rg45, Вы писали:

scf>>Так выше приводили же пример на шарпе с using? Можно ограничить ресурс скоупом точно так же, как и в С++.

R>Здесь два момента:
R>1. Конструкция using полезна только в тех случаях, когда объект создается и уничтожается в рамках одного блока, что значительно беднее возможностей, предоставляемых плюсовым RAII;

Не совсем. Ничто не мешает создать "страж"-объект, который хранит ссылку на целевой. Что-то вроде unique_ptr в C++ с его возможностями reset() на новое значение и move владения. И это просто, хотя и нужно об этом позаботиться.

R>2. Криворукий юзер может тупо забыть написать "using", или наоборот, сделать это не там, где нужно, или не так, как нужно, не в той последовательности. Или напишет код так, что Dispose будет зваться в двух разных местах для одного и того же объекта. В общем, все те же "радости", что и для ручного управления памятью в C.


Лишний Dispose обычно не вредит. Пропустить с помощью стража и using — сложно.

А вот обеспечить для объекта, сидящего где-то глубоко в недрах иерархии, немедленное освобождение — вот тут, да, mission impossible.
The God is real, unless declared integer.
Re[11]: Haters gonna hate but with proofs
От: so5team https://stiffstream.com
Дата: 14.01.19 17:08
Оценка:
Здравствуйте, netch80, Вы писали:

N>Тогда лучше посмотрите просто на Erlang

N>параллельный с CSP

Простите за злостный оффтоп, но из CSP в Erlang-е что?
Re[12]: Haters gonna hate but with proofs
От: netch80 Украина http://netch80.dreamwidth.org/
Дата: 14.01.19 17:10
Оценка:
Здравствуйте, so5team, Вы писали:

N>>Тогда лучше посмотрите просто на Erlang

N>>параллельный с CSP

S>Простите за злостный оффтоп, но из CSP в Erlang-е что?


Обмен сообщениями между процессами в VM, и вся логика на нём.
(Если это не тот CSP, который вы ожидаете — я заранее согласен. Но мне это неинтересно, и никогда не было.)
The God is real, unless declared integer.
Re[16]: Haters gonna hate but with proofs
От: wander  
Дата: 14.01.19 17:51
Оценка:
Здравствуйте, netch80, Вы писали:

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


N>>>А ещё — какое-то свойство становится недостатком не само по себе, а попав в комплекс с другими свойствами. Даже с популярностью, потому что масштаб его воздействия как недостатка становится выше терпимого предела.


W>>Если говорить абстрактно, то да. Но если говорить про C++, то похоже вы несколько сгущаете краски.

W>>Будь это так, то все уже давно бы отказались от него. А если нет, то терпимый предел все-таки чуть повыше.

N>Так и отказываются же. Java, C#, Rust, Go — это всё примеры, как массово уходят от C++ только потому, что не осиливают или сложность, или непредсказуемость и отсутствие надёжности контроля за использованием памяти.

N>А у меня на глазах был даже переход C++ -> Python, потому что дал неглючащий результат. Правда, это было в 2003. Сейчас туда бы выбрали Java.
N>А "все" никогда не будет (или будет лет через 100) — есть же и сейчас те, кто на Cobol или RPG что-то пишет.

Ну лично я именно массовых переходов наблюдал только два, это desktop для Win (С#) и банковская сфера (Java). Python вроде бы C++ не заменяет, а дополняет. Это вообще очень хорошо.
А вот ситуация с Go напоминает эксперимент.
C Rust — еще больше. Да и Rust претендует и на замену Cи.
У этих двух товарищей тоже достаточно противников и говорят они в таких же сгущенных красках (все пропало, шеф!). Чего я конечно же тоже не разделяю.
Все-таки да, тенденция есть, я не спорю с вами. Я просто думаю, что вы слишком пессимизируете.
Не так уж и плохо тут (в С++) на самом деле, чтобы употреблять эпитеты вроде "планка терпения". Эмоционально как-то.

W>>Ну так я ниже, буквально над вашим постом написал, что если будут объективные причины заменить на другие средства, то заменят — и это нормально,

W>>а не будут каталогизировать недостатки

N>Почему это не будут? Недостатки надо знать, о них надо говорить, их надо каталогизировать и сводить в таблички. Надо, чтобы о них знали и менеджеры, и юниоры/интерны...


Потому что на волне популярности это делается, чтобы делать, а не затем, чтобы улучшить результат.
Давайте в контексте ветки все-таки еще раз подумаем. Мы ведь тут говорим о стихийных разоблачающих статьях, коих большинство и кои появились именно из-за популярности С++,
а не потому что авторы провели всесторонний анализ на базе своего немалого опыта разработки. Все-таки даже претендующие на серьезность критические статьи нет-нет,
да и грешат нечестными бенчмарками, оценочными эмоциональными суждениями и т.п.
Я говорил именно об этом, ведь контекст был задан именно такой.
Согласитесь, здравый, конструктивный анализ недостатков не будут называть хейтерством.
Есть такая книга, Inside The C++ Object Model. Она старая и во многом неактуальная, но там есть одна интересная вещь.
Это вступление, которое призвано обозначить, что книга позиционируется как борьба с эмоциональной оценкой инструмента.

Rather than answering the individual myself, I forwarded his letter to Steve Vinoski of Hewlett-Packard, with
whom I had previously corresponded regarding the efficiency of C++. Here is an excerpt from his response:

    I have heard a number of people over the years voice opinions similar to those of your
    colleagues. In every case, those opinions could be attributed to a lack of factual knowledge
    about the C++ language. Just last week I was chatting with an acquaintance who happens to
    work for an IC testing manufacturer, and he said they don't use C++ because "it does things
    behind your back." When I pressed him, he said that he understood that C++ calls malloc()
    and free() without the programmer knowing it. This is of course not true. It is this sort of
    "myth and legend" that leads to opinions such as those held by your colleagues….
    Finding the right balance [between abstraction and pragmatism] requires knowledge,
    experience, and above all, thought. Using C++ well requires effort, but in my experience the
    returns on the invested effort can be quite high.
I like to think of this book, then, as my answer to this individual, and, I hope, a repository of knowledge to
help put to rest many of the myths and legends surrounding C++.

Не смотря на то, что сама книга устарела, вот этот посыл сегодня как нельзя кстати подходит ко многим критическим статьям.
В том числе по причинам, названным в этой теме, когда выводы делают на основе данных потерявших актуальность.
И именно такой критикой не будут заниматься люди, осознанно выбравшие другой инструмент для своей работы.
Вот о чем речь.
Re[16]: Haters gonna hate but with proofs
От: rg45 СССР  
Дата: 14.01.19 19:01
Оценка: +4
Здравствуйте, netch80, Вы писали:

N>Не совсем. Ничто не мешает создать "страж"-объект, который хранит ссылку на целевой. Что-то вроде unique_ptr в C++ с его возможностями reset() на новое значение и move владения. И это просто, хотя и нужно об этом позаботиться.


Все эти телодвижения очень напоминают закаты солнца вручную. У хваленых управляемых языков, у которых, якобы, все на автомате, по сравнению с "переусложненным" C++.

N>Лишний Dispose обычно не вредит.


Обычно не вредит, но иногда может, как повезет. Возможность тяп-ляп-программирования лично для меня преимущество так себе. Или давайте дружно поругаем C++ за то, что он не позволяет повторные вызовы деструкторов?
--
Не можешь достичь желаемого — пожелай достигнутого.
Отредактировано 14.01.2019 19:29 rg45 . Предыдущая версия . Еще …
Отредактировано 14.01.2019 19:28 rg45 . Предыдущая версия .
Отредактировано 14.01.2019 19:14 rg45 . Предыдущая версия .
Отредактировано 14.01.2019 19:13 rg45 . Предыдущая версия .
Отредактировано 14.01.2019 19:07 rg45 . Предыдущая версия .
Re: Haters gonna hate but with proofs
От: CodeMonkey  
Дата: 14.01.19 23:42
Оценка: :)))
Здравствуйте, bc_kaya, Вы писали:

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

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

Отсутствие вменяемой модульности и стандарта бинарной совместимости. Уродская система разделения на h/cpp файлы. Крайне тормозной компилятор. Убогая стандартная библиотека. И еще всякие мелкие разности из-за любви Страуструпа к усложнизму.
Отредактировано 14.01.2019 23:51 CodeMonkey . Предыдущая версия .
Re[12]: Haters gonna hate but with proofs
От: landerhigh Пират  
Дата: 15.01.19 00:16
Оценка: +1
Здравствуйте, Слава, Вы писали:

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

L>>Только оказывается, что "запихать" — это скомпилировать в итоге тем же gcc, не получив в итоге ни одного из плюсов "запиховываемого" языка.
С>GCC умеет компилировать Аду. Не в си, а в машинный код. Плюсы вы получите во время разработки на Аде и использования её рантайма (если он есть на целевой платформе, можно и без него).

Можно озвучить плюсы? Только с учетом того, что рантайм — фантастика, там не просто динамической памяти нет, там памяти вообще почти совсем нет
www.blinnov.com
Re[17]: Haters gonna hate but with proofs
От: netch80 Украина http://netch80.dreamwidth.org/
Дата: 15.01.19 04:33
Оценка: +2 :)
Здравствуйте, rg45, Вы писали:

N>>Не совсем. Ничто не мешает создать "страж"-объект, который хранит ссылку на целевой. Что-то вроде unique_ptr в C++ с его возможностями reset() на новое значение и move владения. И это просто, хотя и нужно об этом позаботиться.


R>Все эти телодвижения очень напоминают закаты солнца вручную. У хваленых управляемых языков, у которых, якобы, все на автомате, по сравнению с "переусложненным" C++.


Передёргиваете. Не всё "на автомате", но сильно больше, чем у C++, легче контролируемо и диагностируемо. И переусложнённость последнего это фактор, независимый от его unmanaged характера.

N>>Лишний Dispose обычно не вредит.


R>Обычно не вредит, но иногда может, как повезет.


Если писать, как seen on national TV рекомендовано в книге, то работает без вреда.

R> Возможность тяп-ляп-программирования лично для меня преимущество так себе. Или давайте дружно поругаем C++ за то, что он не позволяет повторные вызовы деструкторов?


Вроде ж позволяет? Типа p->~C()
Или уже запретили? Не следил за этим моментом.
The God is real, unless declared integer.
Re[13]: Haters gonna hate but with proofs
От: kaa.python Ниоткуда РСДН профессионально мёртв и завален ватой.
Дата: 15.01.19 04:46
Оценка:
Здравствуйте, rg45, Вы писали:

R>P.S. При этом заметь, я не иду в атаку с криками "Долой C#!" и "Java — отстой!". Повторюсь: в каждом инструменте есть свои слабые и сильные стороны и нужно просто уметь их исполльзовать.


И я такого не говорю, C++ ж мой кормилец Просто сейчас появились инструменты, которые часто разумнее использоваться вместо C++
Re[17]: Haters gonna hate but with proofs
От: netch80 Украина http://netch80.dreamwidth.org/
Дата: 15.01.19 04:53
Оценка: +1
Здравствуйте, wander, Вы писали:

W>Ну лично я именно массовых переходов наблюдал только два, это desktop для Win (С#) и банковская сфера (Java). Python вроде бы C++ не заменяет, а дополняет. Это вообще очень хорошо.

W>А вот ситуация с Go напоминает эксперимент.

Гугловцы так не думают.

W>Все-таки да, тенденция есть, я не спорю с вами. Я просто думаю, что вы слишком пессимизируете.

W>Не так уж и плохо тут (в С++) на самом деле, чтобы употреблять эпитеты вроде "планка терпения". Эмоционально как-то.

Я этот термин применяю ко всему. Потому что когда ставится вопрос "надо мигрировать", сработала именно поднятие над планкой терпения, и неважно, с какого языка/фреймворка/etc.

W>Потому что на волне популярности это делается, чтобы делать, а не затем, чтобы улучшить результат.


Те, кого стоит читать — пишут именно чтобы улучшить конкретный или общий результат. Ну, на 90%. Этого достаточно, чтобы определить себе рамки и методы для конструктивного общения.

W>Давайте в контексте ветки все-таки еще раз подумаем. Мы ведь тут говорим о стихийных разоблачающих статьях, коих большинство и кои появились именно из-за популярности С++,

W>а не потому что авторы провели всесторонний анализ на базе своего немалого опыта разработки. Все-таки даже претендующие на серьезность критические статьи нет-нет,
W>да и грешат нечестными бенчмарками, оценочными эмоциональными суждениями и т.п.

Их можно фильтровать — эмоциональные так точно, бенчмарки — сложнее, но тоже получается, когда надо.
А эмоциональный фактор тоже важен — когда он происходит из "ё500-й раз наткнулся на эту дебильную говнофичу".

W>Я говорил именно об этом, ведь контекст был задан именно такой.

W>Согласитесь, здравый, конструктивный анализ недостатков не будут называть хейтерством.

Не соглашусь. Дофига таких, что хейтерством называют любую критику, если в ней есть хоть 0.1% следа эмоций, или просто потому, что ругают их любимое средство. Здесь тоже полно такого, хотя обычно такие дискуссии собираются во flame.comp.

W>Есть такая книга, Inside The C++ Object Model. Она старая и во многом неактуальная, но там есть одна интересная вещь.


Книгу не видел. Посыл понятен. Кстати, автор там неправ:

W> Just last week I was chatting with an acquaintance who happens to

W> work for an IC testing manufacturer, and he said they don't use C++ because "it does things
W> behind your back." When I pressed him, he said that he understood that C++ calls malloc()
W> and free() without the programmer knowing it. This is of course not true.

потому что This is of course true, когда у тебя написано что-то типа c=a+b, где переменные — строки, матрицы или что-то подобное. Да, это делает и C, и многие другие. Но именно в C++ значительно легче потерять контроль за этим, и это тот случай, когда гегелевско-марксистское "переход количества в качество" реализуется в банальнейшем сценарии "говно вода поднялась выше рта".

W> Finding the right balance [between abstraction and pragmatism] requires knowledge,

W> experience, and above all, thought.

Безусловно. Но этот уровень баланса не просто очень высок — слишком часто он бессмысленно затратен.
The God is real, unless declared integer.
Re[18]: Haters gonna hate but with proofs
От: wander  
Дата: 15.01.19 06:08
Оценка:
Здравствуйте, netch80, Вы писали:

N>Гугловцы так не думают.

Еще бы.

N>Я этот термин применяю ко всему. Потому что когда ставится вопрос "надо мигрировать", сработала именно поднятие над планкой терпения, и неважно, с какого языка/фреймворка/etc.

Ok.

N>Те, кого стоит читать — пишут именно чтобы улучшить конкретный или общий результат. Ну, на 90%. Этого достаточно, чтобы определить себе рамки и методы для конструктивного общения.

Чтобы понять, кого стоит читать, а кого нет, нужно сперва хорошо в это окунуться.
Вот вы, видимо, можете понять. И я могу. А кто-то нет.
Например, прав ли Торвальдс в своей оценке? Я уверен, много кто согласится, множество доказательств приведет. А кто-то другой, возможно тоже, но уже в защиту. Собственно из-за эмоциональности суждений ценность самой критики теряется, даже если она здравая. А если читать аргументы оправдывающие, или оспаривающие его мнение, то без собственного опыта так и не понять кто тут прав. В итоге проще не разбираться, а довериться тому, у кого для "вас" авторитет выше.

N>Их можно фильтровать — эмоциональные так точно, бенчмарки — сложнее, но тоже получается, когда надо.

N>А эмоциональный фактор тоже важен — когда он происходит из "ё500-й раз наткнулся на эту дебильную говнофичу".
Я не привык так реагировать на неодушевленное и вряд ли тут мы с вами придем к соглашению.

N>Не соглашусь. Дофига таких, что хейтерством называют любую критику, если в ней есть хоть 0.1% следа эмоций, или просто потому, что ругают их любимое средство. Здесь тоже полно такого, хотя обычно такие дискуссии собираются во flame.comp.

Такие есть с обеих сторон, об этом и речь.

W>>Есть такая книга, Inside The C++ Object Model. Она старая и во многом неактуальная, но там есть одна интересная вещь.


N>...когда гегелевско-марксистское "переход количества в качество" реализуется в банальнейшем сценарии "говно вода поднялась выше рта".

Очень сложно здесь рассуждать объективно, т.к. очень сильно влияет субъективный опыт.
Например я ни про один из инструментов, которыми я пользовался, не смог бы так сказать.
У вас опыт иной, и вы можете. Значит и тут мы с вами никогда не сойдемся.
Re[18]: Haters gonna hate but with proofs
От: rg45 СССР  
Дата: 15.01.19 06:23
Оценка:
Здравствуйте, netch80, Вы писали:

N>Передёргиваете. Не всё "на автомате", но сильно больше, чем у C++, легче контролируемо и диагностируемо. И переусложнённость последнего это фактор, независимый от его unmanaged характера.


Не передергиваю, а подчеркиваю, что не настолько сильно, как многие хотят это показать. У C++ есть свои преимущества, причем весомые.

N>Если писать, как seen on national TV рекомендовано в книге, то работает без вреда.


Вот именно, расхлябанность, присущая многим C# разработчикам, проистекает из базовых рекоммендаций. Подумаешь, беда — Dispose вызвался не один раз, а три. А можно вообще не вызывать — памперс все впитает. Во всем вот это вот "срала-мазала", тьфу, терпеть этого не могу.

N>Вроде ж позволяет? Типа p->~C()

N>Или уже запретили? Не следил за этим моментом.

Да написать-то можно все, что угодно. Только повторный вызов деструктора, как и любое обращение к членам объекта после окончания времени его жизни, квалифицируется стандаром языка как UB. Время жизни объекта заканчивается при входе в деструктор. При первом же входе, разумеется. И во многих случаях это UB приводит к реальным проблемам в runtime. Вот, пожалуйста, простейшая иллюстрация: https://ideone.com/mJUlON
--
Не можешь достичь желаемого — пожелай достигнутого.
Отредактировано 15.01.2019 10:53 rg45 . Предыдущая версия . Еще …
Отредактировано 15.01.2019 7:59 rg45 . Предыдущая версия .
Отредактировано 15.01.2019 7:32 rg45 . Предыдущая версия .
Отредактировано 15.01.2019 7:25 rg45 . Предыдущая версия .
Отредактировано 15.01.2019 7:22 rg45 . Предыдущая версия .
Отредактировано 15.01.2019 7:20 rg45 . Предыдущая версия .
Отредактировано 15.01.2019 7:19 rg45 . Предыдущая версия .
Отредактировано 15.01.2019 7:10 rg45 . Предыдущая версия .
Отредактировано 15.01.2019 7:07 rg45 . Предыдущая версия .
Отредактировано 15.01.2019 7:07 rg45 . Предыдущая версия .
Отредактировано 15.01.2019 7:04 rg45 . Предыдущая версия .
Отредактировано 15.01.2019 7:03 rg45 . Предыдущая версия .
Отредактировано 15.01.2019 7:02 rg45 . Предыдущая версия .
Re[14]: Haters gonna hate but with proofs
От: rg45 СССР  
Дата: 15.01.19 06:31
Оценка:
Здравствуйте, kaa.python, Вы писали:

KP>И я такого не говорю, C++ ж мой кормилец Просто сейчас появились инструменты, которые часто разумнее использоваться вместо C++


Если бы ты добавил к своему высказыванию "для определенного круга задач", то я сразу бы согласился. А попробуй-ка написать на чистом C#, без плюсов, какой-нибудь симулятор физического 3D мира с collision detection, и резолвингом взаимодействий. Я тебе наперед скажу, что будет: никто никуда не полетит. А вот формочки клепать — это да, на шарпе куда приятнее, чем на плюсах. Ну и вообще, разработка на C# существенно проще и быстрее, чем на плюсах, с этим тоже не поспоришь, конечно.
--
Не можешь достичь желаемого — пожелай достигнутого.
Отредактировано 15.01.2019 6:37 rg45 . Предыдущая версия . Еще …
Отредактировано 15.01.2019 6:37 rg45 . Предыдущая версия .
Отредактировано 15.01.2019 6:33 rg45 . Предыдущая версия .
Re[15]: Haters gonna hate but with proofs
От: kaa.python Ниоткуда РСДН профессионально мёртв и завален ватой.
Дата: 15.01.19 06:34
Оценка:
Здравствуйте, rg45, Вы писали:

R>Если бы ты добавил к своему высказыванию "для определенного круга задач", то я сразу бы согласился. А попробуй-ка написать на чистом C#, без плюсов, написать какой-нибудь симулятор физического 3D мира с collision detection, и резолвингом взаимодействий. Я тебе наперед скажу, что будет: никто никуда не полетит.


На C# – не полетит, как и на любом другом языке с GC.
На Rust – наверное полетит и может быть (тут у меня серьезные сомнения, но всё же) будет проще в поддержке чем C++ реализация.
Re[16]: Haters gonna hate but with proofs
От: rg45 СССР  
Дата: 15.01.19 06:46
Оценка: +1
Здравствуйте, kaa.python, Вы писали:

KP>На C# – не полетит, как и на любом другом языке с GC.

KP>На Rust – наверное полетит и может быть (тут у меня серьезные сомнения, но всё же) будет проще в поддержке чем C++ реализация.

К сожалению, мое знание Rust, а точнее, полное его отсутствие, несколько затрудняет мое участие в дискуссии по этому вопросу

Но чисто из общих соображений могу предположить, что и у Rust, помимо сильных сторон, обязательно найдутся и слабые, если копнуть. Ничто хорошее ведь не бывает бесплатно в нашем грешном мире.
--
Не можешь достичь желаемого — пожелай достигнутого.
Re[3]: Haters gonna hate but with proofs
От: lpd Черногория  
Дата: 15.01.19 08:04
Оценка: +1 -3 :))
Здравствуйте, ononim, Вы писали:

O>Как говорится 40% С++ знает почти каждый. Проблема в том что это всегда разные 40%.


Уточнил бы, что дело не в знании C++, а в субъективных предпочтениях. И если первый вариант С++ понравился большинству программистов, то в последние 10 лет Страуструп его превратил в скобочного монстра, который у большинства вызывает отталкивающее впечатление. При этом C++ не занял ни одной новой ниши за это время.
У сложных вещей обычно есть и хорошие, и плохие аспекты.
Берегите Родину, мать вашу. (ДДТ)
Re[6]: Haters gonna hate but with proofs
От: Igore Россия  
Дата: 15.01.19 08:12
Оценка: +7 -1
Здравствуйте, netch80, Вы писали:

N>3. Вместо того, чтобы сначала плодить проблемы работы с памятью, а потом их ловить — причём может оказаться, что диверсант сидит в чужом проприетарном коде, и ты фиг запинаешь его авторов исправить свою ошибку — можно изначально использовать инструмент, у которого этих проблем нет.

N>Собственно на этом выезжают managed среды, начиная с BASIC и Java: какой бы говнокод на них не писался и не импортировался, он не доведёт обстановку до совсем нерабочего состояния, если не использовать спец. средства, которые легко детектируются. А в unmanaged — наоборот.
Ну, как бэ, как человек который искал и устранял утечки памяти в JS и C#, могу сказать что в С++ с этим попроще(именно нахождение), хотя и опыта в С++ у меня намного больше, а последнии годы я вообще не сталкивался с такой проблемой как утечка памяти в С++.
[UPD] Re[4]: Haters gonna hate but with proofs
От: ononim  
Дата: 15.01.19 08:39
Оценка: +4
O>>Как говорится 40% С++ знает почти каждый. Проблема в том что это всегда разные 40%.
lpd>Уточнил бы, что дело не в знании C++, а в субъективных предпочтениях.
Именно С++ позволяет писать "как на С", или "как на джаве/C#".
Джава в свою очередь не позволяет писать "как на С", как и С не позволяет писать "как на джаве".

lpd>И если первый вариант С++ понравился большинству программистов,

Большинству С программистов. Которые стали его воспринимать как расширенную версию С.

lpd>то в последние 10 лет Страуструп его превратил в скобочного монстра, который у большинства вызывает отталкивающее впечатление.

Просто не надо пытаться воспринимать С++ как расширенный С или как недоделанную джаву. Это самостоятельный язык программирования. У тех кто его воспринимает именно так никакого отталкивающего впечатления нету.

Можно для наглядности представить себе что в следующем станадарте в С++ введут питонообразные. Дескать хотите — ставьте в функции фигурные скобочки, хотите — отступами блоки разделяйте. Компилятор разберется что вы имели ввиду.
Казалось бы, облегчение жизни тем кому приходится писать на С++ временами, но армия С++-хейтеров от этого только увеличится
Как много веселых ребят, и все делают велосипед...
Отредактировано 15.01.2019 8:50 ononim . Предыдущая версия . Еще …
Отредактировано 15.01.2019 8:50 ononim . Предыдущая версия .
Re[4]: Haters gonna hate but with proofs
От: rg45 СССР  
Дата: 15.01.19 08:45
Оценка:
Здравствуйте, lpd, Вы писали:

lpd>Уточнил бы, что дело не в знании C++, а в субъективных предпочтениях. И если первый вариант С++ понравился большинству программистов, то в последние 10 лет Страуструп его превратил в скобочного монстра, который у большинства вызывает отталкивающее впечатление. При этом C++ не занял ни одной новой ниши за это время.


Не нужно вот только от большинства выступать — "большинство" оно у всех разное.
--
Не можешь достичь желаемого — пожелай достигнутого.
Re[5]: Haters gonna hate but with proofs
От: lpd Черногория  
Дата: 15.01.19 08:46
Оценка: +2 -1 :))
Здравствуйте, ononim, Вы писали:

O>Просто не надо пытаться воспринимать С++ как расширенный С или как недоделанную джаву. Это самостоятельный язык программирования. У тех кто его воспринимает именно так никакого отталкивающего впечатления нету.


Ну вот джава как была в бэкенде, там и есть, без вариадиков и rai. А С++ как был языком для низкоуровнего кода, так им и остался, только его испортили всеми этими умными указателями на шаблонах и вариадиками.
Лично я бы все новые фичи С++ заменил на опциональный GC и какое-нибудь упрощение линковки/сборки. На получившемся языке вдобавок можно было бы писать неущербный по скорости бэкенд.
У сложных вещей обычно есть и хорошие, и плохие аспекты.
Берегите Родину, мать вашу. (ДДТ)
Re[8]: Haters gonna hate but with proofs
От: Skorodum Россия  
Дата: 15.01.19 09:07
Оценка:
Здравствуйте, kaa.python, Вы писали:

KP>Не так элегантно как в C++, но всё же работает достаточно надежно:

KP>
KP>f := createFile("/tmp/defer.txt")
KP>defer closeFile(f)
KP>writeFile(f)
KP>

А тут есть гарантия, что не будет исключения или чего-то подобного между первой и второй строкой?
Re[6]: Haters gonna hate but with proofs
От: Kswapd Россия  
Дата: 15.01.19 09:17
Оценка:
Здравствуйте, lpd, Вы писали:


lpd>А С++ как был языком для низкоуровнего кода, так им и остался, только его испортили всеми этими умными указателями на шаблонах и вариадиками.

lpd>Лично я бы все новые фичи С++ заменил на опциональный GC и какое-нибудь упрощение линковки/сборки. На получившемся языке вдобавок можно было бы писать неущербный по скорости бэкенд.

+1
Кажется, Страуструп высказывался в том духе, что внутри C++ сидит другой, лучший язык, который стремится наружу (не смог найти оригинальную цитату). Вот только он никогда не вылупится: тянет назад требование обратной совместимости со всеми предыдущими версиями вплоть до K&R Си. Лучшие языки появляются вне .
Re[2]: Haters gonna hate but with proofs
От: ononim  
Дата: 15.01.19 09:44
Оценка: +2
CM>Уродская система разделения на h/cpp файлы.
Ее нет.
Как много веселых ребят, и все делают велосипед...
Re[6]: Haters gonna hate but with proofs
От: Skorodum Россия  
Дата: 15.01.19 10:37
Оценка: +2
Здравствуйте, lpd, Вы писали:

lpd>Ну вот джава как была в бэкенде, там и есть, без вариадиков и rai.

Ну, да потеснить С++ она не может.

lpd>А С++ как был языком для низкоуровнего кода, так им и остался

Нет, С++ позволят управлять ресурсами в стиле С и как в управляемых языках только без переплаты.

lpd>только его испортили всеми этими умными указателями на шаблонах и вариадиками.

Умные указатели и RAII это одна из основных причин использования С++ вместо C.

lpd>Лично я бы все новые фичи С++ заменил на опциональный GC и какое-нибудь упрощение линковки/сборки. На получившемся языке вдобавок можно было бы писать неущербный по скорости бэкенд.

С#, скорость понятие относительное, кому-то хватает и Java и С#.
Re[7]: Haters gonna hate but with proofs
От: lpd Черногория  
Дата: 15.01.19 10:50
Оценка: :)
Здравствуйте, Skorodum, Вы писали:

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


lpd>>Ну вот джава как была в бэкенде, там и есть, без вариадиков и rai.

S>Ну, да потеснить С++ она не может.
Ну вообще немало десктопных приложений c GUI написаны на джаве + Android, хотя это и два недоразумения. Но C++-то джаву/C# не потеснил никак за все годы.

lpd>>А С++ как был языком для низкоуровнего кода, так им и остался

S>Нет, С++ позволят управлять ресурсами в стиле С и как в управляемых языках только без переплаты.
Переплата c GC(если ты об этом) играет роль только в real-time приложениях, потому и нужно его сделать опциональным. Зато c GC не надо ломать голову нет ли круговых ссылок, и какой из unique_ptr<T>, shared_ptr<T> или weak_ptr<T> выбирать(отдельное спасибо за вырвиглазный синтаксис).

lpd>>только его испортили всеми этими умными указателями на шаблонах и вариадиками.

S>Умные указатели и RAII это одна из основных причин использования С++ вместо C.
Ну вроде очевидно, что основное отличие C++ это классы, с наследованием и полиморфизмом, которые на C++ удобны — поэтому он и прижился. Все остальное вместе с move-семантикой — уже на любителя.

lpd>>Лично я бы все новые фичи С++ заменил на опциональный GC и какое-нибудь упрощение линковки/сборки. На получившемся языке вдобавок можно было бы писать неущербный по скорости бэкенд.

S>С#, скорость понятие относительное, кому-то хватает и Java и С#.
Отностильно скорости тут уже обсуждали результаты профилирования stackoverflow.com(C#), и выяснилось, что в C# коде процессор проводит столько же времени, сколько в коде базы. То есть ускорение от C++ было бы заметно.
Да и для меня дело не в скорости JVM даже — мне больше нравится простая компиляция в машинные коды, а не в избыточный байткод.
У сложных вещей обычно есть и хорошие, и плохие аспекты.
Берегите Родину, мать вашу. (ДДТ)
Отредактировано 15.01.2019 10:54 lpd . Предыдущая версия .
Re[9]: Haters gonna hate but with proofs
От: netch80 Украина http://netch80.dreamwidth.org/
Дата: 15.01.19 11:01
Оценка:
Здравствуйте, Skorodum, Вы писали:

KP>>Не так элегантно как в C++, но всё же работает достаточно надежно:

KP>>
KP>>f := createFile("/tmp/defer.txt")
KP>>defer closeFile(f)
KP>>writeFile(f)
KP>>

S>А тут есть гарантия, что не будет исключения или чего-то подобного между первой и второй строкой?

Есть. (А с чего бы ей не быть?)
The God is real, unless declared integer.
Re[10]: Haters gonna hate but with proofs
От: Skorodum Россия  
Дата: 15.01.19 11:04
Оценка:
Здравствуйте, netch80, Вы писали:

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


KP>>>Не так элегантно как в C++, но всё же работает достаточно надежно:

KP>>>
KP>>>f := createFile("/tmp/defer.txt")
KP>>>defer closeFile(f)
KP>>>writeFile(f)
KP>>>

S>>А тут есть гарантия, что не будет исключения или чего-то подобного между первой и второй строкой?

N>Есть. (А с чего бы ей не быть?)

Многопоточноть?
Re[4]: Haters gonna hate but with proofs
От: netch80 Украина http://netch80.dreamwidth.org/
Дата: 15.01.19 11:13
Оценка:
Здравствуйте, lpd, Вы писали:

O>>Как говорится 40% С++ знает почти каждый. Проблема в том что это всегда разные 40%.


lpd>Уточнил бы, что дело не в знании C++, а в субъективных предпочтениях. И если первый вариант С++ понравился большинству программистов, то в последние 10 лет Страуструп его превратил в скобочного монстра, который у большинства вызывает отталкивающее впечатление. При этом C++ не занял ни одной новой ниши за это время.


Страуструп давно не рулит развитием языка.
Остальное — я уже подробно высказался в этой ветке.
The God is real, unless declared integer.
Re[7]: Haters gonna hate but with proofs
От: netch80 Украина http://netch80.dreamwidth.org/
Дата: 15.01.19 11:15
Оценка:
Здравствуйте, Igore, Вы писали:

N>>3. Вместо того, чтобы сначала плодить проблемы работы с памятью, а потом их ловить — причём может оказаться, что диверсант сидит в чужом проприетарном коде, и ты фиг запинаешь его авторов исправить свою ошибку — можно изначально использовать инструмент, у которого этих проблем нет.

N>>Собственно на этом выезжают managed среды, начиная с BASIC и Java: какой бы говнокод на них не писался и не импортировался, он не доведёт обстановку до совсем нерабочего состояния, если не использовать спец. средства, которые легко детектируются. А в unmanaged — наоборот.
I>Ну, как бэ, как человек который искал и устранял утечки памяти в JS и C#, могу сказать что в С++ с этим попроще(именно нахождение),

О каких утечках памяти речь в JS и C#? В managed слое, или в переходном к unmanaged?

I> хотя и опыта в С++ у меня намного больше, а последнии годы я вообще не сталкивался с такой проблемой как утечка памяти в С++.


Вам, наверно, везёт, что не приходится использовать посторонние библиотеки?
The God is real, unless declared integer.
Re[9]: Haters gonna hate but with proofs
От: kaa.python Ниоткуда РСДН профессионально мёртв и завален ватой.
Дата: 15.01.19 11:55
Оценка:
Здравствуйте, Skorodum, Вы писали:

S>А тут есть гарантия, что не будет исключения или чего-то подобного между первой и второй строкой?


Есть — в Go нет исключений как таковых, но есть паники. Паника может возникнуть в `createFile`, либо уже в `writeFile`, но не между ними, так как там просто нечему паниковать.
Re[10]: Haters gonna hate but with proofs
От: Skorodum Россия  
Дата: 15.01.19 12:04
Оценка:
Здравствуйте, kaa.python, Вы писали:

KP>Есть — в Go нет исключений как таковых, но есть паники. Паника может возникнуть в `createFile`, либо уже в `writeFile`, но не между ними, так как там просто нечему паниковать.

А другой поток?
Re[8]: Haters gonna hate but with proofs
От: Igore Россия  
Дата: 15.01.19 12:06
Оценка:
Здравствуйте, netch80, Вы писали:

N>>>3. Вместо того, чтобы сначала плодить проблемы работы с памятью, а потом их ловить — причём может оказаться, что диверсант сидит в чужом проприетарном коде, и ты фиг запинаешь его авторов исправить свою ошибку — можно изначально использовать инструмент, у которого этих проблем нет.

N>>>Собственно на этом выезжают managed среды, начиная с BASIC и Java: какой бы говнокод на них не писался и не импортировался, он не доведёт обстановку до совсем нерабочего состояния, если не использовать спец. средства, которые легко детектируются. А в unmanaged — наоборот.
I>>Ну, как бэ, как человек который искал и устранял утечки памяти в JS и C#, могу сказать что в С++ с этим попроще(именно нахождение),

N>О каких утечках памяти речь в JS и C#? В managed слое, или в переходном к unmanaged?

В кроссылках, когда один объект ссылается на другой, и при удалении GC это оставляет жить, в итоге ПО съедало всю память и падало.

I>> хотя и опыта в С++ у меня намного больше, а последнии годы я вообще не сталкивался с такой проблемой как утечка памяти в С++.

N>Вам, наверно, везёт, что не приходится использовать посторонние библиотеки?
Вот перечень стороних:
rapidjson, boost, qt5, xerces, xalan, xsec, sqlite, odb, openssl, curl, protobuf, ncreport, zlib, soci, librsync
Отредактировано 15.01.2019 12:07 Igore . Предыдущая версия .
Re[11]: Haters gonna hate but with proofs
От: kaa.python Ниоткуда РСДН профессионально мёртв и завален ватой.
Дата: 15.01.19 12:11
Оценка: +1
Здравствуйте, Skorodum, Вы писали:

S>А другой поток?


А что с ним? Почему он как-то может повлиять?
Re: Haters gonna hate but with proofs
От: Ip Man Китай  
Дата: 15.01.19 15:27
Оценка: 1 (1) +3
Здравствуйте, bc_kaya, Вы писали:

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


Как фанат С++, заявляю, что это все из-за нынешних выпускников колледжей, которые знают алгоритмы, но которым пофигу как там все работает на низком уровне.
Короче, неосиляторы. Поэтому засилье managed языков и тонны г-на выливающихся на годные языки вроде С++.

Теперь объективное мнение:

1. Отсутствие рефлексии, и, как следствие — dependency injection. То же с моками в юнит тестах. gtest позволяет их делать для шаблонов или абстрактных классов, но после Mockito это как ВАЗ после BMW
2. Сюда же — медленная скорость разработки качественного кода в сравнении с той же Java и больше возможностей грохнуть программу.
3. Метапрограммирование. Сейчас придут спецы, которые скажут, что это просто. Да нифига, это самая сложная часть С++ (хотя и самая интересная, по мне).


Но — с другой стороны, спрос на С++ есть в узких нишах (напр. в финансах), и, по-моему, спрос на хороших специалистов значительно превышает предложение.
Re[3]: Haters gonna hate but with proofs
От: CodeMonkey  
Дата: 15.01.19 18:47
Оценка:
Здравствуйте, ononim, Вы писали:

CM>>Уродская система разделения на h/cpp файлы.

O>Ее нет.

И куда же она вдруг пропала?
Re[4]: Haters gonna hate but with proofs
От: ononim  
Дата: 16.01.19 08:48
Оценка: +4
CM>>>Уродская система разделения на h/cpp файлы.
O>>Ее нет.
CM>И куда же она вдруг пропала?
Ее никогда и не было. Это human-level абстракция.
Как много веселых ребят, и все делают велосипед...
Re: Haters gonna hate but with proofs
От: BacCM Россия  
Дата: 16.01.19 11:02
Оценка:
Здравствуйте, bc_kaya, Вы писали:

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

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

https://www.youtube.com/watch?v=9-_TLTdLGtc

Притом автор не просто какой-то хрен с горы, и любит плюсы
Re: Haters gonna hate but with proofs
От: BacCM Россия  
Дата: 16.01.19 11:10
Оценка: :)))
Потому, что с кривыми руками особенно после всяких пайтонов и джиэсов можно такого наворотить, что просто ужос.


Одна из моих любимых задачек про плюсы для новичков в этом деле.


#include <iostream>


// Что будет выведено в консоль
int main()
{
    int a, b;
    a = 1,2,3,4,a = 5,6,7;
    std::cout << "a= " << a << std::endl;

    a = (1,2,3,4),a = (5,6,7);
    std::cout << "a= " << a << std::endl;

    a = (1,2,3,4,a = 5,6,7);
    std::cout << "a= " << a << std::endl;

    (a, b) = 100, 200;
    std::cout << "a= " << a << " b=" << b << std::endl;

    (a, b) = (100, 200);
    std::cout << "a= " << a << " b=" << b << std::endl;

    int v[2][3] = {{10, 20, 30}, {100, 200, 300}};
    std::cout << "v[1,1]= " << v[1,1] << std::endl;
    
    return 0;
}


Беда в том, что местами код взят из реальной жизни.
Например конструкции типа x = 3,1415;
или x[1,2] = 5;
Re[2]: Haters gonna hate but with proofs
От: Voivoid Россия  
Дата: 16.01.19 12:39
Оценка: +2 :)
Здравствуйте, BacCM, Вы писали:

BCM>Одна из моих любимых задачек про плюсы для новичков в этом деле.

  use warnings, luke
g++ -Wall -Wextra -Wpedantic -Werror -Wduplicated-cond -Wduplicated-branches -Wlogical-op -Wrestrict -Wnull-dereference -Wold-style-cast -Wuseless-cast -Wdouble-promotion -Wshadow -Wformat=2 -Wconversion -Wsign-conversion -Wfloat-equal -Wcast-qual -Winit-self -Wpointer-arith -Wswitch -Wswitch-enum -Woverloaded-virtual -Wundef ./main.cpp
./main.cpp: In function ‘int main()’:
./main.cpp:8:13: error: right operand of comma operator has no effect [-Werror=unused-value]
a = 1,2,3,4,a = 5,6,7;
^
./main.cpp:8:15: error: right operand of comma operator has no effect [-Werror=unused-value]
a = 1,2,3,4,a = 5,6,7;
^
./main.cpp:8:21: error: right operand of comma operator has no effect [-Werror=unused-value]
a = 1,2,3,4,a = 5,6,7;
^
./main.cpp:8:25: error: right operand of comma operator has no effect [-Werror=unused-value]
a = 1,2,3,4,a = 5,6,7;
^
./main.cpp:8:26: error: right operand of comma operator has no effect [-Werror=unused-value]
a = 1,2,3,4,a = 5,6,7;
^
./main.cpp:11:12: error: left operand of comma operator has no effect [-Werror=unused-value]
a = (1,2,3,4),a = (5,6,7);
^
./main.cpp:11:14: error: right operand of comma operator has no effect [-Werror=unused-value]
a = (1,2,3,4),a = (5,6,7);
^
./main.cpp:11:16: error: right operand of comma operator has no effect [-Werror=unused-value]
a = (1,2,3,4),a = (5,6,7);
^
./main.cpp:11:26: error: left operand of comma operator has no effect [-Werror=unused-value]
a = (1,2,3,4),a = (5,6,7);
^
./main.cpp:11:28: error: right operand of comma operator has no effect [-Werror=unused-value]
a = (1,2,3,4),a = (5,6,7);
^
./main.cpp:14:12: error: left operand of comma operator has no effect [-Werror=unused-value]
a = (1,2,3,4,a = 5,6,7);
^
./main.cpp:14:14: error: right operand of comma operator has no effect [-Werror=unused-value]
a = (1,2,3,4,a = 5,6,7);
^
./main.cpp:14:16: error: right operand of comma operator has no effect [-Werror=unused-value]
a = (1,2,3,4,a = 5,6,7);
^
./main.cpp:14:22: error: right operand of comma operator has no effect [-Werror=unused-value]
a = (1,2,3,4,a = 5,6,7);
^
./main.cpp:14:26: error: right operand of comma operator has no effect [-Werror=unused-value]
a = (1,2,3,4,a = 5,6,7);
^
./main.cpp:17:9: error: left operand of comma operator has no effect [-Werror=unused-value]
(a, b) = 100, 200;
^
./main.cpp:17:22: error: right operand of comma operator has no effect [-Werror=unused-value]
(a, b) = 100, 200;
^
./main.cpp:20:9: error: left operand of comma operator has no effect [-Werror=unused-value]
(a, b) = (100, 200);
^
./main.cpp:20:20: error: left operand of comma operator has no effect [-Werror=unused-value]
(a, b) = (100, 200);
^~~
./main.cpp:24:36: error: left operand of comma operator has no effect [-Werror=unused-value]
std::cout << "v[1,1]= " << v[1,1] << std::endl;


Re[2]: Haters gonna hate but with proofs
От: kov_serg Россия  
Дата: 16.01.19 12:53
Оценка: +1
Здравствуйте, BacCM, Вы писали:

BCM>https://www.youtube.com/watch?v=9-_TLTdLGtc

BCM>Притом автор не просто какой-то хрен с горы, и любит плюсы
В рамку и на стену:

The problem in this community is:
The more scary a proposal is — the more people like it.
And even worse they always find at least one useful application.

Re[19]: Haters gonna hate but with proofs
От: netch80 Украина http://netch80.dreamwidth.org/
Дата: 16.01.19 12:56
Оценка:
Здравствуйте, wander, Вы писали:

N>>Те, кого стоит читать — пишут именно чтобы улучшить конкретный или общий результат. Ну, на 90%. Этого достаточно, чтобы определить себе рамки и методы для конструктивного общения.

W>Чтобы понять, кого стоит читать, а кого нет, нужно сперва хорошо в это окунуться.
W>Вот вы, видимо, можете понять. И я могу. А кто-то нет.
W>Например, прав ли Торвальдс в своей оценке? Я уверен, много кто согласится, множество доказательств приведет. А кто-то другой, возможно тоже, но уже в защиту. Собственно из-за эмоциональности суждений ценность самой критики теряется, даже если она здравая. А если читать аргументы оправдывающие, или оспаривающие его мнение, то без собственного опыта так и не понять кто тут прав. В итоге проще не разбираться, а довериться тому, у кого для "вас" авторитет выше.

N>>Их можно фильтровать — эмоциональные так точно, бенчмарки — сложнее, но тоже получается, когда надо.

N>>А эмоциональный фактор тоже важен — когда он происходит из "ё500-й раз наткнулся на эту дебильную говнофичу".
W>Я не привык так реагировать на неодушевленное и вряд ли тут мы с вами придем к соглашению.

Ну, завидую, если так. Я вообще-то в какой-то мере не о себе говорил, а о коллегах, но всё равно я считаю, что эмоциональная реакция данного типа не просто оправдана, но ещё и уместна и полезна.

W>>>Есть такая книга, Inside The C++ Object Model. Она старая и во многом неактуальная, но там есть одна интересная вещь.


N>>...когда гегелевско-марксистское "переход количества в качество" реализуется в банальнейшем сценарии "говно вода поднялась выше рта".

W>Очень сложно здесь рассуждать объективно, т.к. очень сильно влияет субъективный опыт.
W>Например я ни про один из инструментов, которыми я пользовался, не смог бы так сказать.

Завидую(2). Я на нескольких таки обжигался до такой степени, чтобы дальше отказываться от них по максимуму.

W>У вас опыт иной, и вы можете. Значит и тут мы с вами никогда не сойдемся.


Но понять-то меня вполне можете? Не обязательно же принимать только то, что прочувствовал на собственной шкуре.
The God is real, unless declared integer.
Re[2]: Haters gonna hate but with proofs
От: rg45 СССР  
Дата: 16.01.19 13:29
Оценка: +3
Здравствуйте, BacCM, Вы писали:


BCM>Одна из моих любимых задачек про плюсы для новичков в этом деле.

BCM> . . .

Столько строк кода только лишь для того, чтобы проверить знание приоритета оператора запятая? Или это одновременно и тест на внимательность?
--
Не можешь достичь желаемого — пожелай достигнутого.
Re[9]: Haters gonna hate but with proofs
От: netch80 Украина http://netch80.dreamwidth.org/
Дата: 16.01.19 13:38
Оценка:
Здравствуйте, Igore, Вы писали:

N>>>>Собственно на этом выезжают managed среды, начиная с BASIC и Java: какой бы говнокод на них не писался и не импортировался, он не доведёт обстановку до совсем нерабочего состояния, если не использовать спец. средства, которые легко детектируются. А в unmanaged — наоборот.

I>>>Ну, как бэ, как человек который искал и устранял утечки памяти в JS и C#, могу сказать что в С++ с этим попроще(именно нахождение),
N>>О каких утечках памяти речь в JS и C#? В managed слое, или в переходном к unmanaged?
I>В кроссылках, когда один объект ссылается на другой, и при удалении GC это оставляет жить, в итоге ПО съедало всю память и падало.

Звучит как тяжёлая недоработка конкретных рантаймов.
Потому что если он упирается в жёсткий предел памяти, он обязан вызвать полный GC. Но желательно делать инкрементальный и раньше.
Мне в этом смысле особенно нравится, как сделано в Lua. По умолчанию — превысили двойной размер после прошлой сборки — запускаем новую. Тяжёлого разрастания без причин там в итоге не бывает, есть чёткое представление, на сколько делать запас.
В ранних Java, да, было с этим хуже, там обычно пока операционка не скажет "фиг тебе, а не страничка", не собиралось. Но и то исправили достаточно давно.

Я вначале подумал, что вы про случай, когда на какое-то уже ненужное дерево объектов висит забытая ссылка из одного из тех, что должны сейчас жить. Такие вещи, да, диагностируются тяжело, если нет возможности у системы спросить и проитерировать множество вообще всех объектов.
Не знаю про типовые реализации JS, но в дотнете, вроде бы, такое есть везде?

I>>> хотя и опыта в С++ у меня намного больше, а последнии годы я вообще не сталкивался с такой проблемой как утечка памяти в С++.

N>>Вам, наверно, везёт, что не приходится использовать посторонние библиотеки?
I>Вот перечень стороних:
I>rapidjson, boost, qt5, xerces, xalan, xsec, sqlite, odb, openssl, curl, protobuf, ncreport, zlib, soci, librsync

Полный список не знаю, и не могу сказать, кто из них на самом деле покемон, но в пределах моих знаний тут нет проприетарных либ всяких тематических коннекторов, в которых больше всего подобных граблей (на OCI, кажется, только ленивый не ругался).
The God is real, unless declared integer.
Re[2]: Haters gonna hate but with proofs
От: reversecode google
Дата: 16.01.19 13:39
Оценка: +1 -1
то есть синьоров вы не нанимаете ?
Re[3]: Haters gonna hate but with proofs
От: BacCM Россия  
Дата: 16.01.19 14:17
Оценка:
Здравствуйте, reversecode, Вы писали:


R>то есть синьоров вы не нанимаете ?


Если пойдут на предлагаемые нами деньги, то наймём с радостью

Но им такой код только в качестве вместе посмеяться можно показать.
Re[3]: Haters gonna hate but with proofs
От: BacCM Россия  
Дата: 16.01.19 14:21
Оценка:
Здравствуйте, rg45, Вы писали:

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



BCM>>Одна из моих любимых задачек про плюсы для новичков в этом деле.

BCM>> . . .

R>Столько строк кода только лишь для того, чтобы проверить знание приоритета оператора запятая? Или это одновременно и тест на внимательность?


Это не тест на знание, просто иногда показать и посмотреть на реакцию. Код писался не для собеседований, а так посмотреть какую еще можно дичь наваять, чтобы было похоже на правильный код.
Re[4]: Haters gonna hate but with proofs
От: rg45 СССР  
Дата: 16.01.19 15:09
Оценка: 36 (10) :))) :))
Здравствуйте, BacCM, Вы писали:

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


У меня в этом плане любимая вот эта, что выведет программа:

https://ideone.com/w3ZXdB

#include <iostream>

template <typename T>
int foo(T&, T&) { return 1; }

int foo(char*, char*) { return 2; }

int main()
{
   std::cout << foo("Hello", "World") << std::endl;
   std::cout << foo("Hello", "World!") << std::endl;
}
--
Не можешь достичь желаемого — пожелай достигнутого.
Re[19]: Haters gonna hate but with proofs
От: netch80 Украина http://netch80.dreamwidth.org/
Дата: 16.01.19 15:34
Оценка:
Здравствуйте, rg45, Вы писали:

N>>Передёргиваете. Не всё "на автомате", но сильно больше, чем у C++, легче контролируемо и диагностируемо. И переусложнённость последнего это фактор, независимый от его unmanaged характера.

R>Не передергиваю, а подчеркиваю, что не настолько сильно, как многие хотят это показать. У C++ есть свои преимущества, причем весомые.

Так именно веса аргументов это та вещь, которая достаточно индивидуальна.
Вам преимущества кажутся весомее недостатков, а кому-то настолько наоборот, что он начинает публично плеваться.

N>>Если писать, как seen on national TV рекомендовано в книге, то работает без вреда.

R>Вот именно, расхлябанность, присущая многим C# разработчикам, проистекает из базовых рекоммендаций. Подумаешь, беда — Dispose вызвался не один раз, а три. А можно вообще не вызывать — памперс все впитает. Во всем вот это вот "срала-мазала", тьфу, терпеть этого не могу.

Понятно, но "других людей для вас у меня нет", как обычно.
The God is real, unless declared integer.
Re[5]: Haters gonna hate but with proofs
От: BacCM Россия  
Дата: 16.01.19 16:29
Оценка:
Здравствуйте, rg45, Вы писали:

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


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


R>У меня в этом плане любимая вот эта, что выведет программа:


R>https://ideone.com/w3ZXdB


R>
R>#include <iostream>

R>template <typename T>
R>int foo(T&, T&) { return 1; }

R>int foo(char*, char*) { return 2; }

R>int main()
R>{
R>   std::cout << foo("Hello", "World") << std::endl;
R>   std::cout << foo("Hello", "World!") << std::endl;
R>}
R>


Да, встречался с подобными штуками. Но на "непонятное поведение" в подобных случаях даже когда знаешь легко нарваться.
Re[5]: Haters gonna hate but with proofs
От: CodeMonkey  
Дата: 16.01.19 18:46
Оценка: :)
Здравствуйте, ononim, Вы писали:

O>Ее никогда и не было. Это human-level абстракция.


Какая еще абстракция? Препроцессор уже отменили, что ли?
Re[5]: Haters gonna hate but with proofs
От: _vanger_  
Дата: 17.01.19 01:01
Оценка:
Здравствуйте, rg45, Вы писали:

R>У меня в этом плане любимая вот эта, что выведет программа:


R>https://ideone.com/w3ZXdB


Ух ты! А почему, когда длины строк равны, они интерпретируются как string, а если различны, как char*?
Re[4]: Haters gonna hate but with proofs
От: reversecode google
Дата: 17.01.19 03:59
Оценка: 1 (1)
http://cppquiz.org/
Re[6]: Haters gonna hate but with proofs
От: Voivoid Россия  
Дата: 17.01.19 06:09
Оценка: 2 (1) +2
Здравствуйте, _vanger_, Вы писали:

__>Ух ты! А почему, когда длины строк равны, они интерпретируются как string, а если различны, как char*?

в первом вызове аргументы char[6] и char[6]
во втором вызове аргументы char[6] и char[7]

Во втором случае вызывается не шаблонная функция т.к. типы char[6] и char[7] разные
Re[10]: Haters gonna hate but with proofs
От: Igore Россия  
Дата: 17.01.19 06:19
Оценка:
Здравствуйте, netch80, Вы писали:

N>Звучит как тяжёлая недоработка конкретных рантаймов.

N>Потому что если он упирается в жёсткий предел памяти, он обязан вызвать полный GC. Но желательно делать инкрементальный и раньше.
N>Мне в этом смысле особенно нравится, как сделано в Lua. По умолчанию — превысили двойной размер после прошлой сборки — запускаем новую. Тяжёлого разрастания без причин там в итоге не бывает, есть чёткое представление, на сколько делать запас.
N>В ранних Java, да, было с этим хуже, там обычно пока операционка не скажет "фиг тебе, а не страничка", не собиралось. Но и то исправили достаточно давно.

N>Я вначале подумал, что вы про случай, когда на какое-то уже ненужное дерево объектов висит забытая ссылка из одного из тех, что должны сейчас жить. Такие вещи, да, диагностируются тяжело, если нет возможности у системы спросить и проитерировать множество вообще всех объектов.

N>Не знаю про типовые реализации JS, но в дотнете, вроде бы, такое есть везде?
Бегло почитал, вроде сейчас GC поумнели и циклические ссылки всегда разруливаются, в JS было по таймеру создание разных объектов ссылающихся друг на друга и на DOM, а в C# на каждое подключение, и плюс там еще с замыканием что то было, давно это было подробностей не помню, GC точно вызывался и отрабатывал, но он не мог убрать эти объекты, искать было трудней чем в С++.

I>>rapidjson, boost, qt5, xerces, xalan, xsec, sqlite, odb, openssl, curl, protobuf, ncreport, zlib, soci, librsync


N>Полный список не знаю, и не могу сказать, кто из них на самом деле покемон, но в пределах моих знаний тут нет проприетарных либ всяких тематических коннекторов, в которых больше всего подобных граблей (на OCI, кажется, только ленивый не ругался).

Это Oracle C++ Call Interface? Хм, не было у нас с ним проблем, правда и запросы были простые, с libpqxx тоже проблем нет, с MySql только через Qt работал, тоже ничего не текло.
Re[6]: Haters gonna hate but with proofs
От: netch80 Украина http://netch80.dreamwidth.org/
Дата: 17.01.19 06:51
Оценка: 2 (1) +1
Здравствуйте, _vanger_, Вы писали:

R>>У меня в этом плане любимая вот эта, что выведет программа:


R>>https://ideone.com/w3ZXdB


__>Ух ты! А почему, когда длины строк равны, они интерпретируются как string, а если различны, как char*?


Не как string, а как char[6].
The God is real, unless declared integer.
Re[6]: Haters gonna hate but with proofs
От: rg45 СССР  
Дата: 17.01.19 08:00
Оценка: 2 (1)
Здравствуйте, _vanger_, Вы писали:

__>Ух ты! А почему, когда длины строк равны, они интерпретируются как string, а если различны, как char*?


Строковые литералы имеют тип массивов. А это значит, что литералы разной длины имеют разный тип. Такой вот ускользающий от внимания факт. И фокус в том, что во втором варианте используются неконстантные указатели. Поэтому шаблонный вариант дает лучшее соответствие типов формальных и фактических параметнов, но подходит он только для литералов одинакового типа, то есть, одинаковой длины. Но если мы добавим еще одну перегрузку с константыми указателями, то в обоих случаях будет использоваться только она, как дающая наилучшее соответствие формальных и фактических параметров:

https://ideone.com/CCBEMy

#include <iostream>

template <typename T>
int foo(T&, T&) { return 1; }

int foo(char*, char*) { return 2; }

int foo(const char*, const char*) { return 3; }


int main()
{
   std::cout << foo("Hello", "World") << std::endl;
   std::cout << foo("Hello", "World!") << std::endl;
}
--
Не можешь достичь желаемого — пожелай достигнутого.
Отредактировано 17.01.2019 9:40 rg45 . Предыдущая версия . Еще …
Отредактировано 17.01.2019 9:38 rg45 . Предыдущая версия .
Отредактировано 17.01.2019 8:01 rg45 . Предыдущая версия .
Re[20]: Haters gonna hate but with proofs
От: wander  
Дата: 17.01.19 18:02
Оценка:
Здравствуйте, netch80, Вы писали:

N>Но понять-то меня вполне можете? Не обязательно же принимать только то, что прочувствовал на собственной шкуре.

Ну если я с вами не согласен в некоторых аспектах, то это не значит, что я не могу вас понять
Re[5]: Haters gonna hate but with proofs
От: N. I.  
Дата: 17.01.19 19:18
Оценка: 13 (3)
rg45:

R>У меня в этом плане любимая вот эта, что выведет программа:


R>https://ideone.com/w3ZXdB


R>
R>#include <iostream>

R>template <typename T>
R>int foo(T&, T&) { return 1; }

R>int foo(char*, char*) { return 2; }

int main()
{
   std::cout << foo("Hello", "World") << std::endl;
   std::cout << foo("Hello", "World!") << std::endl;
}

Как вариант — будет ошибка компиляции, т.к. эта программа неправильная
https://wandbox.org/permlink/xUfzEqBcJVafLl1i
Re[6]: Haters gonna hate but with proofs
От: rg45 СССР  
Дата: 17.01.19 19:38
Оценка:
Здравствуйте, N. I., Вы писали:

NI>Как вариант — будет ошибка компиляции, т.к. эта программа неправильная


Отследить бы еще, начиная с какого момента это преобразование стало запрещенным.
--
Не можешь достичь желаемого — пожелай достигнутого.
Re[7]: Haters gonna hate but with proofs
От: N. I.  
Дата: 17.01.19 20:29
Оценка: 18 (1)
rg45:

R>Отследить бы еще, начиная с какого момента это преобразование стало запрещенным.


http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2009/n3000.pdf — см. п. 4.2.
Re[8]: Haters gonna hate but with proofs
От: rg45 СССР  
Дата: 17.01.19 20:54
Оценка:
Здравствуйте, N. I., Вы писали:

NI>http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2009/n3000.pdf — см. п. 4.2.


Жаль, такая классная загадка была
--
Не можешь достичь желаемого — пожелай достигнутого.
Re: Haters gonna hate but with proofs
От: B0FEE664  
Дата: 21.01.19 14:21
Оценка: 33 (2) +2 :))) :))) :)
Здравствуйте, bc_kaya, Вы писали:

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

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

C++ — язык сложный, не все могут его осилить. Собственно, никто не знает C++. Однажды создателя спросили, на сколько он оценивает свои знания С++ по десятибалльной шкале. Страуструп ответил, что 7 или менее. Люди с завышенным самолюбием не могут осилить С++. (Да, они тоже не могут). Поэтому люди с завышенным самолюбием недолюбливают плюсы, но они — не весь мир. Некоторые настоящие программисты годами изучали этот язык, писали примеры, экспериментировали с языком, даже писали компиляторы С++. И вот, когда казалось, что всё уже изучено и достигнуто, был принят новый стандарт. А потом ещё один и ещё один. И ещё один стандарт на подходе. Язык изменился. Трижды изменилась парадигма языка, но идеал не достигнут. С++ нет сборки мусора, поэтому его не любят грязнули. В С++ нет менеджера указателей, поэтому его не любят менеджеры. В С++ есть шаблонные и абстрактные типы, поэтому ассемблерщики и С-шники не любят С++ (они не понимают зачем всё это нужно). Конечно, в С++ можно отстрелить себе ногу, но мы же не дети, чтобы сидеть в песочнице.
И каждый день — без права на ошибку...
Re[12]: Haters gonna hate but with proofs
От: B0FEE664  
Дата: 21.01.19 14:33
Оценка:
Здравствуйте, kaa.python, Вы писали:

S>>А другой поток?

KP>А что с ним? Почему он как-то может повлиять?

Откроет тот же файл, переименует папку, в котором файл лежал.
Или юзер не размонтировав выдернет флешку...
И каждый день — без права на ошибку...
Re[6]: Haters gonna hate but with proofs
От: Ablex  
Дата: 07.02.21 01:25
Оценка: +2
Здравствуйте, Somescout, Вы писали.

Прочитал ветку 5 раз, так и не понял чего ты на него взъелся.
Re[7]: Haters gonna hate but with proofs
От: Somescout  
Дата: 07.02.21 06:10
Оценка: -1
Здравствуйте, Ablex, Вы писали:

A>Прочитал ветку 5 раз, так и не понял чего ты на него взъелся.

Попробуйте ещё раз 10 перечитать — возможно поймёте.
ARI ARI ARI... Arrivederci!
Re[2]: Haters gonna hate but with proofs
От: Marty Пират https://www.youtube.com/channel/UChp5PpQ6T4-93HbNF-8vSYg
Дата: 07.02.21 06:46
Оценка: +1
Здравствуйте, Слава, Вы писали:

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


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


С>Image: rGNam.jpg


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


А причем тут плюсы?
Маньяк Робокряк колесит по городу
Re[13]: Haters gonna hate but with proofs
От: Marty Пират https://www.youtube.com/channel/UChp5PpQ6T4-93HbNF-8vSYg
Дата: 07.02.21 06:57
Оценка:
Здравствуйте, rg45, Вы писали:

R>P.S. При этом заметь, я не иду в атаку с криками "Долой C#!" и "Java — отстой!". Повторюсь: в каждом инструменте есть свои слабые и сильные стороны и нужно просто уметь их исполльзовать.


Можно я за тебя?

C# — отстой!
Java — отстой!

Даже вот kotlin, он вкусненький, если после Java, но тоже — отстой
Маньяк Робокряк колесит по городу
Re[9]: Haters gonna hate but with proofs
От: Marty Пират https://www.youtube.com/channel/UChp5PpQ6T4-93HbNF-8vSYg
Дата: 07.02.21 07:15
Оценка: +1
Здравствуйте, netch80, Вы писали:

K>>Си я даже не рассматриваю как язык высокоуровневой разработки. Мне кажется, он безнадёжно устарел даже на низком уровне, где сейчас почти всегда практичнее взять хотя бы тот же C++, не говоря о Rust и т.п. Про покойника или хорошо, или ничего.


N>C++ для низкого уровня часто годится только в очень специфическом варианте "без исключений, без RTTI". После этого C может быть и легче использовать.


Нормально на плюсиках под STM32 пишу. RTTI — оно просто не нужно, всё обычно статически создаётся, или автоматические переменные. Но без плюсиков я бы повесился.

И да, немалая часть того же кода работает в прогах на нормальном компе. Это тупо удобно, когда один и тот же код работает и на контроллере, и на компе, и ошибки быстрее выявляются
Маньяк Робокряк колесит по городу
Re[2]: Haters gonna hate but with proofs
От: Marty Пират https://www.youtube.com/channel/UChp5PpQ6T4-93HbNF-8vSYg
Дата: 07.02.21 07:17
Оценка: +1
Здравствуйте, LaptevVV, Вы писали:

LVV>Думаю, потому недолюбливает, что С++ требует предельной внимательности и аккуратности.


Это не так. Я давно уже забил на внимательность и аккуратность, хреначу на плюсиках как бог на душу положит. И, внезапно, всё работает
Маньяк Робокряк колесит по городу
Re[5]: Haters gonna hate but with proofs
От: Marty Пират https://www.youtube.com/channel/UChp5PpQ6T4-93HbNF-8vSYg
Дата: 07.02.21 07:19
Оценка:
Здравствуйте, Privalov, Вы писали:

P>Ну и где сейчас тот Алгол? А Фортран — живее всех живых. И переносимость у него такая, что Си не не снилась.


В STMку свой фортран запихаешь?
Маньяк Робокряк колесит по городу
Re[8]: Haters gonna hate but with proofs
От: Marty Пират https://www.youtube.com/channel/UChp5PpQ6T4-93HbNF-8vSYg
Дата: 07.02.21 07:24
Оценка:
Здравствуйте, lpd, Вы писали:

lpd>>>Ну вот джава как была в бэкенде, там и есть, без вариадиков и rai.

S>>Ну, да потеснить С++ она не может.
lpd>Ну вообще немало десктопных приложений c GUI написаны на джаве + Android, хотя это и два недоразумения. Но C++-то джаву/C# не потеснил никак за все годы.

Назови хоть что-нибудь
Маньяк Робокряк колесит по городу
Re[2]: Haters gonna hate but with proofs
От: Marty Пират https://www.youtube.com/channel/UChp5PpQ6T4-93HbNF-8vSYg
Дата: 07.02.21 07:33
Оценка: +1 -1
Здравствуйте, scf, Вы писали:

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

scf>- библиотеки и управление зависимостями. Для C/С++ есть всё, но найти, подключить и начать использовать чужие библиотеки — нетривиально.

Во как, на джаве оказывается всё просто?


scf>- бедная стандартная библиотека. Хочется нормальную юникодную строку с поддержкой кодировок, регулярок и богатого набора операций.


Юникодная строка — есть. Поддержка кодировок — а зачем она именно в языке? Ругулярки — есть, операций полно


scf>Хочется качественные многопоточные коллекции.


Хочется — сделай. Мне вот — не хочется. Вот совсем не нужно мне это.


scf>Хочется нормальные функции для работы со временем с поддержкой часовых поясов. и т.д. и т.п.


Зачем это в языке? Мне, например, это никогда не нужно было


scf>- феерическая сложность языка и сложность написания качественного (устойчивого к утечкам памяти и exception-safe) кода


Сказки от неосиляторов


scf>- значительно меньшая терпимость программы к ошибкам программиста — где managed язык отделается exception-ом, программу на C++ лучше прибить. Это ограничивает применимость в серверных приложениях


Только некорректная программа на C++ просто не соберётся, а на каком-нибудь питоне через год выстрелит и всё повалит


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


Не используй сырую память. Я забыл, когда это делал в последний раз. Даже под контроллеры это очень редко нужно


scf>- менее развитый тулинг для отладки, логгирования и обнаружения проблем


Я неделю вкуривал, как нормально логи на джаве настроить. Тулинг такой тулинг


scf>- время компиляции


Скажи это джаве или шарпу
Маньяк Робокряк колесит по городу
Re[4]: Haters gonna hate but with proofs
От: Marty Пират https://www.youtube.com/channel/UChp5PpQ6T4-93HbNF-8vSYg
Дата: 07.02.21 07:39
Оценка:
Здравствуйте, Somescout, Вы писали:

J>>Мои 5 копеек про достоинства C++

J>>Возможность работать на системах с очень ограниченными ресурсами, вроде микроконтроллеров. Яву вы туда не запихнете.

S>Если не ошибаюсь, J2ME и NetCompact позволяли работать на очень слабых системах. А на совсем слабых возможности c++ точно не нужны (если каждая типизация шаблона будет создавать отдельный шмат кода — то в микросистемах оно только вредит).


Научи, как писать на джаве под STM
Маньяк Робокряк колесит по городу
Re[3]: Haters gonna hate but with proofs
От: GarryIV  
Дата: 07.02.21 07:55
Оценка: +1
Здравствуйте, ononim, Вы писали:

scf>>Хочется качественные многопоточные коллекции.

O>Берем обычный качественный set, оборачиваем операции с ним mutex-ом и получаем качественный многопоточный set.
Нет, так ты получишь тормозное говно как в ранних Java.
WBR, Igor Evgrafov
Re[5]: Haters gonna hate but with proofs
От: hi_octane Беларусь  
Дата: 07.02.21 08:50
Оценка:
M>Научи, как писать на джаве под STM
Вроде и коммерческие и платные java-фреймворки под stm в наличии. И .net там есть, я с малым на stm32f4 c экранчиком, что-то пилил очень давно, когда эта плата была типа крутой. stm-ки всё-таки довольно мощные процы, не микроконтроллеры.
Re[6]: Haters gonna hate but with proofs
От: Marty Пират https://www.youtube.com/channel/UChp5PpQ6T4-93HbNF-8vSYg
Дата: 07.02.21 08:52
Оценка:
Здравствуйте, hi_octane, Вы писали:

M>>Научи, как писать на джаве под STM

_>Вроде и коммерческие и платные java-фреймворки под stm в наличии. И .net там есть, я с малым на stm32f4 c экранчиком, что-то пилил очень давно, когда эта плата была типа крутой. stm-ки всё-таки довольно мощные процы, не микроконтроллеры.

На самых жирных — оперативы целый метр.

Ну, вообще интересно даже глянуть, ссылок не помнишь?
Маньяк Робокряк колесит по городу
Re[5]: Haters gonna hate but with proofs
От: andyp  
Дата: 07.02.21 09:08
Оценка: :)
Здравствуйте, rg45, Вы писали:


R>У меня в этом плане любимая вот эта, что выведет программа:


R>https://ideone.com/w3ZXdB


Неправильная прога. Правильная выводит ответ на вопрос о смысле жизни, вселенной и всего такого, а эта в два раза недотягивает.
Re[6]: Haters gonna hate but with proofs
От: rg45 СССР  
Дата: 07.02.21 10:20
Оценка: +1
Здравствуйте, andyp, Вы писали:

A>Неправильная прога. Правильная выводит ответ на вопрос о смысле жизни, вселенной и всего такого, а эта в два раза недотягивает.


Какая, интересно, редиска подняла холивар двухлетней давности. Совсем люди затосковали с этими карантинами
--
Не можешь достичь желаемого — пожелай достигнутого.
Re[7]: Haters gonna hate but with proofs
От: andyp  
Дата: 07.02.21 10:38
Оценка:
Здравствуйте, rg45, Вы писали:

R>Какая, интересно, редиска подняла холивар двухлетней давности. Совсем люди затосковали с этими карантинами


Скучно
Re[8]: Haters gonna hate but with proofs
От: rg45 СССР  
Дата: 07.02.21 10:42
Оценка:
Здравствуйте, andyp, Вы писали:

R>>Какая, интересно, редиска подняла холивар двухлетней давности. Совсем люди затосковали с этими карантинами


A>Скучно


Как-то форум C/C++ пробуксовывать начал. Новых интересных тем никто не создает.
--
Не можешь достичь желаемого — пожелай достигнутого.
Отредактировано 07.02.2021 10:48 rg45 . Предыдущая версия .
Re: Haters gonna hate but with proofs
От: vlp  
Дата: 10.02.21 04:41
Оценка: +2
- Язык designed by committee. Одна история с > > vs >> в темплейтах чего стоит.
— Дико медленный компилятор из-за особенностей дизайна языка.
— Сообщения об ошибках часто неинформативные и труднопониманиемые
— Препроцессор делаающий принципиально невозможным создание универсальных средств рефакторинга и анализа кода, доступные для более простых языков. Неуниверсальные средства рефакторинга и анализа кода чудовищно сложно писать, требуют от их авторов уровня программирования "бог".
— Из-за вынужденной необходимй поддержки старого кода и C, нет понятие "deprecated language feature" — в итоге есть несколько способов сделать одно и то же, каждый из них по-своему плохой. Одних официальных смартпойнтеров понаделали столько, что хоть вешайся.
— Отсутствие или бедность хороших базовых библиотек. Например абстракции "строка", которая универсально принималась бы, просто нет — есть char *, wchar_t *, char [], std::string, std::wstring и это если не смотреть на boost. В итоге куча проблем с интеграцией сторонних библиотек между собой на ровном месте, т.к. базовые вещи каждый изобретает сам.
— отсутсвие стандарта на ABI
Re[3]: Haters gonna hate but with proofs
От: Ночной Смотрящий Россия  
Дата: 15.02.21 09:34
Оценка:
Здравствуйте, ononim, Вы писали:

O>Берем обычный качественный set, оборачиваем операции с ним mutex-ом и получаем качественный многопоточный set.


... << RSDN@Home 1.3.17 alpha 5 rev. 62>>
Re[2]: Haters gonna hate but with proofs
От: Ночной Смотрящий Россия  
Дата: 15.02.21 09:34
Оценка: :))
Здравствуйте, B0FEE664, Вы писали:

BFE>C++ — язык сложный, не все могут его осилить.


Да да, любимый аргумент верующих в С++. Хорош тем, что им можно обосновать любое плюсовое уродство.
... << RSDN@Home 1.3.17 alpha 5 rev. 62>>
Re[3]: Haters gonna hate but with proofs
От: B0FEE664  
Дата: 15.02.21 17:27
Оценка:
Здравствуйте, Ночной Смотрящий, Вы писали:

BFE>>C++ — язык сложный, не все могут его осилить.

НС>Да да, любимый аргумент верующих в С++. Хорош тем, что им можно обосновать любое плюсовое уродство.

Ага. Все так говорят, кто осилить не смог.
И каждый день — без права на ошибку...
Re[4]: Haters gonna hate but with proofs
От: scf  
Дата: 15.02.21 17:49
Оценка: +1 :)
Здравствуйте, B0FEE664, Вы писали:

BFE>Ага. Все так говорят, кто осилить не смог.


Ну я осилил. Но потом вырос и мой максимализм сошел на нет, теперь хочется больше велью толкать. Особенно когда сначала написал экстремально умную модель данных на плюсовых шаблонах, а потом увидел глупую реализацию на java, которая на практике оказалась удобнее в использовании.
Re[5]: Haters gonna hate but with proofs
От: B0FEE664  
Дата: 15.02.21 18:24
Оценка:
Здравствуйте, scf, Вы писали:

BFE>>Ага. Все так говорят, кто осилить не смог.


scf>Ну я осилил. Но потом вырос и мой максимализм сошел на нет, теперь хочется больше велью толкать. Особенно когда сначала написал экстремально умную модель данных на плюсовых шаблонах, а потом увидел глупую реализацию на java, которая на практике оказалась удобнее в использовании.

Модель данных — это абстрактное, самодостаточное, логическое определение объектов, операторов и прочих элементов, в совокупности составляющих абстрактную машину доступа к данным, с которой взаимодействует пользователь. Эти объекты позволяют моделировать структуру данных, а операторы — поведение данных.


Исходя из этого определения я не понимаю какое отношение могут иметь шаблоны предназначенные для создания объектов внутри программы к данным которые лежат вне программы. Это же разные сущности.
И каждый день — без права на ошибку...
Re[7]: Haters gonna hate but with proofs
От: Ночной Смотрящий Россия  
Дата: 15.02.21 18:29
Оценка: -1
Здравствуйте, rg45, Вы писали:

R>ибо организовать RAII, равнозначный плюсовому, невозможно, пользуясь недодеструкторами этих языков.


Ну во-первых managed тут не помеха, и C++/CLI тому пример. А во-вторых это еще большой вопрос что лучше, неявные плюсовые деструкторы или явный и хорошо видимый шарповский using. Сделали, кстати, в шарпе юсинг в плюсовом стиле, ан на практике большинство в него потыкало и отказалось, ибо видимость скоупа оказалась важнее пары лишних фигурных скобок.
... << RSDN@Home 1.3.17 alpha 5 rev. 62>>
Re[11]: Haters gonna hate but with proofs
От: Ночной Смотрящий Россия  
Дата: 15.02.21 18:36
Оценка:
Здравствуйте, rg45, Вы писали:

R>Третья проблема, использую сишарпный аналог defere-а — using. Много ли найдется разработчиков C#, которые скажут сходу, какой из следующих вариантов является правильным


Второй. И тот, который не зная что там внутри скажет что первый — либо джун, либо профнепригоден.

R>И даже на этом веселуха еще не заканчивается — обязательно ведь найдется грамотей, который позовет Dispose


Ты предлагаешь такому дать в руки С++? Рили?

R>И подобные проблемы неминуемо возникают везде, где ресурс выделяется провайдером,


А точно возникают? У меня вот очередной проект сейчас — полтора года живет, пару десятков разработчиков разной квалификации. Знаешь сколько раз был забыл юсинг? Ни разу. Хотя утечки памяти были и не раз.
... << RSDN@Home 1.3.17 alpha 5 rev. 62>>
Re[15]: Haters gonna hate but with proofs
От: Ночной Смотрящий Россия  
Дата: 15.02.21 18:38
Оценка: :)
Здравствуйте, rg45, Вы писали:

R>2. Криворукий юзер может тупо забыть написать "using"


А еще криворукий программист может забыть в смартпоинтер завернуть указатель или еще чего. Вероятность чего выше, и что более разрушительно по последствиям?
... << RSDN@Home 1.3.17 alpha 5 rev. 62>>
Re[15]: Haters gonna hate but with proofs
От: Ночной Смотрящий Россия  
Дата: 15.02.21 18:56
Оценка:
Здравствуйте, rg45, Вы писали:

R>А вот формочки клепать


О, еще один универсальный аргумент уверовавших в сипипи. И пофик что джава в формочках никогда особо популярна не была. Что формочки тоже надо уметь клепать. Что формочки вместе с десктопом уже давно пахнут, а шарп/джава по прежнему активно используется. Главное обозвать всех кто не пользуется плюсами неасилившими и формошлепами, и все, равновесие внутреннего мира восстановлено.
... << RSDN@Home 1.3.17 alpha 5 rev. 62>>
Re[16]: Haters gonna hate but with proofs
От: Ночной Смотрящий Россия  
Дата: 15.02.21 18:56
Оценка: +1
Здравствуйте, kaa.python, Вы писали:

KP>На C# – не полетит, как и на любом другом языке с GC.


Беседовал я как то давно с чуваками из мира HPC. И они мне сказали, что основная масса HPC кода пишется на питоне и жабе. Не потому что ни спербыстрые или там биты позволяют выжимать (и уж чем GC симуляциям помешал вообще непонятно), а потому что 90% такого кода запускается всего несколько раз чтобы получить результаты. И на фоне месяцев и лет разработки не так уж и важно сэкономить пару часов или даже пару дней на том сколько оно считать будет.
... << RSDN@Home 1.3.17 alpha 5 rev. 62>>
Re[6]: Haters gonna hate but with proofs
От: scf  
Дата: 15.02.21 19:16
Оценка:
Здравствуйте, B0FEE664, Вы писали:

BFE>Исходя из этого определения я не понимаю какое отношение могут иметь шаблоны предназначенные для создания объектов внутри программы к данным которые лежат вне программы. Это же разные сущности.


Вообще это определение из статьи про модель данных СУБД, но оно отлично подходит и для данных в памяти. Я бы сказал, что модель данных в контексте, о котором речь, — это интерфейс (апи) доступа к данным. И я хотел сказать, что перфекционизм и стремление всё типизировать и зашаблонить не только не окупается, но и может привести к менее понятному и надежному коду.
Re[2]: Haters gonna hate but with proofs
От: Rhino СССР  
Дата: 16.02.21 00:51
Оценка:
Здравствуйте, vlp, Вы писали:

Прочитал всю тему, очень интересно!
Сам плюсовал, использовал boost на минималках (range) и всё такое, но тоже на минималках Забытая запятая приводила к еггогам на десятки-сотни страниц. Слава яйкам, пришёл к Шарпу и Ява. Плюсы не осилил, кароч.

Так вот, что я хочу сказать-то... За подобное
Автор: rg45
Дата: 16.01.19
хочется тупо убивать!!!111одинодинодин Это что за бред?! И вот эти все люди мало того, что запрещают ковыряться в носу, так ещё и имеют смелость постить всякое про JS типа "буду проституткой"?
... << RSDN@Home 1.0.0 alpha 5 rev. 0>>
Re[17]: Haters gonna hate but with proofs
От: kaa.python Ниоткуда РСДН профессионально мёртв и завален ватой.
Дата: 16.02.21 02:11
Оценка:
Здравствуйте, Ночной Смотрящий, Вы писали:

НС>Беседовал я как то давно с чуваками из мира HPC. И они мне сказали, что основная масса HPC кода пишется на питоне и жабе. Не потому что ни спербыстрые или там биты позволяют выжимать (и уж чем GC симуляциям помешал вообще непонятно), а потому что 90% такого кода запускается всего несколько раз чтобы получить результаты. И на фоне месяцев и лет разработки не так уж и важно сэкономить пару часов или даже пару дней на том сколько оно считать будет.


Сам я симуляции не пишу, но то что вижу — какой-то высокоуровневый язык с биндингами к Куде (Си/С++ тобишь) основная опция. На процессоре считать слишком медленно, видимо.

И, кстати разница в расчетах на на CPU и GPU не столько про пару дней или часов, сколько про часы и годы.
Re[17]: Haters gonna hate but with proofs
От: CreatorCray  
Дата: 16.02.21 02:34
Оценка: :)
Здравствуйте, Ночной Смотрящий, Вы писали:

НС>а потому что 90% такого кода запускается всего несколько раз чтобы получить результаты.

А в каком месте там HPC?
... << RSDN@Home 1.3.110 alpha 5 rev. 62>>
Re[5]: Haters gonna hate but with proofs
От: CreatorCray  
Дата: 16.02.21 02:34
Оценка: -1 :))
Здравствуйте, scf, Вы писали:

scf>Ну я осилил.

scf>написал экстремально умную модель данных на плюсовых шаблонах

Ты не осилил, юный падаван.
Ты только подобрался к моменту, когда начинают понимать как С++ надо готовить, но сдался, так и не осознав.
... << RSDN@Home 1.3.110 alpha 5 rev. 62>>
Re[7]: Haters gonna hate but with proofs
От: CreatorCray  
Дата: 16.02.21 02:34
Оценка:
Здравствуйте, scf, Вы писали:

scf>перфекционизм и стремление всё типизировать и зашаблонить не только не окупается

Но ещё и называется "синдром укушенного Александреску" и чем то похож на "болезнь студента-медика третьего курса"
... << RSDN@Home 1.3.110 alpha 5 rev. 62>>
Re[18]: Haters gonna hate but with proofs
От: Ночной Смотрящий Россия  
Дата: 16.02.21 08:55
Оценка:
Здравствуйте, kaa.python, Вы писали:

KP>Сам я симуляции не пишу, но то что вижу — какой-то высокоуровневый язык с биндингами к Куде (Си/С++ тобишь)


У куды разве С++ единственный вариант?

KP> На процессоре считать слишком медленно, видимо.


Ну если симуляции постоянно гоняют одни и теже, какой нибудь промышленный CFD или прогноз погоды, к примеру, тут смысл имеет. А если новую модель разрабатывают — тут подход другой. И если мерять объемами кода, а не количествами запусков, то второй кейс существенно объемнее.

KP>И, кстати разница в расчетах на на CPU и GPU не столько про пару дней или часов, сколько про часы и годы.


Это какой то совсем уж клинический случай. Все таки многоядерность и векторные инструкции современных серверных CPU делают разрыв в перфомансе поменьше 4 порядков.
... << RSDN@Home 1.3.17 alpha 5 rev. 62>>
Re[11]: Haters gonna hate but with proofs
От: Ночной Смотрящий Россия  
Дата: 16.02.21 09:01
Оценка:
Здравствуйте, netch80, Вы писали:

N>последнее мне убило два проекта и я его больше не хочу;


Да, под нагрузкой оно действительно как то прям не ахти, хоть Гапертон в свое время тут и бегал с каким то эриковским свитчем в качестве доказательство ахфигенности ерланга на хайлоаде.
Мы, правда, не сами на ерланге писали, а плакали, кололись, но жрали кролика. Сейчас спешно перетаскиваем критические части на redis streams.
... << RSDN@Home 1.3.17 alpha 5 rev. 62>>
Re[16]: Haters gonna hate but with proofs
От: rg45 СССР  
Дата: 16.02.21 10:15
Оценка: :)
Здравствуйте, Ночной Смотрящий, Вы писали:

НС>А еще криворукий программист может забыть в смартпоинтер завернуть указатель или еще чего. Вероятность чего выше, и что более разрушительно по последствиям?


Че-то так не хочется продолжать этот спор двух-летней давности. Может, ну его?
--
Не можешь достичь желаемого — пожелай достигнутого.
Re[2]: Haters gonna hate but with proofs
От: Тёмчик Австралия жж
Дата: 16.02.21 10:37
Оценка:
Здравствуйте, scf, Вы писали:

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

Кстати, в Java довольно тривиально сделать утечку, а порча памяти в JVM прошлых версий тоже возникала. Гонки и порча памяти в результате багов в примитивах синхронизации только к Java 6 пофиксили.
Другое дело, что один раз пофиксили, и наступило счастье, а в C++ мало было грабель- накидали в C++ 14 ещё 2 вагона.
Re[6]: Haters gonna hate but with proofs
От: mrTwister Россия  
Дата: 16.02.21 10:43
Оценка: +1
Здравствуйте, CreatorCray, Вы писали:

CC>Ты не осилил, юный падаван.

CC>Ты только подобрался к моменту, когда начинают понимать как С++ надо готовить, но сдался, так и не осознав.

Ох, уже более 20 лет как я слышу про то, что где-то существуют люди, которые "понимают, как С++ надо готовить", но что-то лично в живой природе я таких еще не встречал. Отличный язык программирования!
лэт ми спик фром май харт
Re[6]: Haters gonna hate but with proofs
От: Ночной Смотрящий Россия  
Дата: 16.02.21 11:57
Оценка: -1
Здравствуйте, N. I., Вы писали:

NI>Как вариант — будет ошибка компиляции, т.к. эта программа неправильная


Хотел rg45, видимо, продемонстрировать крутость языка, а продемонстрировал ... даже и не знаю как это назвать чтобы фанатов не обидеть.
... << RSDN@Home 1.3.17 alpha 5 rev. 62>>
Re[5]: Haters gonna hate but with proofs
От: Hobbes Россия  
Дата: 16.02.21 12:02
Оценка:
Здравствуйте, Privalov, Вы писали:

P>Ну и где сейчас тот Алгол?


Мутировал в Паскаль и Си
Re[3]: Haters gonna hate but with proofs
От: Hobbes Россия  
Дата: 16.02.21 12:03
Оценка:
Здравствуйте, Marty, Вы писали:

M>Это не так. Я давно уже забил на внимательность и аккуратность, хреначу на плюсиках как бог на душу положит. И, внезапно, всё работает


Ты поди shared_ptr освоил.
Re[4]: Haters gonna hate but with proofs
От: Hobbes Россия  
Дата: 16.02.21 12:05
Оценка:
Здравствуйте, lpd, Вы писали:

lpd>При этом C++ не занял ни одной новой ниши за это время.


Ну как не занял, раньше С++ в эмбеддеде встречался редко, теперь нет.
Re[5]: Haters gonna hate but with proofs
От: lpd Черногория  
Дата: 16.02.21 12:32
Оценка: :)
Здравствуйте, Hobbes, Вы писали:

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


lpd>>При этом C++ не занял ни одной новой ниши за это время.


H>Ну как не занял, раньше С++ в эмбеддеде встречался редко, теперь нет.


Я эмбеддедом почти не занимался, больше ядром линукса на х86. Но в эмбеддеде нужна близость к оборудованию (и иногда real-time), а не move-семантика и шаблоны, не говоря уж об исключениях. Так что массовая популярность последних стандартов С++ в эмбдеддед это скорее всего миф(впервые слышу от тебя).
У сложных вещей обычно есть и хорошие, и плохие аспекты.
Берегите Родину, мать вашу. (ДДТ)
Отредактировано 16.02.2021 12:33 lpd . Предыдущая версия . Еще …
Отредактировано 16.02.2021 12:33 lpd . Предыдущая версия .
Отредактировано 16.02.2021 12:33 lpd . Предыдущая версия .
Re[6]: Haters gonna hate but with proofs
От: Hobbes Россия  
Дата: 16.02.21 12:52
Оценка:
Здравствуйте, lpd, Вы писали:

lpd>Я эмбеддедом почти не занимался, больше ядром линукса на х86. Но в эмбеддеде нужна близость к оборудованию (и иногда real-time), а не move-семантика и шаблоны, не говоря уж об исключениях. Так что массовая популярность последних стандартов С++ в эмбдеддед это скорее всего миф(впервые слышу от тебя).


Realtime да, очень часто нужен из-за ограничений по времени реакции. Близость к оборудованию — необязательно, например в современном автомобиле разные электронные блоки между собой гоняют эзернет. Исключения вопрос спорный, но если ты, например, пишешь навигацию, а навигация предполагает обработку различных структур данных, то шаблоны и move-семантика тебе скорее помогут, чем помешают. Я пишу про автомобили, потому что у меня есть опыт из этой области, но кажется, что в промышленном и медицинском оборудовании всё то же самое.
Re[4]: Haters gonna hate but with proofs
От: Marty Пират https://www.youtube.com/channel/UChp5PpQ6T4-93HbNF-8vSYg
Дата: 16.02.21 17:05
Оценка:
Здравствуйте, Hobbes, Вы писали:

M>>Это не так. Я давно уже забил на внимательность и аккуратность, хреначу на плюсиках как бог на душу положит. И, внезапно, всё работает


H>Ты поди shared_ptr освоил.


Типа того. Ну и ещё по мелочам
Маньяк Робокряк колесит по городу
Re[6]: Haters gonna hate but with proofs
От: CreatorCray  
Дата: 16.02.21 19:44
Оценка:
Здравствуйте, lpd, Вы писали:

lpd>Но в эмбеддеде нужна близость к оборудованию (и иногда real-time), а не move-семантика и шаблоны, не говоря уж об исключениях.

В embedded (и kernel) надо писать простой и чистый код, без goto и bolierplates. И вот там С++ удобен как никогда, даже 11й.

lpd> Так что массовая популярность последних стандартов С++ в эмбдеддед это скорее всего миф(впервые слышу от тебя).

Это не миф.
... << RSDN@Home 1.3.110 alpha 5 rev. 62>>
Re: Haters gonna hate but with proofs
От: chaotic-kotik  
Дата: 17.02.21 14:43
Оценка:
Здравствуйте, bc_kaya, Вы писали:

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

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


язык как язык, требует знаний и определенной дисциплины, но с нормальными процессами в команде и современным тулингом (билд, ревью, CI) проблем не сильно больше чем с управляемыми языками, с последними пожалуй даже больше проблем, т.к. там больше свободы и индивидуальная производительость у каждого разработчика выше, а ревью менее строгое, скажем, у нас в команде в С++ коде не пернуть лишний раз, ревьюеры голыми руками задушат, а в java коде полный бардак (может и без UB, но зато с эпичными логическими ошибками, в духе "пожалуй буду писатдь этот алгоритм так, словно в кампьютыре бесконечное количетво памяти!"), причем высокоуровневый с++ (без темплейтов, низкоуровневой многопоточки и арифметики указателей) не сильно сложнее того же питона или golang, еще из плюсов — стандартая библиотека — ТОП, лучшая алгоритмическая библиотека, на мой взгляд, можно очень многие вычисления представить стандартыми алгоритмами, еще корутины в 20х плюсах — тоже ТОП, golang не нужен больше, т.к. на плюсах тоже самое (с адекватной библиотекой) получается сильно проще и более поддерживаемо, т.к. у тебя есть отдельные примитивы для работы с concurrency и с параллелизмом

ну и без с++ не вьехать в кучу интересных проектов, которые на нем пишут, это всякая инфраструктура, базы данных, распределенные очереди и тд
благодаря новому железу, у языка новая жизнь, потому что DPDK, и DMA в память, вместо обычных системных вызовов для чтения и записи, у современного нвме диска десятки тысяч очередей для вполнения запросов и ты тупо не можешь остановиться для сборки мусора, потому что там все занимает микросекунды теперь, вместо десятков милисекунд (раньше gc был одного порядка с seek-ом дисковым, теперь нет больше этих ваших seek-ов), чтобы адекватно работать с современным I/O нужно писать так, как пишут разработчики scylladb, например, а не на java
Re[2]: Haters gonna hate but with proofs
От: Ночной Смотрящий Россия  
Дата: 18.02.21 08:50
Оценка: :)
Здравствуйте, chaotic-kotik, Вы писали:

CK>у нас в команде в С++ коде не пернуть лишний раз, ревьюеры голыми руками задушат, а в java коде полный бардак


И виноват, конечно, язык. Только вот почему то у нас в конторе ситуация прямо противоположная. В плюсовом коде бардак и наслоения многолетнего говтехдолга, в от код на шарпе по большей части чистенький.

CK>ну и без с++ не вьехать в кучу интересных проектов, которые на нем пишут, это всякая инфраструктура, базы данных, распределенные очереди и тд


Всякие кролики, кафки, minio, кассандры, тысячи их смотрят на тебя как на представителя из параллельной реальности.

CK>благодаря новому железу, у языка новая жизнь, потому что DPDK, и DMA в память, вместо обычных системных вызовов для чтения и записи, у современного нвме диска десятки тысяч очередей для вполнения запросов и ты тупо не можешь остановиться для сборки мусора, потому что там все занимает микросекунды теперь, вместо десятков милисекунд


Но тот же писанный на С++ драйвер CIFS почему то тормозит как обкуренная улитка.
... << RSDN@Home 1.3.17 alpha 5 rev. 62>>
Re[2]: Haters gonna hate but with proofs
От: gusilebedi  
Дата: 23.02.21 23:34
Оценка: :)
Здравствуйте, Ip Man, Вы писали:

IM>Но — с другой стороны, спрос на С++ есть в узких нишах (напр. в финансах), и, по-моему, спрос на хороших специалистов значительно превышает предложение.


На C++ писать в финансах это самоубийство, пишут на Java, реже на .NET. Особые извращенцы в HFT что-то делают на C++, но таких мало и HFT это доли процента от финансов. В алгоритмической торговле пока вы напишите на C++ один алгоритм, на Java напишут 10, они будут на 10% медленнее, но успеют заработать. А супер быстрый C++ пока до рынка доедет, рынок поменяется.
Re: Haters gonna hate but with proofs
От: gusilebedi  
Дата: 23.02.21 23:58
Оценка: :)
Здравствуйте, bc_kaya, Вы писали:

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

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

C++ это архаичный язык, в этом его основная проблема. После лиспа в нем не хватает простоты синтаксиса, а метапрограммирование на шаблонах иначе как извращением называть не хочется. После Objective-C задаешься вопросом — если хотели "C с классами", то почему не сделали так? Попробовав ARC из Objective-C хочется задать много вопросов по поводу всей этой возни вокруг умных указателей. После Java или C# хочется нормальной экосистемы, с пакетами, с рефлексией, с нормальным ABI, с удаленной отладкой, хорошей IDE, с мониторингом и так далее. Я знаю, что все это в C++ есть, но в той же Java оно на порядок лучше и проще работает. Из C++ хочется взять только производительность и детерминированную работу с памятью. Но все это есть в Rust. Итого выбирают все что угодно кроме C++ потому что у него просто нет комбинации хороших фич, они все идут с слишком большим багажом проблем.

В 2021 году чтобы начинать что-то на C++ надо прямо быть даже не фанатом, а фанатиком языка. Есть Rust в конце-концов и, похоже, лет за 20-30 он C++ убьёт.

PS: Java тоже старый язык, но не архаичный, это к вопросу о силах, которые за развитием языка стоят.
Re[3]: Haters gonna hate but with proofs
От: chaotic-kotik  
Дата: 24.02.21 09:28
Оценка: :)
Здравствуйте, Ночной Смотрящий, Вы писали:


CK>>ну и без с++ не вьехать в кучу интересных проектов, которые на нем пишут, это всякая инфраструктура, базы данных, распределенные очереди и тд

НС>Всякие кролики, кафки, minio, кассандры, тысячи их смотрят на тебя как на представителя из параллельной реальности.

не знаю про minio ничего
кассандру переписали на плюсы и получилось сильно лучше — https://www.scylladb.com/2017/02/15/scylladb-vs-cassandra-performance-benchmark-samsung/
кафку переписали на плюсы и тоже получилось сильно лучше — https://vectorized.io/blog/fast-and-safe/
кролику уже пора на пенсию давно, это первая итерация подобных систем, которую превратил в легаси сначала Storm, а потом Kafka, Pulsar и со

НС>Но тот же писанный на С++ драйвер CIFS почему то тормозит как обкуренная улитка.


если какой-то софт на плюсах тормозит, то значит весь софт на плюсах тормозит, я тебя правильно понял?
Re[4]: Haters gonna hate but with proofs
От: Ночной Смотрящий Россия  
Дата: 24.02.21 11:10
Оценка:
Здравствуйте, chaotic-kotik, Вы писали:

CK>не знаю про minio ничего


hi perf S3 совместимый сторадж на го.

CK>кассандру переписали на плюсы и получилось сильно лучше — https://www.scylladb.com/2017/02/15/scylladb-vs-cassandra-performance-benchmark-samsung/


Но никто кактус не жрет. И, в любом случае, проект Кассандры это не отменяет.

CK>кафку переписали на плюсы и тоже получилось сильно лучше — https://vectorized.io/blog/fast-and-safe/


Но никто кактус не жрет. И, в любом случае, проект Кафки это не отменяет.

CK>кролику уже пора на пенсию давно, это первая итерация подобных систем, которую превратил в легаси сначала Storm, а потом Kafka, Pulsar и со


Кафка с Пульсаром и Кролик это довольно разные вещи, не полностью взаимозаменяемые. Первые это data streaming, а кролик это таки message broker. Но я понял — если факт не подходит под теорию, тем хуже для факта.

НС>>Но тот же писанный на С++ драйвер CIFS почему то тормозит как обкуренная улитка.

CK>если какой-то софт на плюсах тормозит, то значит весь софт на плюсах тормозит, я тебя правильно понял?

Нет. Ты придумал чебе удобное для избиения чучелко. Напомню, что это ты заявил, что: "без с++ не вьехать в кучу интересных проектов, которые на нем пишут, это всякая инфраструктура, базы данных, распределенные очереди". А оказывается куча таких проектов таки обходится без плюсов.
... << RSDN@Home 1.3.17 alpha 5 rev. 62>>
Re[5]: Haters gonna hate but with proofs
От: chaotic-kotik  
Дата: 24.02.21 15:08
Оценка:
Здравствуйте, Ночной Смотрящий, Вы писали:

НС>hi perf S3 совместимый сторадж на го.


у S3 стораджа низкие требования к latency, его можно хоть на руби написать, у оригинального S3 latency порядка десятков миллисекунд

CK>>кассандру переписали на плюсы и получилось сильно лучше — https://www.scylladb.com/2017/02/15/scylladb-vs-cassandra-performance-benchmark-samsung/

НС>Но никто кактус не жрет. И, в любом случае, проект Кассандры это не отменяет.
CK>>кафку переписали на плюсы и тоже получилось сильно лучше — https://vectorized.io/blog/fast-and-safe/
НС>Но никто кактус не жрет. И, в любом случае, проект Кафки это не отменяет.

я не утверждал что отменяет, это просто примеры того, как интересный инфраструктурный поект был переписан на плюсы с большим эффектом
и кстати про кактус ты зря https://www.scylladb.com/users/ (у вторых нет такого раздела на сайте)
вообще, изначально поинт был в том, что на плюсах есть интересные инфраструктурные проекты, которые написаны под современное железо (DMA с сетью и диском) и низкий latency, и их пишут в основном на плюсах, я не утверждал что на других языках ничего не пишут

НС>Нет. Ты придумал чебе удобное для избиения чучелко. Напомню, что это ты заявил, что: "без с++ не вьехать в кучу интересных проектов, которые на нем пишут, это всякая инфраструктура, базы данных, распределенные очереди". А оказывается куча таких проектов таки обходится без плюсов.


гхм, как можно понять фразу "без с++ не вьехать в кучу интересных проектов, которые на нем пишут, это всякая инфраструктура, базы данных, распределенные очереди" как "без с++ не вьехать в кучу интересных проектов, которые ТОЛЬКО на нем пишут, это ВСЯ инфраструктура, базы данных, распределенные очереди"? ты понимаешь русский язык вообще? я могу по английски написать, если хочешь
Re[2]: Haters gonna hate but with proofs
От: HFTMan  
Дата: 24.02.21 16:39
Оценка:
Здравствуйте, chaotic-kotik, Вы писали:

CK>благодаря новому железу, у языка новая жизнь, потому что DPDK, и DMA в память, вместо обычных системных вызовов для чтения и записи, у современного нвме диска десятки тысяч очередей для вполнения запросов и ты тупо не можешь остановиться для сборки мусора, потому что там все занимает микросекунды теперь, вместо десятков милисекунд (раньше gc был одного порядка с seek-ом дисковым, теперь нет больше этих ваших seek-ов), чтобы адекватно работать с современным I/O нужно писать так, как пишут разработчики scylladb, например, а не на java

Современный C# позволяет писать код-не аллоцирующий память и явно запрещающий шевеление GC.
И тогда что-плюса не нужны для low latency, да?
И это-покажите мне channel latency arbitrage гомогенных датафидов на плюсах с временем обработки тика в несколько сотен нс.
На unsafe C# я его написал за 8 месяцев до production ready состояния(уже эксплуатируется в бою).
На плюсах бы помер от старости скорее всего
Но апологеты плюсов будут рассказывать, как на нем хорошо писать low latency приложения.
Ну ок, пусть дальше пишут годами то, что на других платформах делается за месяцы
Re[4]: Haters gonna hate but with proofs
От: HFTMan  
Дата: 24.02.21 16:48
Оценка:
Здравствуйте, chaotic-kotik, Вы писали:

CK>Здравствуйте, Ночной Смотрящий, Вы писали:



CK>>>ну и без с++ не вьехать в кучу интересных проектов, которые на нем пишут, это всякая инфраструктура, базы данных, распределенные очереди и тд

НС>>Всякие кролики, кафки, minio, кассандры, тысячи их смотрят на тебя как на представителя из параллельной реальности.

CK>не знаю про minio ничего

CK>кассандру переписали на плюсы и получилось сильно лучше — https://www.scylladb.com/2017/02/15/scylladb-vs-cassandra-performance-benchmark-samsung/
CK>кафку переписали на плюсы и тоже получилось сильно лучше — https://vectorized.io/blog/fast-and-safe/
Это результаты проектирования сразу на performance, не более(пулинг памяти, кешфрендли раскладка данных, отсутствие динамической аллокации ака предварительный подъем "мира" разом, инлайнинг кода в HotPath, уменьшение меморитраффика в алгоритмах, использование векторизации где только она втыкается и дает результат и прочая).
Причем проектирование на performance нужно только в основных HotPath и все.
Я в лоб сравнивал решения на плюсах и на шарпе для одинаковых задач HFT, плюса в лучшем случае были быстрее на 30% в части задач, и то, после завоза возможностей ручной векторизации в .NET преимущество плюсов в части задач подсдулось.
Ну конечно кастомный TCP/IP стек на плюсах(FStack&DPDK), это факт, но не мы же его пишем, поэтому оставим честь мудохаться с плюсами оставим другим
А уж с завозом ref struct, Span, пулинга памяти из коробки, возможностью рулить GC в .NET вообще настала лафа для разработки, ориентированной на low latency.
Только есть огроменный нюанс-код на шарпе быстрее разрабатывать, компилировать, сопровождать, и чем больше инфраструктура-тем больше выигрыш.
А так уже все сказано здесь:
https://benchmarksgame-team.pages.debian.net/benchmarksgame/fastest/csharpcore-gpp.html
Если где-то прямо сильно плюса бустят HotPath-не проблема воткнуть конкретный кусман код на нем и через PInvoke заюзать. Но пилить все на плюсах?
Плюсы остались только там, где уже вбуханы человеко-года(а то и десятки человеко-лет)-в конкретную инфру и отказываться от неё никто не будет.
А начинать с нуля пилить подобное? Ну ок-вперед! Пока вы годами будете пилить то, что на других техстеках при прямых руках делается за месяцы
Отредактировано 24.02.2021 16:57 HFTMan . Предыдущая версия . Еще …
Отредактировано 24.02.2021 16:56 HFTMan . Предыдущая версия .
Отредактировано 24.02.2021 16:55 HFTMan . Предыдущая версия .
Отредактировано 24.02.2021 16:53 HFTMan . Предыдущая версия .
Отредактировано 24.02.2021 16:51 HFTMan . Предыдущая версия .
Отредактировано 24.02.2021 16:50 HFTMan . Предыдущая версия .
Re[6]: Haters gonna hate but with proofs
От: Ночной Смотрящий Россия  
Дата: 24.02.21 17:25
Оценка:
Здравствуйте, chaotic-kotik, Вы писали:

НС>>hi perf S3 совместимый сторадж на го.

CK>у S3 стораджа низкие требования к latency,

Во-первых, S3 это просто API, с чего бы оно определяло требования к латентности?
Во-вторых, minio затачивался прежде всего под AI/ML и я бы не сказал что там какие то особо низкие требование к латентности.
В-третьих, с какого фига в топике всплыли высокие требования к латентности?

CK>я не утверждал что отменяет


Ты заявил, что С++ нужен для входа в эту сферу. И вдруг, внезапно, оказалось что самые популярные решения зачастую написаны вовсе не на С++. А переписанные на С++ они используются полутора калеками. Вот и весь факт.

CK>и кстати про кактус ты зря https://www.scylladb.com/users/


Совсем не впечатляет. С Кассандрой смешно сравнивать

CK>, которые написаны под современное железо (DMA с сетью и диском) и низкий latency


В первоначальном сообщении ничего не было про низкий latency. А если бы упомянул про это сразу — необходимость знания С++ для достаточно узкого сегмента рынка (а не широченного, как изначально тобой было заявлено) выглядит не особо убедительно.

CK>гхм, как можно понять фразу "без с++ не вьехать в кучу интересных проектов, которые на нем пишут, это всякая инфраструктура, базы данных, распределенные очереди" как "без с++ не вьехать в кучу интересных проектов, которые ТОЛЬКО на нем пишут, это ВСЯ инфраструктура, базы данных, распределенные очереди"? ты понимаешь русский язык вообще?


Понимаю. А еще вижу как активно ты завилял жопой, на ходу придумывая новые требования и ограничения.
... << RSDN@Home 1.3.17 alpha 5 rev. 62>>
Re[7]: Haters gonna hate but with proofs
От: chaotic-kotik  
Дата: 24.02.21 19:26
Оценка:
Здравствуйте, Ночной Смотрящий, Вы писали:


НС>>>hi perf S3 совместимый сторадж на го.

CK>>у S3 стораджа низкие требования к latency,

НС>Во-первых, S3 это просто API, с чего бы оно определяло требования к латентности?


Ну ты посмотри на S3 API для начала

НС>В-третьих, с какого фига в топике всплыли высокие требования к латентности?


из того сообщения, на которое ты отвечал

благодаря новому железу, у языка новая жизнь, потому что DPDK, и DMA в память, вместо обычных системных вызовов для чтения и записи, у современного нвме диска десятки тысяч очередей для вполнения запросов и ты тупо не можешь остановиться для сборки мусора, потому что там все занимает микросекунды теперь, вместо десятков милисекунд (раньше gc был одного порядка с seek-ом дисковым, теперь нет больше этих ваших seek-ов), чтобы адекватно работать с современным I/O нужно писать так, как пишут разработчики scylladb, например, а не на java



НС>Ты заявил, что С++ нужен для входа в эту сферу. И вдруг, внезапно, оказалось что самые популярные решения зачастую написаны вовсе не на С++. А переписанные на С++ они используются полутора калеками. Вот и весь факт.


нет, это ты просто не понял что я написал
я написал, что для эффективной работы с современным железом (и соотв. входа в сферу, где его эксплуатируют для создания продуктов), нужен С++. это очевидно любому кто этим занимается, код, эфективно работающий с диском, сегодня выглядит совсем не так, как привыкло большинство программистов, он очень асинхронный и активно юзает, скажем, linux aio и io_uring


НС>Понимаю. А еще вижу как активно ты завилял жопой, на ходу придумывая новые требования и ограничения.


у меня складывается впечатление, что когда ты видишь слово latency, срабатывает knee jerk reaction, которая заставляет тебя думать о том, что речь шла о трейдинге и HFT и тому подобных вещах. но речь шла ровно о том, что я написал в первом сообщении
Re[5]: Haters gonna hate but with proofs
От: chaotic-kotik  
Дата: 24.02.21 19:35
Оценка:
Здравствуйте, HFTMan, Вы писали:


HFT>Это результаты проектирования сразу на performance, не более(пулинг памяти, кешфрендли раскладка данных, отсутствие динамической аллокации ака предварительный подъем "мира" разом, инлайнинг кода в HotPath, уменьшение меморитраффика в алгоритмах, использование векторизации где только она втыкается и дает результат и прочая).


в той же сцилле, никакой мир разом не поднять, в любой СУБД материализовать в памяти все что только можно заранее — гиблое дело
еще там полно динамических аллокаций, так что интуиция насчет проектирования на performance неверная


HFT>Только есть огроменный нюанс-код на шарпе быстрее разрабатывать, компилировать, сопровождать, и чем больше инфраструктура-тем больше выигрыш.

HFT>А так уже все сказано здесь:
HFT>https://benchmarksgame-team.pages.debian.net/benchmarksgame/fastest/csharpcore-gpp.html
HFT>Если где-то прямо сильно плюса бустят HotPath-не проблема воткнуть конкретный кусман код на нем и через PInvoke заюзать. Но пилить все на плюсах?
HFT>Плюсы остались только там, где уже вбуханы человеко-года(а то и десятки человеко-лет)-в конкретную инфру и отказываться от неё никто не будет.
HFT>А начинать с нуля пилить подобное? Ну ок-вперед! Пока вы годами будете пилить то, что на других техстеках при прямых руках делается за месяцы

я не помню когда в последний раз писал на плюсах что-то такое, что было сильно сложнее дольше чем на шарпе или джаве, современные плюсы сейчас за тебя даже операторы генерируют
в нормальном коде обычно нет арифметики указателей, а работа с коллекциями и объектами выглядит точно также как и в друих языках, управление памятью тоже автоматизированно

в целом я согласен, что на шарпе или жаве писать проще и быстрее, но есть один ньюанс, если в плюсах я испорчу память, то легко найду это с помощью ASan, низкоуровневый код на шарпе или джаве тоже может испортить память, но вот помощи от туллинга — никакой, ну а сильно оптимизированный код выглядит сильно хуже чем на плюсах (скажем та же векторизация, в плюсах я могу положиться на компилятор и написать простой цикл, в шарпе же сам понимаешь что получится)
Re: Haters gonna hate but with proofs
От: cppguard  
Дата: 25.02.21 02:04
Оценка:
Здравствуйте, bc_kaya, Вы писали:

Потому что из прошлого тянется догма "C++ — быстро, Java — медленно", которая заставляет выбирать С++ в качестве основного языка нового проекта. Но в современном мире почти не осталось задач, в которых С++ нельзя было бы заменить на что-то подобное или лучше. Кстати, у меня есть совершенно обратный пример. Я попал на проект по разработке робота, и директор по разработке специально запретил использовать С++, потому что большинство сотрудников пришло из embedded, и едва ли хорошо знали язык. В итоге всё спокойно писалось на Си + Python (в том числе и расчёт в реальном времени позиций манипулятора), и по вычислительной мощности был огромный запас.

Ещё одна немаловажная деталь: многие верят, что если проект mission critical, то С++ гарантирует предсказуемость из коробки. Типа GC требует времени, а вот malloc выполняется всегда предсказуемо и за микросекунды. А это не так. Правда в том, если вам надо просто переворачивать биты, то даже мнимое ускорение на 5-10% не стоит головной боли, которую (возможно) даст С++, а если же проект требует стабильности и предсказуемости в расчётах, то всё равно придётся следить за руками, денормализировать структуры данных, не использовать стандартные компоненты и так далее.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.