LINUX.ORG.RU

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


1

9

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

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



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

Щас тебе начнут советовать Страуструпа, я его сейчас почитываю и он мне абсолютно не нравится.

bhfq ★★★★★
()

То есть PHP ты уже серьёзно изучил?

книга должна быть на русском

Нет, не должна

На форумах конкретики по тому или иному автору не дают

Тебе конкретика и не нужна, уровень не тот. Берешь труп страуса и вперёд

aedeph_ ★★
()

Павловская. Всё что нужно, ничего лишнего. Осилишь эту, дальше уже сам сможешь определиться какую литературу почитать дабы повышать квалификацию.

erfea ★★★★★
()

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

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

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

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

Два чаю господину. ЗЫ Если освоить кресты, то подавляющее большинство ЯП после него осваиваются с пол пинка.

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

Если освоить кресты, то подавляющее большинство ЯП после него осваиваются с пол пинка

Думаю ассемблеристы с вами не согласятся.

vladmenshikov
() автор топика

С++ не нужен. Это все что нужно знать о С++.

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

C++ - это не язык который можно профессионально

Я осведомлен о его сложности, но всеже, чем он так сложен то? Я например C# знаю на хорошем уровне, это будет плюсом или минусом в изучении C++?

vladmenshikov
() автор топика
Ответ на: комментарий от vladmenshikov

Думаю ассемблеристы с вами не согласятся.

подавляющее большинство != asm (впрочем как и масса других ЯП, например функциональщина всякая)

ЗЫ настоящее понимание крестов всё-же упростит изучение asm, а то даже и предполагает некоторое его понимание.

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

Два чаю господину. ЗЫ Если освоить кресты, то подавляющее большинство ЯП после него осваиваются с пол пинка.

Хаскеллисты и лисперы смотрят на тебя с непониманием в глазах.

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

Думаю ассемблеристы с вами не согласятся.

За отсутствием оных :) Извините, не сдержался.

А что ассемблер? Там та же практика нужна, только за неимением «оригинальных» реализаций того же ООП, нужно выучить не так уж много. Большую часть будут занимать знание железа, технологий, с которыми придётся работать.

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

ЗЫ настоящее понимание крестов всё-же упростит изучение asm, а то даже и предполагает некоторое его понимание.

Ты гонишь. Упростить понимание ассемблера можно с другой стороны, т.е. знакая какой-нибудь HDL.

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

Я осведомлен о его сложности, но всеже, чем он так сложен то? Я например C# знаю на хорошем уровне, это будет плюсом или минусом в изучении C++?

C++ не нужен. Можно знать C и C#, и они оба вместе перекроют нишу C++.

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

Я осведомлен о его сложности, но всеже, чем он так сложен то?

В основном тем, что ориентирован на основание того, что делаешь. Нужно понимать как работает цп, память, стек. Предлагает множество разных парадигм и паттернов программирования. Имеет множество сущностей не понятных смертным владеющим другими ЯП.

Я например C# знаю на хорошем уровне, это будет плюсом или минусом в изучении C++?

Скорее навредит. Уверен тебе тут же взорвёт моск, например тот факт, что declare != define...

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

Хаскеллисты и лисперы смотрят на тебя с непониманием в глазах.

Лучшая книга по C++ (комментарий)

Ты гонишь. Упростить понимание ассемблера можно с другой стороны, т.е. знакая какой-нибудь HDL.

Понимание крестов, явно предполагает понимание хотя бы поверхностное работы железа. А с ним, и asm изучать проще, нужно не от нуля вдуплять как это пашет, а расширять уже имеющиеся знания.

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

Понимание крестов, явно предполагает понимание хотя бы поверхностное работы железа. А с ним, и asm изучать проще, нужно не от нуля вдуплять как это пашет, а расширять уже имеющиеся знания.

Ну и что же C++ в себе несёт такого сакрального, что помогает в изучении работы железа?

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

Ну и что же C++ в себе несёт такого сакрального, что помогает в изучении работы железа?

