LINUX.ORG.RU

Посоветуйте толковые книги на русском/английском по Си++ (Cxx11)

 , ,


13

11

Посоветуйте толковые книги на русском/английском по Си++.
Чтобы был нормальный перевод и содержание.
У меня где-то лежит каталог с O'Reilly, надо бы посмотреть среди них. Ещё что-то брал по акции «книга за 1 рубль» в books.ru

В двух словах - я старпёр, который изучал Си/Си++ в 1996-1997 году по книжкам:
* В.В.Подбельский Язык Си++ (Финансы и статистика)
* Беляков М.И., Рабовер Ю.И., Фридман А.Л. Мобильная операционная система
* немного смотрел русский перевод Керниган-Ритчи в бумажном виде в библиотеке когда интернетов не было, а свою книгу купить - стипендия не позволяла
* в 2004-2005 году читал книгу Страуструп Б. Дизайн и эволюция С++

Все эти книги читал в бумажном варианте.

По работе писал только на Си с классами и на Паскале с классами (+Делфи). Сейчас хотел бы по-изучать Си++, чтобы понимать современный код. Какие книги посоветуете? Интересует компактное изложение фундаментальных основ, желательно - на русском языке. Или что-то не очень тяжёлое на английском (чтобы не надо было переводить каждое слово со словариком). Надеюсь, понятно объяснил. Спасибо.

Просто я встретил на днях код вида

A::B::C::D ...
, и понял, что пора догонять поезд. На университетских знаниях 20-летней давности сейчас делать почти нечего. Хочу перестать заниматься быдлокодерством, и начать осваивать современные знания.

Ещё - есть ли краткая табличка с основными различиями в стандартах (Comparison table/list)? Или лучше просто прочитать для начала Wikipidia:C++11, и составлять такую таблицу самому?

За что браться не следует однозначно новичку, что освоить для быстрого JFF-эффекта, если хорошо знал в своё время Си с классами? Нравится концепция namespaces. Ещё хотелось бы впоследствии плавный переход на какую-то функциональщину, чтобы знания по современному Си++ пригодились. Какие концепции/подходы есть общие?

На университетских знаниях 20-летней давности сейчас делать почти нечего.

Толково. Сейчас не все это понимают.

Ещё - есть ли краткая табличка с основными различиями в стандартах (Comparison table/list)?

https://gcc.gnu.org/projects/cxx-status.html

http://www.stroustrup.com/C 11FAQ.html

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

https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines

Esper ()

Ещё - есть ли краткая табличка с основными различиями в стандартах

Не то, чтобы табличка с различиями. Скорее что-то вроде whatsnew: https://isocpp.org/faq снизу разделы C++11 и C++14. (и вообще этот faq стоит прочесть)

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

I haven't yet received a copy, but I have received word that there's now a Russian translation of Effective Modern C++. For details, please consult this page.

C++ in Cyrillic! What could be finer?

Scott

Это конечно замечательно, но уж лучше в оригинале

Подпись: читал тот самый русский перевод, потому что зажмотился на покупку оригинала (он дороже)

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

C++ in Cyrillic! What could be finer?

Надо Скотту сказать, что даже название для него придумали, 1С

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

Да тут всем бы догнать. Вроде 11-ый уже восвю использую, но в 14-м не так много фич, которые прямо таки для ежедневного пользования.

UVV ★★★★★ ()

Завтра ищешь в интернете книжку Страуструп. Язык программирования C++. Похуй если ничего не поймешь. Затем изучаешь STL от корки до корки. Потом зубришь, именно, сука, вызубриваешь стандарт C++11, чтобы от зубов отскакивало. Когда напишешь свою первую сортировку с помощью template, по пути изучив наследование, инкапсуляцию и полиморфизм, скачиваешь и изучаешь любую олдовую среду разработки, рекомендую g++. Как переделаешь сортировку, чтобы была она работала с любым классов, а не только с числами, можешь идти дальше - тебя ждет увлекательный мир байтоёбства. Препроцессоры, множественное наследование, указатели на функцию, деструкторы, ручная сборка мусора, о-о-очень долгая компиляция. Отсос у хиккующих выблядков / просто неудачников типа рейфага или сисярп/джава-крестьян, которые пишут контесты в удобной вижуалке и получают высокие рейтинги не заставит себя ждать и уже через пол года ты будешь висеть в топе КФ, что любой сотрудник Google будет течь при одном перечислении всех твоих призовых футболок.

anonymous ()

Если хочется погрузиться всерьез, тогда без последнего издания «The C++ Programming Language» никак. После него уже к свежим книжкам Мейерса и к уже рекомендованным здесь https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines

Если хочется быстро окунуться в современный C++, без погружения в детали, то у Страуструпа есть небольшая книженция «A Tour of C++».

eao197 ★★★★★ ()

The C++ Programming Language, 4th edition, от самого Бьярна (только нудная до невозможности).

А про функциональщину забудь. Нету ее в Си++ и уже не будет.

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

Зачем тебе С++ когда есть Go ?

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

Завтра ищешь в интернете книжку Страуструп. Язык программирования C++. Похуй если ничего не поймешь. Затем изучаешь STL от корки до корки. Потом зубришь, именно, сука, вызубриваешь стандарт C++11, чтобы от зубов отскакивало. Когда напишешь свою первую сортировку с помощью template, по пути изучив наследование, инкапсуляцию и полиморфизм, скачиваешь и изучаешь любую олдовую среду разработки, рекомендую g++. Как переделаешь сортировку, чтобы была она работала с любым классов, а не только с числами, можешь идти дальше - тебя ждет увлекательный мир байтоёбства. Препроцессоры, множественное наследование, указатели на функцию, деструкторы, ручная сборка мусора, о-о-очень долгая компиляция. Отсос у хиккующих выблядков / просто неудачников типа рейфага или сисярп/джава-крестьян, которые пишут контесты в удобной вижуалке и получают высокие рейтинги не заставит себя ждать и уже через пол года ты будешь висеть в топе КФ, что любой сотрудник Google будет течь при одном перечислении всех твоих призовых футболок.

После ТАК потраченной жизни ему останется только повеситься.

Alve ★★★★★ ()

Если есть базовый уровень можно:

1. Effective STL.

2. Скота Маерса последние книги.

Но эта хуйня не даст много понимания как это все работает и применяется.

1. CPPCon, CPPNow записи выступлений на YouTube

2. Взять свеженький фреймвокр с ним поработать (Boost.Beast, outcome...)

3. Наваять что-то свое используя новые возможности (игры с туплами, тайптрейтсами и прочей лабудой). Особо стоит присмотреться в сторону constexpr выражений.

После всего этого появится понимае, что текущее состояние stl достаточно хреновое и нужно писать/ждать нового стандарта, чтоб пофиксили `constexpr std::copy`, `constexpr std::bitset` и наконец определились с `std::to_chars`/`std::from_chars`.

P.S.: Сорян, если немного не по теме, просто думаю что тут одними книгами не обойтись.

anonymous ()

Посоветуйте толковые книги на русском/английском по Си++.

Столяров, конечно.

C++11

Ненужно. Там написано почему. Лучше rust учи.

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

Что значит «допотопную»? Второй курс конкретно по C++11, чего автор и просил.

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

Что значит «допотопную»?

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

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

«Изменения файлов при разбивке - надо пересобирать только изменённые файлы»( на самом деле так убого сформулировано и я им помог, но суть в этом. Опять же - зелёный человек даже не поймёт того, о чём там написано) - это а) частные случай. б) полностью игнорируется та жопа, которая происходит везде, а именно - изменение популярного инклюда - триггерит чуть ли не полную пересборку.

Ну хоть про #pragma once написали, уже радует.

И такого масса. Я уже делал полный разбор этого курса где-то.

Открываю ссылки, вижу полную ахинею.

«у ссылки нет нулевого значения» - есть. В примере написана полная ахинея, которая не собирается чисто случайно.

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

Достаточно людям объясни то, что указатель - это значение, а операции над ним - это операции над этим значением. Это значение ортогонально тому, которое возвращает операция разыменование.

Аналогично с ссылкой. Была предпринята попытка определить понятие «алиас», но как-то глупо и полностью бесполезно.

Достаточно определить одно единственное свойство - ссылка - есть алис, поведение которого эквивалентно поведению переменной, либо выражению (*ptr) - его значению.

Из значения выражения (*ptr) никак нельзя получить начальный указатель, а значит его никак нельзя поменять, изменять, переписать и прочее. Его просто нет, а к тому, чего нет - нельзя применить никакую операцию.

Потом человек пойдёт и попытается взять адрес у ссылки, ведь пациент его ничего из этого не объяснил.

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

Потом человек пойдёт и попытается взять адрес у ссылки, ведь пациент его ничего из этого не объяснил.

И что произойдет, если он попытается взять адрес у ссылки?

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

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

anonymous ()

Начни с Java, бросай плюсы

anonymous ()

Не забудь забанить сишных неадекватов, например, некого Царя, чтобы не читать его бредни. Его банят, но он всегда возвращается. В данный момент, этот артист, похоже, выступает под именем LjubaSherif.

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

Есть что ответить по поводу бредней? Покажи бредню, докажи, что там она есть?

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

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

Есть что ответить по поводу бредней? Покажи бредню, докажи, что там она есть?

Ну так stay tuned, за тобою дело не станет. Начинаешь ты неплохо, а заканчивается всё всегда очередным баном).

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

Посоветуйте толковые книги на русском/английском по Си++.

Столяров, конечно.

Открыл и сразу куча отсебятины:

... идентификатор переменной, имеющей, например, тип int, сам по себе представляет выражение не типа int, а тип ссылка на int

Далее он пишет, что таким образом можно выкинуть из стандарта понятия modifable и non-modifiable lvalue. Что ж, попытка хорошая. В принципе, сейчас в C++ термин modifiable lvalue не нужен. Везде, где он встречается, есть другие ограничения на выражение, например, на его тип, которые не позволят подставить в это место non-modifiable lvalue, даже если требование подставлять только modifiable lvalue убрать.

Только отсебятина Столярова здесь не к месту.

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

Если уж начинать, то go. Яву закапывают.

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

Столяров, конечно.

Столяров

С другой стороны, часто встречающиеся в старых программах на C описания вида

typedef struct mystruct {
    int a, b;
} mystruct;
в программе на Си++ вызовут ошибку из-за возникающего конфликта имён

У кого такое не компилируется?

anonymous ()

A::B::C::D

Тю, это было ещё и в конце нулевых, а может даже и в начале девяностых

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

А про функциональщину забудь. Нету ее в Си++ и уже не будет.

Ой ли, что есть та функциональщина в вашем понимании, которой нет и не будет в плюсах? Хочу обозначить границы

yoghurt ★★★★★ ()

В двух словах - я старпёр, который изучал Си/Си++ в 1996-1997 году по книжкам:

Ъ-старперы изучали Си++ в 1990-1991 по безавторной книге, которая, как выяснилось, была первой редакцией «Языка программирования Си++» Бьерна нашего Страуструпа.

Какие книги посоветуете? Интересует компактное изложение фундаментальных основ

Язык очень большой, поэтому учебник будет толстым. Страуструп, 4-е издание.

Или лучше просто прочитать для начала Wikipidia:C++11, и составлять такую таблицу самому?

Таблица самых важных нововведений: rvalues, variadic templates. Еще можно добавить lambdas, но оно менее важно. А так - в гугле много статей про нововведения C++11.

что освоить для быстрого JFF-эффекта, если хорошо знал в своё время Си с классами?

JFF? Rust, однозначно.

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

Из современных, «как-то функциональных» языков Си++ больше всего похож на, внезапно, Rust.

Какие концепции/подходы есть общие?

Владение (ownership).

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

Таблица самых важных нововведений: rvalues

Исправься.

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

Таблица самых важных нововведений: rvalues, variadic templates. Еще можно добавить lambdas, но оно менее важно. А так - в гугле много статей про нововведения C++11.

А где multi-threaded memory model?

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

Таблица самых важных нововведений: rvalues, variadic templates. Еще можно добавить lambdas, но оно менее важно. А так - в гугле много статей про нововведения C++11.

А где multi-threaded memory model?

По-моему, она не заслуживает места в таблице самых важных нововведений.

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

Ты нам лучше растолкуй, где ты там функциональщину увидел, кроме удобной записи замыканий. Теперь, да, автоматизированно то, что можно было сделать руками

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

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

А так-то шаблоны вполне себе «функциональные» (особенно с констэкспрами).

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

Скорее всего он говорит о ссылочной прозрачности, referential transparency. В этом труде этот термин описывается так:

One of the most useful properties of expressions is that called by Quine [4] referential transparency . In essence this means that if we wish to find the value of an expression which contains a sub-expression, the only thing we need to know about the sub-expression is its value. Any other features of the sub-expression, such as its internal structure, the number and nature of its components, the order in which they are evaluated or the colour of the ink in which they are written, are irrelevant to the value of the main expression.

Хотя вроде бы автор, вводя этот термин, применял его к ЯП вообще, но ФП узурпировало его).

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