Форум: Форум C++Разное
Новые темы: 00
Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Разное

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Этапы изучения C++
 
 автор: Fddd   (14.03.2007 в 19:46)   письмо автору
 
 

Здраствуйте, может конечно вопрос и тупой, может мало кто и ответит :) но просто как то руки чесались задать этот вопрос, да и интересно.
Вопрос в следующем, хочу изучить C++, но незнаю как правильно начать, по какой программе обучения идти?
Понимаю, надо сначало изучить просто С, но стоит ли на него заострять внимание, да из него выходит C++, но есть что расходиться.
После изучения самого языка, нужно же изучить какиенибудь библиотеки(вроде так их называют :)) но их же, как я понимаю, много, я понимаю, что изучение их зависит от целей, но наверняка есть так называемые - стандартные, которые нужно всёравно изучить.
Ну и вот всё в таком духе..., и с какого бока подойти к изучению. Если есть у этих этапов достойные книги, то хотелось бы их тоже отметить.
Спасибо за внимание.

  Ответить  
 
 автор: cheops   (14.03.2007 в 23:43)   письмо автору
 
   для: Fddd   (14.03.2007 в 19:46)
 

1) Изучая C++ вы волей не волей изучите C, может не изучите стандартную библиотеку C, но само подномжество C стороной не обойдёте. С и С++ различаются в деталях в которых пересекаются, но не таких значительных, чтобы забивать ими голову на начальном этапе обучения. Изучайте C++ - C приложиться автоматически.

2) Изучая C++ вам встретися много всякого, среди них общий синтаксис, указатели и ссылки, шаблоны. Всё это нужно знать очень хорошо и не слазить с этого пока не изучите. Указатели сложны обычно тем, что современные программисты отучились от таких вещей - это привет от Assembler - нужно мозги повернуть специальным образом - нигде кроме C и ASM вы их не встретите. Это дань того, что C++ системный язык - нужно изучить и понять, пропустить и отложить их нельзя. Обязательно постройте своими руками двухсвязный список - без этого никуда. Шаблоны - это попытка сладить со строгой типизацией - очень изящная и зубодробительная - надо понять, без них не обойдётесь, возможно вам это отобъём всю охоту самому создавать шаблоны, но пользоваться вы ими должны уметь - без этого не проживёте.

3) Объектно-ориентированное программирование в C++ это отдельная песня. Очень изящная, добротная и честная реализация... Т.е. не просто реализовали ООП и всё, ООП в C++ взаимодействует с указателями и ссылками, шаблонами и перегрузкой операторов. От чего становится очень глубокой реализацией... из живых языков сейчас имеются только две объектно-ориентированные модели: C++ и Java. Все остальные языки используют ООП-модель Java, ООП-модель C++ повторить наверное нельзя - просто уникальная модель, C++ следует изучать, чтобы хотябы просто познакомиться с ней.

4) В принципе на этом изучение языка как такового заканчивается, но имеется ещё очень важная составляющая - стандартная библиотека C++ - это попытка уменьшить сложность языка, с сохранением его гибкости - попытка блестящая. Нельзя сказать, что вы C++ программист, если не знакомились с STL. Правда для работы с STL вам потребуются все предыдущие знания и указатели и шаблоны и ООП.

А после этого вы отправляетесь в свободное плаванье, как в западных университетах, что хотите, то и выбираете. Хотитите с графикой работате, хотите с системными задачами, хотите сервера пишите, хотите клиенты, можете быть как системным программистом, так и прикладным. Хотите любой другой язык изучаете или изучаете все подряд, до каких сможете дотянуться (моя модель :). Вы становитесь свободным, однако это не означает, что у вас не будет трудностей - у вас их будет до чёрта и задачи будут встречаться посложнее, чем изучение C++, просто они вас уже не будут пугать. Изучая досконально C++ вы понимаете откуда идёт программирование и куда, вы понимаете какая цена стоит за функцией sin() (которую используют все языке, даже те, где эта функция даром не сплющилась), и что предстоит сделать завтра, и, возможно, вы сами захотите взвалить одну из задач на свои плечи...

  Ответить  
 
 автор: cheops   (15.03.2007 в 00:06)   письмо автору
 
   для: Fddd   (14.03.2007 в 19:46)
 

