Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 5.00/19: Рейтинг темы: голосов - 19, средняя оценка - 5.00
 Аватар для AnyOne697
134 / 106 / 10
Регистрация: 22.05.2010
Сообщений: 533

Простое начинание

11.10.2013, 20:50. Показов 4988. Ответов 53

Сразу прошу - не бросайтесь кирпичами.

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

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

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

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

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

P.S. Вполне возможно, из этого ничего и не выйдет. Я просто подумал, что было бы не плохо попробовать. К тому же, вполне вероятно я сам научусь чему-то новому. А если у меня получиться научить кого-то, то это будет просто прекрасно.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
11.10.2013, 20:50
Ответы с готовыми решениями:

Помощь в начинание Объектно ориентированного програмирования
Суть такая что не знаю ничего про: Конструкторы Классы Объекты класса Дружественные ф-ции Подскажите литературу по данному...

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

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

53
 Аватар для AnyOne697
134 / 106 / 10
Регистрация: 22.05.2010
Сообщений: 533
11.10.2013, 21:23  [ТС]
Цитата Сообщение от Croessmah Посмотреть сообщение
AnyOne697, изучайте паттерны, можете почитать Александреску для начала
Паттерны - дикость. Но это ИМХО, никаких холиваров. Я к тому, что лично мой взгляд: у меня есть своя голова и я могу соорудить из базовых объектов новый объект не используя никакие "шаблоны проектирования". Впрочем, кому-то нравиться. Я же за KISS.

Цитата Сообщение от Djam Посмотреть сообщение
Тут наверное это не объяснишь, но все же интересны решения разных логических!!! задач и проблемы у меня возникают с циклами, не всегда понятно, как он должен работать, что в итоге должен сделать, и ещё проблема это с делением по модулю, как работает понятно, а где применять можно не всегда понятно, вроде бы думаешь, тут можно применить, делаешь, результат выходит другой, приходиться разбираться в чем проблема, бывает проблема в своей глупости(усталости кому как угодно) и она решима, а бывает приходиться искать другой метод решения проблемы, т.е все же общая проблема это проблема, использования разных методов решения задач под разные условия.
Поэтому мне бы и хотелось начать с основ всех основ - с самого программирования, алогритмирования. Понятия алгоритм. Лично я начинал с этого, потом сразу перешёл к Си++. Грубо говоря, от блок-схем к практике. И никаких проблем не было.
На мой взгляд, не стоит зацикливаться на реализации. То есть, у нас есть определённый синтаксис и он выполняется вот так: инициализируется, проверяется условие, выполняется блок, инкрементируется. Но это детали. Суть чуть в другом. Сначала стоит разобраться что такое цикл в плане алгоритма и только потом перейти к Си++ и его деталям.
0
 Аватар для ninja2
979 / 196 / 33
Регистрация: 26.09.2012
Сообщений: 2,041
11.10.2013, 21:25
Цитата Сообщение от AnyOne697 Посмотреть сообщение
А добавь сюда особую магию с памятью и не слишком хорошую выразительность - шанс промахнуться по ноге равен нулю.
Ну как то я щас с памятью не сильно работаю, это низкий уровень, я использую СТЛ. И вообще я заметил щас я парсер пишу на С++, ниразу мне не приходилось память выделять, использую контейнеры стл и норм, я сам подметил просто, да и две игры писал, тоже не помню, но там тоже не сильно с памятью работал. Да память это так для обучения, ну мб будут какие нить задачи где понадобиться, да мб и указатели понадобиться, а так просто можно писать на С++ и не заморачиваться за память. Даже довольно очень легко. Ну а если нельзя, то спокойно используешь стратегию "выделение ресурса есть инициализация" и не паришься, да трудно подсчитать все new и в деструкторе сделать столько delete. Да это не трудно.
0
 Аватар для AnyOne697
134 / 106 / 10
Регистрация: 22.05.2010
Сообщений: 533
11.10.2013, 21:25  [ТС]
Цитата Сообщение от Djam Посмотреть сообщение
P.S начал плотно изучать программирование, понял что математика очень интересная и она мне стала нравиться, магия что тут скажешь!
Да, магия она интересна. Но ещё круче - разоблачение магии.
Кстати, как насчёт того, чтобы добавить немного математики в книгу. Самой обычной математики с примерами на Си++? Возможно даже удастся вспомнить теорию информации и дискретную математику =)
0
 Аватар для ninja2
979 / 196 / 33
Регистрация: 26.09.2012
Сообщений: 2,041
11.10.2013, 21:26
Цитата Сообщение от 0x10 Посмотреть сообщение
Не по теме:
ninja2, на правах вброса: есть проекты, в которых stl принципиально не используют.
Да есть проекты и С++ не используют и что? Мы щас о С++ говорим, а не о библиотеках на С++.
0
Неэпический
 Аватар для Croessmah
18149 / 10731 / 2067
Регистрация: 27.09.2012
Сообщений: 27,038
Записей в блоге: 1
11.10.2013, 21:27
Цитата Сообщение от Djam Посмотреть сообщение
Я бы не отказался от советов, где можно прочитать, про алгоритмы или ещё что-т
почитайте Кнута

Цитата Сообщение от ninja2 Посмотреть сообщение
в том что СТЛ это С++
STL это то что написано на C++, а не сам C++.
Цитата Сообщение от ninja2 Посмотреть сообщение
а буст либо другую либу, да это не подразумевается
многое из Boost становится частью STL
1
 Аватар для AnyOne697
134 / 106 / 10
Регистрация: 22.05.2010
Сообщений: 533
11.10.2013, 21:27  [ТС]
Цитата Сообщение от ninja2 Посмотреть сообщение
да трудно подсчитать все new и в деструкторе сделать столько delete. Да это не трудно.
Взаимоисключающие параграфы? Слишком толсто, на мой чисто субъективный взгляд.
0
Саморазвитие <3
 Аватар для Djam
34 / 24 / 1
Регистрация: 28.12.2012
Сообщений: 235
Записей в блоге: 1
11.10.2013, 21:28
Цитата Сообщение от AnyOne697 Посмотреть сообщение
Да, магия она интересна. Но ещё круче - разоблачение магии.
Кстати, как насчёт того, чтобы добавить немного математики в книгу. Самой обычной математики с примерами на Си++? Возможно даже удастся вспомнить теорию информации и дискретную математику =)
Я думаю это будет только на пользу .
По поводу того как я начинал учить паскаль, тоже с блок схем и алгоритмов, но как видите все равно есть проблемы, как их леквидировать даже не знаю. Может с опытом придет кто его знает, когда достаточно много уже задач порешаю, думаю тогда и придет понятие того, как это все решать.
P.S Почитал бы Кнута, но как известно, у меня плоховато с математикой, и то что там написано, не всегда понятно
0
3258 / 2060 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
11.10.2013, 21:29
Лучший ответ Сообщение было отмечено как решение

Решение

Цитата Сообщение от AnyOne697 Посмотреть сообщение
Слишком толсто, на мой чисто субъективный взгляд.
Опасно спорить с Гуру.
5
 Аватар для AnyOne697
134 / 106 / 10
Регистрация: 22.05.2010
Сообщений: 533
11.10.2013, 21:29  [ТС]
Цитата Сообщение от Croessmah Посмотреть сообщение
почитайте Кнута
Не советую начинать с него.
Лучше начать с Юкио Сато и учебника математики за 9, 10 и 11 классы. То есть сначала с учебников, потом Юкио Сато (мне эта книга однажды сильно помогла с математикой). Ну а там Кормен и Кнут. Классика. Ещё Седжвик есть.
0
Саморазвитие <3
 Аватар для Djam
34 / 24 / 1
Регистрация: 28.12.2012
Сообщений: 235
Записей в блоге: 1
11.10.2013, 21:29
Цитата Сообщение от Croessmah Посмотреть сообщение
почитайте Кнута
Вы меня опередили=) но я написал причину почему не могу его читать! к сожалению(
0
 Аватар для AnyOne697
134 / 106 / 10
Регистрация: 22.05.2010
Сообщений: 533
11.10.2013, 21:34  [ТС]
Цитата Сообщение от Djam Посмотреть сообщение
Я думаю это будет только на пользу .
По поводу того как я начинал учить паскаль, тоже с блок схем и алгоритмов, но как видите все равно есть проблемы, как их леквидировать даже не знаю. Может с опытом придет кто его знает, когда достаточно много уже задач порешаю, думаю тогда и придет понятие того, как это все решать.
Попробуйте вернуться к алгоритмированию. То есть понять основы структурного программирования. Если с английским всё хорошо, то есть не плохой туториал.

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

Вообще, книга должна быть огромной, так-то. Надо подумать.
0
3258 / 2060 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
11.10.2013, 21:37
У автора, замахнувшегося на многотомник, есть хотя бы пяток действительно качественных статей по теме?
0
 Аватар для ninja2
979 / 196 / 33
Регистрация: 26.09.2012
Сообщений: 2,041
11.10.2013, 21:38
AnyOne697, И вообще за ООП, ясно что он применяется в больших программах в мелких программах все делается в одном классе, так получаются программы более понятные, компактные. Выигрыша не получим мы если будем разбивать на мелкие классы. Да если это делать в плане обучения, то тогда да годиться, но а когда реальную программу пишешь, то ее разбиваешь только по мере надобности, тогда когда она становиться более понятна и легче дальше писать ее.

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

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

Вообще, книга должна быть огромной, так-то. Надо подумать.
Да огромной даже очень, там должна быть как минимум базовая архитектура компьютера, особенно хорошо расписана работа оперативной памяти
0
 Аватар для ninja2
979 / 196 / 33
Регистрация: 26.09.2012
Сообщений: 2,041
11.10.2013, 21:41
Аха смысла ее нету писать, так же как и все учить, потому что все рамно то что учил год назад забывается, главное это принцип понимать, ну это со временем придет.

Добавлено через 43 секунды
Если охота попробовать напиши для чайников, она будет популярна мб что нить еще и заработаешь.
0
Неэпический
 Аватар для Croessmah
18149 / 10731 / 2067
Регистрация: 27.09.2012
Сообщений: 27,038
Записей в блоге: 1
11.10.2013, 21:42

Не по теме:

Не по теме:

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


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



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

Добавлено через 3 минуты
В любом случае пасажир будет его применять в силу своего опыта, если слабинький опыт, такой и ООП будет.
0
3258 / 2060 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
11.10.2013, 21:51
Цитата Сообщение от ninja2 Посмотреть сообщение
Я так думаю это книга по ООП
Т.е. вместо того, чтобы взять и прочитать, достаточно просто угадать о чем она - и этого будет достаточно, чтобы делать выводы. Ок...
2
 Аватар для ninja2
979 / 196 / 33
Регистрация: 26.09.2012
Сообщений: 2,041
11.10.2013, 22:00
Цитата Сообщение от 0x10 Посмотреть сообщение
Т.е. вместо того, чтобы взять и прочитать, достаточно просто угадать о чем она - и этого будет достаточно, чтобы делать выводы. Ок...
Ну да я просто не люблю когда мне на непонятном языке говорят. Поэтому как сказали так я и понял.
0
 Аватар для AnyOne697
134 / 106 / 10
Регистрация: 22.05.2010
Сообщений: 533
11.10.2013, 23:24  [ТС]
Цитата Сообщение от Croessmah Посмотреть сообщение
Эти самые паттерны являются давно признанными методами и отвергать их нельзя.
Паттерны... Ну, дабы не развивать очередной холивар, просто скажу, что во всём надо знать меру. Читать книго о паттернах имеет смысл разве только человеку, который пишет не код, а творит архитектуру - ему просто требуется инструмент и шаблоны проектирования - не плохой инструмент для таких задач. Ведь требуется как-то не многословно объяснить смысл. Качество кода вряд ли поднимается, скорее даже снижается. По поводу масштабирования особо ничего не скажу, так как разницы почти не заметил. Что разбираться в "лапше", которая за несколько лет набралась, или втыкать в uml-ки в поисках очередного файла для правки. Методы разные - суть одна, потеря времени.

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

Добавлено через 1 минуту
Цитата Сообщение от 0x10 Посмотреть сообщение
У автора, замахнувшегося на многотомник, есть хотя бы пяток действительно качественных статей по теме?
К сожалению, показать нечего. Вёл блог, но забросил. Была пара статей про html, но толку от них ноль. Ещё есть пара черновиков не опубликованных, но снова ничего интересного в них нет.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
11.10.2013, 23:24

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

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

Дано простое число N. Найти следующие простое число используя do while
простая задача с использованием do while на с++

легко(начинание)
1. программист разместил на форме компонент Edit и, изменив значение свойства Text, получил новый объект класса Tedit. какой принцип ООП...

Начинание проекта по snort
Доброго времени суток! Скажу заранее, в этом сообщении я не прошу сделать что-либо за меня. Я студент, новичок в изучении линукса и...


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

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
[golang] Конкурентный fetcher с ограничением максимального количества одновременных HTTP запросов.
alhaos 10.06.2026
Задача Реализовать конкурентный fetcher с ограничением максимального количества одновременных HTTP запросов. Сигнатура func Fetch(urls string, maxConcurrent int) Result Пример urls :=. . .
[golang] Состояние гонки (race condition)
alhaos 10.06.2026
Состояние гонки (race condition) Состояние гонки (Race Condition) — это ошибка, возникающая при одновременном доступе нескольких горутин к одним и тем же данным без должной синхронизации. При этом. . .
Взрослые отношения, и почему они не получаются
kumehtar 09.06.2026
Когда в детстве ребёнок не получает от родителей чего-то важного, он лишается не просто приятных переживаний, а основы для формирования определённых внутренних качеств и навыков. Если ребёнок не. . .
[golang] Worker Pool
alhaos 09.06.2026
Worker Pool Worker Pool — паттерн конкурентной обработки задач в Go. Суть: фиксированное количество горутин-воркеров читают задачи из общего канала и пишут результаты в общий канал результатов. . . .
[golang] Pipeline
alhaos 08.06.2026
Pipeline Pipeline — паттерн конкурентной обработки данных в Go. Суть: данные проходят через цепочку независимых стадий, каждая из которых работает в своей горутине и общается с соседями через. . .
Свет внутри себя
kumehtar 07.06.2026
Пусть это будет здесь lIs4oanZS9Y
Программа для com-порта
Uhbif79 05.06.2026
Всем привет, давно хотел изучить Qt, начинал, бросал, потом снова начинал. И сейчас вот смог написать свою первую программу. До этого имел опыт программирования микроконтроллеров, писал прошивки на. . .
Транскрипция 55-минутного видео через Whisper: WhisperDesktop облажался, спас Google Colab[
anaschu 01.06.2026
Понадобилось получить текст из свежезагруженного видео на YouTube. Казалось бы, задача на пять минут. Заняла полтора часа. Делюсь опытом — может кому пригодится последовательность решений. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru