Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Литература для изучения C++ (FAQ читал)


Автор: Xokker 3.3.2010, 14:14
По собственной глупости C++ когда-то начал изучать по книге C++ Without Fear. Когда понял, что книга далеко не лучшая (или я ошибаюсь?), был уже больше, чем на середине. Ее дочитал (и выполнил все примеры), но теперь сейчас заметил, что стандартом де факто для изучения языка является "Как программировать на C++". 

Если кто-нибудь сталкивался с этими обоими книгами, подскажите, пожалуйста, стоит ли тратить время и деньги на прочтение "Как программировать на C++"? Или, может, прочитать оттуда отдельные главы?

P.S. Прошу прощения, если пост поместил не в тот раздел.

Автор: limelight 3.3.2010, 15:07
Если идет речь о книге обоих Дейтелов, то я совсем недавно купил 5-е полное издание этой книги, т.к. в сети вообще не было даже подобия, максимум 3-е и то в плохом качестве. Что скажу...пока что 100 страниц усвоил. Все ооооочень разжеванно, ну поначалу по крайней мере. Еще не видел ни одного плохого отзыва о ней, очень многие рекомендуют начинать ее. В самой книге написано что предназначеная для 1-2 го года программирования.
1400 страниц в ней мне пока нравится все кроме лишней "воды" но это надеюсь не минус, т.к. какие то более сложные темы будут объяснены более полно. Параллельно читаю книгу Лафоре "Объектро-ориентированное программирование" разжевано все меньше, но все понятно процентов на 97 - 100 smile

Автор: Lazin 3.3.2010, 15:22
Цитата(Xokker @  3.3.2010,  14:14 Найти цитируемый пост)
стоит ли тратить время и деньги на прочтение "Как программировать на C++"?

вообще не стоит тратить время на изучение С++ smile 

Автор: kemiisto 3.3.2010, 15:22
Цитата(Xokker @  3.3.2010,  15:14 Найти цитируемый пост)
Если кто-нибудь сталкивался с этими обоими книгами, подскажите, пожалуйста, стоит ли тратить время и деньги на прочтение "Как программировать на C++"?

Полистал я C++ Without Fear в русском переводе. Ничего так. Книга Дейтелов на слабую троечку, а эта - на двойку. smile Ужас, короче. 

Самое плохое в этой книге, то, что там описан мифический язык программирования С/С++. Этот язык внушает страх и ужас любому бывалому С++ разработчику. smile У Дейтолов то хотя бы чистый С++...

Xokker, хм... А зачем Вам С++?

Цитата(limelight @  3.3.2010,  16:07 Найти цитируемый пост)
Еще не видел ни одного плохого отзыва о ней, очень многие рекомендуют начинать ее.

Всё когда-то бывает в первый раз. А тем, кто рекомендует С++ в качестве первого языка программирования надо делать Chokeslam. smile 

Автор: mes 3.3.2010, 15:39
Цитата(kemiisto @  3.3.2010,  14:22 Найти цитируемый пост)
А тем, кто рекомендует С++ в качестве первого языка программирования надо делать 

kemiisto, В отличие от Ваших (многих) предыдущих выпадов в сторону  С++, с такой формулировкой согласен  smile 
хотя что такое Chokeslam не знаю, но чувствую что интуиция мне подсказывает правильно smile пойду бродить по инету в поисках подтверждения своих догадок smile



Автор: Alca 3.3.2010, 18:25
Цитата

вообще не стоит тратить время на изучение С++ 

Lazin, а тогда на что тратить?

Автор: Ozerich 3.3.2010, 19:07
Дейтелы, а потом Страуструп  smile 

Автор: Xokker 3.3.2010, 19:28
kemiisto, вообще у меня C++ не первый, до этого был Паскаль, после которого (вроде) советуют изучать C/C++ (это был ответ на вопрос "зачем"). А что вы посоветуете в моем случае? 
 
Ozerich, На счет Дейтелов пока думаю, а Страуструп дома лежит, иногда полистываю(почитываю). 

Автор: limelight 3.3.2010, 19:35
Хм, по вашему Дейтлы настолько плохи для начального погружения??Поясните коль сказали "А" ))

Автор: kemiisto 3.3.2010, 20:12
Цитата(Xokker @  3.3.2010,  20:28 Найти цитируемый пост)
, вообще у меня C++ не первый, до этого был Паскаль, после которого (вроде) советуют изучать C/C++ (это был ответ на вопрос "зачем").

Вроде... Советуют... Это не ответ.

