LINUX.ORG.RU

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

 ,


3

4

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

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

Ответ на: комментарий от no-such-file

А вот такой

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

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

Ни разу не видел header-only библиотек

Видел и активно пользуюсь.

Никто не пишет ничего на шаблонах по заветам Александреску?

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

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

что памятью ты в плюсах обязан ручками управлять

Бред. Плюсы тем и отличаются от сишки, что тебе не нужно никакими ресурсами управлять вручную. Обычно это нужно только при написании обертки к какому-то ресурсу или взаимодействии с сишным кодом.

Siborgium ★★★★★
()

так просто исторически сложилось

оно. Можешь почитать Design and Evolution of C++, заслушать видосы со Страуструпом, говорящим о своей аспирантуре в Кембридже. Если кратко: потому что хотелось OOP и чтобы код был не медленнее сишки. Simula67 и Smalltalk тогда этого не позволяли (и сегодня пожалуй только две альтернативы). Так появился C++ 1985. Дальше в C++ начали добавлять фичи другие люди, которым C++ подошел по тем или иным причинам, а Страуструп был не против, и пошло-поехало…

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

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

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

Если пишешь на питоне, быстро привыкаешь и на автомате мысль рождается, на с++ же надо… напрягаться, потому что слишком много всего. Питон минималистичный. чем плохо?

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

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

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

Легко? Ну напиши гуи или сайт? Объектов нет (ну окей в си тоже нет). Try catch нет, вместо него какай-то фигня. И так далее… Синтаксис идиотский ИМХО.

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

Объектов нет (ну окей в си тоже нет).

Какая разница, структурами ты это называешь, или объектами?

Try catch нет, вместо него какай-то фигня.

С существующими исключениями (тормозными, а других, паразитируя на llvm, так просто не сделать) try-catch не особо нужен. А функциональная обработка ошибок всяко лучше кодов возврата.

И так далее…

Что далее-то? Отсутствие наследования в «далее» вошло? Эта проблема важнее всех перечисленных тобой.

Синтаксис идиотский ИМХО.

Нормальный синтаксис.

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

Что далее-то? Отсутствие наследования в «далее» вошло? Эта проблема важнее всех перечисленных тобой.

Это вошло в отсутствие объектов. Потому что стракты не фига не объекты.

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

Легко? Ну напиши гуи или сайт?

Сайт – без проблем. Могу даже в васм скомпилировать и на фронт засунуть. С гуи чуть сложнее, но биндинги к библиотекам есть, так что тоже вполне реализуется.

Потому что стракты не фига не объекты.

10 отличий назовешь?

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

10 отличий назовешь?

  • нет наследования
  • нет всяких private, public, protected (ок, в питоне тоже нет)
  • нет наследования
  • нет перегрузки операторов (вроде =) =) =))

Этого хватает? Конечно не 10, но вроде разница большая.

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

Не работает

text.cpp:10:35: error: variable ‘vec’ of non-literal type ‘std::vector<int>’ in ‘constexpr’ function
   10 |     std::vector<decltype(fib(0))> vec;

Втыкай костыли.

no-such-file ★★★★★
()
Ответ на: комментарий от T3RM1N4L

4.2

Объектов нет (ну окей в си тоже нет).

6.2.5 Types p. 1

Types are partitioned into object types (types that describe objects) and function types (types that describe functions).

anonymous
()

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

Да. Ничего лучше нет.

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

Потому что развивался эволюционно по мере надобности а не в результате продуманного проектирования

Это свойство любого крупного продукта.

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

Незачет.

Если наследование еще как-то можно натянуть на все это (на самом деле, в сишке отлично реализуется через макросы), то остальное вообще все мимо.

private/protected/public отношения к структурам не имеет, это модель инкапсуляции в С++. В раст она попросту другая и работает на уровне модуля.

Зачем второй раз наследование?

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

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

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

Ты сам себе противоречишь.

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

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

Вот я же и говорю: нет. (я если что про стракты в расте).

Последнее попросту чушь, в С++ перегружается все что угодно

В с++ да, а в расте нет AFAIK.

T3RM1N4L
() автор топика

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

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

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

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

Это понятно, вопрос то был просто зачем с++ так усложнен.

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

Просто отрицает, смысла там нет. Ничего пояснять он не будет.

cloun1902
()
Ответ на: комментарий от no-such-file

Проверил, у меня тоже. Неприятно. Должен работать. Заработает, когда имплементация будет полноценно поддерживать 20-й стандарт.

Ладно, допустим. Какое это имеет отношение к темплейтам в стиле С++98?

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

С существующими исключениями (тормозными, а других, паразитируя на llvm, так просто не сделать)

Покажи другие исключения.

А функциональная обработка ошибок всяко лучше кодов возврата.

Перечисли отличия этих подходов.

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

Потому что в него решили пихать всё что можно и нельзя

Это свойство любого крупного продукта.

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

Какое отношение перегрузка имеет к понятию объекта?

Не имеет? Только не надо говорить, что в яве ее нет, я про то, что в расте ее нет скорее всего потому что там и объектов нет.

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

Во-первых, ты ошибся с «ничерта нет».

Маленький и какой-то несчастный язык. В нем действительно ничего нет, кроме тк.

Во-вторых, показывай критерии устаревания.

Им практически никто не пользуется.

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

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

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

Да я бы даже еще добавил кое-что, задачи решаемые на ++ обычно сложные.

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