LINUX.ORG.RU

Лучшая книга по C++


1

9

Решил взяться за изучение C++, серьезное (а не ради развлечения) изучение, с целью последующей работы прогером C++. Не могу выбрать книгу, их очень много, на разного уровня подготовки изучающего. На форумах конкретики по тому или иному автору не дают, в духе «этот автор плох тем-то, тем-то», а лишь флуд и взаимное кало-метание друг в дружку.

Так вот вопрос таков: на какие книги стоит обратить внимание на начале изучения, и какими стоит закончить, утвердить освоение материала? Примечание: книга должна быть на русском и все еще издаваться каким либо издательством, а не реликвия которую заказать в бумажном варианте не представляется возможным, я собираюсь брать именно бумажные варианты.



Последнее исправление: vladmenshikov (всего исправлений: 1)

Ответ на: комментарий от shty

JNI, не?

Не, этот кошмар не предлагать. Кроме того, это скорее аналог Python C API. Вышеуказанный JNA гораздо ближе к телу.

tailgunner ★★★★★
()

Ура, плюсосрачик!

Отвечу по теме на основной вопрос.

Так вот вопрос таков: на какие книги стоит обратить внимание на начале изучения, и какими стоит закончить, утвердить освоение материала?

  • Начинаешь с какой нибудь вводной книжки, которая освещает основные аспекты работы с С++. Тут хорошо походит Р. Лафоре - «Объектно-ориентированное программирование в С++»
  • Укрепляешь свои познания в плане подводных камней, всяких трюков и прочего «что хорошо, а что плохо» - тут как нельзя лучше подходят книги Мейерса «Effective C++» и «More Effective C++» (на русском тоже есть). Можно ещё Саттера почитать - это «Exceptional C++» и иже с ними (на русском опять же есть).
  • Расширяешь границы сознания - А. Александреску «Modern C++ Design» (есть на русском) и, например, «C++ Template Metaprogramming» (авторов не помню, на русском не видел).

Всё, после прочтения описанного выше ты становишься более-менее грамотным плюсистом. Но! Это только начало. Тебя ждет ещё изучение классических алгоритмов (тут книги Седжвика как раз в тему), методик разработки ПО (Буч, GoF и пр), всякой философии и пр.

Так что проще начать сразу Haskell!

anonymous
()
Ответ на: комментарий от tailgunner

и мы говорим про «инструменты общего назначения» с точки зрения кого, разработчика?

Да. С чьей же еще?

в таком разе я не вижу особых преимуществ у .net, да по инструментам на начальном уровне .net рулит (ну там мышкой накликать data binding из базы и т.д.), но уже на среднем уровне, когда требуется что-то более или менее нестандартное - никакой особой разницы нет

shty ★★★★★
()
Ответ на: комментарий от shty

да по инструментам на начальном уровне .net рулит

Вот-вот. Нету для линукса приличных инструментов написания говнософта, и это печально.

tailgunner ★★★★★
()
Ответ на: комментарий от cab

Mono и Java чем не катят?

Про Java без меня правильно обсудили. Python на платформу претендует в той же шапке, но если только в пределах одного релиза шапки, потому как с совместимостью между даже минорными версиями у него туго как-то.

mv ★★★★★
()
Ответ на: комментарий от tailgunner

JNI, не?

Не, этот кошмар не предлагать. Кроме того, это скорее аналог Python C API. Вышеуказанный JNA гораздо ближе к телу.

ну с этой точки зрения - да, удобнее, но почему кошмар? и к тому же есть же всяческие swig и gluegen, которые ничего так справляются, не?

shty ★★★★★
()
Ответ на: комментарий от tailgunner

Нету для линукса приличных инструментов написания говнософта, и это печально.

питон? :)

shty ★★★★★
()
Ответ на: комментарий от yoghurt

Qt SDK

Очевидно, что это не так. Опустим выбор C++ в качестве основного языка, но проблемой является то, что Qt - это не составная часть системы. У меня Qt вот нету. А в венде .NET идёт из коробки.

mv ★★★★★
()
Ответ на: комментарий от shty

но почему кошмар?

По памяти.

есть же всяческие swig и gluegen, которые ничего так справляются

Я тоже думал, что SWIG ничотак справляется, пока не узнал о ctypes. После этого моя симпатия к SWIG резко прошла.

tailgunner ★★★★★
()
Ответ на: комментарий от mv

Python [..] с совместимостью между даже минорными версиями у него туго как-то.

o_O нет, правда?

shty ★★★★★
()
Ответ на: комментарий от tailgunner

есть же всяческие swig и gluegen, которые ничего так справляются

Я тоже думал, что SWIG ничотак справляется, пока не узнал о ctypes.

:) ну, всё познаётся в сравнении, в таком разрезе - конечно согласен

shty ★★★★★
()
Ответ на: комментарий от tailgunner

но почему кошмар?

По памяти.

1) если использовать аккуратно, то вовсе и не кошмар
2) кому надо совсем «некошмар» тому противопоказано использовать «гирные» платформы

shty ★★★★★
()
Ответ на: комментарий от tailgunner

Си++? Ты серьезно?

Y not? Кучи готовых компонентов (не буду тут применять слово «классы»), управление памятью - полуручное (родительские QObject-ы сами прибивают своих чайлдов), бери да пиши. Получаем почти-что Сишарп без некоторых фишек, которые для написания говнософта не больно то и нужны. Всё чётко!

// за сим упал в строй

yoghurt ★★★★★
()
Ответ на: комментарий от mv

C Java вопрос спорный. Тем не менее под «что-то аля .Net» она попадает хотя бы потому, что последний испытал сильное влияние Java. Или же уточни что ты понимал под похожестью на .Net.
Про Python я ничего не говорил, да и не тянет он, ИМХО, на платформу.
Про Mono ты забыл. К тому же десктопщины под Linux на рем написано больше, че на Java.

cab ★★★★
()
Ответ на: комментарий от anonymous

Ура, плюсосрачик!

Да ну, скукотища какая-то, никакого срачика. Вон тейлганнер даже сказал, что Питон беспонтовый. Не заболел ли :(.

unlog1c ★★★
()
Ответ на: комментарий от tailgunner

Нету для линукса приличных инструментов написания говнософта

Qt SDK

Си++? Ты серьезно?

не C++, а Qt, Qt он коварный, он некоторое время даёт иллюзию что можно не париться при написании программы, то есть оттягивает тот момент когда костыльный лес начинает рушиться по каждому чиху, и таким образом способствует, С++ себя ведёт не в пример суровее, правда настоящих Ъ-индусов такие трудности не пугают :)

shty ★★★★★
()
Ответ на: комментарий от anonymous

идет в семерке

1) значит всё же не всегда идёт, на что я и намекал
2) заказчику с Windows XP от этого ни холодно ни жарко, и не надо говорить что это заказчик сам виноват
3) .net версионирован, и каждую новую версию надо отдельно доставлять сверху - тоже дико удобно, ё

shty ★★★★★
()
Ответ на: комментарий от mv

проблемой является то, что Qt - это не составная часть системы

статично слинковать и нет проблемы, вон skype на Qt у всех запускается

wota ★★
()
Ответ на: комментарий от yoghurt

Получаем почти-что Сишарп

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

shty ★★★★★
()
Ответ на: комментарий от dave

Да, AnyLogic - вещь мощная, у нас как-то лабы на ней проходили, я, как программист, диву давался, когда её юзал :)

А ещё Java была в Ил-2 Штурмовике. Наверно поэтому 9 лет назад «забытые сражения» безбожно тормозили на моём PIV 2.4/256 RAM :)

yoghurt ★★★★★
()
Ответ на: комментарий от shty

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

Это всё стандартноплюсопроблемы. Я специально упомянул про куобжекты, паренты и чайлды - http://stackoverflow.com/a/2491811

yoghurt ★★★★★
()
Ответ на: комментарий от shty

Даже несчастный драйвер от AMD при установке требует .NET - такие дела. Отсутствие в системе оного по большей части надуманная проблема, которая отчего-то волнует линуксоидов, а не самих windows-пользователей.

Amp ★★★
()
Ответ на: комментарий от yoghurt

Это всё стандартноплюсопроблемы. Я специально упомянул про куобжекты, паренты и чайлды

-_-

«Qt он коварный, он некоторое время даёт иллюзию что можно не париться при написании программы» (с)

«куобжекты, паренты и чайлды» тоже уметь применять, и знать откуда у них ноги растут, и умения здесь чисто С++'ные нужны, и никакие другие

shty ★★★★★
()
Ответ на: комментарий от shty

.net версионирован, и каждую новую версию надо отдельно доставлять сверху - тоже дико удобно, ё

накатывается автообновлением

anonymous
()
Ответ на: комментарий от shty

Не забывай, что речь идёт про говнософт, типовые конструкции в котором обычно списываются с туториалов и прочих хауту, так что малыши просто пишут «p = new QSomething(this)» и не парятся ни о каких внутренних процессах :)

