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

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

14.08.2022, 20:14. Показов 14715. Ответов 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
 Аватар для Recrut_rf
392 / 337 / 66
Регистрация: 14.10.2014
Сообщений: 1,538
20.08.2022, 00:09
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от eva2326 Посмотреть сообщение
Обучение математики с физикой тоже вредит?
Ведь у обучающегося тоже может возникнуть каша в голове, и он может кем то там себя возомнить?
Если учиться в специализированном учебном заведении, то нет - не возникнет. Там специальные программы обучения составляются и по ним людей учат.
И заметьте - физику преподают как физику, а не через жо призму математики.
Зачем смешивать одно с другим. И кстати, это не совсем корректное сравнение - вы не сможете изучать физику без знания математики. Мат анализ вообще везде применим и применяется.
Но что мешает вам изучать С++ в отрыве от Си?
Мож религия не позволяет, или сама возможность подобного оскорбляет ваши чувства - типа я не училась так значит и другие не могут....
0
Нарушающий
417 / 305 / 46
Регистрация: 13.04.2022
Сообщений: 1,759
20.08.2022, 00:16  [ТС]
Скоро сползем в священные войны, надеюсь что нет.

Мне понятна что именно предлагают сторонники метода "Сначала С, потом те части С++ которых нет в С".
Из названия очевидно что именно предлагается.

Могут ли противники этого метода обоснованно предложить конкретно какие важные C++ темы нужно преподавать раньше, чем темы языка C?

Шаблоны (С++) раьше чем типы данных (общий)?
Конструкторы (С++) перед указателями (общий)?
Наследование (С++) перед структурами(общий)?

Если никакие, то вы согласны что нужно сначала изучить С.
Вы его можете называть "подмножество языка C++ общее с языком C, но это просто С.

Константин Владимиров, лектор МФТИ упомянутый выше, также надеется что его студенты сначала выучат С.
https://youtu.be/Bym7UMqpVEY?t=22
0
 Аватар для Recrut_rf
392 / 337 / 66
Регистрация: 14.10.2014
Сообщений: 1,538
20.08.2022, 00:19
модераторам - предлагаю перенести тему в раздел "Священные войны"
И ДА НАЧНЁТСЯ СРАЧ БИТВА

на одной стороне ринга правильные чуваки топящие за Си как первый язык обучения во Вселенной
на другой - современные чуваки топящие за С++

LET'S GET READY TO RUMBLE!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
0
 Аватар для eva2326
1685 / 513 / 107
Регистрация: 17.05.2015
Сообщений: 1,524
20.08.2022, 00:30
Цитата Сообщение от John Prick Посмотреть сообщение
Так, может, восполнить пробел?
Какой именно пробел ?
Приведите пример пробела.

Цитата Сообщение от John Prick Посмотреть сообщение
Ну так сами и ответили: нет никакой разницы. Так зачем эти "прыжки": тут си, а тут плюсы?
Речь не о прыжках.
Речь об эффективности.

Напоминаю, ваше заявление:
Цитата Сообщение от John Prick Посмотреть сообщение
очевидно, что такой подход к изучению языка, мягко говоря, неэффективен.
Однако из вашего же заявления:
Цитата Сообщение от John Prick Посмотреть сообщение
фактически в этой части Си и С++ идентичны
Что:
Цитата Сообщение от eva2326 Посмотреть сообщение
нет никакой разницы: изучать сначала си, а потом доучивать с++, перескакивая через идентичный материал;
Или сразу начать изучать с++.
Вы так и не аргументировали свою "очевидность"
С чего вы решили что подход будет неэффективен, да ещё очевидно, да ещё и мягко говоря?

Добавлено через 1 минуту
Цитата Сообщение от Recrut_rf Посмотреть сообщение
Если учиться в специализированном учебном заведении, то нет - не возникнет.
Ещё как возникает.

Цитата Сообщение от Recrut_rf Посмотреть сообщение
что мешает вам изучать С++ в отрыве от Си?
Ничего не мешает.
0
 Аватар для Recrut_rf
392 / 337 / 66
Регистрация: 14.10.2014
Сообщений: 1,538
20.08.2022, 00:32
Цитата Сообщение от QueryMonkey Посмотреть сообщение
Могут ли противники этого метода обоснованно предложить конкретно какие важные C++ темы нужно преподавать раньше, чем темы языка C?
Могу - всё можно преподавать раньше, чем темы языка С
Обоснование - С++ это самостоятельный язык,а не фреймворк Си.
Согласен с тем, что зная Си - наверняка некоторые темы будут даваться проще. Но возможно что и нет - вам могут "жестко" вдолбить в голову процедурный стиль программирования. И последующий переход на ООП может даваться с трудом.
1
Нарушающий
417 / 305 / 46
Регистрация: 13.04.2022
Сообщений: 1,759
20.08.2022, 00:46  [ТС]
Recrut_rf,
Могу - всё можно преподавать раньше, чем темы языка С
Я так не считаю. Наследование классов невозможно преподавать раньше изучения встроенных типов.
0
 Аватар для Recrut_rf
392 / 337 / 66
Регистрация: 14.10.2014
Сообщений: 1,538
20.08.2022, 00:50
Цитата Сообщение от eva2326 Посмотреть сообщение
Вы так и не аргументировали свою "очевидность"
С чего вы решили что подход будет неэффективен, да ещё очевидно, да ещё и мягко говоря?
Разрешите аргументировать !!!
АргументЪ - преподавание Си на курсах С++ противоречит самой основной цели курса. Народ идёт изучать С++, а вы ему в открытую про Си рассказываете. Не про Сишную часть стандартной плюсовой либы, а прям нескрываемый, чистый Си.
У народа могут возникнуть вопросы....
0
 Аватар для eva2326
1685 / 513 / 107
Регистрация: 17.05.2015
Сообщений: 1,524
20.08.2022, 00:51
Цитата Сообщение от QueryMonkey Посмотреть сообщение
Наследование классов невозможно преподавать раньше изучения встроенных типов.
Нет, не невозможно.
Франка же как то смог это сделать.

Не нужно собственную неспособность выдавать за принципиальную невозможность.
0
2410 / 1947 / 764
Регистрация: 27.07.2012
Сообщений: 5,582
20.08.2022, 00:52
Цитата Сообщение от eva2326 Посмотреть сообщение
Какой именно пробел ?
Приведите пример пробела.
Вы внимательно читали то, что цитируете? Там, по-моему, ясно написано, какой пробел имеется в виду.
0
 Аватар для eva2326
1685 / 513 / 107
Регистрация: 17.05.2015
Сообщений: 1,524
20.08.2022, 00:58
Цитата Сообщение от Recrut_rf Посмотреть сообщение
АргументЪ - преподавание Си на курсах С++ противоречит самой основной цели курса. Народ идёт изучать С++, а вы ему в открытую про Си рассказываете. Не про Сишную часть стандартной плюсовой либы, а прям нескрываемый, чистый Си.
У народа могут возникнуть вопросы....
Вопросы народа не имеют никакого отношения к заявлению о якобы очевидной неэффективности метода обучения.

Добавлено через 5 минут
Цитата Сообщение от John Prick Посмотреть сообщение
Вы внимательно читали то, что цитируете? Там, по-моему, ясно написано, какой пробел имеется в виду.
Нет, не написано.

Из положения:
Цитата Сообщение от John Prick Посмотреть сообщение
Язык Си стал когда-то продолжением языка Би.
Никак не следует, что у программиста языка си, будут какие то пробелы в знаниях.

Поэтому я и попросила продемонстрировать конкретный пример пробела.
0
Нарушающий
417 / 305 / 46
Регистрация: 13.04.2022
Сообщений: 1,759
20.08.2022, 01:10  [ТС]
Цитата Сообщение от eva2326 Посмотреть сообщение
Нет, не невозможно.
Франка же как то смог это сделать.
.
Тоже не смог. Вчитайтесь.
0
 Аватар для SmallEvil
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
20.08.2022, 01:43
Цитата Сообщение от QueryMonkey Посмотреть сообщение
Вы его можете называть "подмножество языка C++ общее с языком C, но это просто С.
Это не С, это не подмножество языка С++, это части С++, которые вы выбрали, схожи с Си, и вы по этой причине, и только по этой называете эту (выбранную вам) часть языка С++, Си )
Нет в С++ никакого подмножества языков.
Про преподавания я ничего не говорю вам, просто Си есть Си, у него своя жизнь и стязя.
У С++ своя. Когда писался первый С++, он умудрился вместить базовые Си элементы, для захвата целевой аудитории и вполне успешно. После того момента пути С++ и Си разошлись как в море корабли, и в начале топика это было напиисано.
Но видно непонятно для вас.
Если хотите, все же могу привести реальных примеров неработающих Си кодов в С++, по причине РАЗЛИЧИЯ этих ЯП.
Не говоря уже различия более поздних стандартов С и С++.

eva2326, судя по реакции на мой пример if, ваш троллинг, и непонимание языка С++ и самого программирования на лицо. А позиция барана в особенности.

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

Не по теме:

Цитата Сообщение от Recrut_rf Посмотреть сообщение
на одной стороне ринга правильные чуваки топящие за Си как первый язык обучения во Вселенной
на другой - современные чуваки топящие за С++
:D
Да нормальный ЯП Си, я не спорю ни разу.
Но зачем барашека (С++) называть черепахой и кидать его с обрыва в океан ?

1
 Аватар для eva2326
1685 / 513 / 107
Регистрация: 17.05.2015
Сообщений: 1,524
20.08.2022, 01:50
Цитата Сообщение от QueryMonkey Посмотреть сообщение
Тоже не смог. Вчитайтесь.
У него вообще нет никакой специальной темы, посвященной встроенными типам.

Он сразу же дает готовый класс атлетов, поэтому не нужно думать, как изготавливаются классы.
Далее, расписывает принцип работы с классами, не вникая в детали их устройства.
Далее, он вводит понятие функции.
Причем, в качестве параметров у неё - классы тех же самых атлетов, поэтому нет нужды вводить понятия "типов".
Первые его функции управляют атлетами.
А далее, он действительно затрагивает понятия "чисел", но лишь потому, что с их помощью удобно показывать различные алгоритмы. На теме "типов" он при этом не заострятся.
А далее, уже начинается графоний, за которым следуют темы "создание классов" и "производные классы".

Добавлено через 6 минут
Цитата Сообщение от SmallEvil Посмотреть сообщение
судя по реакции на мой пример if, ваш троллинг, и непонимание языка С++ и самого программирования на лицо. А позиция барана в особенности.
Сами вы баран. Потому что не умеете признавать ошибки.
Вы написали откровенную чушь.
И вместо того, что бы признать, что вы ошиблись, вы начали вести себя как агрессивный подросток в переходном возрасте.
0
Нарушающий
417 / 305 / 46
Регистрация: 13.04.2022
Сообщений: 1,759
20.08.2022, 06:35  [ТС]
eva2326, это с тем же успехом с# или джава.

Добавлено через 1 минуту
SmallEvil,

Если хотите, все же могу привести реальных примеров неработающих Си кодов в С++, по причине РАЗЛИЧИЯ этих ЯП.
Их мало и они никого не смущают. Добавьте "struct".
0
Неэпический
 Аватар для Croessmah
18150 / 10732 / 2067
Регистрация: 27.09.2012
Сообщений: 27,047
Записей в блоге: 1
20.08.2022, 09:14
О каком обучении программированию мы говорим... люди клавиатурой не могут пользоваться...
2
 Аватар для Recrut_rf
392 / 337 / 66
Регистрация: 14.10.2014
Сообщений: 1,538
20.08.2022, 10:16
Цитата Сообщение от QueryMonkey Посмотреть сообщение
Наследование классов невозможно преподавать раньше изучения встроенных типов
Я тут подумал - а что мешает это сделать?

Можно даже эту часть обучения назвать "Основы ООП - наследование ". И рассказывать в духе -
"У нас есть различные фигуры - Шар, квадрат, треугольник - но всё это фигуры, у которых есть множество общих для них вещей. Например площадь, цвет (допустим), название и пр." И так постепенно вводим в основы понимания ООП. Лафоре в своей книге "ООП в С++" примерно так и поступал (если что, я своё обучение плюсам с неё начинал)

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

