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

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

02.11.2025, 15:02. Показов 7556. Ответов 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
6163 / 2856 / 1042
Регистрация: 01.06.2021
Сообщений: 10,443
06.11.2025, 15:53
Цитата Сообщение от Алексей1153 Посмотреть сообщение
и какая связь между студентами-неосиляторами и "нормальностью" языка ?
Голодный студент ВШЭ залез в репозиторий;
В нём плюсы сочные, как яхонты, горят.
У парня глаза и мозги разгорелись;
А шаблоны висят, как кисти, высоко:
Отколь и как он к ним ни подберётся,
Хоть видит око,
Да компилятор неймёт.
Пробившись попусту семестр целый,
Пошёл и говорит с досадою: «Ну, что́ ж!
На взгляд-то он хорош,
Да сырой — фичи нет сверхвысокоуровневой:
Тотчас segmentation fault набьёшь».
0
Неэпический
 Аватар для Croessmah
18144 / 10728 / 2066
Регистрация: 27.09.2012
Сообщений: 27,028
Записей в блоге: 1
06.11.2025, 16:16
Цитата Сообщение от _Ivana Посмотреть сообщение
Так что Croessmah полностью прав
Раз уж началось с меня, то напишу своё видение.

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

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

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

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

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

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

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


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


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

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

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

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

Но вернемся к началу - я всего лишь поделился своей статистикой
0
фрилансер
 Аватар для Алексей1153
6451 / 5652 / 1129
Регистрация: 11.10.2019
Сообщений: 15,054
06.11.2025, 20:12
Цитата Сообщение от _Ivana Посмотреть сообщение
В силу несравнимой сложности самого С++ перед Си и ассемблером.
что-что ?
0
4949 / 2289 / 287
Регистрация: 01.03.2013
Сообщений: 5,989
Записей в блоге: 32
06.11.2025, 21:14
Цитата Сообщение от Алексей1153 Посмотреть сообщение
что-что ?
Ну что за деланное удивление, ты же не вчера за С++ сел. Сравни толщину книжек стандартов С и С++ или Кернигана-Ритчи со Страуструпами.
0
Эксперт функциональных языков программированияЭксперт С++
 Аватар для Royal_X
6163 / 2856 / 1042
Регистрация: 01.06.2021
Сообщений: 10,443
06.11.2025, 21:38
Так нужно еще понимать, о какой сложности идет речь: о высоком пороге вхождения или просто о средней сложности написания кода или вообще о времязатратности.
У ассемблера, разумеется, порог вхождения выше, чем у С++, но учитывая, что на С++ пишут огромные проекты с разнообразными паттернами проектирования, чего не делают на ассемблере, то что сложнее - это еще вопрос.
0
 Аватар для Наталья8
521 / 371 / 66
Регистрация: 09.03.2016
Сообщений: 3,923
06.11.2025, 22:04
А что? Комиссия может до бесконечности изобретать новые фичи для с++?
Предел то есть?
Вот представим какая то команда, пишущая какой то очень полезный продукт...
С выходом нового с++, они сразу начинают его усиленно изучать, и внедрять в производство?
Когда ты пишешь на ассемблере, он простой... Ты изучаешь иерархию, строение машины, компьютера.
На с++ (сложный), ты изучаешь новые фантазии комиссии, которым нет конца.
Я не очень умный. Мне только два слова приходят - зачем и понты.
0
Неэпический
 Аватар для Croessmah
18144 / 10728 / 2066
Регистрация: 27.09.2012
Сообщений: 27,028
Записей в блоге: 1
06.11.2025, 22:26
Цитата Сообщение от Наталья8 Посмотреть сообщение
Комиссия может до бесконечности изобретать новые фичи для с++?
Как правило, эти фичи - следствие нужд тех самых команд, которые пишут какие-то очень полезные продукты.
Так что "фантазии комиссии" - это фантазии разработчиков, которые хотят видеть эти "фантазии" в языке, а "комиссия" год-другой согласует всё это, ведь каждый ту или иную "фантазию" видит как-то по-своему.

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

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

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

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

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

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

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


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


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

ещё страшные ошибки(байсико&пайтоно-шкодеров):
- считать, что отсутствие ГЦ это баг, а на самом деле это фича.
...
0
Just Do It!
 Аватар для XLAT
4202 / 2659 / 654
Регистрация: 23.09.2014
Сообщений: 8,974
Записей в блоге: 3
07.11.2025, 09:54
Цитата Сообщение от _Ivana Посмотреть сообщение
https://github.com/Ivana-/Lisc... t-overview
взгляд наткнулся на фразу:
вычисление списков
звучит, примерно, так же, как и
Code
1
съесть балалайку с мёдом
прямо чувствуется, что это какая-то очень специфическая весчъ...
0
Эксперт функциональных языков программированияЭксперт С++
 Аватар для Royal_X
6163 / 2856 / 1042
Регистрация: 01.06.2021
Сообщений: 10,443
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
Ответ Создать тему
Новые блоги и статьи
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru