Підкажіть книгу по C++ для школяра

Підкажіть по якій книзі можна вчити С++ із самого початку. Знайомий старшокласник хоче вчити програмування. І хоче саме С++ .

Я передивився С++ для чайників. Виглядає не як найпростіший варіант для дітей.
Ще бачу є «Занимательное программирование C++» але в продажі немає і напевно трохи застаріла.

Треба щось таке щоб приклади були з використанням ІДЕ яке можна дістати (не застаріле щось)

Є реальні варіанти?
Чи агітувати за якусь іншу мову програмування для початку?

Уточнення. Треба такий підручник де на початку описано як ставити ІДЕ, які бувають варіанти і де його взяти, і щоб не дуже застаріле було. Я бачу що не у всіх підручних є така інформація.

Дякую всім за відповіді.
Я зрозумів що якоїсь однозначної відповіді тут немає. Я відправив його розібратися із ресурсами на сайті cppstudio.com (найкраще що знайшов )

Інтернетом він, звичайно, користується але все одно важко розібратися на початку.

Ну і я ректомендував глянути у бік ПХП якщо С++ не піде .

👍ПодобаєтьсяСподобалось0
До обраногоВ обраному0
LinkedIn
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

Так той школяр став девелопером в результаті? 9 років вже пройшло

Якщо чесно то я точно не памятаю для кого конкретно я питав :)
В той час було декілька знайомих школярів які цікавилися програмуванням. Один таки став програмістом, працює ремоут на якусь американську кантору. Один ще довчається в універі, але також серйозно займається програмуванням. Один закинув і займався виготовленням меблів. Ще інший також не пішов у програмісти, а поїхав на заробітки десь в європу (ще десь в 17 році закінчив школу, не знаю де він зараз).

C++ in Action: Industrial Strength Programming.
Вкупі з Teach Yourself C++ in 21 Days.
Цих двох буде достатньо, щоб почати щось писати на Пітоні, коли ще почитає GoF.

Насправді перший урок для школяра може бути почати гуглити і вибрати книгу чи напрямок самому

Deitel C++ How to program
leetcode

И делайте какой то свой проектик небольшой (пет-проектик)

пожалейте ребенка, это же травма на всю жизнь

В 1970 году заочно окончил Университет марксизма-ленинизма[a] при Ростовском государственном педагогическом институте[34].

какие еще пруФы нужны?!

рекмендую
www.cppinstitute.org
курс по С та С++ (Associate level) перевірено на школярах та студентах молодших курсів, результат — годиться.
+ задачі з курсу
stepic.org/...ограммирование-(C++)-363

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

книга может быть любая, я сам начинал с печально известной книги С++ за 21 день, потом было что-то типа Алгоритмы и структуры данных на С++, но могу ошибатся, ибо было давно.

может почитать «Код» Чарльз Петцольд — хоть эта книга и не по С++, но лично мне дала очень хорошее понимание работы с ссылками и указателями

а так самое главное педалить, педалить и еще раз педалить

Обращаюсь к некому старшекласснику который где-то услышал что знать С++ это очень круто и почетно и решил пойти по этому пути, даже не представляя на какие мучения себя обрекая !
Послушай чувак оно тебе не надо, не то время сейчас что бы плюсы учить, в С++ есть только 2 плюса, и те в его названии ! А вот минусов :::