Цитата(Xokker @  3.3.2010,  20:28 Найти цитируемый пост)
А что вы посоветуете в моем случае?

Дык в том то и дело, что мы ровным счётом ничего не знаем о Вашем случае. 

Что за задача? Или just for fun?

Цитата(Ozerich @  3.3.2010,  20:07 Найти цитируемый пост)
C++(STL) / DHTML(CSS) / Javascript / PHP  Developer

Какая фантастическая подборка. А где Perl и RealBasic? Я негодую! smile 

Цитата(limelight @  3.3.2010,  20:35 Найти цитируемый пост)
Хм, по вашему Дейтлы настолько плохи для начального погружения??Поясните коль сказали "А" )) 

Язык плох, а не авторы. Невозможно написать хорошую книгу по С++. smile 

Автор: limelight 3.3.2010, 20:22
На "плохом языке" написано много много много всего чем пользуемся мы и чем пользуетесь вы)
Так что выходит что этот язык так популярен за неимением лучшего? 
И чем же вы можете подкрепить свое подобное к языку отношение?

Автор: Xokker 3.3.2010, 20:36
kemiisto, цели 2: just for fun и чтобы быть во всеоружии на момент поступления в ВУЗ (через 1.5 года).

Автор: Lazin 3.3.2010, 20:37
Цитата(limelight @  3.3.2010,  20:22 Найти цитируемый пост)
И чем же вы можете подкрепить свое подобное к языку отношение?

пятилетним опытом его использования smile 

Цитата(Alca @  3.3.2010,  18:25 Найти цитируемый пост)
Lazin, а тогда на что тратить?

зависит от задач. я лично трачу время на изучение F#

Автор: kemiisto 3.3.2010, 21:08
Цитата(limelight @  3.3.2010,  21:22 Найти цитируемый пост)
 "плохом языке" написано много много много всего чем пользуемся мы и чем пользуетесь вы)

 smile Ум... Пожалуй, мой любимый аргумент! 

Сжато: 
  • С++ стал популярным из-за (относительно) низкого порога вхождения и (относительного) быстродействия на последовательных машинах (раньше других и не было в широком использовании). И то, и другое - заслуга С, который был популярен из-за UNIX. Smalltalk "погорел" именно из-за совершенно иного синтаксиса.
  • Много много много? Ты уверен? Я, например, сейчас пишу тебе из ОС в которой львиная доля приложений написана на другом языке.
  • Всё. Хватит. Мне лень писать развёрнутый ответ. smile

Цитата(limelight @  3.3.2010,  21:22 Найти цитируемый пост)
Так что выходит что этот язык так популярен за неимением лучшего?

Этот тоже хороший. Дам и тут пару наводок:
  • Популярность никогда не была и не будет критерием качества.
  • С++ уже анти-популярен.

Цитата(limelight @  3.3.2010,  21:22 Найти цитируемый пост)
И чем же вы можете подкрепить свое подобное к языку отношение? 

Тут всё очень просто. Достаточно познакомиться с любым современным ЯП и Вы не будет задавать подобных вопросов.


Цитата(Xokker @  3.3.2010,  21:36 Найти цитируемый пост)
kemiisto, цели 2: just for fun и чтобы быть во всеоружии на момент поступления в ВУЗ (через 1.5 года). 

Oberon - разобраться в императивном программировании. Процедурном и объектно-ориентированном.
Smalltalk - другое ООП. Динамика во всём.
Haskell - ФП.
Как минимум, учиться лучше с использованием концептуально чистых языков.

Автор: Lazin 3.3.2010, 21:19
Отличной заменой С++ может быть OCaml smile

Добавлено через 23 секунды
а так-же оберону, хаскелю и смоллтолку smile 

Автор: Ozerich 3.3.2010, 21:45
kemiisto, в сторону .NET намекаешь?  smile 

Автор: Anark1 3.3.2010, 21:52
Шилдт, потом Страуструп
http://www.google.ru/search?hl=ru&newwindow=1&q=%D1%88%D0%B8%D0%BB%D0%B4%D1%82+%D1%81%D0%B0%D0%BC%D0%BE%D1%83%D1%87%D0%B8%D1%82%D0%B5%D0%BB%D1%8C+%D1%81%2B%2B+%D1%81%D0%BA%D0%B0%D1%87%D0%B0%D1%82%D1%8C&btnG=%D0%9F%D0%BE%D0%B8%D1%81%D0%BA&lr=&aq=0&oq=%D1%88%D0%B8%D0%BB%D0%B4%D1%82+%D1%81%D0%B0%D0%BC%D0%BE

