LINUX.ORG.RU

Почему все же с++ такой сложный язык?

 ,


3

4

С++ – сложный язык. Хоть это для каждого по разному и тд, но он очевидно сложнее большинства (всех?) высокоуровневых языков программирования. С другой стороны он очень быстрый и дает тотальный контроль.

Теперь вопрос: должен ли язык быть априори настолько сложным для достижения мощи как в с++ или же так просто исторически сложилось (ака историческая несправедливость)?

Ответ на: комментарий от pavlick

Угу, он.

Не, потеря точности была пока для phi не использовался double для phi. Там проблема в том, что после 46 real(8) выражение для fib не конвертируется в integer(4), да при конвертации в integer(8) из real(8) значащих цифр маловато. В fib(100) будет примерно 20 значащих цифр, например.

grem ★★★★★
()

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

I-Love-Microsoft ★★★★★
()

Он не сложный. Абстракции, перегрузка операторов, try, catch и прочие прелести.

Я как-то брался, казалось, что сильно хочу, но так и забросил. Просто характер решаемых технических задач совсем не требует C++. А без прикладного аспекта изучение инструмента превращается в навязчивую идею.

anonymous
()
Ответ на: комментарий от anonymous

Я читал некоторые статьи про тикл и даже пробовал сам. =)

T3RM1N4L
() автор топика
Ответ на: комментарий от Zhbert

Я могу обосновать. У питона нет совместимости между 2 и 3 ветками. Чтоб софт написанный на 2 пахал, просто поставь 2 и запусти – и будет пахать. А дальше пиши на три. В чем проблема?

T3RM1N4L
() автор топика
Ответ на: комментарий от Dark_SavanT

Почему-то среди разных компиляторов C++ бывает разночтение как парсить некоторые синтаксические конструкции. Хотя тут скорее виноват стандарт который не даёт однозначного ответа, но это тоже говорит в пользу сложности синтаксиса.

anonymous
()
Ответ на: комментарий от anonymous

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

Dark_SavanT ★★★★★
()
Ответ на: комментарий от I-Love-Microsoft

Сам не сумел, а других учишь.

anonymous
()
Ответ на: комментарий от T3RM1N4L

Проблема в том, что у меня вотпрямщас есть несколько разных железяк на которых питон либо второй, либо третьей версии. Доставить я не то что бы не могу, скорее не хочу, потому что имел я в виду перебирать фирмварь. Вот и пиши один и тот же скрипт в двух вариантах регулярно.

Гвидо, за вот это вот всё, надо гвоздь в голову вбить.

Dark_SavanT ★★★★★
()
Ответ на: комментарий от anonymous

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

Dark_SavanT ★★★★★
()
Ответ на: комментарий от Dark_SavanT

Я так и не понял почему к 3ему нельзя доставить второй (или наоборот) и запускать по разным версиям (команды разные), а еще проще добавить шебанг.

T3RM1N4L
() автор топика
Ответ на: комментарий от Dark_SavanT

Конечно и это причина напихать в язык всего и оставить все дерьмо из позопрошлого века. Пока конечно хорошо все пашет место лишнего не надо, но такими темпами это с++ превратится в нечто неохватимое. Зачем?

T3RM1N4L
() автор топика
Ответ на: комментарий от DiKeert

Сразу видно человека который не пробовал макросы дебажить

Сразу видно человека который не пробовал дебажить шаблоны. Дебаг макросов это просто сказка.

no-such-file ★★★★★
()
Последнее исправление: no-such-file (всего исправлений: 2)
Ответ на: комментарий от T3RM1N4L

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

Dark_SavanT ★★★★★
()
Ответ на: комментарий от DiKeert

Сразу видно человека который не пробовал макросы дебажить

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

не говоря уже о reader макросах

Часто ридер макросы дебажишь, мань?

anonymous
()
Ответ на: комментарий от T3RM1N4L

Хорошо, что в питоне не так, все модно молодежно и без легаси. Только скажи одно, чего питон такой жирный?

