Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
0 / 0 / 0
Регистрация: 02.11.2025
Сообщений: 1

Подводные камни

02.11.2025, 15:02. Показов 7613. Ответов 87

Студворк — интернет-сервис помощи студентам
Какие основные ошибки совершают начинающие при изучении C++ и как их избежать?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
02.11.2025, 15:02
Ответы с готовыми решениями:

Подводные камни клиент-серверного приложения
Здравствуйте дорогие Хорошую статью дал мне Vitaly1981 http://citforum.ru/book/cook/winsock.shtml ...

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

Какие подводные камни могут быть, при хранении в контейнере элемента типа void*?
Привет читателям! Какие подводные камни могут быть, при хранении в контейнере элемента типа void*?...

87
 Аватар для SmallEvil
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
06.11.2025, 15:44
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Yana_T Посмотреть сообщение
Подводные камни
Самые частые ошибки новичков собранные на этом форуме: Распространенные ошибки

Effective Modern C++ - Скотт Мейерс
Часть подводных камней технического характера.

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

Добавлено через 5 минут
Цитата Сообщение от Алексей1153 Посмотреть сообщение
и какая связь между студентами-неосиляторами и "нормальностью" языка ?
Связь, может быть, в том, что порог вхождения в С++ выше.
И для решения задачи "написать интерпретатор" нужно больше знаний и усилий, чем на других ЯП, для которых эта задача более естественна и проще в реализации.
Но прямой связи, конечно нет. Заливает. Иваннка может и будет.
0
Эксперт функциональных языков программированияЭксперт С++
 Аватар для Royal_X
6221 / 2919 / 1046
Регистрация: 01.06.2021
Сообщений: 10,809
06.11.2025, 15:53
Цитата Сообщение от Алексей1153 Посмотреть сообщение
и какая связь между студентами-неосиляторами и "нормальностью" языка ?
Голодный студент ВШЭ залез в репозиторий;
В нём плюсы сочные, как яхонты, горят.
У парня глаза и мозги разгорелись;
А шаблоны висят, как кисти, высоко:
Отколь и как он к ним ни подберётся,
Хоть видит око,
Да компилятор неймёт.
Пробившись попусту семестр целый,
Пошёл и говорит с досадою: «Ну, что́ ж!
На взгляд-то он хорош,
Да сырой — фичи нет сверхвысокоуровневой:
Тотчас segmentation fault набьёшь».
0
Неэпический
 Аватар для Croessmah
18149 / 10731 / 2067
Регистрация: 27.09.2012
Сообщений: 27,035
Записей в блоге: 1
06.11.2025, 16:16
Цитата Сообщение от _Ivana Посмотреть сообщение
Так что Croessmah полностью прав
Раз уж началось с меня, то напишу своё видение.

Я представляю начинающего как человека, который раньше никогда не сталкивался с программированием. Он не знает что такое условия, циклы, не знает алгоритмов, какие бывают структуры данных и т.д.
И вот он приходит в мир программирования, а ему помимо всего вышеперечисленного еще навешивают C++ со всей его сложностью. Чувствуете как повеяло страданием и унынием?
Я бы сначала все эти азы рекомендовал освоить с использованием другого языка: C, Pascal, Basic, Python, и т.п.
Можно вообще с ассемблера начать - там вообще всё просто, нихрена нет, кроме железяки и ОС. Но это может быть муторно и не интересно.
Начинать с Си может быть тоже непросто, но всяко проще, чем с C++. Ну а как разберемся со структурами данных, алгоритмами и хорошенько с указателями, можно (и нужно) в C++ заглянуть.
3
Эксперт функциональных языков программированияЭксперт С++
 Аватар для Royal_X
6221 / 2919 / 1046
Регистрация: 01.06.2021
Сообщений: 10,809
06.11.2025, 16:24
Цитата Сообщение от XLAT Посмотреть сообщение
потому что, вангую, у автора на лиспе и хаскеле уже есть готовых 100500 варов интерпретатора, а крестах нет ни одного.
так оно скорее и есть, но другая причина в том, что одно дело знать, а другое - уметь передать знания другим. Программист и педагог это разные вещи.