Автор: kemiisto 3.3.2010, 22:27
Цитата(Ozerich @  3.3.2010,  22:45 Найти цитируемый пост)
kemiisto, в сторону .NET намекаешь?

Для Windows - да. C#, F#, ...

Автор: Ozerich 3.3.2010, 22:37
Цитата(kemiisto @ 3.3.2010,  21:27)
Цитата(Ozerich @  3.3.2010,  22:45 Найти цитируемый пост)
kemiisto, в сторону .NET намекаешь?

Для Windows - да. C#, F#, ...

Спасибо за авторитетное мнение  smile 
Я в принципе еще новичок, так что еще есть выбор за что основательно взяться 
А есть ли тут где нибудь холивар на тему С++/С#(.NET) ? Ссылку если можно дайте пожалуйста smile 

Автор: Alca 3.3.2010, 23:14
Цитата

я лично трачу время на изучение F#

А когда закончиться весь алфавит?

Автор: Леопольд 4.3.2010, 11:01
Цитата(Lazin @  3.3.2010,  15:22 Найти цитируемый пост)
вообще не стоит тратить время на изучение С++

Я ошибусь, если скажу что при хорошем знании С++, можно легко усвоить любой другой императивный язык?

Добавлено через 3 минуты и 34 секунды
Цитата(Alca @  3.3.2010,  23:14 Найти цитируемый пост)
А когда закончиться весь алфавит? 

F++ smile

Автор: Lazin 4.3.2010, 11:19
Цитата(Леопольд @  4.3.2010,  11:01 Найти цитируемый пост)
Я ошибусь, если скажу что при хорошем знании С++, можно легко усвоить любой другой императивный язык?

не знаю

Изучая С++, новичок сталкивается с абсолютно не нужными ему вещами, такими, как управление памятью, ему ведь нужно научиться не просто писать код на определенном языке, ему нужно научиться профессии, в которую входят такие вещи, как умение использовать различные технологии, умение создавать алгоритмы и проектировать архитектуру системы.
В общем, если смотреть на программу как на систему, то язык программирования - далеко не самая важная ее часть. А С++ претендует на роль самой важной части системы, очень часто простые вещи описываются на нем весьма нетривиально. Для того, что-бы быть квалифицированным С++ программистом, нужно много чего знать и уметь, причем большая часть этих умений и знаний, относится к языку, а не к программированию как таковому. 
Это главная слабость С++, вместо того, что-бы думать над тем как это должно работать, приходится думать над тем, как правильно сделать это на С++. smile 

Автор: andrew_121 4.3.2010, 11:35
Цитата(kemiisto @  3.3.2010,  15:22 Найти цитируемый пост)
описан мифический язык программирования С/С++

Цитата(kemiisto @  3.3.2010,  15:22 Найти цитируемый пост)
Этот язык внушает страх и ужас любому бывалому С++ разработчику

Цитата(kemiisto @  3.3.2010,  15:22 Найти цитируемый пост)
А тем, кто рекомендует С++ в качестве первого языка программирования надо делать Chokeslam.

хватит троллить! вонь ###!

Цитата(Alca @  3.3.2010,  18:25 Найти цитируемый пост)
а тогда на что тратить?

на оберон smile 

Цитата(Ozerich @  3.3.2010,  22:37 Найти цитируемый пост)
Спасибо за авторитетное мнение

 smile 
тебя просто развели smile 
стебутся же, разве не понимаешь smile 

Автор: GoldFinch 4.3.2010, 14:08
человеку уже умеющему программировать, для изучения С++ следует читать стандарт или другой справочник, затем литературу по отдельным разделам языка.
а человеку еще не умеющему программировать - лучше сначала выучить дельфи, C# или что по проще.

Автор: Anark1 4.3.2010, 15:43
Цитата(GoldFinch @ 4.3.2010,  14:08)
а человеку еще не умеющему программировать - лучше сначала выучить дельфи, C# или что по проще.

C# перед C++ ?  smile 

Автор: GoldFinch 4.3.2010, 15:58
Anark1, какбэ начинать надо с простого, и более общего.

Автор: Леопольд 5.3.2010, 13:35
Цитата(Lazin @  4.3.2010,  11:19 Найти цитируемый пост)
Это главная слабость С++

Абсолютно согласен, однако к несколько неудобному синтаксису С++ можно привыкнуть. Когда доступны такие библиотеки как boost, Qt4, Ogre3D и т.д., ни что не мешает писать программы быстро. Со второго раза, само собой smile

Добавлено @ 13:47
Цитата(Lazin @  4.3.2010,  11:19 Найти цитируемый пост)
приходится думать над тем, как правильно сделать это на С++.

Думаю вместо С++ здесь может стоят любой язык. Сложную систему на любом языке тяжело описать, потому-что её надо сначала придумать. Если система уже построена, то на С++  можно написать сравнительно с такой же скоростью как и на других императивных языках со статической типизацией.
Пусть кто-то хорошо знает С++, и ровно хорошо знает С#. Допустим, их оба мог бы начать изучать первым. Ему потребуется больше времени на С++ чем на С#. Однако, если он выберет С++, сколько понадобиться времени, что бы потом изучить С# (я не говорю про платформу, потому что она просто гигантсая)? Сколько понадобистья времени, что бы изучить С++ после С#. Я думаю значительно больше.
Конечно с утиной типизацией не сравниться, но это ведь уже не статическая типизация. Python, по моему, очень прост в изучении.

Автор: Леопольд 5.3.2010, 13:52
Тот же Python, должен позволять писать что-либо более просто и понятно чем это может тот же C#, именно благодаря динамической типизации. Однако он не везде требуется. Он скриптовый, на нём только GUI писать. Есть ещё удобная штука Boost.Python smile

Автор: Lazin 5.3.2010, 14:15
Цитата(Леопольд @  5.3.2010,  13:35 Найти цитируемый пост)
однако к несколько неудобному синтаксису С++ можно привыкнуть
Так дело не в синтаксисе, а в тонкостях. Мне нужно понимать все тонкости работы кода, которые мне по идее знать не обязательно, например то, как расположены в памяти члены данные объекта, где лежит объект, на стеке или в хипе, можно ли возвращать указатель на объект из функции или нет, как передается объект в функцию - по ссылке или по значению, мне сто лет не упало контролировать время жизни объектов. Все это бывает на самом деле нужно - очень редко. Даже идейные С++ программисты соглашаются с тем, что многие вещи, должны быть работой компилятора, а не программиста.

Цитата(Леопольд @  5.3.2010,  13:35 Найти цитируемый пост)
Думаю вместо С++ здесь может стоят любой язык. Сложную систему на любом языке тяжело описать, потому-что её надо сначала придумать. Если система уже построена, то на С++  можно написать сравнительно с такой же скоростью как и на других императивных языках со статической типизацией.
у тебя много опыта создания сложных систем, на других языках? smile 

Автор: mes 5.3.2010, 15:17
Цитата(Anark1 @  4.3.2010,  14:43 Найти цитируемый пост)
C# перед C++ ?  

если  учить #, то чего на ++ смотреть ? только запутается человек.

Цитата(Леопольд @  5.3.2010,  12:35 Найти цитируемый пост)
Когда доступны такие библиотеки как boost,

и Вас не смущает, что это костыль ? пользоваться приходится за неимением альтернативы.

Цитата(Леопольд @  5.3.2010,  12:35 Найти цитируемый пост)
Думаю вместо С++ здесь может стоят любой язык. Сложную систему на любом языке тяжело описать, потому-что её надо сначала придумать.

 smile 
Цитата(Леопольд @  5.3.2010,  12:35 Найти цитируемый пост)
 Если система уже построена, то на С++  можно написать сравнительно с такой же скоростью как и на других императивных языках со статической типизацией.

тут надо учитывать не только физическую скорость написания, а также и нагрузку на программиста и легкость дальнейшего рефакторинга smile

Цитата(Леопольд @  4.3.2010,  10:01 Найти цитируемый пост)
Я ошибусь, если скажу что при хорошем знании С++, можно легко усвоить любой другой императивный язык?

я бы сказал, что при понимании что такое программирование, легко усваивается любой язык (после разбора синтаксиса).
С++ сложен потому, что учит не только программировать, а  обходить подводные камни, которые он несет в себе - и в этом его один минус.
а еще один в том что не смотря на разнообразие инструментов в него входящих , многие из них морально устарели...
не будем далеко ходить, взять хотя бы for (); - как часто нужен, и как мало может, даже BOOST_FOREACH не покрывает потребностей...

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


Автор: k0rvin 12.3.2010, 21:37
Цитата(Леопольд @ 5.3.2010,  13:52)
Тот же Python, должен позволять писать что-либо более просто и понятно чем это может тот же C#, именно благодаря динамической типизации. Однако он не везде требуется. Он скриптовый, на нём только GUI писать. Есть ещё удобная штука Boost.Python smile

что значит "скриптовый"?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)