1) Наличие множества возможностей, нарушающих принципы типобезопасности приводит к тому, что в С+±программы может легко закрасться трудноуловимая ошибка. Вместо контроля со стороны компилятора разработчики вынуждены придерживаться весьма нетривиальных правил кодирования. По сути эти правила ограничивают С++ рамками некоего более безопасного подъязыка. Большинство проблем типобезопасности С++ унаследовано от С, но важную роль в этом вопросе играет и отказ автора языка от идеи использовать автоматическое управление памятью (например, сборку мусора). Так визитной карточкой С++ стали уязвимости типа «переполнение буфера».
2) Плохая поддержка модульности. Подключение интерфейса внешнего модуля через препроцессорную вставку заголовочного файла (#include) серьёзно замедляет компиляцию, при подключении большого количества модулей. Для устранения этого недостатка, многие компиляторы реализуют механизм прекомпиляции заголовочных файлов Precompiled Headers.
3) Недостаток информации о типах данных во время компиляции (CTTI).
4) Язык C++ является сложным для изучения и для компиляции больших проектов.
5) Некоторые преобразования типов неинтуитивны. В частности, операция над беззнаковым и знаковым числами выдаёт беззнаковый результат.
6) Препроцессор С++ (унаследованный от С) очень примитивен. Это приводит с одной стороны к тому, что с его помощью нельзя (или тяжело) осуществлять некоторые задачи метапрограммирования, а с другой, в следствии своей примитивности, он часто приводит к ошибкам и требует много действий по обходу потенциальных проблем. Некоторые языки программирования (например, Scheme и Nemerle) имеют намного более мощные и более безопасные системы метапрограммирования (также называемые макросами, но мало напоминающие макросы С/С++).
7) С конца XX века в сообществе С++ получило распространение так называемое метапрограммирование на базе шаблонов. По сути, оно использует особенности шаблонов C++ в целях реализации на их базе интерпретатора примитивного функционального языка программирования выполняющегося во время компиляции. Сама по себе данная возможность весьма привлекательна, но, в следствии вышесказанного, такой код весьма трудно воспринимать и отлаживать. Языки Lisp/Scheme, Nemerle и некоторые другие имеют более мощные и одновременно более простые для восприятия подсистемы метапрограммирования. Кроме того, в языке D реализована сравнимая по мощности, но значительно более простая в применении подсистема шаблонного метапрограммирования.
8) Хотя декларируется, что С++ мультипарадигменный язык, реально в языке отсутствует поддержка функционального программирования. Отчасти, данный пробел устраняется различными библиотеками (Loki, Boost) использующими средства метапрограммирования для расширения языка функциональными конструкциями (например, поддержкой лямбд/анонимных методов), но качество подобных решений значительно уступает качеству встроенных в функциональные языки решений. Такие возможности функциональных языков как сопоставление с образцом вообще крайне сложно эмулировать средствами метапрограммирования.
9) C++ унаследовал многие проблемы языка C:
o Операция присваивания обозначается как = , а операция сравнения как == . Их легко спутать, и такая конструкция будет синтаксически правильной, но приведёт к труднонаходимому багу. Особенно часто это происходит в операторах if и while, например, программист может написать if (i=0) вместо if (i==0)(Вместе с тем, основная масса компиляторов выдаёт в таких случаях предупреждение.) Избежать ошибку такого типа можно, если писать все операции сравнения в таком виде: if (0==i). К тому же многие языки (Бейсик, Паскаль) используют символ «=» именно в операциях сравнения.
o Операции присваивания (=), инкрементации (++), декрементации (—) и другие возвращают значение. В сочетании с обилием операций это позволяет, но не обязывает, программиста создавать трудночитаемые выражения. С другой стороны, один из основных принципов языков C и C++ — позволять программисту писать в любом стиле, а не навязывать «хороший» стиль. К тому же это иногда позволяет компилятору создавать более оптимальный код.
o Макросы (#define) являются мощным, но опасным средством. В языке C++, в отличие от C, необходимость в опасных макросах появляется значительно реже благодаря шаблонам и встроенным функциям. Но в унаследованных стандартных С-библиотеках много потенциально опасных макросов.
10) Некоторые считают недостатком языка C++ отсутствие системы сборки мусора. С другой стороны, в C++ есть достаточно средств (классы с конструкторами и деструкторами, стандартные шаблоны, передача параметров по ссылке), позволяющих почти исключить использование опасных указателей. Тем не менее, отсутствие встроенной сборки мусора позволяет пользователю самому выбрать стратегию управления ресурсами.

Тебе нужен C# или Java ! Учись с малолетства думать о хорошем и выбирать хорошие вещи ...

Прочитал твой пост и ощущение, что мне пытаются впарить какую-то х**ню.)) Как будто посмотрел то ли политическую рекламу (“Пжыты по-новому”, “покращення вже сьогодні” ), то ли рекламу моющего средства — “в Вилларибо уже праздник, а Виллабаджо моют посуду”. А на деле, что одно — хрень, что другое...

Да не в чем не прав, мне просто лень разжевывать по пунктам, но это какое-то старье (отсутсвие лямбд и анонимных методов в С++, ага...), скорее всего упертое с рсдн (раз фигурирует немерле). Последние версии С# уже не проще С++. А программирование, например интерфейсов, с помощью C#/WPF+XAML, не проще, чем с помощью С++/Qt. Любой язык с возрастом > 10 лет обрастает кучей свистелок-перделок и легаси наследия.

Способность «отстреливать яйца» — это в большей степени свойство ДНК.

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

Получается с ваших слов C# не намного проще С++, а местами сложнее, тогда проще всего и гораздо быстрее будет выучить Си и работать или с МК или с ядром Линукс или драйверами, потому что язык не обрастает монстрообразными фишками и даже не нагружен фишками ООП !

Нет, многое зависит от предметной области. Мне кажется, что ты не с той стороны подходишь к выбору. Во-первых, если бояться трудностей, то в программирование воообще не стоит идти. Сложности будут везде, рутина и нудотина будет тоже везде.

Язык может быть прост как две копейки, но программировать на нем может быть не просто. Так, как правило, и происходит с программированием на СИ. Просто потому, что кроме языка важны еще доступные библиотеки, средства разработки и предметная область.

Я бы советовал сначала выбрать предметную область, в которой тебе интересно было бы работать, а под нее уже выбирать язык программирования. Скажем, веб разработка, там тоже есть свои подкатегории, десктоп, мобайл, что-то системное, телеком, игры, и т.п.

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

Много слов впустую. Есть задача — выбирается средство. Вот и все. Речь шла о первоначальном обучении программированию. С++ вполне подходит, поскольку именно он позволяет продемонстрировать студенту как преимущества так и недостатки языков программирования. И еще .... возводить в ряд глобальной проблемы формат оператора присвоения — это вообще уникальеая глупость. Похоже, что Вы не читали книжек по написанию надежного кода.

Есть мнение, что сегодня начинать учить кресты уже поздно. Язык за последнее десятилетие превратился в такого монстра, что новичку сколь либо коммерчески востребованная квалификация не светит долгие годы.

Согласен ! Это факт, подтверждаю, если бы я до этого не знал «Си» хрен бы я в плюсы пошел !!!
Уж лучше для молодежи что-то по приятней поискать что бы «плюсы» вообще желание не отбили код писать, ведь познать «плюсы» без истерики мало кому удается ...

Бачу два варіанти. «Класичний»: спочатку вивчити сішну частину плюсів, потім потихеньку перебиратися до класів і всього такого. За цим принципом будується багато книжок, особисто я з них порадив би «The C++ Primer Plus» (С. Прата). Тим більше, що її останнє видання досить актуальне, там охоплюються базові можливості C++11 (котрий вже потроху застосовується в продакшні навіть у нас).
І ще є дещо більш «експериментальний» варіант — взяти книгу Б. Страуструпа, але не «The C++ Programming Language» (ця заскладна для новачка), а «Programming: Principles and Practice Using C++». Це спроба Страуструпа створити нову методику навчання початківців мові C++ з нуля, починаючи з більш високорівневих речей. Ніби відгуки у неї непогані, але особисто у мене немає знайомих, хто б за цією книгою вчив C++, так що не можу нічого стверджувати однозначно.

Стивен Прата «Язык программирования С++ »

Поддерживаю. Тоже с неё С++ учил.

У знайомго старшокласника є інтернет?

К стати без шуток, первое что ему лучше выучить это английский, а плюсы, джавы это уже потом !

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

Герберт Шилдт, самоучитель С++, очень хороший учебник для начала.... вот только перед ним ещё хорошо бы С освоить

Роберт Лафоре «Объектно-ориентированное программирование в С++»

Самая как по мне удачная книга для изучения ООП, потому что там оно с самого начала, а не как сначала процедурное программирование, а потом опять ломка мышления и переход на объектное. Именно по этой книге, а не из лекций в универе я полностью понял, что такое cin, cout — в универе было какое-то обстрактное — «потоковый ввод/ввывод», а на деле это просто синглтоны определенного типа с перегруженными операторами без всякой магии.

Це гікова, ботанська мова. Якщо ви — ботан, вам подобається математика, зубодробильні алгоритми та оптимізації — це мова для вас і не треба боятися. Стартують і з неї нормально.

Вибачте, що таке

зубодробильні алгоритми
?

Тысячи их, я просто не знаю с чего начать. Тут и Брезенхейм и a star, separable filtering и всякие Computer Vision. Монте Карло всякие в финансах.

Вы не совсем правы, математики и зубодробильных алгоритмов там не больше чем в Java, если вы используете например Qt+C++, ну а если OpenGL, DirectX, Unity — то конечно там без матана никак ! Но нельзя же всё одними грабями гребсти, не пугайте человека !

Да уж, «отличный» выбор для старта.
Я бы посоветовал Python или JS — и онлайн-курсы есть, и масса инфы в тырнете.
А C++ это уже для больших бородатых дядек :)

Не говорите ерунду. начинать с С++ неплохая идея. Как минимум, стоит попробовать.
По теме: смотри Шилдта. Он пишет просто.

Повністю з вами згоден

Я теж за Python, для C/C++ треба мати густу бороду і багато пива пити.

PHP! Вы забыли PHP! Это проще чем Python!
Создай еще одного быдлокодера!
Есть единственный истинный путь — C, C++ и все остальное. Для желающих вести более приземленный образ жизни есть VDHL. Для желающих возвысится — Haskell. Для расширения сознания — Forth и Prolog.

Можливо він в 15 відростить хорошу бороду)

Если с С++ не начинать, то можно сразу о нем забыть

Я начинал учить с книги Кернигана и Ритчи в 8 классе. Я тогда явно побаивался ООП, и поэтому для меня идеально было сначала понять весь смысл этого си, а потом уже перейти к классам. Потом был перерыв, когда я изучал и работал с php. А с 3 курса начал активно изучать С++ , сначала по видеороликам в интернете, потом по книге Бьярне Страуструпа. И самое главное, не дайте ему учить паскаль или ещё какой треш. Если С/С++ окажется сложно, попробуйте джаву или php, в крайнем случае. Но учтите, что пхп е
накладывает свой неисправимый отпечаток на мозг :)

Не пишіть дурниць. Паскаль — чудова мова програмування для початку. Зараз мало де використовується на практиці, але з навчальної точки зору — дуже ок.

Зараз я би радив почати саме з C. Книга Кернігана і Річі доступно й зрозуміло все пояснює. Після деякої практики можна перейти до «Thinking in C++» (є в перекладі — «Философия C++») Еккеля. З таким багажем можна буде читати вже щось занудне і деталізоване, наприклад Страуструпа.

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

Тем, что в Паскале много чего интуитивно. Нет всяких проблем с видимостью переменных, и непонятных операторов. Для школьников — самое то.

Сам начинал на паскале еще в школе. И, кстати, писал на нем алгоритмические задачки получше чем другие на С/С++, хотя последние априори быстрее.

Нет всяких проблем с видимостью переменных
Это очень бесило. Ну и begin/end писать тоже

Для начинающего и девственного ума лучше сразу так :)

Я и был начинающим в то время)

ну и какой с него прок, если все это есть в живых языках?

Мабуть, ви праві. Часи змінюються.

Паскаль добре підходить для початкового навчання: легший за С++. І на відміну від Джави, дає краще розуміння як працює комп*ютер.

Для початкового чисельного моделювання Pascal саме те що треба.

Під чисельним моделюванняма маю на увазі, змоделювати з нуля N-тіл задачу, подивитися як ШСЗ падатиме в атмосфері Землі, розв’язати якесь дупасте інтегро-диференціальні рівняння. Фортран теж ок для того, але з Python я би не хотів починати це вчити, так і скурвитися можна.

А Дейкстра на Кобол ругался)

Герберт Шилдт

если у него проблемы с гуглением, что он сам не может себе книжку найти нужную, то с++ я бы не советовал даже начинать

Підписатись на коментарі