Банальное желание писать производительное ПО, с подвигает изучать этот вопрос. Кодеры понимающие что делает их программа пишут куда качественнее, а программа в свою очередь использует железо. Ну и не забываем что кресты != всякие С#-ы и жабы, микроведро l4 имеет реализации на крестах, без понимания аппаратной части, такое не возможно.

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

Банальное желание писать производительное ПО, с подвигает изучать этот вопрос.

Т.е. C++ никак не помогает.

Кодеры понимающие что делает их программа пишут куда качественнее, а программа в свою очередь использует железо.

И при чём здесь C++?

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

Т.е. C++ никак не помогает.

Ну не помогает, но приводит к этому.

И при чём здесь C++?

При том что для С++ указанное особенно актуально, ибо его довольно часто используют именно ради возможности написать более качественную программу. Ну и кресты предоставляют нужные возможности. Учить кресты, что бы писать что-то такое же тормозное и жрущее память как всё, что написано на всяких дотнетах, жабах, етц - тупняк.

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

Тоже самое можно сказать и про языки которые работают под виртуальными машинами. Если ты не соображаешь как она работает изнутри, то в итоге у тебя получится что-то вроде этого - «тормозное и жрущее память как всё, что написано на всяких дотнетах, жабах, етц - тупняк.».

Видел я одно чудило, которое конкатенацию строк в джаве делало через оператор сложения. Если учесть что программа довольно много времени проводила над парсингом строк, то в итоге программа жрала кучу памяти и работала очень медленно.

В итоге, когда этому товарищу сказали использовать StringBuilder.append() вместо +, то все встало на свои места, программа отрабатывала в разы быстрее и потребляла мизерное количество ОЗУ. А говнокод можно писать на любом языке, будь то Haskell или C++.

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

Ты какую-то неконкретную фигню гонишь. Был конкретный вопрос: что в C++, как языке, помогает в написании оптимальных программ? Ответа до сих пор так и нет. Потому что его нет, ибо в C++ ровным счётом ничего такого особенного нет.

Полезней будет прочитать «What every programmer should know about memory», чем учить полумёртвый, неудачный язык.

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

Тоже самое можно сказать и про языки которые работают под виртуальными машинами. Если ты не соображаешь как она работает изнутри, то в итоге у тебя получится что-то вроде этого - «тормозное и жрущее память как всё, что написано на всяких дотнетах, жабах, етц - тупняк.».

Много у тебя предусмотрено в жабе инструментов для избегания разворачивания стека, управления памятью, asm вставки в конце концов?

Видел я одно чудило, которое конкатенацию строк в джаве делало через оператор сложения. Если учесть что программа довольно много времени проводила над парсингом строк, то в итоге программа жрала кучу памяти и работала очень медленно.

В итоге, когда этому товарищу сказали использовать StringBuilder.append() вместо +, то все встало на свои места, программа отрабатывала в разы быстрее и потребляла мизерное количество ОЗУ. А говнокод можно писать на любом языке, будь то Haskell или C++.

Быдлокодеры встречаются везде. Есть миллионы примеров говяного ПО и на крестах наговняконого. Вот только для той же жабы, есть инструменты предназначенные вынести модуль во вне, с целью реализовать нативно. От нефиг делать видимо :D

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

Ты какую-то неконкретную фигню гонишь. Был конкретный вопрос: что в C++, как языке, помогает в написании оптимальных программ? Ответа до сих пор так и нет. Потому что его нет, ибо в C++ ровным счётом ничего такого особенного нет.

Много чего, начиная от таких элементарных вещей как инструкция inline (спорный, но есть) и заканчивая asm вставками.

...полумёртвый, неудачный язык.

ЖИРНОТА Лай дальше, а караван как шёл, так и продолжит своё движение.

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

Много чего, начиная от таких элементарных вещей как инструкция inline (спорный, но есть) и заканчивая asm вставками.

