|
Нарушающий
417 / 305 / 46
Регистрация: 13.04.2022
Сообщений: 1,759
|
||||||
Обучение C++ (первый язык)14.08.2022, 20:14. Показов 13877. Ответов 146
Метки начинающий изучение c++ (Все метки)
C++ как первый язык программирования.
Я начинал с С, где за пару месяцев можно всосать и простой синтакс, и скудноватые библиотеки. И главное - есть четкое хорошо видимое разделение между языком и библиотеками. Поэтому я понимаю как учить С - начиная со ступеньки ненамного выше ассемблера. Нужно и размеры типов знать, и двоичный комплемент двум понимать. И предсказуемое завершение, где основы понятны, дальше паттерны, книги и опыт. В новом С++ где ни ткнешь, обширная библиотека шаблонов, абстракций и т.д. Чрезвычайно полезная для разработки больших проектов, но трудная для подъема новичком (ИМО). Например, попробуйте написать программу "echo" на C++, используя только ++ные концепции недавнего стандарта. Вместо
А анализ производительности? Конкатенация строк через алгоритм:aggregate или алгоритм:stringstream? Слишком много для начинающего. А начинать с верхних концепций (наследование, шаблоны, итераторы) и полностью обойти вниманием внутреннюю кухню - это выучить еще одного индусоподобного "программиста". Если кто-то успшешно учил других C++ как первому языку, поделитесь подходом пожалуйста.
0
|
||||||
| 14.08.2022, 20:14 | |
|
Ответы с готовыми решениями:
146
Первый язык программирования на подходе к С++: Паскаль или С? Первый язык программирования Kotlin - как первый язык? |
|
фрилансер
6495 / 5724 / 1133
Регистрация: 11.10.2019
Сообщений: 15,286
|
||||||
| 19.08.2022, 00:52 | ||||||
|
eva2326,
так компилятор это пишет английским по белому .cpp:7:41: error: too many arguments provided to function-like macro invocation assert(std::integral_constant<bool, true>::value); // error ![]() Добавлено через 1 минуту удалось починить так
0
|
||||||
|
1685 / 513 / 107
Регистрация: 17.05.2015
Сообщений: 1,524
|
||||
| 19.08.2022, 01:01 | ||||
|
0
|
||||
|
фрилансер
6495 / 5724 / 1133
Регистрация: 11.10.2019
Сообщений: 15,286
|
|
| 19.08.2022, 01:05 | |
|
0
|
|
|
фрилансер
6495 / 5724 / 1133
Регистрация: 11.10.2019
Сообщений: 15,286
|
|
| 19.08.2022, 01:21 | |
|
eva2326, прямо специально и досконально не изучал, но немного приходилось возиться, когда ещё не знал про STL
![]() А с приходом C++17 я вообще забыл про макросы
0
|
|
|
1685 / 513 / 107
Регистрация: 17.05.2015
Сообщений: 1,524
|
|
| 19.08.2022, 01:24 | |
|
0
|
|
|
Нарушающий
417 / 305 / 46
Регистрация: 13.04.2022
Сообщений: 1,759
|
||||||
| 19.08.2022, 01:27 [ТС] | ||||||
|
Языком с++ можно пользоваться как игрушкой, подкручивая свойства объектов из IDE и наблюдая как меняются цвета и размеры окошек.
Такой уровень меня не устраивает. Мне нужно чтобы ученик вникал и углублялся сам, и для этого я учу и макросам, и с/Паскаль/стандарт соглашению по вызову функций, и почему компилятор про sizeof() знает, а про strlen() - ни разу. Вчера разбирали почему
0
|
||||||
|
6312 / 3035 / 1053
Регистрация: 01.06.2021
Сообщений: 11,530
|
|
| 19.08.2022, 07:18 | |
|
Алексей1153, зачем вообще использовать assert, если есть функция static_assert, которая срабатывает на этапе компиляции?
0
|
|
|
Нарушающий
417 / 305 / 46
Регистрация: 13.04.2022
Сообщений: 1,759
|
|
| 19.08.2022, 07:40 [ТС] | |
|
static_assert() это не функция.
assert() делает вещи, которые static_assert() не может. Но мы отклоняемся. Кроме #макро, которые придется если не писать, то хотя бы понимать, есть ли ещё "трудные в изучении" части С, которые C++ позволяет пропустить за ненадобностью? Я не вижу таковых, что укрепляет мое мнение : весь объем языка С необходимо знать, чтобы считаться C++ программистом. А если это так, то стоит провести черту между ними, что позволяет владеть обоими языками, а не только C++. Можно сделать комментарий что для с++ программиста некоторые части libc неактуальны. Можно прожить не ведая про strtok(), asctime(), atoi() и ещё подсотни старомодных функций, для которых существует адекватная замена в C++.
0
|
|
|
6312 / 3035 / 1053
Регистрация: 01.06.2021
Сообщений: 11,530
|
|
| 19.08.2022, 07:47 | |
|
QueryMonkey, да, я знаю, что static_assert не функция, а объявление, но не в этом суть. Кстати, static_assert тоже делает вещи, которые не может assert.
0
|
|
|
Нарушающий
417 / 305 / 46
Регистрация: 13.04.2022
Сообщений: 1,759
|
|
| 19.08.2022, 08:06 [ТС] | |
|
static_assert это просто #if() принимающий более сложные константные выражения.
Борланд умел #if(sizeof(var) == 4) ещё в прошлом веке. Ничто не ново под луной.
0
|
|
|
фрилансер
6495 / 5724 / 1133
Регистрация: 11.10.2019
Сообщений: 15,286
|
|
| 19.08.2022, 08:09 | |
|
Royal_X, QueryMonkey, assert - это проверка на этапе выполнения, static_assert - это проверка на этапе компиляции
0
|
|
|
Нарушающий
417 / 305 / 46
Регистрация: 13.04.2022
Сообщений: 1,759
|
|
| 19.08.2022, 08:33 [ТС] | |
|
Да, это так. Разве а моем ответе что-то не состыковалось?
0
|
|
|
фрилансер
6495 / 5724 / 1133
Регистрация: 11.10.2019
Сообщений: 15,286
|
|
| 19.08.2022, 08:53 | |
|
QueryMonkey,
#if #else #endif - это препроцессорное ветвление кода. То есть, ещё до компиляции
1
|
|
|
389 / 334 / 66
Регистрация: 14.10.2014
Сообщений: 1,474
|
|||||||||
| 19.08.2022, 09:23 | |||||||||
|
Макросы, указатели - в плюсах есть и активно используются. А ещё ООП, Шаблоны, Ссылки. Мне кажется (судя по вашим комментариям в этой теме) - вы просто сами в своё время пришли в плюсы через Си. Изучили хорошо последний, а уж потом начали вникать в С++. Поэтому и выбрали подобный стиль обучения. А я вот пришёл в плюсы с абсолютного нуля, а не через заднюю сишную дверь. И (моё имхо - не более) если я хочу изучить С++, а мне вдруг препод начнёт толкать Си - у меня возникнут вопросы - а он точно C++ знает? А может он Си с классами будет нам в голову вдалбливать? А оно мне надо? Может всё-таки найти того, кто в плюсах разбирается, а не в Си с классами? ) вникать в саму суть вещей, а не просто поверхностно изучать что-то. Это конечно сложно, долго, некоторые вещи мне, например, стали понятны лишь спустя несколько лет после начала изучения С++. Но я и не форсирую данный процесс. Откладываю на потом, спустя какое-то время, снова возвращаюсь к проблеме - как то так в общем.Но мне всё равно непонятен подобный идиотизм - зачем учить Си, если нужен С++? ![]() ![]() Приведите хоть один "железобетонный" аргумент. Макросы - а разве их нет в плюсах? Указатели - то же вроде как присутсвуют, а ещё - куча всего того, о чём Сишники и знать не знают Да, я знаю, что ООП можно замутить и в Си - даже книга есть про этоДа и вообще, господа, участвующие в дискуссии, тут многие пишут - зачем использовать то, сё если есть то-то. Вот я, например, до недавнего времени вообще не знал как пользоваться функцией printf - она мне нафиг не нужна была, потому как есть cout и плюсовые потоки. Но вот появилась необходимость изучить системное в линуксе - а там все примеры с
К чему я всё это - да к тому, что ежели вы для себя что-то пишите - то можете выбирать какие угодно конструкции. А если нет - придётся подстраиваться. Хотите изучать С++ - учите С++, хотите Си - учите Си. Давайте ещё перед изучением Java или C# советовать Си изучать. А что - лишним точно не будет.
2
|
|||||||||
|
2405 / 1937 / 763
Регистрация: 27.07.2012
Сообщений: 5,575
|
||||
| 19.08.2022, 10:04 | ||||
|
2
|
||||
|
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
|
|||||||
| 19.08.2022, 11:09 | |||||||
0
|
|||||||
|
Нарушающий
417 / 305 / 46
Регистрация: 13.04.2022
Сообщений: 1,759
|
||||
| 19.08.2022, 17:52 [ТС] | ||||
Добавлено через 3 минуты Я заплюсовал ваш ответ, как информативный и полезный. По поводу Добавлено через 5 минут Recrut_rf, Вы сказали что начинали с изучения C++ не зная С, и сейчас этим языком (C++) владеете. Вы можете сказать, что знаете C? Если да - то как вы определили подмножество языка C++ которое составляет C? cout << "4" -"2"; // это какой язык?
0
|
||||
|
389 / 334 / 66
Регистрация: 14.10.2014
Сообщений: 1,474
|
|||||
| 19.08.2022, 18:42 | |||||
.h (string.h, math.h и т.д.) в конце или же начинается с символа с (тот же cstring) - это естЪ наследство от Си.Плюсовые либы именуются просто названиями - vector, string и т. д. ![]() Чистейшие плюсы - в Си нет объектов, а cout это глобальный потоковый объект С++.Добавлено через 5 минут А в плюсах << специально перегружен для объекта coutТак же можно перегрузить и для своего класса.
0
|
|||||
|
Нарушающий
417 / 305 / 46
Регистрация: 13.04.2022
Сообщений: 1,759
|
|||||||
| 19.08.2022, 18:48 [ТС] | |||||||
0
|
|||||||
| 19.08.2022, 18:48 | |
|
C# как первый язык программирования Первый/основной язык программирования JavaScript как первый язык Питон, как первый язык программирования Python для первой работы, но не первый язык Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
GitDOS: Когда я решил скрестить MS-DOS, GitHub и Claude
MaGz GoLd 08.07.2026
Привет, Киберфорум! Хочу поделиться своим проектом, который, надеюсь, вас заинтересует. GitDOS — это веб-приложение, которое позволяет запускать DOS в браузере с тремя крутыми фичами: диски живут в. . .
|
Учебный мини "цифровой двойник" = (Сервер = Java + Flask_питон )+(3D = Гугловскаая 4T nvideo + google colab) +( WMS = Odoo на Docker)
anaschu 07.07.2026
Увидел в требованиях к вакансии создателя имитационных моделей связку (REst + Api + WMS + Anylogic + питон + 3D Nvideo), и решил посмотреть, что это такое. Из этого всего я работал более менее. . .
|
Море в объективе
kumehtar 06.07.2026
Хотел написать много проникновенных слов, но передумал.
Оно само - говорит.
Кто слышит тот слышит.
|
Doom для терминала без стрельбы и монстров. 3D Raycasting на ascii.
dcc0 05.07.2026
Попросил нейронную сеть deepai. org написать рейкастинг 3D с библиотекой ncurses для Linux. Чтобы можно было
ходить на стрелочки. Чтобы стены были отрисованы символами. Справилась.
Первый вариант. . .
|
|
Установка статуса документа по условию
Maks 05.07.2026
Алгоритм из решения ниже реализован на нетиповом документе "НарядПутевка" разработанного в КА2.
Задача: в табличной части "Материалы" документа при записи автоматически устанавливать статус. . .
|
Сезонность и суточность закисления почв
anaschu 04.07.2026
200 часов это все равно моловато. Есть ситуации, но нестандартные, когда смена происходит за 5 лет.
Но обычно это 50 лет и более.
Наверное, закисление почвы происходит сезонно в средней. . .
|
В чем ценность человеческого опыта в глобальном смысле?
kumehtar 03.07.2026
Возможно, ценность человека не в том, что он однажды достигает мудрости, а в том, что он становится носителем карты пути. Он знает не только истину, но и последовательность внутренних изменений,. . .
|
интеграция AnyLogic с самописным REST API и переход на Odoo
anaschu 03.07.2026
Успешная интеграция AnyLogic с самописным REST API и переход на промышленную Odoo WMS
Сегодня проделал огромный путь от простой симуляции физических процессов до построения полноценной. . .
|