Добавлено через 36 секунд
eva2326, кстати о том же вам сообщает

Добавлено через 10 минут
Цитата Сообщение от QueryMonkey Посмотреть сообщение
eva2326, это с тем же успехом с# или джава.
Да господи - ООП везде, нет - вот так - АБСОЛЮТНО ВЕЗДЕ ОДИНАКОВОЕ.

До меня кажись дошло - почему практически все говорят - выучишь С++, будешь понимать и разбираться (ну или быстро вникать) в другие языки программирования.



Цитата Сообщение от Croessmah Посмотреть сообщение
О каком обучении программированию мы говорим... люди клавиатурой не могут пользоваться...
Ну тут как бы.... нажатый инсерт меня тож выбешивает. Но я как то запомнил про подобный его эффект (в том же ворде - да по-моему везде он так работает). А так - мож тоже полез бы в интернет, как даун
0
Just Do It!
 Аватар для XLAT
4221 / 2686 / 656
Регистрация: 23.09.2014
Сообщений: 9,246
Записей в блоге: 3
20.08.2022, 10:27
Цитата Сообщение от Recrut_rf Посмотреть сообщение
Сообщение от QueryMonkey
Наследование классов невозможно преподавать раньше изучения встроенных типов
чо за хрень?

есть два класса типов:
1. встроенные.
2. определяемые пользователем.

истину я вам говорю.
0
 Аватар для Recrut_rf
392 / 337 / 66
Регистрация: 14.10.2014
Сообщений: 1,538
20.08.2022, 10:42
Цитата Сообщение от QueryMonkey Посмотреть сообщение
Их мало и они никого не смущают.
Я не знаю Си - так что могу привести только один пример, который мне попадался (я его на плюсах компилил) -
функция malloc при возвращении выделенного куска памяти в плюсах должна быть приведена к целевому типу. В Си, как я понял, это делать необязательно.

Во - нашел - есть у меня книга "Стивен Прата - язык программирования Си Лекции и упражнения" (надо почитать как нибудь что ли...) А там небольшой раздел - "Средства С99, которых нет в С++ ":
- выделенные инициализаторы
- составные инициализаторы
- ограниченные указатели
- массивы переменной длины
- гибкие элементы массивов
- типы long long и unsigned long long (оу - это уже есть в плюсах)
- переносимые целочисленные типы
- универсальные имена символов
- дополнительные функции математической библиотеки (оу - это наверное уже тоже в плюсы добавили)
- доступ к среде плавающей запятой через fenv.h (пунктуация сохранена)
- предопределённые идентификаторы, такие как __func__
- макросы с переменным количеством аргументов
0
Модератор
Эксперт Java
 Аватар для alecss131
2902 / 1407 / 413
Регистрация: 11.08.2017
Сообщений: 4,514
Записей в блоге: 2
20.08.2022, 10:49
Цитата Сообщение от Recrut_rf Посмотреть сообщение
массивы переменной длины
Видел, что хотели добавить в плюсы, у меня по крайне мере такой код собирается в плюсах (с++20, clang 14)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
 
int main() {
    int a;
    std::cin >> a;
    int b[a];
    for (auto &c: b) {
        c = 4;
    }
    std::cout << a << std::endl;
    for (auto c: b) {
        std::cout << c << " ";
    }
    return 0;
}
Только вот найти добавили ли в итоге не могу, знаю что у gcc это было расширение.
0
Just Do It!
 Аватар для XLAT
4221 / 2686 / 656
Регистрация: 23.09.2014
Сообщений: 9,246
Записей в блоге: 3
20.08.2022, 11:10
Цитата Сообщение от alecss131 Посмотреть сообщение
у gcc это было расширение.
нет.
они просто от Си унаследовали.

а MS - неосиляторы, даже в Си так не могут.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
20.08.2022, 11:10

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
120
Ответ Создать тему
Новые блоги и статьи
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