Вот, один из его онлайн-уроков. Студентов осталось двое... И тут не С++. Зачем тогда винить язык, что "никто не реализует интерпретатор и не проходит курс".

0
Just Do It!
 Аватар для XLAT
4211 / 2668 / 655
Регистрация: 23.09.2014
Сообщений: 9,082
Записей в блоге: 3
06.11.2025, 17:03
Цитата Сообщение от Royal_X Посмотреть сообщение
Голодный студент ВШЭ залез в репозиторий;
В нём плюсы сочные, как яхонты, горят.
У парня глаза и мозги разгорелись;
А шаблоны висят, как кисти, высоко:
Отколь и как он к ним ни подберётся,
Хоть видит око,
Да компилятор неймёт.
Пробившись попусту семестр целый,
Пошёл и говорит с досадою: «Ну, что́ ж!
На взгляд-то он хорош,
Да сырой — фичи нет сверхвысокоуровневой:
Тотчас segmentation fault набьёшь».
Голодный студент ВШЭ
0
4949 / 2289 / 287
Регистрация: 01.03.2013
Сообщений: 5,991
Записей в блоге: 32
06.11.2025, 17:20
Цитата Сообщение от alexu_007 Посмотреть сообщение
А оставшиеся на указанных вами "народных" языках 10% все пишут интерпретатор?
Нет, тоже не все. Но там не такая драматичная статистика, как на плюсах

Цитата Сообщение от alexu_007 Посмотреть сообщение
В чем принципиальная разница между С++ и другими языками, что существенно облегчает задачу написания интерпретатора?
Как минимум, несколько очевидных моментов:

- отсутствие ГЦ

- неудобно реализованная квази-статическая типизиция без АТД

- необоснованная самоуверенность большинства программистов на С++ в том, что они знают С++ хоть на каком-то уровне


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


Цитата Сообщение от XLAT Посмотреть сообщение
_Ivana,
дайте, пжлста, ссыль на ваш интерпретатор - конкретно ТЗ,
желательно с позиции конечного пользователя - "что он умеет".
На примере Джава-реализации https://github.com/Ivana-/Lisc... t-overview

ЗЫ: самый забавный момент во всем этом треде, что большинство студентов изучают почему-то С++. При том, что в школе максимум учили Питон и ЕГЭ сдавали на нем же. А там им сразу платформенно-зависимые типы, статические/динамические/автоматические, рвалью/лвалью, указатели/сто видов ссылок/, нью/делит и остальные радости. И именно с этим связана относительно высокая активность и обилие новых тем от студентов-халявщиков в этом разделе форума
1
фрилансер
 Аватар для Алексей1153
6461 / 5670 / 1130
Регистрация: 11.10.2019
Сообщений: 15,090
06.11.2025, 17:54
Цитата Сообщение от _Ivana Посмотреть сообщение
для прототипирования и быстрых проверок концепций С++ не очень подходит.
почему ?

Вполне можно быстро накидать тяп-ляп, будет неэффективно, но как демо версия пойдёт. В STL много обобщённых инструментов

Добавлено через 46 секунд
И можно, кстати, писать код, не используя new и delete. Даже приветствуется
0
4949 / 2289 / 287
Регистрация: 01.03.2013
Сообщений: 5,991
Записей в блоге: 32
06.11.2025, 17:59
Цитата Сообщение от Алексей1153 Посмотреть сообщение
Вполне можно
Да конечно можно, и на Си/ассемблере тоже можно, вопрос же в сравнительной трудоемкости. Ну и блаб-парадокс никто не отменял, если вы имеете опыт писания на С++, он конечно поможет
0
фрилансер
 Аватар для Алексей1153
6461 / 5670 / 1130
Регистрация: 11.10.2019
Сообщений: 15,090
06.11.2025, 18:02
Цитата Сообщение от _Ivana Посмотреть сообщение
и на Си/ассемблере тоже можно
на C++ несравнимо проще
0
4949 / 2289 / 287
Регистрация: 01.03.2013
Сообщений: 5,991
Записей в блоге: 32
06.11.2025, 18:07
Цитата Сообщение от Алексей1153 Посмотреть сообщение
на C++ несравнимо проще
Дискуссионный вопрос. В силу несравнимой сложности самого С++ перед Си и ассемблером.

Но вернемся к началу - я всего лишь поделился своей статистикой
0
фрилансер
 Аватар для Алексей1153
6461 / 5670 / 1130
Регистрация: 11.10.2019
Сообщений: 15,090
06.11.2025, 20:12
Цитата Сообщение от _Ivana Посмотреть сообщение
В силу несравнимой сложности самого С++ перед Си и ассемблером.
что-что ?
0
4949 / 2289 / 287
Регистрация: 01.03.2013
Сообщений: 5,991
Записей в блоге: 32
06.11.2025, 21:14
Цитата Сообщение от Алексей1153 Посмотреть сообщение
что-что ?
Ну что за деланное удивление, ты же не вчера за С++ сел. Сравни толщину книжек стандартов С и С++ или Кернигана-Ритчи со Страуструпами.
0
Эксперт функциональных языков программированияЭксперт С++
 Аватар для Royal_X
6221 / 2919 / 1046
Регистрация: 01.06.2021
Сообщений: 10,809
06.11.2025, 21:38
Так нужно еще понимать, о какой сложности идет речь: о высоком пороге вхождения или просто о средней сложности написания кода или вообще о времязатратности.
У ассемблера, разумеется, порог вхождения выше, чем у С++, но учитывая, что на С++ пишут огромные проекты с разнообразными паттернами проектирования, чего не делают на ассемблере, то что сложнее - это еще вопрос.
0
 Аватар для Наталья8
617 / 375 / 67
Регистрация: 09.03.2016
Сообщений: 4,024
06.11.2025, 22:04
А что? Комиссия может до бесконечности изобретать новые фичи для с++?
Предел то есть?
Вот представим какая то команда, пишущая какой то очень полезный продукт...
С выходом нового с++, они сразу начинают его усиленно изучать, и внедрять в производство?
Когда ты пишешь на ассемблере, он простой... Ты изучаешь иерархию, строение машины, компьютера.
На с++ (сложный), ты изучаешь новые фантазии комиссии, которым нет конца.
Я не очень умный. Мне только два слова приходят - зачем и понты.
0
Неэпический
 Аватар для Croessmah
18149 / 10731 / 2067
Регистрация: 27.09.2012
Сообщений: 27,035
Записей в блоге: 1
06.11.2025, 22:26
Цитата Сообщение от Наталья8 Посмотреть сообщение
Комиссия может до бесконечности изобретать новые фичи для с++?
Как правило, эти фичи - следствие нужд тех самых команд, которые пишут какие-то очень полезные продукты.
Так что "фантазии комиссии" - это фантазии разработчиков, которые хотят видеть эти "фантазии" в языке, а "комиссия" год-другой согласует всё это, ведь каждый ту или иную "фантазию" видит как-то по-своему.

Добавлено через 5 минут
https://stdcpp.ru/
0
фрилансер
 Аватар для Алексей1153
6461 / 5670 / 1130
Регистрация: 11.10.2019
Сообщений: 15,090
07.11.2025, 07:01
_Ivana, при чём тут какие-то книжки.

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

На Си на это неделя уйдёт, да и то останется неудобным. На ассемблере можно и на годик засесть.
А на C++ это готовые контейнеры

отсюда и непонятно, чем C или ассемблер вдруг внезапно легче
0
736 / 700 / 110
Регистрация: 29.05.2015
Сообщений: 4,279
07.11.2025, 08:30
Цитата Сообщение от _Ivana Посмотреть сообщение
- отсутствие ГЦ
что такое ГЦ?

Цитата Сообщение от _Ivana Посмотреть сообщение
- неудобно реализованная квази-статическая типизиция без АТД
что такое АТД? Почему "квази-статическая", а не просто статическая? Почему неудобно реализованная, как можно реализовать по другому, удобно?

Цитата Сообщение от _Ivana Посмотреть сообщение
- необоснованная самоуверенность большинства программистов на С++ в том, что они знают С++ хоть на каком-то уровне
На С++ можно писать по разному. Можно использовать все преимущества ООП, а можно обходиться старыми добрыми функциями, не создавая собственных классов. Но пользуясь плюшками плюсов: контейнерами, строками и т.п. Чем в таком случае С++ сложнее С?
0
Just Do It!
 Аватар для XLAT
4211 / 2668 / 655
Регистрация: 23.09.2014
Сообщений: 9,082
Записей в блоге: 3
07.11.2025, 08:57
Цитата Сообщение от Yana_T Посмотреть сообщение
Какие основные ошибки совершают начинающие при изучении C++ и как их избежать?
самая страшная ошибка:
люди запускающие компилятор С++ думают, что они уже автоматом кодят на С++,
но на самом деле они кодят на Си, становясь горизонтальными сишкошкодерами...

сишкошкодерство головного моска вычисляется очень просто:
достаточно моргнуть одним глазом на код пациента:


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


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

ещё страшные ошибки(байсико&пайтоно-шкодеров):
- считать, что отсутствие ГЦ это баг, а на самом деле это фича.
...
0
Just Do It!
 Аватар для XLAT
4211 / 2668 / 655
Регистрация: 23.09.2014
Сообщений: 9,082
Записей в блоге: 3
07.11.2025, 09:54
Цитата Сообщение от _Ivana Посмотреть сообщение
https://github.com/Ivana-/Lisc... t-overview
взгляд наткнулся на фразу:
вычисление списков
звучит, примерно, так же, как и
Code
1
съесть балалайку с мёдом
прямо чувствуется, что это какая-то очень специфическая весчъ...
0
Эксперт функциональных языков программированияЭксперт С++
 Аватар для Royal_X
6221 / 2919 / 1046
Регистрация: 01.06.2021
Сообщений: 10,809
07.11.2025, 11:56
Цитата Сообщение от XLAT
самая страшная ошибка:
люди запускающие компилятор С++ думают, что они уже автоматом кодят на С++,
но на самом деле они кодят на Си, становясь горизонтальными сишкошкодерами...
Тебе бы немного изучить логику, потому что ты делаешь ложные умозаключения.

Пример:
Есть ржавый автомобиль, который едет только по дороге типа А, но не может ехать по дороге типа Б.
Есть современный автомобиль, который умеет ездить как на дороге типа А, так и Б.
Когда современный автомобиль едет по дороге типа А, то это не означает, что он становится ржавым.
Казалось бы банальная логика, то XLAT не понимает.

Мораль басни: язык С++ позволяет писать по-разному и как бы ты не писал, ты пишешь на С++.
- Можешь использовать всякие std::calloc, std::realloc, std::free, std::malloc и т.д.
- Можешь использовать new, delete
- Можешь вообще не использовать ручное управление памятью
И то, что язык дает такую свободу, это огромное преимущество и фича.

Конечно, когда люди прям подключают сишные заголовки и пишут по правилам языка С и потом передают код на плюсовый компилятор, то это не считается, что они пишут на С++. Но зная XLAT, уверен, что он не это имел в виду, а дескать нужно использовать ООП по максимуму, не пользоваться низкоуровневыми фичами языка и раздробить детский проект на двадцать файлов, чтобы ты считался крестовиком.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
07.11.2025, 11:56
Помогаю со студенческими работами здесь

Подводные камни realloc
Всем привет. Пишу структуру данных, которая при определенных обстоятельствах может перераспределять...

Использование long вместо long int. Возможны ли подводные камни?
Добрый день. Моя цель - писать кроссплатформенный C++ код, поэтому хочу отказаться от типа int...

Подводные камни обмена объектами между программой и DLL
Доброго времени суток. Есть программа, разделенная на основной модуль и DLL Для обмена...

Подводные камни использования библиотеки Qt в Visual Studio
С одной стороны, глупый вопрос: библиотека есть библиотека, берёшь и пользуешь. С другой стороны, я...

Необходимо разбить камни на две кучи таким образом, чтобы веса куч отличались не более чем в 1.5 раза.
Имеется N камней веса А1,А2,...,АN. Необходимо разбить их на две кучи таким образом, чтобы веса...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru