|
Нарушающий
417 / 305 / 46
Регистрация: 13.04.2022
Сообщений: 1,759
|
||||||
Обучение C++ (первый язык)14.08.2022, 20:14. Показов 13952. Ответов 146
Метки начинающий изучение c++ (Все метки)
C++ как первый язык программирования.
Я начинал с С, где за пару месяцев можно всосать и простой синтакс, и скудноватые библиотеки. И главное - есть четкое хорошо видимое разделение между языком и библиотеками. Поэтому я понимаю как учить С - начиная со ступеньки ненамного выше ассемблера. Нужно и размеры типов знать, и двоичный комплемент двум понимать. И предсказуемое завершение, где основы понятны, дальше паттерны, книги и опыт. В новом С++ где ни ткнешь, обширная библиотека шаблонов, абстракций и т.д. Чрезвычайно полезная для разработки больших проектов, но трудная для подъема новичком (ИМО). Например, попробуйте написать программу "echo" на C++, используя только ++ные концепции недавнего стандарта. Вместо
А анализ производительности? Конкатенация строк через алгоритм:aggregate или алгоритм:stringstream? Слишком много для начинающего. А начинать с верхних концепций (наследование, шаблоны, итераторы) и полностью обойти вниманием внутреннюю кухню - это выучить еще одного индусоподобного "программиста". Если кто-то успшешно учил других C++ как первому языку, поделитесь подходом пожалуйста.
0
|
||||||
| 14.08.2022, 20:14 | |
|
Ответы с готовыми решениями:
146
Первый язык программирования на подходе к С++: Паскаль или С? Первый язык программирования Kotlin - как первый язык? |
|
фрилансер
6495 / 5726 / 1133
Регистрация: 11.10.2019
Сообщений: 15,287
|
||||||
| 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 / 5726 / 1133
Регистрация: 11.10.2019
Сообщений: 15,287
|
|
| 19.08.2022, 01:05 | |
|
0
|
|
|
фрилансер
6495 / 5726 / 1133
Регистрация: 11.10.2019
Сообщений: 15,287
|
|
| 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
|
||||||
|
6313 / 3036 / 1053
Регистрация: 01.06.2021
Сообщений: 11,559
|
|
| 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
|
|
|
6313 / 3036 / 1053
Регистрация: 01.06.2021
Сообщений: 11,559
|
|
| 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 / 5726 / 1133
Регистрация: 11.10.2019
Сообщений: 15,287
|
|
| 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 / 5726 / 1133
Регистрация: 11.10.2019
Сообщений: 15,287
|
|
| 19.08.2022, 08:53 | |
|
QueryMonkey,
#if #else #endif - это препроцессорное ветвление кода. То есть, ещё до компиляции
1
|
|
|
389 / 334 / 66
Регистрация: 14.10.2014
Сообщений: 1,475
|
|||||||||
| 19.08.2022, 09:23 | |||||||||
|
Макросы, указатели - в плюсах есть и активно используются. А ещё ООП, Шаблоны, Ссылки. Мне кажется (судя по вашим комментариям в этой теме) - вы просто сами в своё время пришли в плюсы через Си. Изучили хорошо последний, а уж потом начали вникать в С++. Поэтому и выбрали подобный стиль обучения. А я вот пришёл в плюсы с абсолютного нуля, а не через заднюю сишную дверь. И (моё имхо - не более) если я хочу изучить С++, а мне вдруг препод начнёт толкать Си - у меня возникнут вопросы - а он точно C++ знает? А может он Си с классами будет нам в голову вдалбливать? А оно мне надо? Может всё-таки найти того, кто в плюсах разбирается, а не в Си с классами? ) вникать в саму суть вещей, а не просто поверхностно изучать что-то. Это конечно сложно, долго, некоторые вещи мне, например, стали понятны лишь спустя несколько лет после начала изучения С++. Но я и не форсирую данный процесс. Откладываю на потом, спустя какое-то время, снова возвращаюсь к проблеме - как то так в общем.Но мне всё равно непонятен подобный идиотизм - зачем учить Си, если нужен С++? ![]() ![]() Приведите хоть один "железобетонный" аргумент. Макросы - а разве их нет в плюсах? Указатели - то же вроде как присутсвуют, а ещё - куча всего того, о чём Сишники и знать не знают Да, я знаю, что ООП можно замутить и в Си - даже книга есть про этоДа и вообще, господа, участвующие в дискуссии, тут многие пишут - зачем использовать то, сё если есть то-то. Вот я, например, до недавнего времени вообще не знал как пользоваться функцией printf - она мне нафиг не нужна была, потому как есть cout и плюсовые потоки. Но вот появилась необходимость изучить системное в линуксе - а там все примеры с
К чему я всё это - да к тому, что ежели вы для себя что-то пишите - то можете выбирать какие угодно конструкции. А если нет - придётся подстраиваться. Хотите изучать С++ - учите С++, хотите Си - учите Си. Давайте ещё перед изучением Java или C# советовать Си изучать. А что - лишним точно не будет.
2
|
|||||||||
|
2405 / 1937 / 763
Регистрация: 27.07.2012
Сообщений: 5,576
|
||||
| 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,475
|
|||||
| 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 для первой работы, но не первый язык Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
сукцессия 29. Переход от одних деревьев на другие делать более или менее вероятностным?
anaschu 12.07.2026
Насколько смена типов микоризы — исключительное событие в двухвековой сукцессии? Оценка вероятности в пространстве параметров
В текущей версии модели успешно реализован ключевой механизм. . .
|
сукцессия 27. Думаю, как переделывать уже написанную статью с планами на сукцессию.
anaschu 12.07.2026
Анализ соответствия модели требованиям
Реализованные компоненты:
Механизм закисления почвы через протонную помпу
Конкуренция между типами микориз
pH как триггер сукцессии
C/ P соотношение. . .
|
Сукцессия 26. Мат модель создана.
anaschu 12.07.2026
Модель смены растительных сукцессий посредством управления грибами работает внутри небольшой ячейки почвы, восстанавливающейся после пожара, где ненадолго бывшее царство хвойных снова захватили. . .
|
Решил проблему с ошибкой пагинации сообщений с сервера на алгоритме обхода дерева "Эстафета хвоста".
Hrethgir 12.07.2026
Проблема была в том, что удалялась именно новая кнопка, а не старая. Ни один ИИ не обнаружил это, а сам я смог только когда с работой стало попроще и когда заставил работать будущее автономное. . .
|
|
сукцессия 25. Хронология ошибок
anaschu 12.07.2026
# От 50-тонного гриба до устойчивого леса: хроника ошибок при построении модели вековой сукцессии микоризы
## О чём эта статья
В процессе построения ОДУ-модели (система дифференциальных. . .
|
сукцессия 24. Промежуточное общее описание модели
anaschu 12.07.2026
Хендофф: модель АМ→ЭКМ сукцессии микоризы (ризосфера, 50 лет)
Содержание проекта
Симуляция вековой (50 лет) экологической сукцессии в почве леса
Основные участники: АМ-гриб, ЭКМ-гриб,. . .
|
сукцессия 23. Более физиологичная физиология, более экологичная экология, более диффурные диффуры.
anaschu 12.07.2026
Что реально нашли и починили за эти 5 часов
Правило Линдемана (КПД конверсии сахара в тело, kEff) — раньше 100% полученного углерода шло прямо в биомассу гриба; теперь только kEff=0. 5 (после. . .
|
сукцессия 22. От артефактов к физиологии: калибровка агентной модели грибной сукцессии для воспроизведения сезонной динамики и pH-плато
anaschu 11.07.2026
Аннотация
В данной работе представлена калибровка агентной модели динамики грибных сообществ (fungal-succession), направленная на устранение нефизичных артефактов (коллапс биомассы, мгновенное. . .
|