Форум программистов, компьютерный форум CyberForum.ru

Простое начинание - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 14, средняя оценка - 4.86
AnyOne697
 Аватар для AnyOne697
134 / 106 / 5
Регистрация: 22.05.2010
Сообщений: 532
11.10.2013, 20:50     Простое начинание #1
Сразу прошу - не бросайтесь кирпичами.

Предисловие (можно пропустить).
С Си++ знаком очень давно, по сути - это первый язык программирования, с которым я стал более менее серьёзно программировать. От консольных утилит и курсовых с GUI, до игр и серьзных проектов с ассемблером. И за это время я узнал не мало о языке, о его возможностей. Что-то мне в нём нравиться, что-то нет. Но есть очень много новичков, которые хотели бы овладеть этим безусловно очень мощным инструментом (в умелых руках). Поэтому мне вдруг (на самом деле - очень давно) захотелось бы написать небольшое... руководство. С опорой на опыт, а не на рефернсы. Конечно, я не джедай и мне далеко до него. Но так уж получилось, что часто приходилось разных людей учить программированию, а точнее - Си++. Очень разных. Есть небогатый опыт.

Просьба (можно начать отсюда).
Таким образом мне хотелось бы составить список тем, которые требовалось бы осветить. Зачем? Последний сезон Breaking Bad вышел не так уж давно (да, я слоупок) и есть 15 минут, пока сезон скачается байтики соберуться из числа Пи в нужную последовательность, но в голове у меня каша. И таких моментов возникает не мало. Снова сбиваюсь с темы.
Собственно. Темы должны быть полными. При этом хотелось бы, чтобы последовательность изложения была удобной для чтения. Приятной и удобной. Не скучно и эффективно. Прошу здешних форумчан помочь составить базовый список тем Си++, владея которым на уровне, можно было бы считать себя отличным Си++ программистом. К тому же, в свете Си++11 и Си++14, появились определённые новшества, которые, возможно, сильно преобразуют обычный Си++ код. В добавок, хотелось бы сделать уклон в сторону ООП и описать техники, которые позволят избежать очередной пули в ногу. У Вас наверняка есть пара тузов в рукаве.

Что хотелось бы (это так же можно пропустить).
Собственно, в идеале талмуд должен быть интересен как новичкам в Си++, так и новичкам в программировании вообще. Было бы замечательно, если бы описанное было интересно и старичкам. Текст будет (если что получиться) полностью свободным. Приветствуется кооперативное авторство.

Что есть сейчас (это будет обновляться).
Предисловие) Начать хотелось бы с небольшого предисловия о роли языка Си++ в совремнном мире, небольшая справка о историческом значении и субъективный прогноз на будущее.
0) Введение в программирование. Наверное, важная часть, освещающая программирование в целом. Как строятся алгоритмы, что есть структорное программирование (и какие есть альтернативы). Немного о том, как связана математика, схемотехника и информатика. Вообще, какие науки (понятно, что все) изучают программирование и с какой стороны.
1) Базовый синтаксис. Проекция информации из введения в уловные обозначения Си++. То есть, каким образом реализуется структурное программирование в Си++, какова его объектная модель. Никаких сравнений с другими языками программирования.
2) Стандартные алгоритмы. Немного про стандартные алогритмы. В основном - практика.
3) Расширенные возможности. Дополнительные возможности. Всё, что не укладывается в базовый синтаксис по теореме Бома-Якопини.
4) Нетривиальные возможности. Возможности, выходящие за те возможности, которые предоставляет синтаксис с компилятором. Другими словами - какие крутые базовые блоки можно слепить из других базовых блоков.
5) Практика. Вот здесь я уже обессилил. Не представляю, что можно изучить в рамках практики с применением всех возможностей языка. В идеале требуется показать этакий best practice. Боюсь, это будет без всех возможностей.
inf) Приложения. Здесь все дополнения, которые выбиваются из общей канвы повествования.

Заранее благодарю.

P.S. Вполне возможно, из этого ничего и не выйдет. Я просто подумал, что было бы не плохо попробовать. К тому же, вполне вероятно я сам научусь чему-то новому. А если у меня получиться научить кого-то, то это будет просто прекрасно.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ninja2
 Аватар для ninja2
230 / 186 / 7
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
11.10.2013, 20:58     Простое начинание #2
Цитата Сообщение от AnyOne697 Посмотреть сообщение
Прошу здешних форумчан помочь составить базовый список тем Си++, владея которым на уровне можно было бы считать себя отличным Си++ программистом.
Я б на 3 темы разделил так как в книге:
1. Основы языка там циклы, операторы различные, переменные, константы, указатели, исключения.
2. Абстракция тут просто темы связаные с ООП, наследование полиморфизм, классы, там всякая фигня.
3. Это конечно же СТЛ.

Все на этом изучение С++ заканчивается.

Добавлено через 1 минуту
AnyOne697, Если честно яб мог бы и книгу написать "С++ для чайников", простецкую такую страниц на 300 - 500, где б просто ознакомил с языкам по пунктам выше.
AnyOne697
 Аватар для AnyOne697
134 / 106 / 5
Регистрация: 22.05.2010
Сообщений: 532
11.10.2013, 20:59  [ТС]     Простое начинание #3
Цитата Сообщение от ninja2 Посмотреть сообщение
Все на этом изучение С++ заканчивается.
Напомнило.
Миниатюры
Простое начинание  
ninja2
 Аватар для ninja2
230 / 186 / 7
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
11.10.2013, 21:02     Простое начинание #4
Цитата Сообщение от AnyOne697 Посмотреть сообщение
Собственно, в идеале талмуд должен быть интересен как новичкам в Си++, так и новичкам в программировании вообще. Было бы замечательно, если бы описанное было интересно и старичкам. Текст будет (если что получиться) полностью свободным. Приветствуется кооперативное авторство.
Это нужно писать детские примеры что бы новичкам было интересно, просто мелочь расписывать какую нить. Реальные приемы ты им фиг втулишь, ну либо материал сразу станет труден к пониманию и не интересный.
AnyOne697
 Аватар для AnyOne697
134 / 106 / 5
Регистрация: 22.05.2010
Сообщений: 532
11.10.2013, 21:03  [ТС]     Простое начинание #5
А если серьёзно, то я забыл про библиотеки. То есть про третий пункт. Но на мой взгляд, было бы нечестно не ознакомить читателя с boost, qt и другими библиотеками и фреймворками. Хотя, это уже тема другой книги =)
Цитата Сообщение от ninja2 Посмотреть сообщение
1. Основы языка там циклы, операторы различные, переменные, константы, указатели, исключения.
Цитата Сообщение от AnyOne697 Посмотреть сообщение
1) Базовый синтаксис. Проекция информации из введения в уловные обозначения Си++. То есть, каким образом реализуется структурное программирование в Си++, какова его объектная модель. Никаких сравнений с другими языками программирования.
Цитата Сообщение от ninja2 Посмотреть сообщение
2. Абстракция тут просто темы связаные с ООП, наследование полиморфизм, классы, там всякая фигня.
Цитата Сообщение от AnyOne697 Посмотреть сообщение
3) Расширенные возможности. Дополнительные возможности. Всё, что не укладывается в базовый синтаксис по теореме Бома-Якопини.
Добавлено через 47 секунд
Цитата Сообщение от ninja2 Посмотреть сообщение
Это нужно писать детские примеры что бы новичкам было интересно, просто мелочь расписывать какую нить. Реальные приемы ты им фиг втулишь, ну либо материал сразу станет труден к пониманию и не интересный.
Поэтому книга должна быть много больше, чем
Цитата Сообщение от ninja2 Посмотреть сообщение
Если честно яб мог бы и книгу написать "С++ для чайников", простецкую такую страниц на 300 - 500, где б просто ознакомил с языкам по пунктам выше.
ninja2
 Аватар для ninja2
230 / 186 / 7
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
11.10.2013, 21:05     Простое начинание #6
AnyOne697, Ну это для лохов картинка, на самом деле С++ имеет конец, на тех трех пунктах он и заканчивается, ну имеется введу сам язык. Картинка показывает что нужно еще будет учить ту область в которой будет применяться С++ либо вообще все различные областя где он может быть применен, ну я так ее понимаю.

Добавлено через 1 минуту
Цитата Сообщение от AnyOne697 Посмотреть сообщение
А если серьёзно, то я забыл про библиотеки. То есть про третий пункт. Но на мой взгляд, было бы нечестно не ознакомить читателя с boost, qt и другими библиотеками и фреймворками. Хотя, это уже тема другой книги =)
Да не нужно с бустом и qt знакомить это не С++, это фреймворки написаные на С++.
AnyOne697
 Аватар для AnyOne697
134 / 106 / 5
Регистрация: 22.05.2010
Сообщений: 532
11.10.2013, 21:06  [ТС]     Простое начинание #7
Цитата Сообщение от ninja2 Посмотреть сообщение
Ну это для лохов картинка, на самом деле С++ имеет конец, на тех трех пунктах он и заканчивается, ну имеется введу сам язык. Картинка показывает что нужно еще будет учить ту область в которой будет применяться С++ либо вообще все различные областя где он может быть применен, ну я так ее понимаю.
Там где заканчивается теория начинается практика. Но где заканчивается теория?.. И заканчивается ли она вообще?..
Цитата Сообщение от ninja2 Посмотреть сообщение
Да не нужно с бустом и qt знакомить это не С++, это фреймворки написаные на С++.
Qt - фреймворк. Boost - библиотеки. Это разные вещи.
Djam
Саморазвитие <3
 Аватар для Djam
34 / 24 / 1
Регистрация: 28.12.2012
Сообщений: 235
Записей в блоге: 1
11.10.2013, 21:07     Простое начинание #8
Сам учусь я так, (знаком с паскалем) по этому я читаю, все подряд освежаю память дохожу до ООП и начинаю писать что-то что, можно написать без ООП (точнее что не очень трудно написать без ООП) собственно этим сейчас и занимаюсь, подглядываю в книги, иногда спрашиваю на форумах что не понятно, за 2 дня написания свой программы, очень хорошо все базовые аспекты освоил!
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11845 / 6824 / 771
Регистрация: 27.09.2012
Сообщений: 16,919
Записей в блоге: 2
Завершенные тесты: 1
11.10.2013, 21:08     Простое начинание #9
Цитата Сообщение от ninja2 Посмотреть сообщение
AnyOne697, Если честно яб мог бы и книгу написать "С++ для чайников", простецкую такую страниц на 300 - 500, где б просто ознакомил с языкам по пунктам выше.
Вас послушать, так Вы пуп земли
напишите, а мы оценим
AnyOne697
 Аватар для AnyOne697
134 / 106 / 5
Регистрация: 22.05.2010
Сообщений: 532
11.10.2013, 21:11  [ТС]     Простое начинание #10
Цитата Сообщение от Djam Посмотреть сообщение
Сам учусь я так, (знаком с паскалем) по этому я читаю, все подряд освежаю память дохожу до ООП и начинаю писать что-то что, можно написать без ООП (точнее что не очень трудно написать без ООП) собственно этим сейчас и занимаюсь, подглядываю в книги, иногда спрашиваю на форумах что не понятно, за 2 дня написания свой программы, очень хорошо все базовые аспекты освоил!
Неплохо. А опытом не поделишься? Какие именно возникали проблемы? Читал ли какую-нибудь литературу. Что следует лучше разжевать, а что можно и побыстрее объяснить?
А вообще, без ООП можно всё. Это и доказывает теорема о структурном программировании (вводит базис логики). Ну или более известная теорема Тьюринга о его машине.
ninja2
 Аватар для ninja2
230 / 186 / 7
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
11.10.2013, 21:11     Простое начинание #11
Цитата Сообщение от AnyOne697 Посмотреть сообщение
Там где заканчивается теория начинается практика. Но где заканчивается теория?.. И заканчивается ли она вообще?..
Заканчивается яж тебе говорю С++ это основные операторы ООП, и СТЛ, все остальное это библиотеки - фрейморки. Библиотека и фреймворк это по сути одно и тоже.

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

Знаешь если так рассуждать как ты то тогда те функции что ты создаешь тоже есть продолжение С++? Давай будем каждый фреймворк причислять к обязательному изучению в С++. Это не так обязательно нужно учить только СТЛ, все остальное и даром не нужно.
AnyOne697
 Аватар для AnyOne697
134 / 106 / 5
Регистрация: 22.05.2010
Сообщений: 532
11.10.2013, 21:12  [ТС]     Простое начинание #12
Цитата Сообщение от Croessmah Посмотреть сообщение
Вас послушать, так Вы пуп земли
напишите, а мы оценим
Пожалуйста, не стоит флуда. А то будет потом тяжело собирать информацию.
ninja2
 Аватар для ninja2
230 / 186 / 7
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
11.10.2013, 21:14     Простое начинание #13
AnyOne697, Да я тоже присоединяюсь, нечего флудить.
0x10
2425 / 1597 / 232
Регистрация: 24.11.2012
Сообщений: 3,919
11.10.2013, 21:15     Простое начинание #14
AnyOne697, изложить все "от и до" - это огроменный труд на несколько томов. И сложно уже определить: что включать, а что нет. Структуры и алгоритмы - обязательно? К языку отношения не имеет, но знать нужно. И вот тут я бы как раз и поставил ссылку на Кнута, Кормена.
Практические советы, из опыта - нужны ли? Если да, то опять же просится ссылка на Майерса.
Язык в чистом виде как он есть? Страуструп, стандарт языка...

В итоге работа сводится к перелопачиванию и доступному изложению существующих материалов. А где то самое идеальное повествование, одновременно понятное и интересное абсолютно всем? Упс?
Потому и есть множество авторов и книг - каждому свое.
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11845 / 6824 / 771
Регистрация: 27.09.2012
Сообщений: 16,919
Записей в блоге: 2
Завершенные тесты: 1
11.10.2013, 21:15     Простое начинание #15
Цитата Сообщение от ninja2 Посмотреть сообщение
все остальное это библиотеки - фрейморки.
А STL тогда что такое?

AnyOne697, изучайте паттерны, можете почитать Александреску для начала
Djam
Саморазвитие <3
 Аватар для Djam
34 / 24 / 1
Регистрация: 28.12.2012
Сообщений: 235
Записей в блоге: 1
11.10.2013, 21:16     Простое начинание #16
Цитата Сообщение от AnyOne697 Посмотреть сообщение
Неплохо. А опытом не поделишься? Какие именно возникали проблемы? Читал ли какую-нибудь литературу. Что следует лучше разжевать, а что можно и побыстрее объяснить?
Можно написать я не сомневаюсь, по этому я подправил себя и написал что не совсем трудно!
Проблемы у меня больше связанны с пониманием, как это сделать, логически я могу выстроить последовательность действий, а вот на языке применить, не всегда получается.
Тут наверное это не объяснишь, но все же интересны решения разных логических!!! задач и проблемы у меня возникают с циклами, не всегда понятно, как он должен работать, что в итоге должен сделать, и ещё проблема это с делением по модулю, как работает понятно, а где применять можно не всегда понятно, вроде бы думаешь, тут можно применить, делаешь, результат выходит другой, приходиться разбираться в чем проблема, бывает проблема в своей глупости(усталости кому как угодно) и она решима, а бывает приходиться искать другой метод решения проблемы, т.е все же общая проблема это проблема, использования разных методов решения задач под разные условия.
AnyOne697
 Аватар для AnyOne697
134 / 106 / 5
Регистрация: 22.05.2010
Сообщений: 532
11.10.2013, 21:16  [ТС]     Простое начинание #17
Цитата Сообщение от ninja2 Посмотреть сообщение
Заканчивается яж тебе говорю С++ это основные операторы ООП, и СТЛ, все остальное это библиотеки - фрейморки. Библиотека и фреймворк это по сути одно и тоже.
Нет ну тогда можно сказать что и ПХП что бы изучить должны года пройти, под пхп тоже тысячи фреймворков зенд фреймвор, кейкпхп, там их не счесть и тоже получается нет конца.
Знаешь если так рассуждать как ты то тогда те функции что ты создаешь тоже есть продолжение С++? Давай будем каждый фреймворк причислять к обязательному изучению в С++. Это не так обязательно нужно учить только СТЛ, все остальное и даром не нужно.
=) Толстовато. Операторы ООП? Что-то новенькое.
PHP тоже не так прост. Но здесь топик не о PHP.
Си++ совсем не так прост, как кажется. За его синтаксисом скрываются огромные возможности. Возможности, которые не предусмотрены самой иделогией Си++. А добавь сюда особую магию с памятью и не слишком хорошую выразительность - шанс промахнуться по ноге равен нулю.
ninja2
 Аватар для ninja2
230 / 186 / 7
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
11.10.2013, 21:20     Простое начинание #18
Цитата Сообщение от Croessmah Посмотреть сообщение
А STL тогда что такое?
СТЛ библиотека.
Ну я нехочу гуглить в инете и смотреть чем отличается фреймворк от библиотеки, ну это по суди одно и тоже, что библиотека набор функций, что фреймворк, я в пхп просто чуток зенд фреймворк учил, его так же называли и библиотека зенд. Смысл не сильно исказиться нравиться пусть будет библиотека, ну не важно смысл в том что СТЛ это С++ и ее нужно знать, а все остальное множество, это уже друзья ваше дело, хотите учите хотите нет. Просто С++ программист, это 100% он знает СТЛ, а буст либо другую либу, да это не подразумевается.
0x10
11.10.2013, 21:22
  #19

Не по теме:

ninja2, на правах вброса: есть проекты, в которых stl принципиально не используют.

MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.10.2013, 21:22     Простое начинание
Еще ссылки по теме:

Дано простое число. Составить функцию, которая будет находить следующее за ним простое число C++
C++ Дано простое число. Составить функцию, которая будет находить следующее за ним простое число.
C++ Простое ветвление

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

Или воспользуйтесь поиском по форуму:
Djam
Саморазвитие <3
 Аватар для Djam
34 / 24 / 1
Регистрация: 28.12.2012
Сообщений: 235
Записей в блоге: 1
11.10.2013, 21:22     Простое начинание #20
В добавок к своему предыдущему посту
Я бы не отказался от советов, где можно прочитать, про алгоритмы или ещё что-то "практика программирования может быть" И ещё, с математикой в школе у меня были проблемы, приходиться ещё и математику иногда подучивать, и Дискретку сейчас пытаюсь учить в свободное время (мало его сейчас)
P.S начал плотно изучать программирование, понял что математика очень интересная и она мне стала нравиться, магия что тут скажешь!
Yandex
Объявления
11.10.2013, 21:22     Простое начинание
Ответ Создать тему

Метки
チルノ, начинание, обучение, талмуд
Опции темы

Текущее время: 05:56. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru