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

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

14.08.2022, 20:14. Показов 14728. Ответов 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
19.08.2022, 18:57
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от QueryMonkey Посмотреть сообщение
Это С.
А-ха-ха-ха подлов засчитан

Вот только мой плюсовый MSVC - иного мнения. (во вложении доказательство)

А что у вас в коде выше - ниже представленных этой строкой:

Цитата Сообщение от QueryMonkey Посмотреть сообщение
cout << "4" -"2"; // это какой язык?
известно только одному богу, ну и вам естественно
Миниатюры
Обучение C++ (первый язык)  
0
 Аватар для SmallEvil
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
19.08.2022, 19:04
QueryMonkey, вы делаете то же самое что ева, игнорируете приведенные факты,
вырываете из котекста, все что бы подтвердить свою точку зрения.
Что то вам двоим тут доказывать нет никакого смысла.
Это называется хочу спросить, что бы утвердить свое мнение. (и не важно что оно ошибочное)
Даже более того, не важно оно ошибочное или в какой мере верное. Важно то, что вы заведомо, сознательно не называете вещи своими именами. Зачем вы так делаете? Я хз.
Зачем это делает eva2326, она все хорошо понимает, или думает что понимает, не важно , она просто троллит.
Вы же заблуждаетесь, и заблуждаете своих учеников. У вас есть перед ними отвественность.
Тогда давайте называть ВСЕ вещи своими именами, и учить ВСЕ с корня. Хочем освоить С++ - учим С, хочем С - учим ассемблер, хочем Ассемблер - учим машинные коды, хочем рахзобраться в машинных кодах, учим аппаратную архитектуру и транзисторы с прочими деталями.
Вы учите своих учеников электрическим деталям, логическим блокам, микросхемам ? Думаю нет. -
Почему нет ? Да потому что людское время и возможности не безграничны.
Задумайтесь.

Добавлено через 40 секунд
Цитата Сообщение от Recrut_rf Посмотреть сообщение
А-ха-ха-ха подлов засчитан
не засчитан, это гопниковское поведение. На него вообще не стоило отвечать.
1
 Аватар для Recrut_rf
392 / 337 / 66
Регистрация: 14.10.2014
Сообщений: 1,538
19.08.2022, 19:14
Цитата Сообщение от SmallEvil Посмотреть сообщение
не засчитан, это гопниковское поведение. На него вообще не стоило отвечать.
да ладно - может у них была тяжёлая сишная жизнь


видео в тему

Добавлено через 1 минуту
и они не могут принять то - что можно было-бы поступить иначе
0
Нарушающий
417 / 305 / 46
Регистрация: 13.04.2022
Сообщений: 1,759
19.08.2022, 19:24  [ТС]
SmallEvil, ведите себя прилично.

Я сейчас мнения, что знание С является пререквизитом для изучения С++ для студентов незнакомых с программированием.
Учить одновременно основам (двоичная арифметика) и абстракциям (ОО) трудно, проще по слоям снизу вверх, чтобы при обучении абстрактным классам человек не путался в синтаксе указателей.

Сюда пришел посоветоваться, и мне посоветовали одну книгу где так преподают.

Кроме того, я встретил Recrut_rf, кто выучил C++ не опираясь на С.
Это наверное сложнее, но он смог, значит такое возможно.

У вас другое мнение, и я вам не мешаю его озвучивать.

Добавлено через 7 минут
Кстати, темы урока сегодня будут:
- разделение C проекта на несколько исходников
- польза от создания собственных хедер файлов "типа_таких.h"
- как искать информацию про функции библиотеки С, не зная имени функции
- неявные преобразования типов, продвижение типов в выражениях и передаче параметров.
0
 Аватар для Recrut_rf
392 / 337 / 66
Регистрация: 14.10.2014
Сообщений: 1,538
19.08.2022, 19:35
Цитата Сообщение от QueryMonkey Посмотреть сообщение
Кроме того, я встретил Recrut_rf, кто выучил C++ не опираясь на С.
А что - это что-то уникальное? Думаю, многие так поступали.

касаемо обучения QueryMonkey, в одном из постов выше - John Prick уже сообщил вам как лучше всего преподавать С++. Кстати, в некоторых видео лекциях преподаватели так и поступали. Рассказывали про плюсы в той части, где они с Си пересекаются (ввод вывод при помощи scanf / printf, работу с файлами через FILE) - но не акцентировали внимание на том, что это Си. Потому как это такая же часть плюсов, как и iostream, fstream и прочее. И каждый плюсовик обязан её знать, понимать и разбираться.

Некоторые плюсовые проекты, с которыми мне приходилось работать были скорее Си проектами, скомпилированными плюсовым компилятором.

Добавлено через 5 минут
Цитата Сообщение от QueryMonkey Посмотреть сообщение
Кстати, темы урока сегодня будут:
- разделение C проекта на несколько исходников
- польза от создания собственных хедер файлов "типа_таких.h"
- как искать информацию про функции библиотеки С, не зная имени функции
- неявные преобразования типов, продвижение типов в выражениях и передаче параметров.
И что мешает вам "обозвать" пункт 1 вот так
- разделение C++ проекта на несколько исходников

а это "- как искать информацию про функции библиотеки С, не зная имени функции"
как - как искать информацию про функции библиотеки С++, не зная имени функции

Да и вообще что здесь Сишного то? Это ж всё галимые плюсы...
Думаю, что разницы, в данном случае, между С++ и Си не будет вообще никакой...
0
Нарушающий
417 / 305 / 46
Регистрация: 13.04.2022
Сообщений: 1,759
19.08.2022, 19:49  [ТС]
Да, это пока все общие для C и C++ темы.

Когда я их закончу и перейду к понятиям уникальных для C++, студенты будут знать С и смогут это добавить к списку умений, наряду с базовым использованием сорс контроля в условиях команды, написание юнит тестов и координацию качества работы через список багов.

Я не пьюрист, я прагматист. Не вижу как учить классам тех, кто еще не разобрался в структурах.
0
фрилансер
 Аватар для Алексей1153
6509 / 5765 / 1135
Регистрация: 11.10.2019
Сообщений: 15,407
19.08.2022, 20:47
QueryMonkey, если что, в C++ классы и структуры ничем не отличаются, кроме private/public по умолчанию
1
12 / 7 / 0
Регистрация: 14.05.2021
Сообщений: 120
19.08.2022, 20:57
Начал изучать С++ из академического интереса, втянулся, после работы решаю задачки по учебнику Васильева, даже что-то могу, массив составить функцию передать, сделать указатель на функцию и далее.. Конечно суперлогики еще нет, но будем потихоньку изучать.. я тут понял, что главное процесс изучения.. и постоянство во времени, ну и чтобы нравилось..
3
2410 / 1947 / 764
Регистрация: 27.07.2012
Сообщений: 5,582
19.08.2022, 21:06
Цитата Сообщение от QueryMonkey Посмотреть сообщение
кто выучил C++ не опираясь на С.
Ну мне так довелось в своё время. Хотя я бы даже не использовал тут слово "выучил", так как я всё осваивал уже "в бою", выполняя свою работу. И пришёл я в C++ из Паскаля/Делфи. Так что никакой "Си-основы" у меня как бы и не было. Но проект, над которым я тогда работал, был написан в большой степени в процедурном стиле, так что Си-подобных примеров я там насмотрелся вдоволь.
0
фрилансер
 Аватар для Алексей1153
6509 / 5765 / 1135
Регистрация: 11.10.2019
Сообщений: 15,407
19.08.2022, 21:16
Sinitsky, С++ кто-то ругает, кто-то ненавидит. А есть мы, кто просто любит его со всеми его закидонами Любовь объяснить невозможно.

QueryMonkey, John Prick, Я тоже чистый Си не использовал, начал сразу с C++, наскоком, без теории, без интернета под рукой. Это всё было просто в кайф, а я был школьник
0
Модератор
Эксперт Java
 Аватар для alecss131
2902 / 1407 / 413
Регистрация: 11.08.2017
Сообщений: 4,514
Записей в блоге: 2
19.08.2022, 21:39
Лучший ответ Сообщение было отмечено QueryMonkey как решение

Решение

Имхо что Си перед плюсами все же полезен, не обязателен, но полезен.
Сам я изначально учил в универе Си, хотя чистым его сложно назвать, на лекциях вроде и чистый, но на лабах писали кто на смеси плюсов и си, кто на чистом си (я среди них). Но так как это был не профильный предмет, то потом перешел на Matlab (питоноподобный язык). Потом немного самоучка purebasic чисто для одного проекта, потом с планами (которые так и забросил) написания модов для игры изучил прилично java core, переписал проект с purebasic на него и понял ооп, до этого ооп понять не мог. После джавы перелез на плюсы и потом на qt начал переписывать свой проект. Пытался изучать питон, не зашло (изза типизации, а точнее ее отсутствия), шарп тоже не зашел.
Сейчас изучаю java spring и c++. Чистый Си мне нравится, только на нем сложно и долго писать крупные проекты, в планах еще ассемблер.
Есть приличный курс (на ютубе от автора, лекции МФТИ) по плюсам, там подразумевается знание чистого си и ассемблера (помимо линукса) как основы для изучения плюсов. Курс довольно сложный и преподносится больше в стиле на си это пишется вот так а у плюсов для этого есть готовые инструменты.
1
Нарушающий
417 / 305 / 46
Регистрация: 13.04.2022
Сообщений: 1,759
19.08.2022, 22:02  [ТС]
Прорабатываю вопрос домашек - придумываю задачки со следующими свойствами:
- ТЗ выглядит полным, но таковым не является
- можно решить легко за час-два в лоб
- решения в лоб являются неоптимальными
- есть пространство для многофакторных оптимизаций и доделок

Например: написать программу
ispalindrome [-N] FILE.TXT

которая определяет, является ли содержимое файла палиндромом.
- Если файл является палиндромом, вывести размер и имя файла в stdout
- Если файл не является палиндромом, ничего не вывести
- Ошибки работы программы сообщать только в stderr
- Файлы длины N или меньше палиндромами не считать.
0
фрилансер
 Аватар для Алексей1153
6509 / 5765 / 1135
Регистрация: 11.10.2019
Сообщений: 15,407
19.08.2022, 22:03
Цитата Сообщение от alecss131 Посмотреть сообщение
Есть приличный курс
Константин выкладывает мощные лекции, после каждой лекции просто голова пухнет от новой информации
Тоже рекомедую посмотреть всё-всё на его канале. Такой заряд бодрости

кстати, имеется аккаунт в дискорде специально для студентов. Последние новости:
новый магистерский курс начнётся 7 сентября
1
Нарушающий
417 / 305 / 46
Регистрация: 13.04.2022
Сообщений: 1,759
19.08.2022, 22:10  [ТС]
Ожидаемые подвохи:
- файл длиннее 100ГБ (больше чем памяти)
- файл недоступен изначально, или ошибки чтения файла
- файл содержит UTF-8 ("ЖЖ" - палиндром? я бы сказал да)
- присутствие BOM
- наличие завершающего \n
- виндовские окончания строк ("12\r\nC\r\n21" - палиндром)
- скорость попыток чтения файла задом наперед будет ужасной.

Добавлено через 2 минуты
Цитата Сообщение от Алексей1153 Посмотреть сообщение
Константин выкладывает мощные лекции
https://youtu.be/Bym7UMqpVEY?t=22

0
 Аватар для eva2326
1685 / 513 / 107
Регистрация: 17.05.2015
Сообщений: 1,524
19.08.2022, 22:49
Цитата Сообщение от John Prick Посмотреть сообщение
но очевидно, что такой подход к изучению языка, мягко говоря, неэффективен.
Нет, не очевидно.
Аргументируйте.

Очевидно, что поскольку:
Цитата Сообщение от John Prick Посмотреть сообщение
фактически в этой части Си и С++ идентичны
То нет никакой разницы: изучать сначала си, а потом доучивать с++, перескакивая через идентичный материал;
Или сразу начать изучать с++.

Добавлено через 1 минуту
Цитата Сообщение от alecss131 Посмотреть сообщение
Имхо что Си перед плюсами все же полезен, не обязателен, но полезен.
Приведите пример, когда он не полезен.

Цитата Сообщение от SmallEvil Посмотреть сообщение
она просто троллит.
Нет, не троллю.
Я привела подробные аргументы, почему ваше заявление - чушь.
Вы, вместо того, что бы принять мои аргументы, либо оспорить, перешли на мою личность.

Кстати, вот это - тоже чушь:
Цитата Сообщение от SmallEvil Посмотреть сообщение
if(auto it=cont.begin(), end=cont.end(); it!=end && ++it!=end)
      cout << *it;
Одно из двух: либо вы перепутали if с for, либо у вас в голове полностью отсутствует здравый смысл.
1
 Аватар для Recrut_rf
392 / 337 / 66
Регистрация: 14.10.2014
Сообщений: 1,538
19.08.2022, 23:04
Цитата Сообщение от eva2326 Посмотреть сообщение
Приведите пример, когда он не полезен.
Когда слишком сильно углубишься в Си и начнёшь изучать то, что в плюсах запрещено. Полезность Си в таком контексте, по отношению к плюсам, будет даже во вред. Потому как "каша" в голове образуется.
Для примера - вроде как С++ гораздо строже к типам и их преобразованием по сравнению с Си.

Добавлено через 11 минут
Цитата Сообщение от eva2326 Посмотреть сообщение
Одно из двух: либо вы перепутали if с for, либо у вас в голове полностью отсутствует здравый смысл.
Наверное он имел ввиду вот что
возможность определения объекта прямо в теле оператора ветвления if. Т.е. вместо такого кода:
C++
1
2
3
4
5
6
7
8
mutex guard;
{
    lock_guard locker{guard};
    if(isContainerReady)
    {
        // Работаем с контейнером
    }
}
17 стандарт позволяет писать так:
C++
1
2
3
4
5
mutex guard;
if(lock_guard locker{guard}; isContainerReady)
{
    // Работаем с контейнером
}
0
 Аватар для eva2326
1685 / 513 / 107
Регистрация: 17.05.2015
Сообщений: 1,524
19.08.2022, 23:07
Цитата Сообщение от Recrut_rf Посмотреть сообщение
Когда слишком сильно углубишься в Си и начнёшь изучать то, что в плюсах запрещено. Полезность Си в таком контексте, по отношению к плюсам, будет даже во вред. Потому как "каша" в голове образуется.
Так можно про что угодно сказать.
Например: начал новичок сразу изучать с++. И вот у него каша в голове.
Обучение с++ вредит?

Добавлено через 1 минуту
Цитата Сообщение от Recrut_rf Посмотреть сообщение
Наверное он имел ввиду вот что
Вероятно. Но... нельзя при этом примеры какие то адекватные приводить?

Например:

C++
1
2
if(auto it = cont.begin(); cont.size() > 1)
    std::cout << *++it;
Или вот у вас хороший пример:
Цитата Сообщение от Recrut_rf Посмотреть сообщение
if(lock_guard locker{guard}; isContainerReady)
0
 Аватар для Recrut_rf
392 / 337 / 66
Регистрация: 14.10.2014
Сообщений: 1,538
19.08.2022, 23:13
Цитата Сообщение от eva2326 Посмотреть сообщение
Обучение с++ вредит?
Вредит - вам в голову будут вкладывать знания, относящиеся к Си. Но сам Си, при этом, на должном уровне преподавать не будут. В результате у обучающегося может сложиться ложное мнение - он возомнит себя знатоком не только С++, а ещё и Си, что в корне неверно.
0
 Аватар для eva2326
1685 / 513 / 107
Регистрация: 17.05.2015
Сообщений: 1,524
19.08.2022, 23:47
Цитата Сообщение от Recrut_rf Посмотреть сообщение
Вредит - вам в голову будут вкладывать знания, относящиеся к Си. Но сам Си, при этом, на должном уровне преподавать не будут. В результате у обучающегося может сложиться ложное мнение - он возомнит себя знатоком не только С++, а ещё и Си, что в корне неверно.
Какая интересная логика.

Обучение математики с физикой тоже вредит?
Ведь у обучающегося тоже может возникнуть каша в голове, и он может кем то там себя возомнить?
0
2410 / 1947 / 764
Регистрация: 27.07.2012
Сообщений: 5,582
20.08.2022, 00:06
Цитата Сообщение от eva2326 Посмотреть сообщение
Нет, не очевидно.
Аргументируйте.
Язык Си стал когда-то продолжением языка Би. Вот вы изучали язык Би? А почему? Ведь это так очевидно. Кстати, даже чуть глянул, что он из себя представлял. Вполне знакомый синтаксис. Так, может, восполнить пробел?
Цитата Сообщение от eva2326 Посмотреть сообщение
То нет никакой разницы: изучать сначала си, а потом доучивать с++, перескакивая через идентичный материал;
Или сразу начать изучать с++.
Ну так сами и ответили: нет никакой разницы. Так зачем эти "прыжки": тут си, а тут плюсы? Изучаем С++ и всё. Первый раздел "процедурное программирование на С++". Можно в начале этого раздела заметить "на полях", что большая его часть вполне сгодится и для применения на Си. И всё.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
20.08.2022, 00:06

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
100
Ответ Создать тему
Новые блоги и статьи
Особенности gif сгенерированных в Си
russiannick 21.10.2026
Рассмотрим генерацию gif файлов, которые в Си имеют свои особенности. Gif представляет собой графический формат популярный в интернете. Посмотрим на палитру. Gif файл сгенерированный в си отличается. . .
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
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru