Форум программистов, компьютерный форум, киберфорум
C++
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.53/64: Рейтинг темы: голосов - 64, средняя оценка - 4.53
Нарушающий
417 / 305 / 46
Регистрация: 13.04.2022
Сообщений: 1,759

Обучение C++ (первый язык)

14.08.2022, 20:14. Показов 13936. Ответов 146

Студворк — интернет-сервис помощи студентам
C++ как первый язык программирования.

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

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

В новом С++ где ни ткнешь, обширная библиотека шаблонов, абстракций и т.д.
Чрезвычайно полезная для разработки больших проектов, но трудная для подъема новичком (ИМО).

Например, попробуйте написать программу "echo" на C++, используя только ++ные концепции недавнего стандарта.

Вместо
C
1
2
3
for( int i = 1 ; i < argc ; ++i )
    printf( (i == 1) ? "%s" : " %s", argv[i] );
puts( "" );
Получается куча кода, несчетное число реаллокаций памяти и раздутый исполняемый файл.
А анализ производительности? Конкатенация строк через алгоритм:aggregate или алгоритм:stringstream?

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

Если кто-то успшешно учил других C++ как первому языку, поделитесь подходом пожалуйста.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
14.08.2022, 20:14
Ответы с готовыми решениями:

Первый язык программирования на подходе к С++: Паскаль или С?
Привет всем) Думаю что похожие темы уже были. Я решил изучать программирование.Начал с Паскаля но хочу взять за основу C++. И недавно...

Первый язык программирования
Я являюсь студентом первого курса политехнического колледжа, специальности Информационные системы. Мы только начали изучать основы...

Kotlin - как первый язык?
Здравствуйте! Седина в бороду - бес в ребро: хочу попробовать выучить язык. Фактически первый (если не учитывать Basic 30 лет назад в...

146
 Аватар для eva2326
1685 / 513 / 107
Регистрация: 17.05.2015
Сообщений: 1,524
17.08.2022, 16:26
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Royal_X Посмотреть сообщение
Теперь мне скакать и рассказывать, что Java и C++ это одно и то же
Не надо спрашивать меня, что вам делать.
Я - не ваша мама.
0
Эксперт функциональных языков программированияЭксперт С++
 Аватар для Royal_X
6312 / 3035 / 1053
Регистрация: 01.06.2021
Сообщений: 11,554
17.08.2022, 20:00
Цитата Сообщение от eva2326 Посмотреть сообщение
Понятно. Аргументы кончились, начался переход на личность.
Цитата Сообщение от eva2326 Посмотреть сообщение
У вас какой то юношский максимализм, как у прыщавого подростка.
Вы - девственник?
Утверждаешь, что SmallEvil якобы переходит на личности, но в то же время спрашиваешь у него о девственности? Это еще вопрос, кто переходит на личности)
Что ты смотришь на сучок в глазе брата твоего, а бревна в твоём глазе не чувствуешь? (Лк. 6:41)
1
 Аватар для eva2326
1685 / 513 / 107
Регистрация: 17.05.2015
Сообщений: 1,524
17.08.2022, 20:22
Цитата Сообщение от Royal_X Посмотреть сообщение
Утверждаешь, что SmallEvil якобы переходит на личности, но в то же время спрашиваешь у него о девственности?
Да.
Цитата Сообщение от Royal_X Посмотреть сообщение
Это еще вопрос, кто переходит на личности)
В данном случае - не вопрос.
Проявления юношеского максимализма порождает резонные вопросы.

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

Самый главный резонный вопрос: хватит ли человеку ума понять, что используя местоимение "все", он совершает столько же вульгарное, сколько и некорректное сверх обобщение ?
Или не хватит ?

Вопрос, конечно, риторический.
0
Just Do It!
 Аватар для XLAT
4219 / 2680 / 656
Регистрация: 23.09.2014
Сообщений: 9,235
Записей в блоге: 3
17.08.2022, 20:50
Цитата Сообщение от eva2326 Посмотреть сообщение
хватит ли человеку ума понять
большое количество ума ведёт к повышенному энергопотреблению,
потому не выгодно иметь много ума.
0
Неэпический
 Аватар для Croessmah
18149 / 10731 / 2067
Регистрация: 27.09.2012
Сообщений: 27,038
Записей в блоге: 1
17.08.2022, 22:11
Цитата Сообщение от XLAT Посмотреть сообщение
большое количество ума ведёт к повышенному энергопотреблению
И греться будет.
0
Нарушитель
623 / 381 / 67
Регистрация: 09.03.2016
Сообщений: 4,220
17.08.2022, 23:08
eva2326,

Не по теме:

Женщина, как вы сексуальны.



Добавлено через 6 минут

Не по теме:

Замуж бы надо...

1
Just Do It!
 Аватар для XLAT
4219 / 2680 / 656
Регистрация: 23.09.2014
Сообщений: 9,235
Записей в блоге: 3
17.08.2022, 23:16
Цитата Сообщение от Наталья8 Посмотреть сообщение
Женщина, как вы сексуальны.
Eva может ещё девственница, поэтому обращение "Женщина" может оказаться неправильным.
1
Эксперт функциональных языков программированияЭксперт С++
 Аватар для Royal_X
6312 / 3035 / 1053
Регистрация: 01.06.2021
Сообщений: 11,554
17.08.2022, 23:48
Цитата Сообщение от XLAT Посмотреть сообщение
Eva может ещё девственница, поэтому обращение "Женщина" может оказаться неправильным.
сексизм detected
Конечно, понимаю, что она сама начала это глупую тему о девственности, но не стоит опускаться до её уровня и тем более оперировать устаревшими идеями прошлых веков. Женщина является женщиной с момента рождения и до самой смерти. А что касается её физиологических особенностей, то это не должно быть предметом рассуждения на данном форуме.
0
Just Do It!
 Аватар для XLAT
4219 / 2680 / 656
Регистрация: 23.09.2014
Сообщений: 9,235
Записей в блоге: 3
17.08.2022, 23:58
Цитата Сообщение от Royal_X Посмотреть сообщение
сексизм detected
я враг содомизма, феминизма, сатанизма и других европизмов, но я за нормальный восточный здоровый секс.

Цитата Сообщение от Royal_X Посмотреть сообщение
устаревшими идеями прошлых веков
в будущем мужское население не нужно, ибо искусственное оплодотворение спасёт человечество.
а вот без женщин - кого искусственно оплодотворять тогда?
0
 Аватар для eva2326
1685 / 513 / 107
Регистрация: 17.05.2015
Сообщений: 1,524
18.08.2022, 00:52
Цитата Сообщение от Наталья8 Посмотреть сообщение
Женщина, как вы сексуальны.


Цитата Сообщение от XLAT Посмотреть сообщение
Eva может ещё девственница, поэтому обращение "Женщина" может оказаться неправильным.
)))))))))))))
1
 Аватар для Recrut_rf
389 / 334 / 66
Регистрация: 14.10.2014
Сообщений: 1,475
18.08.2022, 22:11
Что то вы, господа, от темы отошли...
Люблю такие темы - специфических знаний не требует и - да - мне настолько всё-равно, что я просто не могу позволить себе пройти мимо

В общем - всё строго по теме -
не знаю, кто вбил себе в голову такую крамольную мысль что якобы хочешь изучить С++ - начинай с Си и распространяет её среди начинающих. Но (моё имхо не более, но и не менее) - хочешь изучать С++ - изучай С++, хочешь знать и уметь в Си - изучай Си. Зачем распыляться на Си, если он не интересен?
1
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
18.08.2022, 22:16

Не по теме:

Recrut_rf, когда я в далеком голопузом детстве учился играть на гитаре, мне моя бабуля постоянно твердила - это бесполезно! Сначала нужно научиться играть на БАЛАЛАЙКЕ!
Аналогия один-в-один прослеживается...


2
Нарушающий
417 / 305 / 46
Регистрация: 13.04.2022
Сообщений: 1,759
18.08.2022, 22:48  [ТС]
Цитата Сообщение от Recrut_rf Посмотреть сообщение
Зачем распыляться на Си, если он не интересен?
Я тоже так думал, пока не попробовал написал план уроков не предполагающий знания С.

Трудно всосать темплейты и полиморфизм для тех, кто не знает макросы и указатели.
А если собрать все, что нужно для обучения С++, набирается в аккурат на почти весь C.

Это мое мнение. Если вы считаете, что есть темы в С которые можно полностью обойти
при изучении C++, и таким образом сэкономить время, назовите несколько.
0
фрилансер
 Аватар для Алексей1153
6495 / 5726 / 1133
Регистрация: 11.10.2019
Сообщений: 15,286
18.08.2022, 22:55
Цитата Сообщение от QueryMonkey Посмотреть сообщение
назовите несколько
например, макросы
0
Нарушающий
417 / 305 / 46
Регистрация: 13.04.2022
Сообщений: 1,759
18.08.2022, 23:16  [ТС]
Цитата Сообщение от Алексей1153 Посмотреть сообщение
например, макросы
Без #define них не получится assert(e). нужен #e.

Макросы - примерно 10% от препроцессора, который полезен и его нужно знать.
Сегодня как раз рассказывал про препроцессор.

Добавлено через 5 минут
/usr/include/c++/11$ grep '#define ' * | grep '(' | wc
36 133 1879
0
фрилансер
 Аватар для Алексей1153
6495 / 5726 / 1133
Регистрация: 11.10.2019
Сообщений: 15,286
18.08.2022, 23:18
QueryMonkey, вот ассерт, ни единого макроса
C++
1
2
3
4
5
6
7
#include <cassert>
 
int main()
{
    assert(0);//динамика
    static_assert(0);//статика
}
но, согласен, макросы всё ещё иногда нужны для глобальных переключений, навроде отладочного режима, юникода, версии компилятора и так далее
0
Нарушающий
417 / 305 / 46
Регистрация: 13.04.2022
Сообщений: 1,759
18.08.2022, 23:31  [ТС]
Кстати, скачал Visual Studio Enterprise (его сейчас в ВМках раздают), посмотреть как сейчас выглядит "Hello World".

Консольное приложение только в C++ получилось выбрать, с обязательной привязкой к WinRT.

C++
1
2
3
4
5
6
7
8
9
10
11
#include "pch.h"
 
using namespace winrt;
using namespace Windows::Foundation;
 
int main()
{
    init_apartment();
    Uri uri(L"http://aka.ms/cppwinrt");
    printf("Hello, %ls!\n", uri.AbsoluteUri().c_str());
}
Структура папок проекта - 33 файла. Это я сделал Build и Clean.

Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
C:.
|   wintst.sln
|
+---packages
|   \---Microsoft.Windows.CppWinRT.2.0.220531.1
|       |   .signature.p7s
|       |   LICENSE
|       |   Microsoft.Windows.CppWinRT.2.0.220531.1.nupkg
|       |   readme.txt
|       |
|       +---bin
|       |       cppwinrt.exe
|       |
|       \---build
|           \---native
|               |   CppWinrtRules.Project.xml
|               |   Microsoft.Windows.CppWinRT.props
|               |   Microsoft.Windows.CppWinRT.targets
|               |
|               \---lib
|                   +---arm
|                   |       cppwinrt_fast_forwarder.lib
|                   |
|                   +---arm64
|                   |       cppwinrt_fast_forwarder.lib
|                   |
|                   +---win32
|                   |       cppwinrt_fast_forwarder.lib
|                   |
|                   \---x64
|                           cppwinrt_fast_forwarder.lib
|
+---wintst
|   |   main.cpp
|   |   packages.config
|   |   pch.cpp
|   |   pch.h
|   |   PropertySheet.props
|   |   readme.txt
|   |   wintst.vcxproj
|   |   wintst.vcxproj.filters
|   |   wintst.vcxproj.user
|   |   wintst_TemporaryKey.pfx
|   |
|   \---x64
|       \---Debug
|           |   wintst.Build.CppClean.log
|           |   wintst.exe.recipe
|           |   wintst.log
|           |   wintst.vcxproj.FileListAbsolute.txt
|           |
|           +---Generated Files
|           |   \---winrt
|           |       \---impl
|           +---Merged
|           +---Unmerged
|           \---wintst.tlog
\---x64
    \---Debug
Добавлено через 4 минуты
Цитата Сообщение от Алексей1153 Посмотреть сообщение
QueryMonkey, вот ассерт, ни единого макроса
На моем девбоксе (минт21) <cassert> включает <assert.h>, a там макросы.
Проверил в VS2022 - точно то же.

C++
1
2
3
4
5
6
7
8
9
// cassert standard header (core)
 
// Copyright (c) Microsoft Corporation.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
 
// NOTE: no include guard
#include <yvals_core.h>
 
#include <assert.h>
0
фрилансер
 Аватар для Алексей1153
6495 / 5726 / 1133
Регистрация: 11.10.2019
Сообщений: 15,286
18.08.2022, 23:39
QueryMonkey, неважно, как это реализовано. Я использую assert как функцию. При этом нет необходимости изучать макросы
1
126 / 94 / 34
Регистрация: 24.06.2022
Сообщений: 253
19.08.2022, 00:06
А зачем вам UWP ?
Цитата Сообщение от QueryMonkey Посмотреть сообщение
C++
1
using namespace Windows::Foundation;
Добавлено через 1 минуту
Для с++ в Визуал Студио
Открыть установщик выбрать в "Рабочих нагрузках" (Workloads) desktop development with C++
0
 Аватар для eva2326
1685 / 513 / 107
Регистрация: 17.05.2015
Сообщений: 1,524
19.08.2022, 00:18
Цитата Сообщение от Recrut_rf Посмотреть сообщение
Зачем распыляться на Си, если он не интересен?
Считаете, что конструкция if в языке с++ более интересная, нежели в языке си?

Цитата Сообщение от Алексей1153 Посмотреть сообщение
вот ассерт, ни единого макроса
вообще то, assert - и есть макрос.

Цитата Сообщение от Алексей1153 Посмотреть сообщение
При этом нет необходимости изучать макросы
Одно из двух:
1. Либо вы сейчас не сможете объяснить мне причину, из-за которой в примере ниже, не получается использовать макрос как функцию.

2. Либо вы сможете объяснить мне эту причину, но тогда вам придется признать, что у вас все ж таки возникла необходимость изучать макросы:

https://rextester.com/BFKRN59212

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <type_traits>
#include <cassert>
 
int main()
{
    // error: macro "assert" passed 2 arguments, but takes just 1
    // assert(std::integral_constant<bool, true>::value); // error
    
    #define workaround \
        std::integral_constant<bool, true>
    
    assert(workaround::value); // ok
}

Цитата Сообщение от QueryMonkey Посмотреть сообщение
если собрать все, что нужно для обучения С++, набирается в аккурат на почти весь C.
Так и есть. Изучение с++ предполагает изучение сишной основы.
Поэтому, "распыляться на Си" все равно придется.

Цитата Сообщение от QueryMonkey Посмотреть сообщение
Трудно всосать темплейты и полиморфизм для тех, кто не знает макросы и указатели.
В Большинстве букварей обучение начинается с сишных основ, и с постепенным движением в сторону ООП, и дальше - к шаблонам.
Но есть и исключение.

Есть такая старая книжка: С++ учебный курс. Паоло Франка.
В ней автор сразу же начинает с ООП, причем обучение проходит не в консольке, а в полноценном окошке с графикой.
Можно визуально наблюдать экземпляры классов, и управлять ими.
Получилось увлекательно.

Если бы у вас было подобное, только для современного с++, я бы купила))
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
19.08.2022, 00:18

C# как первый язык программирования
Добрый день. Решил изучить язык C# для начала, а потом и ASP.NET для трудоустройства. Раньше в институте изучал Delphi и С, но очень...

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

JavaScript как первый язык
Здравствуйте. Я решил начать изучать программирование, одно время сделал свой выбор на языке Python, но он мне ? показался несколько...

Питон, как первый язык программирования
питон как первый язык программирования пойдёт ли ?

Python для первой работы, но не первый язык
Всем доброго времени суток! Мне 20 лет, живу в Москве, занимаюсь интернет-маркетингом и параллельно учусь в ВУЗе на заочке на...


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

Или воспользуйтесь поиском по форуму:
60
Ответ Создать тему
Новые блоги и статьи
сукцессия 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), направленная на устранение нефизичных артефактов (коллапс биомассы, мгновенное. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru