Другие языки программирования и технологии
Почему язык программирования C++ считается одним из самых сложных языков программирования?
И как его лучше осваивать и учить? По урокам на ютубе или по учебникам?
С++ очень глубок и многогранен. Там куча всяких возможностей на все случаи жизни и если стоит задача выучить все их, то сложность будет очень высокой. Скажу сразу - писать нормальные программы можно прекрасно обойдясь без большей их части :)
С другой стороны, его предок С - очень простой язык. С момента создания его кое чем дополнили (например ввели комментарии в стиле С++), но он так простым и остался. Так вот, если начинать учить, то я бы рекомендовал сначала поразбираться с обычным С. А потом, по мере изучения, углубляться в плюса. Важные моменты, с которыми нужно досконально разобраться в С до того, как лезть в дебри - это структуры и указатели. Это потом очень поможет.
Главные фичи плюсов - это объектно ориентированное программирование (ООП) и шаблоны.
Суть ООП в том, что программист создает и работать с объектами. Объект - это совокупность данных и связанного с ними кода, который что-то реализует. И при этом есть возможность скрыть реализацию внутри этого объекта, оставив для управления ею заранее продуманный интерфейс. Это офигенно важно, так как защищает реализацию от криворуких уродов и не дает им нагадить по крупному. Пример из жизни - пульт от телевизора. Вы видите на нем кнопки и нажимаете на них, чтобы объект (пульт) что-то сделал. Эти кнопки - интерфейс. А реализацию можно увидеть, если разобрать его и заглянуть внутрь. Там будет плата с микросхемами, батарейки и т. п. Факт в том, что вам совершенно не нужно знать, что там внутри и как все это работает, достаточно знать, какая кнопка за что отвечает. А для того, чтобы вы не лезли внутрь у пульта есть корпус. В классе С++ тоже можно указать, что можно увидеть снаружи, а что нельзя. Окружив таким "корпусом" вашу реализацию, вы создаете предпосылки для того, чтобы она работала именно так, как надо.
Суть шаблонов в том, что если мы знаем, как что-то сделать, то это знание может быть применено к разным сущностям, и от этого оно не изменится. Вот, например, вы сможете кушать и из круглой, и из квадратной тарелки. До того, как придумали шаблоны, для круглой тарелки программист был бы вынужден писать свой код, а для квадратной - свой. А теперь можно просто написать код "про то, как надо кушать", а под нужную тарелку он подстроится автоматически. Это, на самом деле, очень круто.
Касательно того, по каким источникам лучше учить - лично я за бумажные книги.
С другой стороны, его предок С - очень простой язык. С момента создания его кое чем дополнили (например ввели комментарии в стиле С++), но он так простым и остался. Так вот, если начинать учить, то я бы рекомендовал сначала поразбираться с обычным С. А потом, по мере изучения, углубляться в плюса. Важные моменты, с которыми нужно досконально разобраться в С до того, как лезть в дебри - это структуры и указатели. Это потом очень поможет.
Главные фичи плюсов - это объектно ориентированное программирование (ООП) и шаблоны.
Суть ООП в том, что программист создает и работать с объектами. Объект - это совокупность данных и связанного с ними кода, который что-то реализует. И при этом есть возможность скрыть реализацию внутри этого объекта, оставив для управления ею заранее продуманный интерфейс. Это офигенно важно, так как защищает реализацию от криворуких уродов и не дает им нагадить по крупному. Пример из жизни - пульт от телевизора. Вы видите на нем кнопки и нажимаете на них, чтобы объект (пульт) что-то сделал. Эти кнопки - интерфейс. А реализацию можно увидеть, если разобрать его и заглянуть внутрь. Там будет плата с микросхемами, батарейки и т. п. Факт в том, что вам совершенно не нужно знать, что там внутри и как все это работает, достаточно знать, какая кнопка за что отвечает. А для того, чтобы вы не лезли внутрь у пульта есть корпус. В классе С++ тоже можно указать, что можно увидеть снаружи, а что нельзя. Окружив таким "корпусом" вашу реализацию, вы создаете предпосылки для того, чтобы она работала именно так, как надо.
Суть шаблонов в том, что если мы знаем, как что-то сделать, то это знание может быть применено к разным сущностям, и от этого оно не изменится. Вот, например, вы сможете кушать и из круглой, и из квадратной тарелки. До того, как придумали шаблоны, для круглой тарелки программист был бы вынужден писать свой код, а для квадратной - свой. А теперь можно просто написать код "про то, как надо кушать", а под нужную тарелку он подстроится автоматически. Это, на самом деле, очень круто.
Касательно того, по каким источникам лучше учить - лично я за бумажные книги.
Вова Соколенко
Я в школе не осилил Паскаль), но у меня есть интерес к математике и к программированию. Я не хочу пока изучать программирование, потому что с математикой проблемы. А с математикой проблемы, потому что учитель в школе её плохо преподовал, точнее как, неинтересно, они тупо решали задачи, а я сейчас просто решаю примеры, задачи по математике изучаю с 0. В итоге мне очень интересно, а то что это учитель с отличниками решает только на доске и не орёт на них. А они не понимают.
Потому, что стандартизаторы с каждым новым стандартом пихают в него всё больше модных рюшечек - которые никак не влияют на качество кода.
Крайне сложно научиться программированию на языке, который уже требует хорошего знания программирования - хотя бы для правильного выбора из множества дублирующих друг друга конструкций. И как научиться дисциплине написания кода на языке, который провоцирует говнокодинг?
А научиться программировать по "урокам" на ютубе в принципе невозможно.
Крайне сложно научиться программированию на языке, который уже требует хорошего знания программирования - хотя бы для правильного выбора из множества дублирующих друг друга конструкций. И как научиться дисциплине написания кода на языке, который провоцирует говнокодинг?
А научиться программировать по "урокам" на ютубе в принципе невозможно.
Олег Пичугин
> уже требует хорошего знания программирования
Устраиваемся в команду стажером, там подскажут, что здесь нужен вектор, здесь bip::vector, а лист вообще нафиг не нужен по большому счету
Устраиваемся в команду стажером, там подскажут, что здесь нужен вектор, здесь bip::vector, а лист вообще нафиг не нужен по большому счету
Вова Соколенко
Поэтому учебник для того и рассчитан, чтобы "Учить"
> Почему язык программирования C++ считается одним из самых сложных языков программирования?
Потому что это действительно так. Чтоб это понять, надо изучить C++ и какой-нибудь другой язык программирования. Как я слышал, даже объём спецификации языка C++ очень большой.
> И как его лучше осваивать и учить? По урокам на ютубе или по учебникам?
Всё лучше изучать по книгам. "Уроки" были бы полезны, если бы их вели профессионалы, а не недоучки. Хорошие онлайн курсы наверно есть, но новичок не может отличить хорошие курсы от плохих.
Неплохие курсы на https://stepik.org/, но курс по C++ я не смотрел. Преимущество курсов на stepik.org - там есть задания, ответы проверяются.
Школьнику лучше изучать более простой язык, например C#, он проще и удобней.
Потому что это действительно так. Чтоб это понять, надо изучить C++ и какой-нибудь другой язык программирования. Как я слышал, даже объём спецификации языка C++ очень большой.
> И как его лучше осваивать и учить? По урокам на ютубе или по учебникам?
Всё лучше изучать по книгам. "Уроки" были бы полезны, если бы их вели профессионалы, а не недоучки. Хорошие онлайн курсы наверно есть, но новичок не может отличить хорошие курсы от плохих.
Неплохие курсы на https://stepik.org/, но курс по C++ я не смотрел. Преимущество курсов на stepik.org - там есть задания, ответы проверяются.
Школьнику лучше изучать более простой язык, например C#, он проще и удобней.
Вова Соколенко
А если сначала начать учить язык ассемблера, а потом C++, то это неплохой вариант изучения программирования?
Я понимаю ваше удивление. По тому коду, что предлагается для написания и обсуждения на Ответах - С++ это очень ПРОСТОЙ язык программирования. Потому что 90% не отличает его от С. И потому что ООП - это следующая ступень в изучении программирования.
Так вот, С++ по по Ответам ничем не сложнее Паскаля - древнего как мамонт, но крайне надежного в изучении новичками.
Так вот, С++ по по Ответам ничем не сложнее Паскаля - древнего как мамонт, но крайне надежного в изучении новичками.
С++ имеет такую особеннось...
Написать можно очень по разному или очень похоже.
При этом будит работать... Но при этом в любом варианте могут возникнуть вообще рандомные ошибки.
А учить его лучше разборами примеров.
Находишь алгоритм или что-типо...
Понимаешь, что делает...
Смотришь реализацию на Языке, пытаешься понять, почему зачем и как...
Написать можно очень по разному или очень похоже.
При этом будит работать... Но при этом в любом варианте могут возникнуть вообще рандомные ошибки.
А учить его лучше разборами примеров.
Находишь алгоритм или что-типо...
Понимаешь, что делает...
Смотришь реализацию на Языке, пытаешься понять, почему зачем и как...
Олег Пичугин
Что мне делать, если скучно? Рандомные ошибки редко возникают. Раз в две, три недели. Я уж и на C++ пишу, и в проекте крупном, и без документации, и совмещаю с другой работой, чтобы уставать, а оно все 'авно.
Похожие вопросы
- какой самый сложный язык программирования?
- Какой самый сложный язык программирования?)))
- Составьте топ от самых легких языков программирования до самых сложных
- Я учусь в 5 классе и хочу научится языку программирования C++.
- Стоит ли изучать язык программирования C++ ?И какое преимущество этого языка? Где он мне пригодится ?
- Основные различия языка программирования C# от С++.
- Вопрос по языку программирования C# (СиШарп) (очень простой вопрос)
- самый тяжелый язык программирования
- Язык программирования C.
- Какой язык программирования следует изучить в первую очередь, если в программировании вообще ничего не понимаешь?