Форум программистов, компьютерный форум 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. Вполне возможно, из этого ничего и не выйдет. Я просто подумал, что было бы не плохо попробовать. К тому же, вполне вероятно я сам научусь чему-то новому. А если у меня получиться научить кого-то, то это будет просто прекрасно.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
XRuZzz
Антикодер
603 / 504 / 25
Регистрация: 15.09.2012
Сообщений: 2,449
11.10.2013, 23:46     Простое начинание #41
Сообщение было отмечено автором темы, экспертом или модератором как ответ
AnyOne697, я боюсь когда нибудь встретиться с вашими учениками и прочитать их код
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
AnyOne697
 Аватар для AnyOne697
134 / 106 / 5
Регистрация: 22.05.2010
Сообщений: 532
12.10.2013, 00:10  [ТС]     Простое начинание #42
Цитата Сообщение от XRuZzz Посмотреть сообщение
я боюсь когда нибудь встретиться с вашими учениками и прочитать их код
А что не так. Если бы я знал, что могу сам, этого топика не было бы. Я не просто прошу помочь. А оффтоп не плохо хотя бы выделять в тег [OFF]
XRuZzz
Антикодер
603 / 504 / 25
Регистрация: 15.09.2012
Сообщений: 2,449
12.10.2013, 00:33     Простое начинание #43

Не по теме:

оффтоп я только собираюсь писать сейчас, придумал название для вашей книги:
"Антипаттерный generic-объектный подход от AnyOne697"
честное слово, я бы купил, только за одно название


Ну а если по теме, то ваша репутация вырастет если напишите учебник(да даже статью). Только надо определиться с аудиторией, это либо люди далекие от программирования, типа студентов, которых вы бы хотели привести в программирование. Либо люди, которые стремятся к программированию и активно изучают соответсвующую литературу.

Мне бы хотелось видеть учебник в формате "некое математическое понятие, затем конкретный пример его применения" ни как у Кнута тяжелые для восприятия формулы и алгоритмы, а относительно простые понятия, и реальная польза от них в жизни. Интегралы, дифференциальные уравнения, статистика. То есть как базовые математические навыки, могут например сократить время в пути, делать оценки по прогнозированию простых ситуаций, следить за собственным здоровьем(в этом смысле у Дейтела(издание 2011 года) понравились задачи типа как "написать программу для расчета Body Mass Index" и т п)
AnyOne697
 Аватар для AnyOne697
134 / 106 / 5
Регистрация: 22.05.2010
Сообщений: 532
12.10.2013, 00:36  [ТС]     Простое начинание #44
Цитата Сообщение от XRuZzz Посмотреть сообщение
"некое математическое понятие, затем конкретный пример его применения"
Ещё один плюс в сторону математики.
Правда, начать следует, наверное, с дискретной математики. А подробней по тема? Что именно осветить. Чтобы люди не сильно знакомые осилили, а те кто в темы быстро поняли, что им требуется пропустить.

К слову, я надеюсь, что не сильно заразился Корменами и Кнутами. Одно время очень тяжело их воспринимал, сейчас же с лёгкостью ориентируюсь в книгах.
XRuZzz
Антикодер
603 / 504 / 25
Регистрация: 15.09.2012
Сообщений: 2,449
12.10.2013, 00:42     Простое начинание #45
студенты не понимают для чего им дают понятия, которые они нигде не могут применить. Помню в универе нам говорили - "просто выучите, а понимание придёт потом". Тока зачем учить если не понимаешь зачем оно надо?
AnyOne697
 Аватар для AnyOne697
134 / 106 / 5
Регистрация: 22.05.2010
Сообщений: 532
12.10.2013, 01:18  [ТС]     Простое начинание #46
Цитата Сообщение от XRuZzz Посмотреть сообщение
студенты не понимают для чего им дают понятия, которые они нигде не могут применить. Помню в универе нам говорили - "просто выучите, а понимание придёт потом". Тока зачем учить если не понимаешь зачем оно надо?
К слову, лично со мной сработало. Некоторые дисциплины я совершенно не понял. Но потом, когда внезапно возникла потребность в знаниях, мне потребовалось совсем немного времени на поиски информации и я в ней обитал свободно. И понимал. Понимал, зачем мне это сейчас требуется.

Я к тому, что теория нередко бывает сильно оторвана от практики. Понимание приходит именно с ней. За 6 лет сложно получить и теорию (всестороннюю более менее) и практику. Да и вообще в РФ очень неплохое теоретическое образование, с практикой не очень. Хотя... понимание - это вопрос даже ближе к философии. Что это такое? Когда мы понимаем? А когда нет? А что, если нам кажется, что мы не понимаем? И наоборот - кажется, что понимания нет, а на самом деле оно есть. Это проблема жизни. Понятийный аппарат человека слабо изучен, и хотя есть такое слово - понимание, не совсем понятно, как понять, понимаешь ты или нет. Закрутил...

С знанием проще. Ты либо знаешь что-то, либо нет. Знание оперирует фактами. А их можно проверить банальным тестом.
ninja2
 Аватар для ninja2
230 / 186 / 7
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
12.10.2013, 01:53     Простое начинание #47
Цитата Сообщение от AnyOne697 Посмотреть сообщение
понимание - это вопрос даже ближе к философии. Что это такое? Когда мы понимаем? А когда нет? А что, если нам кажется, что мы не понимаем? И наоборот - кажется, что понимания нет, а на самом деле оно есть. Это проблема жизни. Понятийный аппарат человека слабо изучен, и хотя есть такое слово - понимание, не совсем понятно, как понять, понимаешь ты или нет. Закрутил...
Да к какой там философии. Понимание - это когда ты можешь знания применить на практике, например ты знаешь как строиться бомба но на практике ее сделать не можешь потому что ты не понимаешь. А от если понимаешь, то и на практике ее сможешь построить. Понимаешь - это означает что ты знаешь полностью тему досконально как что работает.

Себя ж ты не обманиш, если не понимаешь, то сам прекрасно знаешь, что не понимаешь, а если понимаешь, то ясно что понимаешь еще лучше. Ты и правда чуток закрутил.
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
5557 / 3036 / 339
Регистрация: 29.11.2010
Сообщений: 8,197
12.10.2013, 02:07     Простое начинание #48
AnyOne697, возможно вы это уже знаете, но попробую дать совет: если все-таки надумаете публиковать свои труды, то этот раздел для вас.
Вполне возможно, что вы сможете объяснить базовые вещи понятным языком. Главное почаще сверяйте свое мнение со стандартом и мнением сообщества (не только форума), чтобы не оказалось например так, что люди будут отвергать паттерны, свято веря, что это ересь. Можете указывать, например, рядом со своим мнением, мнение сообщества.

Труд вы взялись брать колоссальный, подходов тут масса, всем возможным пользователям не угодишь и про все не расскажешь. Надеюсь, пользу это волонтерство принесет, желаю удачи.
ForEveR
Модератор
Эксперт С++
 Аватар для ForEveR
7933 / 4715 / 318
Регистрация: 24.06.2010
Сообщений: 10,525
Завершенные тесты: 3
12.10.2013, 02:11     Простое начинание #49
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Господа ninja и AnyOne, вам обоим не хватит опыта и знаний на более-менее приличную книгу. ninja меня уже начинает раздражать, являясь в каждой бочке затычкой и создавая темы по учебнику Страуструпа, даже не пытаясь подумать, но считая себя гуру. Про Вас, AnyOne я был лучшего мнения, однако в последнее время вы начинаете равняться с ninja. Книги, видеоуроки, да даже простые статьи, которые предназначены для ИЗУЧАЮЩИХ язык должны писать профессионалы, которые хорошо вникают в эту тему, которые знают язык, знают положительные/отрицательные стороны различных вещей. Очень сомневаюсь, что практически кто-либо из тех у кого репутация переваливает за 1к в С++ решил бы написать КНИГУ. В большинстве случаев появляются произведения, которых полно на ютубе, которые учат, что goto нужно использовать везде, макросы наше всё и прочее-прочее-прочее. Если вы решите конечно написать свою книгу - вперед, только выложите ее на форуме, прежде чем пускать в широкие массы - вас подправят и скажут что не так знающие люди. Успехов и спасибо за внимание, я очень надеюсь что подобных тем больше не будет и что ninja научится в конце концов писать грамотно на русском языке (давайте не забывать, что офф. язык форума - русский, а не тарабарский). Вцелом, если есть желание - вперед, однако присоединяюсь к предыдущему сообщению по поводу данной темы, читайте стандарт, спрашивайте людей и не высказывайте свое мнение, как истину последней истанции.
ninja2
 Аватар для ninja2
230 / 186 / 7
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
12.10.2013, 02:15     Простое начинание #50
Цитата Сообщение от ForEveR Посмотреть сообщение
и что ninja научится в конце концов писать грамотно на русском языке
Ну я суржик знаю, русский не сильно, я и так пытаюсь хоть без ошибок писать, щас уже меньше ошибок делаю, чем раньше.
XRuZzz
Антикодер
603 / 504 / 25
Регистрация: 15.09.2012
Сообщений: 2,449
12.10.2013, 09:38     Простое начинание #51
помоему, если человек не применяет паттерны и не знает стандарта, но у него включен мозг, то он вполне может написать интересную вещь. Правда вероятность ниже. Не понимаю почему нет. Тока не называть тогда статью (книгу) "как выучить C++", а "Мои подходы к разработке ПО"
AnyOne697
 Аватар для AnyOne697
134 / 106 / 5
Регистрация: 22.05.2010
Сообщений: 532
12.10.2013, 13:50  [ТС]     Простое начинание #52
Цитата Сообщение от ForEveR Посмотреть сообщение
Вцелом, если есть желание - вперед, однако присоединяюсь к предыдущему сообщению по поводу данной темы, читайте стандарт, спрашивайте людей и не высказывайте свое мнение, как истину последней истанции.
Стараюсь. И начал писать уже. Не просто так этот топик есть. Он есть именно для того, что составить "список вопросов", требующих освещения. Понятно, что все темы просто невозможно охватить. Что-то будет пропущено. Но стараться к оптимальному решению по моему должен каждый программист.
Цитата Сообщение от XRuZzz Посмотреть сообщение
помоему, если человек не применяет паттерны и не знает стандарта, но у него включен мозг, то он вполне может написать интересную вещь. Правда вероятность ниже. Не понимаю почему нет. Тока не называть тогда статью (книгу) "как выучить C++", а "Мои подходы к разработке ПО"
Вообще, замечаю непонимание. Это не совсем книга. Это именно сборник разных подходов начиная с азов программирования как такого, заканчивая сложными техниками программирования на Си++.
И было бы не плохо, если бы сообщество мне помогло. От ссылок и списков тем, до вычитки, правки и статей. Было бы отлично систематизировать разбросанный по Интернетам материал. Поэтому это не мой труд. Это труд сообщества.

Окей. Собственно, я начал писать введение. Пытался ввести в понятие алгоритм как на интуитивном уровне, так и со строгим определением. Получается не густо. Что стоит рассмотреть в этой части. Какие вопросы, может быть есть теоремы. Мне кажется, было бы не плохо ввести понятия алогоритма, структурного программирования (с теоремой), продемонстрировать универсальную машину Тьюринга. Что ещё?

Также, встал вопрос о форматировании. Так как текст многогранный, часто придётся переходить от темы к теме. Резкий переход - не есть быть удобным для чтения. Может быть использовать врезки и сноски. Часть переносить в приложения. Но может придумаем ещё что-нибудь интересное?..

К тому же, встаёт вопрос о самопроверке и практических заданиях. Это очень важная часть, но тогда это больше учебник, чем талмуд. Но с другой стороны, можно давать практические задания прямо в ходе повествования. И каким-то образом их выделять, чтобы читатель мог их решать сначала сам, а потом сверять с ходом решения в тексте.
XRuZzz
Антикодер
603 / 504 / 25
Регистрация: 15.09.2012
Сообщений: 2,449
12.10.2013, 14:58     Простое начинание #53
если вы согласны со опредениями в вики "программирования", и "алгоритма", то ставьте просто ссылки. Если нет, то ссылки я бы всё равно поставил, но написал бы что с ними не согласен.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.10.2013, 15:05     Простое начинание
Еще ссылки по теме:

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

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

Или воспользуйтесь поиском по форуму:
AnyOne697
 Аватар для AnyOne697
134 / 106 / 5
Регистрация: 22.05.2010
Сообщений: 532
12.10.2013, 15:05  [ТС]     Простое начинание #54
Цитата Сообщение от XRuZzz Посмотреть сообщение
если вы согласны со опредениями в вики "программирования", и "алгоритма", то ставьте просто ссылки. Если нет, то ссылки я бы всё равно поставил, но написал бы что с ними не согласен.
Зачем ссылки? Я и сам прекрасно помню определение алогоритма, программирования. Википедия - это конечно хорошо. Но не всегда определения там качественные. Впрочем, это не значит что я не пользуюсь ей.
Да и дело не в определениях. Дело в понятиях. Понятийный уровень - это не только строгое определение, но и интуитивное представление с логическим объяснением. Вообще, было бы не плохо научить (и научиться) программировать на интуитивном уровне.
Yandex
Объявления
12.10.2013, 15:05     Простое начинание
Ответ Создать тему

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

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