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

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

14.08.2022, 20:14. Показов 14706. Ответов 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
Неэпический
 Аватар для Croessmah
18150 / 10732 / 2067
Регистрация: 27.09.2012
Сообщений: 27,047
Записей в блоге: 1
20.08.2022, 13:19
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от alecss131 Посмотреть сообщение
у меня по крайне мере такой код собирается в плюсах (с++20, clang 14)
-pedantic-errors в помощь.

Цитата Сообщение от XLAT Посмотреть сообщение
они просто от Си унаследовали.
В C эта возможность была добавлена как опциональная.

Вроде как в C23 ситуация поменяется: Несколько слов в защиту VLA
Но нужно узнать подробнее, можно сразу у TheCalligrapher.
0
 Аватар для eva2326
1685 / 513 / 107
Регистрация: 17.05.2015
Сообщений: 1,524
20.08.2022, 16:05
Цитата Сообщение от QueryMonkey Посмотреть сообщение
это с тем же успехом с# или джава.
Не поняла. "Это" - это что?

Добавлено через 7 минут
Цитата Сообщение от XLAT Посмотреть сообщение
есть два класса типов:
1. встроенные.
2. определяемые пользователем.
истину я вам говорю.
Нельзя так истину глаголить.

Потому что логика вашего высказывания наделяет слово "класс" особым значением, отличным от значения официального термина с++.

Другими словами, вы коверкаете терминологию.
А это - некорректное поведение.

Можно например: "... есть две категории типов: встроенные и классы..."
Ну или: "... две разновидности типов..."

Как то так.
0
Just Do It!
 Аватар для XLAT
4221 / 2686 / 656
Регистрация: 23.09.2014
Сообщений: 9,246
Записей в блоге: 3
20.08.2022, 16:15
Цитата Сообщение от eva2326 Посмотреть сообщение
вы коверкаете терминологию.
ничего подобного:
C++
1
template<class T>class A{...};
0
 Аватар для eva2326
1685 / 513 / 107
Регистрация: 17.05.2015
Сообщений: 1,524
20.08.2022, 16:24
Цитата Сообщение от alecss131 Посмотреть сообщение
Только вот найти добавили ли в итоге не могу, знаю что у gcc это было расширение.
Только не "было", а "есть".
В с++ не добавили.

Цитата Сообщение от XLAT Посмотреть сообщение
нет.
они просто от Си унаследовали.
Не "нет", а "да". Gcc поддерживает VLA в качестве расширения.

Это важно с практической точки зрения: расширения компиляторов можно отключать.
Например, что бы обеспечить максимальную совместимость между разными компиляторами.

А вот откуда именно эту фичу изначально взяли - не имеет значения.
Разработчики расширений компилятора могут что угодно откуда угодно "просто наследовать".

Добавлено через 2 минуты
Цитата Сообщение от XLAT Посмотреть сообщение
ничего подобного:
Хотите сказать что "шаблон" - это "класс типов" ?
В таком случае продемонстрируйте шаблон встроенных типов.
0
Заблокирован
Эксперт функциональных языков программированияЭксперт С++
20.08.2022, 17:11
Цитата Сообщение от eva2326 Посмотреть сообщение
Gcc поддерживает VLA в качестве расширения.
Что означает Gcc? GNU Compiler Collection или компилятор gcc.exe?

Добавлено через 9 минут
Цитата Сообщение от alecss131 Посмотреть сообщение
у меня по крайне мере такой код собирается в плюсах
это не аргумент, что VLA разрешена в С++
можно создать свой компилятор, который будет собирать python-код вперемешку с С++ кодом без единой ошибки, но от этого python не станет частью ISO С++

Добавлено через 1 минуту
Цитата Сообщение от eva2326 Посмотреть сообщение
Только не "было", а "есть".
В с++ не добавили.
Что не добавили? Расширение не добавили в язык?
0
 Аватар для eva2326
1685 / 513 / 107
Регистрация: 17.05.2015
Сообщений: 1,524
20.08.2022, 17:22
Цитата Сообщение от Royal_X Посмотреть сообщение
Что означает Gcc?
В сообщении, которое вы процитировали, специально для вас, я оставила ссылку на офф. источник.
Прежде чем задавать вопросы, попробуйте сначала самостоятельно ознакомиться с материалом.

Добавлено через 2 минуты
Цитата Сообщение от Royal_X Посмотреть сообщение
Что не добавили?
Что именно является предметом обсуждения в сообщении #119 ?
Если вы не желаете отслеживать контекст беседы, тогда не нужно задавать мне вопросы.
0
Just Do It!
 Аватар для XLAT
4221 / 2686 / 656
Регистрация: 23.09.2014
Сообщений: 9,246
Записей в блоге: 3
20.08.2022, 17:26
Цитата Сообщение от eva2326 Посмотреть сообщение
продемонстрируйте шаблон встроенных типов.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <bits/stdc++.h>
 
template<typename T>
constexpr bool is_int_or_double_v =
    std::is_same<T, int>::value || std::is_same<T, double>::value;
 
template<typename T, class=std::enable_if_t<is_int_or_double_v<T>>>
struct X {};
 
struct A {};
 
int main()
{   X<int> x;
}
Цитата Сообщение от eva2326 Посмотреть сообщение
Не "нет", а "да". Gcc поддерживает VLA в качестве расширения.
то что MS забил в своё время на Си потому что не связывал с ним своё будущее меня конешно должно волновать,
ибо оно же несовместимость кода.

я мыслю как настоящий крестовик,
всю тамошнюю межвидовую борьбу, кто кому давал взятку в комитете и всё что с этим связано
я кладу в коробочку и плотно запечатываю.

после этого у меня остаётся:
1. VLA часть стандарта С99
2. С++ это расширение Си, как это изначально подавалось и было зафиксировано в самом названии языка С++
3. MS же занималось в те времена своим FW и поэтому мне пофиг на MS - здесь они ваще не авторитет.
4. GCC просто реализовали стандарт С99, а так, как - читай п2, то VLA тупо перекочевало в С++.

всё.

вы же смотрите на эту коробочку, как настоящий сишник, вам надо обязательно её расковырять,
чтобы оттуду всё посыпалось и затем засучив рукава это всё рассыпанное начать размазывать.

мыслите абстрактно.
0
 Аватар для eva2326
1685 / 513 / 107
Регистрация: 17.05.2015
Сообщений: 1,524
20.08.2022, 17:42
Цитата Сообщение от XLAT Посмотреть сообщение
template<typename T> constexpr bool is_int_or_double_v =
Такая конструкция называется variable template

А я просила:
Цитата Сообщение от eva2326 Посмотреть сообщение
шаблон встроенных типов
Цитата Сообщение от XLAT Посмотреть сообщение
я мыслю как настоящий крестовик
Вы мыслите как человек, который исковеркал офф. терминологию.
И при этом не смог продемонстрировать "шаблон встроенных типов".

Получается, что ваше заявление о "классе встроенных типов" - чушь.

Цитата Сообщение от XLAT Посмотреть сообщение
есть два класса типов:
1. встроенные.
2. определяемые пользователем.
Нет никаких "классов встроенных типов"
0
Заблокирован
Эксперт функциональных языков программированияЭксперт С++
20.08.2022, 18:07
Цитата Сообщение от eva2326 Посмотреть сообщение
В сообщении, которое вы процитировали, специально для вас, я оставила ссылку на офф. источник.
Прежде чем задавать вопросы, попробуйте сначала самостоятельно ознакомиться с материалом.
Я не спрашиваю об оФФФициальном источнике Я хочу уяснить, правильно ли вы понимаете этот официальный источник?
0
Just Do It!
 Аватар для XLAT
4221 / 2686 / 656
Регистрация: 23.09.2014
Сообщений: 9,246
Записей в блоге: 3
20.08.2022, 18:19
Цитата Сообщение от eva2326 Посмотреть сообщение
Нет никаких "классов встроенных типов"
есть даже класс классов, которые определяются разрабами компиляторов и снаружи вы их не увидите.
также есть класс классов, которые ваще никем никогда не опредёляются.
0
Заблокирован
Эксперт функциональных языков программированияЭксперт С++
20.08.2022, 18:19
Цитата Сообщение от QueryMonkey Посмотреть сообщение
Я сейчас мнения, что знание С является пререквизитом для изучения С++ для студентов незнакомых с программированием.
Я вот только что узнал у одной старухи на автобусной остановке, что ALGOL 60 является пререквизитом для изучения С++. Она была мнения, что мне нужно сперва учить ALGOL 60, а потом перейти на CPL, а потом на BCPL, а потом на B, а потом C и только потом на С++. Я ей сказал, что "ваше мнение очень важно для нас, пожалуйста, оставайтесь на линии"...
0
 Аватар для eva2326
1685 / 513 / 107
Регистрация: 17.05.2015
Сообщений: 1,524
20.08.2022, 18:22
Цитата Сообщение от XLAT Посмотреть сообщение
есть даже класс классов, которые определяются разрабами компиляторов и снаружи вы их не увидите.
Это не имеет никакого отношения к языку с++.
0
Вездепух
Эксперт CЭксперт С++
 Аватар для TheCalligrapher
13235 / 6867 / 1827
Регистрация: 18.10.2014
Сообщений: 17,400
20.08.2022, 18:32
Цитата Сообщение от XLAT Посмотреть сообщение
4. GCC просто реализовали стандарт С99, а так, как - читай п2, то VLA тупо перекочевало в С++.
Нет.

То "VLA", которое компилятор GCC поддерживает в С++ коде в качестве расширения - это совсем другая фича, которая ведет себя не так, как ведут себя стандартные VLA, которые компилятор GCC поддерживает в С коде.

Так что никакого "тупо перекочевало" тут нет. Сходство между стандартным С VLA и VLA-расширением C++ в компиляторе GCC - лишь внешнее. Мол, "можно указывать переменную в качеств размера". А дальше начинаются существенные различия.

---

То же самое относится и к compound literals, которые компилятор GCC тоже поддерживает в C++ коде в качестве расширения. Сходство с со стандартными С compound literals чисто внешнее, но семантически это совсем другая фича.
2
Just Do It!
 Аватар для XLAT
4221 / 2686 / 656
Регистрация: 23.09.2014
Сообщений: 9,246
Записей в блоге: 3
20.08.2022, 18:55
Цитата Сообщение от eva2326 Посмотреть сообщение
Это не имеет никакого отношения к языку с++.
это из серии, если я на языке А напишу язык B, то будут ли конструкции языка B иметь отношения к языку А?

Цитата Сообщение от TheCalligrapher Посмотреть сообщение
Нет.
собсно,
лично я различаю сам язык и то как оно языка может быть реализовано внутри.

ну, а на саму реализацию того же стандарта своего же стандарта, как именно реализовывать, вроде нет.
0
 Аватар для SmallEvil
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
20.08.2022, 19:08
Цитата Сообщение от XLAT Посмотреть сообщение
это из серии, если я на языке А напишу язык B, то будут ли конструкции языка B иметь отношения к языку А
там все еще хуже,
если мне то то похожее (я) из А у Б = то это А есть часть Б ! ВСЕ.
Ай да все. )
0
 Аватар для eva2326
1685 / 513 / 107
Регистрация: 17.05.2015
Сообщений: 1,524
20.08.2022, 19:24
Цитата Сообщение от XLAT Посмотреть сообщение
это из серии, если я на языке А напишу язык B, то будут ли конструкции языка B иметь отношения к языку А?
Это из серии: "правила языка B не имеют никакого отношения ни к деталям реализации компилятора, ни к языку, на которых этот компилятор написан"

Добавлено через 15 минут
Цитата Сообщение от XLAT Посмотреть сообщение
собсно,
лично я различаю сам язык и то как оно языка может быть реализовано внутри.
ну, а на саму реализацию того же стандарта своего же стандарта, как именно реализовывать, вроде нет.
Кликните здесь для просмотра всего текста



...
0
Just Do It!
 Аватар для XLAT
4221 / 2686 / 656
Регистрация: 23.09.2014
Сообщений: 9,246
Записей в блоге: 3
20.08.2022, 20:04
Цитата Сообщение от eva2326 Посмотреть сообщение
Это из серии: "правила языка B не имеют никакого отношения ни к деталям реализации компилятора, ни к языку, на которых этот компилятор написан"
т.е. если вы не врубаетесь в то, что вам говорят, зачем тогда ссылаться на какой то язык?
с чего вы ваще взяли, что ваш язык может иметь какое то отношение к смыслу вам сказанного?
0
 Аватар для eva2326
1685 / 513 / 107
Регистрация: 17.05.2015
Сообщений: 1,524
20.08.2022, 20:07
Цитата Сообщение от XLAT Посмотреть сообщение
т.е. если вы не врубаетесь в то, что вам говорят, зачем тогда ссылаться на какой то язык?
Не знаю, с чего вы взяли своё "т.е."
Вы несете какую то ахинею.
0
Just Do It!
 Аватар для XLAT
4221 / 2686 / 656
Регистрация: 23.09.2014
Сообщений: 9,246
Записей в блоге: 3
20.08.2022, 20:25
Цитата Сообщение от eva2326 Посмотреть сообщение
Вы несете какую то ахинею.
если вы видите, что я несу ахинею, зачем вы эту ахинею заглатываете?
вы же явно не можете её проглотить, а всё равно заглатываете.

почему я несу ахинею?
я обожаю людей с раздутым эго всезнайства и хочу подарить им радость)

ладно, шоп вас подбодрить: я не считаю это ахинеей -
в этом наше отличие и мне это нравится.
0
 Аватар для eva2326
1685 / 513 / 107
Регистрация: 17.05.2015
Сообщений: 1,524
20.08.2022, 20:37
Цитата Сообщение от XLAT Посмотреть сообщение
зачем вы эту ахинею заглатываете?
С чего вы это взяли?

Цитата Сообщение от XLAT Посмотреть сообщение
почему я несу ахинею?
Откуда ж мне знать?
Может вы - пьяный, а может родились таким.

Цитата Сообщение от XLAT Посмотреть сообщение
шоп вас подбодрить: я не считаю это ахинеей
С чего вы решили, что меня нужно подбадривать?
И что таким образом меня можно подбодрить?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
20.08.2022, 20:37

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
140
Ответ Создать тему
Новые блоги и статьи
FPS контроллер с анимированными Y-Bot и 3D-звуком miniaudio (Box3D, Recast, BehaviorTree.CPP, ozz-animation, ImGui, OpenGL и SDL3)
8Observer8 18.10.2026
Содержание блога | English Version Полное мультиплатформенное руководство по стартовому проекту с FPS-контроллером игрока, анимированными роботами Y-Bot с 4-слойным блендингом, 3D-физикой Box3D,. . .
Локальный http сервер
Argus19 17.10.2026
Локальный http сервер На работе, на двух локальных компьютерах круглосуточно работают программы опроса приборов с записью в книги Excel,которые раз в сутки записываются на сервер компании. Т. к. . . .
Копировать Windows на новый диск на UEFI
damix 17.10.2026
https:/ / uriesk. wordpress. com/ 2016/ 11/ 01/ move-window-10-to-ssd-on-a-uefi-dualboot-system-with-basic-linux-tools/ TL DR Вставляем диск, а старый подключаем через переходник, грузимся с лайва. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru