Форум программистов, компьютерный форум 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. Вполне возможно, из этого ничего и не выйдет. Я просто подумал, что было бы не плохо попробовать. К тому же, вполне вероятно я сам научусь чему-то новому. А если у меня получиться научить кого-то, то это будет просто прекрасно.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
AnyOne697
 Аватар для AnyOne697
134 / 106 / 5
Регистрация: 22.05.2010
Сообщений: 532
11.10.2013, 21:23  [ТС]     Простое начинание #21
Цитата Сообщение от Croessmah Посмотреть сообщение
AnyOne697, изучайте паттерны, можете почитать Александреску для начала
Паттерны - дикость. Но это ИМХО, никаких холиваров. Я к тому, что лично мой взгляд: у меня есть своя голова и я могу соорудить из базовых объектов новый объект не используя никакие "шаблоны проектирования". Впрочем, кому-то нравиться. Я же за KISS.

Цитата Сообщение от Djam Посмотреть сообщение
Тут наверное это не объяснишь, но все же интересны решения разных логических!!! задач и проблемы у меня возникают с циклами, не всегда понятно, как он должен работать, что в итоге должен сделать, и ещё проблема это с делением по модулю, как работает понятно, а где применять можно не всегда понятно, вроде бы думаешь, тут можно применить, делаешь, результат выходит другой, приходиться разбираться в чем проблема, бывает проблема в своей глупости(усталости кому как угодно) и она решима, а бывает приходиться искать другой метод решения проблемы, т.е все же общая проблема это проблема, использования разных методов решения задач под разные условия.
Поэтому мне бы и хотелось начать с основ всех основ - с самого программирования, алогритмирования. Понятия алгоритм. Лично я начинал с этого, потом сразу перешёл к Си++. Грубо говоря, от блок-схем к практике. И никаких проблем не было.
На мой взгляд, не стоит зацикливаться на реализации. То есть, у нас есть определённый синтаксис и он выполняется вот так: инициализируется, проверяется условие, выполняется блок, инкрементируется. Но это детали. Суть чуть в другом. Сначала стоит разобраться что такое цикл в плане алгоритма и только потом перейти к Си++ и его деталям.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ninja2
 Аватар для ninja2
230 / 186 / 7
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
11.10.2013, 21:25     Простое начинание #22
Цитата Сообщение от AnyOne697 Посмотреть сообщение
А добавь сюда особую магию с памятью и не слишком хорошую выразительность - шанс промахнуться по ноге равен нулю.
Ну как то я щас с памятью не сильно работаю, это низкий уровень, я использую СТЛ. И вообще я заметил щас я парсер пишу на С++, ниразу мне не приходилось память выделять, использую контейнеры стл и норм, я сам подметил просто, да и две игры писал, тоже не помню, но там тоже не сильно с памятью работал. Да память это так для обучения, ну мб будут какие нить задачи где понадобиться, да мб и указатели понадобиться, а так просто можно писать на С++ и не заморачиваться за память. Даже довольно очень легко. Ну а если нельзя, то спокойно используешь стратегию "выделение ресурса есть инициализация" и не паришься, да трудно подсчитать все new и в деструкторе сделать столько delete. Да это не трудно.
AnyOne697
 Аватар для AnyOne697
134 / 106 / 5
Регистрация: 22.05.2010
Сообщений: 532
11.10.2013, 21:25  [ТС]     Простое начинание #23
Цитата Сообщение от Djam Посмотреть сообщение
P.S начал плотно изучать программирование, понял что математика очень интересная и она мне стала нравиться, магия что тут скажешь!
Да, магия она интересна. Но ещё круче - разоблачение магии.
Кстати, как насчёт того, чтобы добавить немного математики в книгу. Самой обычной математики с примерами на Си++? Возможно даже удастся вспомнить теорию информации и дискретную математику =)
ninja2
 Аватар для ninja2
230 / 186 / 7
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
11.10.2013, 21:26     Простое начинание #24
Цитата Сообщение от 0x10 Посмотреть сообщение
Не по теме:
ninja2, на правах вброса: есть проекты, в которых stl принципиально не используют.
Да есть проекты и С++ не используют и что? Мы щас о С++ говорим, а не о библиотеках на С++.
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11800 / 6779 / 765
Регистрация: 27.09.2012
Сообщений: 16,832
Записей в блоге: 2
Завершенные тесты: 1
11.10.2013, 21:27     Простое начинание #25
Цитата Сообщение от Djam Посмотреть сообщение
Я бы не отказался от советов, где можно прочитать, про алгоритмы или ещё что-т
почитайте Кнута

Цитата Сообщение от ninja2 Посмотреть сообщение
в том что СТЛ это С++
STL это то что написано на C++, а не сам C++.
Цитата Сообщение от ninja2 Посмотреть сообщение
а буст либо другую либу, да это не подразумевается
многое из Boost становится частью STL
AnyOne697
 Аватар для AnyOne697
134 / 106 / 5
Регистрация: 22.05.2010
Сообщений: 532
11.10.2013, 21:27  [ТС]     Простое начинание #26
Цитата Сообщение от ninja2 Посмотреть сообщение
да трудно подсчитать все new и в деструкторе сделать столько delete. Да это не трудно.
Взаимоисключающие параграфы? Слишком толсто, на мой чисто субъективный взгляд.
Djam
Саморазвитие <3
 Аватар для Djam
34 / 24 / 1
Регистрация: 28.12.2012
Сообщений: 235
Записей в блоге: 1
11.10.2013, 21:28     Простое начинание #27
Цитата Сообщение от AnyOne697 Посмотреть сообщение
Да, магия она интересна. Но ещё круче - разоблачение магии.
Кстати, как насчёт того, чтобы добавить немного математики в книгу. Самой обычной математики с примерами на Си++? Возможно даже удастся вспомнить теорию информации и дискретную математику =)
Я думаю это будет только на пользу .
По поводу того как я начинал учить паскаль, тоже с блок схем и алгоритмов, но как видите все равно есть проблемы, как их леквидировать даже не знаю. Может с опытом придет кто его знает, когда достаточно много уже задач порешаю, думаю тогда и придет понятие того, как это все решать.
P.S Почитал бы Кнута, но как известно, у меня плоховато с математикой, и то что там написано, не всегда понятно
0x10
2425 / 1597 / 232
Регистрация: 24.11.2012
Сообщений: 3,919
11.10.2013, 21:29     Простое начинание #28
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от AnyOne697 Посмотреть сообщение
Слишком толсто, на мой чисто субъективный взгляд.
Опасно спорить с Гуру.
AnyOne697
 Аватар для AnyOne697
134 / 106 / 5
Регистрация: 22.05.2010
Сообщений: 532
11.10.2013, 21:29  [ТС]     Простое начинание #29
Цитата Сообщение от Croessmah Посмотреть сообщение
почитайте Кнута
Не советую начинать с него.
Лучше начать с Юкио Сато и учебника математики за 9, 10 и 11 классы. То есть сначала с учебников, потом Юкио Сато (мне эта книга однажды сильно помогла с математикой). Ну а там Кормен и Кнут. Классика. Ещё Седжвик есть.
Djam
Саморазвитие <3
 Аватар для Djam
34 / 24 / 1
Регистрация: 28.12.2012
Сообщений: 235
Записей в блоге: 1
11.10.2013, 21:29     Простое начинание #30
Цитата Сообщение от Croessmah Посмотреть сообщение
почитайте Кнута
Вы меня опередили=) но я написал причину почему не могу его читать! к сожалению(
AnyOne697
 Аватар для AnyOne697
134 / 106 / 5
Регистрация: 22.05.2010
Сообщений: 532
11.10.2013, 21:34  [ТС]     Простое начинание #31
Цитата Сообщение от Djam Посмотреть сообщение
Я думаю это будет только на пользу .
По поводу того как я начинал учить паскаль, тоже с блок схем и алгоритмов, но как видите все равно есть проблемы, как их леквидировать даже не знаю. Может с опытом придет кто его знает, когда достаточно много уже задач порешаю, думаю тогда и придет понятие того, как это все решать.
Попробуйте вернуться к алгоритмированию. То есть понять основы структурного программирования. Если с английским всё хорошо, то есть не плохой туториал.

Добавлено через 3 минуты
К слову, есть ещё тема компилятора. Тоже годиться на отдельную книгу (и далеко не одну), но общие закономерности есть. Рядом с ней стоит тема низкоуровневых оптимизаций (CPU, как оно работает и как ускориться).

Вообще, книга должна быть огромной, так-то. Надо подумать.
0x10
2425 / 1597 / 232
Регистрация: 24.11.2012
Сообщений: 3,919
11.10.2013, 21:37     Простое начинание #32
У автора, замахнувшегося на многотомник, есть хотя бы пяток действительно качественных статей по теме?
ninja2
 Аватар для ninja2
230 / 186 / 7
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
11.10.2013, 21:38     Простое начинание #33
AnyOne697, И вообще за ООП, ясно что он применяется в больших программах в мелких программах все делается в одном классе, так получаются программы более понятные, компактные. Выигрыша не получим мы если будем разбивать на мелкие классы. Да если это делать в плане обучения, то тогда да годиться, но а когда реальную программу пишешь, то ее разбиваешь только по мере надобности, тогда когда она становиться более понятна и легче дальше писать ее.

Добавлено через 1 минуту
Цитата Сообщение от 0x10 Посмотреть сообщение
У автора, замахнувшегося на многотомник, есть хотя бы пяток действительно качественных статей по теме?
Согласен.

Автор напиши мелкую какую нить книгу С++ для чайников страниц на 300 да и все, там просто накидай пару примеров и хватит, я думаю она будет пользоваться спросом.
Djam
Саморазвитие <3
 Аватар для Djam
34 / 24 / 1
Регистрация: 28.12.2012
Сообщений: 235
Записей в блоге: 1
11.10.2013, 21:38     Простое начинание #34
Цитата Сообщение от AnyOne697 Посмотреть сообщение

Вообще, книга должна быть огромной, так-то. Надо подумать.
Да огромной даже очень, там должна быть как минимум базовая архитектура компьютера, особенно хорошо расписана работа оперативной памяти
ninja2
 Аватар для ninja2
230 / 186 / 7
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
11.10.2013, 21:41     Простое начинание #35
Аха смысла ее нету писать, так же как и все учить, потому что все рамно то что учил год назад забывается, главное это принцип понимать, ну это со временем придет.

Добавлено через 43 секунды
Если охота попробовать напиши для чайников, она будет популярна мб что нить еще и заработаешь.
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11800 / 6779 / 765
Регистрация: 27.09.2012
Сообщений: 16,832
Записей в блоге: 2
Завершенные тесты: 1
11.10.2013, 21:42     Простое начинание #36

Не по теме:

Не по теме:

Цитата Сообщение от ninja2 Посмотреть сообщение
программы более понятные, компактные.
и, как правило, убогие


Цитата Сообщение от ninja2 Посмотреть сообщение
Выигрыша не получим мы если будем разбивать на мелкие классы.
Читаем Макконнелла сначала Особенно то, что касается декомпозиции



Цитата Сообщение от AnyOne697 Посмотреть сообщение
Паттерны - дикость. Но это ИМХО, никаких холиваров. Я к тому, что лично мой взгляд: у меня есть своя голова и я могу соорудить из базовых объектов новый объект не используя никакие "шаблоны проектирования"
Эти самые паттерны являются давно признанными методами и отвергать их нельзя.
ninja2
 Аватар для ninja2
230 / 186 / 7
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
11.10.2013, 21:50     Простое начинание #37
Цитата Сообщение от Croessmah Посмотреть сообщение
Читаем Макконнелла сначала Особенно то, что касается декомпозиции
Я так думаю это книга по ООП. Так ООП книги хоть читай хоть не читай, тут нужен опыт, опыт в проектировании, а как я писал ООП используется для больших программ за 1к строк, в мелки там 500 строк, ну это как не то, я не представляю 500 строк кода и 30 классов, да мб будет 1 - 2 класса, но это мелочь. Так что изучить изучите, но на практике будет использоваться только при создании больших систем, в мелких системах, там мелочь будет а не ООП.

Добавлено через 3 минуты
В любом случае пасажир будет его применять в силу своего опыта, если слабинький опыт, такой и ООП будет.
0x10
2425 / 1597 / 232
Регистрация: 24.11.2012
Сообщений: 3,919
11.10.2013, 21:51     Простое начинание #38
Цитата Сообщение от ninja2 Посмотреть сообщение
Я так думаю это книга по ООП
Т.е. вместо того, чтобы взять и прочитать, достаточно просто угадать о чем она - и этого будет достаточно, чтобы делать выводы. Ок...
ninja2
 Аватар для ninja2
230 / 186 / 7
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
11.10.2013, 22:00     Простое начинание #39
Цитата Сообщение от 0x10 Посмотреть сообщение
Т.е. вместо того, чтобы взять и прочитать, достаточно просто угадать о чем она - и этого будет достаточно, чтобы делать выводы. Ок...
Ну да я просто не люблю когда мне на непонятном языке говорят. Поэтому как сказали так я и понял.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.10.2013, 23:24     Простое начинание
Еще ссылки по теме:

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

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

Или воспользуйтесь поиском по форуму:
AnyOne697
 Аватар для AnyOne697
134 / 106 / 5
Регистрация: 22.05.2010
Сообщений: 532
11.10.2013, 23:24  [ТС]     Простое начинание #40
Цитата Сообщение от Croessmah Посмотреть сообщение
Эти самые паттерны являются давно признанными методами и отвергать их нельзя.
Паттерны... Ну, дабы не развивать очередной холивар, просто скажу, что во всём надо знать меру. Читать книго о паттернах имеет смысл разве только человеку, который пишет не код, а творит архитектуру - ему просто требуется инструмент и шаблоны проектирования - не плохой инструмент для таких задач. Ведь требуется как-то не многословно объяснить смысл. Качество кода вряд ли поднимается, скорее даже снижается. По поводу масштабирования особо ничего не скажу, так как разницы почти не заметил. Что разбираться в "лапше", которая за несколько лет набралась, или втыкать в uml-ки в поисках очередного файла для правки. Методы разные - суть одна, потеря времени.

Окей, тогда я сейчас пойду попробую начать что-нибудь. Мб что выйдет. И принесу сюда, если что будет готово и мне будет не сильно стыдно =)

Добавлено через 1 минуту
Цитата Сообщение от 0x10 Посмотреть сообщение
У автора, замахнувшегося на многотомник, есть хотя бы пяток действительно качественных статей по теме?
К сожалению, показать нечего. Вёл блог, но забросил. Была пара статей про html, но толку от них ноль. Ещё есть пара черновиков не опубликованных, но снова ничего интересного в них нет.
Yandex
Объявления
11.10.2013, 23:24     Простое начинание
Ответ Создать тему

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

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