root-fm /tmp # pacman -S python2 python
warning: python-3.9.1-2 is up to date -- reinstalling
resolving dependencies...
looking for conflicting packages...

Packages (2) python-3.9.1-2  python2-2.7.18-2

Total Download Size:    13.82 MiB
Total Installed Size:  158.73 MiB
Net Upgrade Size:       79.61 MiB


root-fm /tmp # pacman -S gcc
warning: gcc-10.2.0-6 is up to date -- reinstalling
resolving dependencies...
looking for conflicting packages...

Packages (1) gcc-10.2.0-6

Total Installed Size:  147.08 MiB
Net Upgrade Size:        0.00 MiB

Две версии чистого как слеза девственицы божественного питона весят больше двух компиляторов (Ц и ЦПП) со всем их легаси дерьмом со времен, когда многих тут еще на свете не было (158 против 147 метров)? Что там? Вата, мануалы в ютф-1024 на всех языках мира?

pavlick ★★
()
Последнее исправление: pavlick (всего исправлений: 1)
Ответ на: комментарий от T3RM1N4L

В чем проблема?

А теперь представь, что их не три, в 300. В таком зоопарке вообще черт ногу сломит, поэтому он не нужен.

Zhbert ★★★★★
()

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

и с шаблонами та же фигня.

olelookoe ★★★
()
Ответ на: комментарий от Siborgium

Интересно. Только они malloc разменяли на alloca(на happy path тоже). С unwind тоже не ясно, насколько быстрее будет. Ну и они сами там пишут:

Therefore, the existing implementations should be extended rather than replaced; and we need a way for users to select which convention to use.

Тебе где-нибудь было нужно такое?

cloun1902
()

Он простой. GLSL сложнее :P

robus ★★★★★
()
Ответ на: комментарий от rukez

В сях у тебя гораздо больше возможностей (накосячить)

Верно, но приписка в скобках лишняя. Ну и да - ручное управление не просто так делают. Язык позволяет этим не занисаться.

cloun1902
()
Ответ на: комментарий от anonymous

Вопрос был про заголовки как таковые, опциональные они или генерируемые - неважно.

cloun1902
()
Ответ на: комментарий от Siborgium

Zero-Overhead Deterministic Exceptions

In the try block, before invoking f, we set a thread-local pointer pE1.

Zero-Overhead

set a thread-local pointer

Знатно на ноль поделили.

anonymous
()

С++ – сложный язык

Это ты еще Си не видел, сынок.

P.S асамблер - топ

acroobat
()
Ответ на: комментарий от T3RM1N4L

Если у меня брюхо до колена и я тебе рассказываю о стройной фигуре, я сильно убедителен? Вот так и ты с питоном и разговорами про избыточность цпп. Это не 1Мб lua.

pavlick ★★
()
Ответ на: комментарий от T3RM1N4L

превратится в нечто неохватимое

Вы с такими выводами немного опоздали… лет на 20 примерно :)

foxy13t
()

должен ли язык быть априори настолько сложным для достижения мощи как в с++

Да. Чудес не бывает. Вернее бывают, но не вида «и рыбку съесть, и жопу не ободрать.»

UPD. Что впрочем не отменяет легаси-наследия плохих решений, совершенно ортогональных мощности языка. Например, контекстно-свободный синтаксис.

dimgel ★★★★★
()
Последнее исправление: dimgel (всего исправлений: 1)
Ответ на: комментарий от cloun1902

Да, там где горячий путь выдает успех/ошибку с примерно одинаковой частотой. Текущие эксепшны слишком тормозные для этого. Здесь ценой очень малого оверхеда для happy path выброс исключения становится много дешевле.

Siborgium ★★★★★
()
Ответ на: комментарий от yetanother

Память выделена будет динамически сборщиком мусора.

Когда его уже выкинут? Он во многих местах тупо не нужен

SR_team ★★★★★
()
Последнее исправление: SR_team (всего исправлений: 1)
Ответ на: комментарий от T3RM1N4L

Какими «темпами»? Ты вообще не знаешь языка, но уже блеешь что-то про его развитие.

Siborgium ★★★★★
()
Ответ на: комментарий от SR_team

Выкинуть его точно не выкинут. Там другая половина как раз «ЗА» сборщик мусора - бывшие джависты, питонщики и т.д. А вот что делают, хоть и не быстро, так это отвязывают от него ту часть стандартной либы, которая пока еще его наличие подразумевает.

В гц ничего плохого нет, ножом вон тоже человека зарезать можно, но никто же ножи не выкидывает. Нужно просто пользоваться с умом. Как и всем остальным.

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

yetanother ★★
()
Ответ на: комментарий от Siborgium

Да, что важно: «старые» и «новые» эксепшны будут сосуществовать в языке. Новый механизм будет работать при поимке исключений по значению, что позволит бесплатно и безболезненно получить увеличение производительности в указанных случаях и предоставит еще один customization point.

This paper presents a different approach that allows exception objects of arbitrary types to be transported efficiently when the program uses catch-by-value.

Все это произойдет, конечно, если пропозал примут.

Siborgium ★★★★★
()
Последнее исправление: Siborgium (всего исправлений: 2)
Ответ на: комментарий от yetanother

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

Да, вот этого я и хотел, чтобы классы можно было не черезжопно аллоцировать без гц, бросать исключения и иметь информацию о типах. В плюсах все это не требует гц

SR_team ★★★★★
()
Ответ на: комментарий от SR_team

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

А враппер для аллокатора написать и через него создавать классы в куче не прокатывает? new уже под сборщик мусора занят, как в плюсах уже не будет и какой-то враппер все равно не избежен. Локально же классы создавать вообще проблем нет, scope и scoped упрощают это дело.

Также были движения насчет исключений без ГЦ, точно помню, что было что-то, но что - не помню, не слежу за этим.

Мое мнение насчет ГЦ - умеренное использование для вспомогательных задач очень полезно, так как позволяет не тратить время на эти самые вспомогательные задачи. А вот работу с памятью в основных задачах уже делать лучше руками. Тут время не жалко тратить, так как пользы от работы руками в этом случае намного больше.

yetanother ★★
()
Последнее исправление: yetanother (всего исправлений: 1)
Ответ на: комментарий от yetanother

new уже под сборщик мусора занят, как в плюсах уже не будет

А вот в плюсах можно к new сборщик прикрутить.

какой-то враппер все равно не избежен

Да я видел стороннюю либу без GC, где используется New и Delete, вместо просто new и delete (deprecated). Кста хз как сейчас, но когда выкидывали delete из D, это испортило совместимость с C++

SR_team ★★★★★
()
Ответ на: комментарий от SR_team

А вот в плюсах можно к new сборщик прикрутить.

Ну в плюсах много чего есть хорошего. У плюсов проблема не в недостатке хорошего, а в излишнем наличии плохого.

Да я видел стороннюю либу без GC, где используется New и Delete, вместо просто new и delete (deprecated).

Не скажу что сильно долго думал над этим, но без врапперов в виде New/Delete на данный момент никак не обойтись. Хотя в принципе можно же свой гц сделать в D, который под капотом будет реализовывать ручное управление.

Кста хз как сейчас, но когда выкидывали delete из D, это испортило совместимость с C++

Насчет совместимости с плюсами - там она достаточно высокая, потому что два бекенда из трех - именно плюсовые, а фронтенд - один, дишный. Так что подмножество плюсов, которое используется в gcc-based и llvm-based бекендах, хорошо протестировано на совместимость в реальных условиях.

yetanother ★★
()
Ответ на: комментарий от horado

плохая новость: если C++ простой, то программист не компетентен.

peregrine ★★★★★
()
Ответ на: комментарий от SR_team

Ну вроде исключения рефкаунтятся, так что можно брать на них указатель и передавать между тредами.

anonymous
()

Кресты мало того что сложные, они еще и убогие

anonymous
()

И продолжал кипеть холивар, сыпаться оскорбления в адрес ТС и (в основном) друг в друга. Как же я не подумал! ;D

T3RM1N4L
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.