Фраза про обманчивость вообще характерна не только для Qt. После усвоения азов частый индивид ошибочно убеждён, что ему теперь подвластно пространство и время и бросается творить-творить-творить, не ведая более обширных и глубоких проблем.

http://lbrandy.com/blog/wp-content/uploads/2010/03/c .png

yoghurt ★★★★★
()
Ответ на: комментарий от yoghurt

Си++? Ты серьезно?

Y not?

Because of.

управление памятью - полуручное

Этого уже хватит.

Получаем почти-что Сишарп без некоторых фишек

Ну да, инвалид без рук и ног - тоже человек.

tailgunner ★★★★★
()
Ответ на: комментарий от anonymous

.net версионирован, и каждую новую версию надо отдельно доставлять сверху - тоже дико удобно, ё

накатывается автообновлением

что-то я не помню чтобы автообновлением накатывались мажорные версии, например, 4-я версия поверх 3-й

shty ★★★★★
()
Ответ на: комментарий от shty

3) .net версионирован, и каждую новую версию надо отдельно доставлять сверху - тоже дико удобно, ё

В восьмёрке оно само ставится при первом запуске. Удобно.

2) заказчику с Windows XP от этого ни холодно ни жарко, и не надо говорить что это заказчик сам виноват

А если у заказчика будет первослака?

x3al ★★★★★
()
Ответ на: комментарий от anonymous

в семерке винапдейтер даже сервис пак на VS накатывает

ога, и если у меня стоит vs2008 express то автоматом, после выхода, он меняется на vs2010 express, да?

shty ★★★★★
()
Ответ на: комментарий от x3al

В восьмёрке оно само ставится при первом запуске. Удобно.

не знаю, у меня пока восьмёрка никак не ассоциируется со словом удобно

А если у заказчика будет первослака?

случится первонах

shty ★★★★★
()
Ответ на: комментарий от shty

в венде .NET идёт из коробки.

4.2

XP уже дожило до такого возраста, когда начало валится в инсталляторе, будучи запущенном на новом железе. И даже на XP дофига современных программ без установленного .NET не увидишь.

mv ★★★★★
()
Ответ на: комментарий от shty

заказчику с Windows XP от этого ни холодно ни жарко, и не надо говорить что это заказчик сам виноват

В принципе заказчик сознательно использует систему снятую с основной поддержки. XP не будет поддерживаться VC++11 в качестве целевой платформы.

Begemoth ★★★★★
()
Последнее исправление: Begemoth (всего исправлений: 1)
Ответ на: комментарий от cab

C Java вопрос спорный. Тем не менее под «что-то аля .Net» она попадает хотя бы потому, что последний испытал сильное влияние Java.

У Джавы шанс был, если бы Сан её вовремя передал Апачу или другой подобной организации. Профит хорошо виден на примере OOo.

Про Python я ничего не говорил, да и не тянет он, ИМХО, на платформу.

На Линуксе ничего более близкого к понятию платформы нету, увы.

Про Mono ты забыл. К тому же десктопщины под Linux на рем написано больше, че на Java.

Для Линукса важны юридические гарантии полного лицензирования и защиты от анального преследования, чтобы платформодержатель мог сертифицировать соответствие левой реализации платформы её стандартам. Если бы m$ гарантировало такое не только Новеллу, а всему сообществу, то mono бы имел шанс.

mv ★★★★★
()
Ответ на: комментарий от mv

А в венде .NET идёт из коробки.

Зависит от версии винды и версии .NET

annulen ★★★★★
()

Почему в этом треде до сих пор не упомянули Vala?

pevzi ★★★★★
()
Ответ на: комментарий от shty

Для XP'шек можно просто кинуть установщики .Net рядом с установщиком основной программы или заморочится и проверить наличие требуемого .Net в система и доставлять автоматом(сейчас стали просто добавлять сетевой установщик, который скачивает последнюю версию нужного .Net у MS и ставит её). На этом всё, всякие обновления MS сама для .Net шлёт через Windows Update.

Никаких проблем, так же, как и с DirectX. Ибо связка `Поставил -> Забыл` отлично работает.

Norgat ★★★★★
()
Ответ на: комментарий от anonymous

Ну так gtk-то ты упомянуло, жывотное. Значит, ты и озабочен гуйней.

|
|    Слишком толсто. Попробовать ещё раз?       
|                                                                                                                                   
|                                                                                  
|          [Принять]  [Отмена]                           
|___________________________________________
Dragon59 ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.