Это не особенность C++. Кроме того, вставки на ассемблере скорости ради в массовом порядке давно не применяются даже такими мастерами, как я, ибо это почти всегда лишено смысла.

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

Так-то я тоже когда-то по-молодости брызгал слюнями, защищая C++, но, слава богам, прошло.

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

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

Это не исключено, но в отношении ненужности C++ (при знании C и, скажем, C#) я всё же прав. На Си будет быстро работать, на C# - быстро написано.

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

...даже такими мастерами, как я...

Простите, ваше высочество, что рот разинул! :D Иди свои лиспы ковыряй.

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

Постоянно над этим работаю, а не дрочу на себя, как некоторые... ЗЫ проблем с работой не имею.

Так-то я тоже когда-то по-молодости брызгал слюнями, защищая C++, но, слава богам, прошло.

Брызжешь щас ты, не аргументированно понося плюсы, видать не осилил. Я же в свою очередь выбираю ЯП и остальной инструментарий по задачам, а не по не внятным привязанностям. Как следствие владею несколькими ЯП, и не испытываю батхёрта при упоминании определённых из них, просто реализую то, что мне нужно. Наскучило мне тебя кормить... бай, бай...

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

Бугага. Ты сначала хотя бы погуглил, кто такой mv, где он живет и где работает и главное на чем пишет, а потом уже рассказывай о том как у тебя чего то там получается

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

C++ не нужен. Можно знать C и C#, и они оба вместе перекроют нишу C++.

И на чём из них ты будешь системный софт под линукс писать? На кривом гтк или ненужном моно?

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

И на чём из них ты будешь системный софт под линукс писать?

системный софт пишут на си. прикладной софт можно писать и на гтк

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

системный софт пишут на си. прикладной софт можно писать и на гтк

А ничего, что гтк - это тулкит для C? И да, под системным софтом я имел ввиду прикладной.

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

И да, под системным софтом я имел ввиду прикладной

так бы сразу и говорил)

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

И на чём из них ты будешь системный софт под линукс писать? На кривом гтк или ненужном моно?

Хороший программист, осиливший такой сложный язык, как C++, часто становится overqualified для большинства задач, которые он мог бы решить на C++. К чему это приводит, можно посмотреть на завсегдатаев хаскелле- или лиспосрачей: заумной мути много поднимается, но много ли эти участники прикладнухи написали?

В принципе, платформы типа .NET (managed-среда с обширной стандартной библиотекой и стандартными же интерфейсами взаимодействия) Линуксу не хватает. Худо-бедно его роль выполняют Qt, glib/gtk, xul, apr и т.п., но, по-идее, такая фрагментация обычно вредит.

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

Павловская.

На этом товарища erfea можно заигнорить. Ничего дельного человек, рекомендующий Павловскую, сказать не сможет.

TC'у рекомендую для начала «Accelerated C++» Кёнига и Му.

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

C++ не нужен. Можно знать C и C#, и они оба вместе перекроют нишу C++.

жирное, жёсткое, наглое 4.2

Ну и где здесь 4.2? Ваш этот C++ кому-нибудь нужен кроме производителей YOBA игр?

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

Ну и где здесь 4.2? Ваш этот C++ кому-нибудь нужен кроме производителей YOBA игр?

Qt-разрабам, не? Вспомнили бы для начала, на чём написаны так обожаемые половиной лора кеды.

Dragon59 ★★
()

Я медленно, но верно изучаю сейчас С++ по учебнику Липмана.

Vekt
()
Ответ на: комментарий от Dragon59

Большинство гтк-приложений пишутся именно на C.

Это не значит что следует так делать. Для гуйни есть множество нормальных языков, писать десктоп на чистом С - моветон.

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

На Си будет быстро работать, на C# - быстро написано.

gamedev на С или C#? видео/аудио плееры/редакторы, 3d-редакторы, браузеры на чем писать?

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

Qt-разрабам

А там не чистый C++, там C++ на стероидах с собственным препроцессором, наверное потому, что плюсы такой крутой язык, да.

lazyklimm ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.