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

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

14.08.2022, 20:14. Показов 13939. Ответов 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
389 / 334 / 66
Регистрация: 14.10.2014
Сообщений: 1,475
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
389 / 334 / 66
Регистрация: 14.10.2014
Сообщений: 1,475
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
389 / 334 / 66
Регистрация: 14.10.2014
Сообщений: 1,475
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
6495 / 5726 / 1133
Регистрация: 11.10.2019
Сообщений: 15,286
19.08.2022, 20:47
QueryMonkey, если что, в C++ классы и структуры ничем не отличаются, кроме private/public по умолчанию
1
12 / 7 / 0
Регистрация: 14.05.2021
Сообщений: 120
19.08.2022, 20:57
Начал изучать С++ из академического интереса, втянулся, после работы решаю задачки по учебнику Васильева, даже что-то могу, массив составить функцию передать, сделать указатель на функцию и далее.. Конечно суперлогики еще нет, но будем потихоньку изучать.. я тут понял, что главное процесс изучения.. и постоянство во времени, ну и чтобы нравилось..
3
2405 / 1937 / 763
Регистрация: 27.07.2012
Сообщений: 5,576
19.08.2022, 21:06
Цитата Сообщение от QueryMonkey Посмотреть сообщение
кто выучил C++ не опираясь на С.
Ну мне так довелось в своё время. Хотя я бы даже не использовал тут слово "выучил", так как я всё осваивал уже "в бою", выполняя свою работу. И пришёл я в C++ из Паскаля/Делфи. Так что никакой "Си-основы" у меня как бы и не было. Но проект, над которым я тогда работал, был написан в большой степени в процедурном стиле, так что Си-подобных примеров я там насмотрелся вдоволь.
0
фрилансер
 Аватар для Алексей1153
6495 / 5726 / 1133
Регистрация: 11.10.2019
Сообщений: 15,286
19.08.2022, 21:16
Sinitsky, С++ кто-то ругает, кто-то ненавидит. А есть мы, кто просто любит его со всеми его закидонами Любовь объяснить невозможно.

QueryMonkey, John Prick, Я тоже чистый Си не использовал, начал сразу с C++, наскоком, без теории, без интернета под рукой. Это всё было просто в кайф, а я был школьник
0
Модератор
Эксперт Java
 Аватар для alecss131
2894 / 1400 / 412
Регистрация: 11.08.2017
Сообщений: 4,482
Записей в блоге: 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
6495 / 5726 / 1133
Регистрация: 11.10.2019
Сообщений: 15,286
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
389 / 334 / 66
Регистрация: 14.10.2014
Сообщений: 1,475
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
389 / 334 / 66
Регистрация: 14.10.2014
Сообщений: 1,475
19.08.2022, 23:13
Цитата Сообщение от eva2326 Посмотреть сообщение
Обучение с++ вредит?
Вредит - вам в голову будут вкладывать знания, относящиеся к Си. Но сам Си, при этом, на должном уровне преподавать не будут. В результате у обучающегося может сложиться ложное мнение - он возомнит себя знатоком не только С++, а ещё и Си, что в корне неверно.
0
 Аватар для eva2326
1685 / 513 / 107
Регистрация: 17.05.2015
Сообщений: 1,524
19.08.2022, 23:47
Цитата Сообщение от Recrut_rf Посмотреть сообщение
Вредит - вам в голову будут вкладывать знания, относящиеся к Си. Но сам Си, при этом, на должном уровне преподавать не будут. В результате у обучающегося может сложиться ложное мнение - он возомнит себя знатоком не только С++, а ещё и Си, что в корне неверно.
Какая интересная логика.

Обучение математики с физикой тоже вредит?
Ведь у обучающегося тоже может возникнуть каша в голове, и он может кем то там себя возомнить?
0
2405 / 1937 / 763
Регистрация: 27.07.2012
Сообщений: 5,576
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
Ответ Создать тему
Новые блоги и статьи
сукцессия 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