Изучая C++ важно понимать, что не зная языка не следует браться за Windows API, DirectX, редактирование кодов Apache и т.п. как будучи эмигрантом и браться за преподавание английского языка в Штатах, если вы находитесь в стране второй день.

Сначала следует изучить язык, не замутнёный никакими библиотеками, кроме стандартной, иначе услужливая библиотека VCL и MFC проведут вас мимо многих вещей, знать которые следует в обязательном порядке, например, того, что в C++ нет строк и массивов, а за каждый байт памяти отвечаете вы сами. Брать 1000 страничное издание Страуструпа можно для коллекции или почитать на третьем годе изучения C++. Философские взгляды и мотивация ввода той или иной конструкции в язык вещь интересная, но для восприятия материала сам язык следует неплохо знать. Вообще с 1000 страничного руководства лучше не начинать - можно захлебнуться - книга должна быть 600-700 страниц. Например,

1) Г. Шилдт. C++ Базовый курс.

Избежать 1000 страничной книги полностью не удасться, хотя бы по тому, что в 600 стр. C++ объективно не влазит. Поэтому следующей книгой можно выбрать двухтомник Б. Эккеля

2) Б. Эккель. Философия C++. Введение в стандартный С++
3) Б. Эккель. Философия C++. Практическое программирование

Во всех перечисленных выше книгах описание STL будет не на высоте, для его изучения лучше выбрать специализированное издание,

4) Б. Страуструп. Язык программирования C++. Специальное издание (тут весь язык, но STL очень подробно рассматривается)
5) Н. Джосьютис. C++ Стандартная библиотека. (скачать можно с нашего сайта)
6) П. Плаугер, А. Степанов STL. Стандартная библиотека шаблонов C++

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

PS Если кому-то кажется, что любая другая область потребует мешньше книг - это не так. Чтобы работать в Web-области, также требуется пару книг по серверному языку программирования (если язык один, а не два и не три), одна по базе данных, две по JavaScript, одна по Flash и одна по ActionScript, одна-две по Apache, а также одну-две по протоколам. Чтобы стать профессионалом в области нужно знакомиться со многими наработками и чем дальше идёт прогресс, тем с большим количеством материала требуется знакомиться начинающему.

  Ответить  
 
 автор: Fddd   (16.03.2007 в 18:26)   письмо автору
 
   для: cheops   (15.03.2007 в 00:06)
 

Спасибо.
А может есть конкретная литература и по Visual Studio?

  Ответить  
 
 автор: cheops   (17.03.2007 в 13:50)   письмо автору
 
   для: Fddd   (16.03.2007 в 18:26)
 

Из современного ничего посоветовать не могу, давно не обновлял книги по Visual Studio.

  Ответить  
 
 автор: Neman   (19.03.2007 в 12:11)
 
   для: cheops   (17.03.2007 в 13:50)
 

А в чём вообще состоит изучениие Visual Studio?

  Ответить  
 
 автор: cheops   (19.03.2007 в 12:56)   письмо автору
 
   для: Neman   (19.03.2007 в 12:11)
 

В первую очередь в изучении интерфейса - это достаточно объёмный и сложный редактор - методом тык разобраться в нём не просто.
Второй этап, как правило, состоит в освоении методов построения приложений при помощи MFC или .NET.
Третий этап состоит в изучении культуры Windows-программирования: освоение Windows API, организации кода (DLL-библиотеки, потоки, файлы и т.п.).

PS Начиная со второго этапа требуются знания C/C++ на приличном уровне.

  Ответить  
 
 автор: VG   (18.10.2008 в 16:09)   письмо автору
 
   для: cheops   (19.03.2007 в 12:56)
 

cheops сколько лет ты в программировании?

  Ответить  
 
 автор: cheops   (22.10.2008 в 17:15)   письмо автору
 
   для: VG   (18.10.2008 в 16:09)
 

10 лет.

  Ответить  
 
 автор: DEM   (18.12.2008 в 03:30)   письмо автору
 
   для: cheops   (22.10.2008 в 17:15)
 

Вы программируете ВСЕГО 10 лет, или имено на С++?
Просто если на всех языках что вы знаете, то как-то вы быстро их изучили... Вы вроде бы говорили, что знаете 16 языков программирования...А один С++ я думаю до хорошего уровня изучается год минимум + разнообразные дополнения типа MFC и прочее-прочее

  Ответить  
 
 автор: cheops   (31.01.2009 в 13:58)   письмо автору
 
   для: DEM   (18.12.2008 в 03:30)
 

Тут вот в чем заковыка, Pascal, я совершенно не помню, но когда встает задача, я восстановлю его очень быстро, так как работал с ним, писал программы, помню что все получалось и вообще не страшно (да и опыт других языков программирования не позволяет забыть все напрочь). Разумеется в данный конкретный момент я не помню языки с которыми не работал несколько лет, тот же Pascal или Fortran, так как уделяю больше внимания другим языкам. После трех-четырех языков, изучить другой язык не представляет сложности, а восстановить ещё проще. Собственно поэтому считать бесполезно - можно сказать, что я не знаю ни одного языка и просто достаю их по мере надобности либо из памяти, либо из книги. Именно такое состояние позволяет выбирать язык под задачу, а не задачу под язык (когда все равно каким языком пользоваться). Здесь два замечания:
а) Речь идет об языках одной группы, в даном случае императивных языках программирования
б) Речь идет не о технологиях, на поднятие технологии (Web, Java, создание Windows-программ, разработка под Linux, конкретная база данных) действительно требуются годы - технология меняется непрерывно. Например, MFC - это не C++, это библиотека MFC, а язык C++ используется для работы с ней. Это как в PHP, библиотека GDLib - это не язык PHP, язык PHP используется для работы с ней.

>А один С++ я думаю до хорошего уровня изучается год минимум + разнообразные
>дополнения типа MFC и прочее-прочее
Год слишком мало, я набегами изучал его несколько лет и вряд ли могу утверждать, например, что STL знаю в совершенстве. Однако, изучив C++ - остальные языки вы сможете осваивать чрезвычайно быстро - сложнее и хитрее языка вряд ли найдете. Речь, конечно, опять же об императивных языках программирования, специальные языки вроде регулярных выражений или SQL придется изучать самостоятельно.

PS Ни один нормальный человек не будет поддерживать язык, если он ему не нужен в работе - все профессионалы плывут по технологиям, нужен язык - он изучается, не нужен - откладывается в дальний угол сознания (если потребуется - вытащим).

  Ответить  
 
 автор: GeorgeIV   (05.02.2009 в 10:16)   письмо автору
 
   для: cheops   (31.01.2009 в 13:58)
 

Поддерживаю практически дословно!

  Ответить  
 
 автор: Никола   (30.11.2009 в 12:58)
 
   для: GeorgeIV   (05.02.2009 в 10:16)
 

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

  Ответить  
 
 автор: Тёмик   (08.08.2010 в 16:23)   письмо автору
 
   для: Никола   (30.11.2009 в 12:58)
 

Здраствуйте Никола.
Вы просили книги в электронном виде есть у мня одна.
Вот ссылка там скачаете:
http://knigi.tr200.ru/f.php?f=%22c%2B%2B+%E1%E0%E7%EE%E2%FB%E9+%EA%F3%F0%F1%22%2C+%E0%E2%F2%EE%F0+%E3%E5%F0%E1%E5%F0%F2+%F8%E8%EB%E4%F2+%E2%F2%EE%F0%EE%E5+%E8%E7%E4%E0%ED%E8%E5&p=0

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования