LINUX.ORG.RU

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


1

9

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

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



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

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

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

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

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

Многие вещи пишут на Си++ по привычке, да и в силу нежелания писать на чем-то другом. Также этому способствует наличие бесплатных хороших компиляторов. Вон, попробуй-ка попиши бесплатно коммерческий продукт на аде, а ведь она почти ни в чем не устапает плюсам. Self-reinforcing loop.

Кстати, C# очень неплох. 3-d редактор написать вполне возможно. Не вижу препятствующих этому причин.

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

Кстати, C# очень неплох. 3-d редактор написать вполне возможно. Не вижу препятствующих этому причин.

А я вижу. Либо будет гвоздями прибито к винде, либо адски тормозить на моно.

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

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

Пруф в студию. Что можно сделать на нём, чего нельзя на кутях? На до-диезе не писал, но 95% виденного мной софта на нём - кривые школоподелия под винду. О чём то это да точно говорит.

это проблема не языка, а его реализации

О да, давайте писать на шарпе. А запустим потом, когда нормальная реализация появится.

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

это проблема не языка, а его реализации

В шарпе как раз реализация хорошая, но как вы написали - анально завязана на оффтопик.

А вот язык - говно. Тащат в него каждый год всё больше и больше, как Страуструп в свое время.

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

А я вижу. Либо будет гвоздями прибито к винде, либо адски тормозить на моно.

Редактор 3d почти всегда будет привязан к системе. Qt - не решение. На маках я бы не стал использовать приложения Qt, а предпочел бы родные на Cocoa.

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

Редактор 3d почти всегда будет привязан к системе.

А разрабы блендера то и не знали!

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

А кривой моно для до-диеза стал-бы?

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

А кривой моно для до-диеза стал-бы?

Передергиваешь. На маках вместо Си++ есть Objective-C. Соответственно, вместо C# будет Obj-C.

Что касается блендера, то там есть выбор?

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

Передергиваешь

Нет ты. Дискуссия про до-диез, а ты про кути.

Что касается блендера, то там есть выбор?

Выбор чего?

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

а ведь она почти ни в чем не устапает плюсам

Если считать метапрограммирование на шаблонах почти ничем - то верно, а так в системе типов Ады не выразить кортежей и итерации по ним, контейнеров типов, expression templates.

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

Если считать метапрограммирование на шаблонах почти ничем - то верно, а так в системе типов Ады не выразить кортежей и итерации по ним, контейнеров типов, expression templates.

Там с 83 года есть генерики. А метапрограммирование в плюсах иногда бывает таким, что лучше его не видеть :) (да, Александреску читал, и мне даже где-то понравилось)

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

А в других мейнстримовых языках и того нет, занимайтесь кодогенерацией на руках. Если конечно не считать Haskell, Racket, CL мейнстримом.

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

но как вы написали - анально завязана на оффтопик.

дык, в этом и проблема :)

Тащат в него каждый год всё больше и больше, как Страуструп в свое время.

при том, что натаскано туда много, выглядит всё гораздо органичнее, чем у Страуструпа

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

Там с 83 года есть генерики

Я в курсе, но отстутствие специализации делает метапрограммирование на них невозможным, что собственно делает невозможным реализцию даже такой простой вещи как traits class.

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

при том, что натаскано туда много, выглядит всё гораздо органичнее, чем у Страуструпа

Тот же притянутый за уши linq совершенно ортогонален синтаксису С#, да и семантике во многих случаях тоже. По сути целый язык в языке.

Тот же F# вполне мог бы стать заменой, но увы.

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

Что я слишком много «тот же» стал употреблять.

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

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

а, это есть, да

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

Тот же притянутый за уши linq совершенно ортогонален синтаксису С#, да и семантике во многих случаях тоже. По сути целый язык в языке.

Ортогональность синтаксисов LINQ и C# это мелочь, по сравнению с тем удобвством, что даёт LINQ(и скоростью, местами).

Norgat ★★★★★
()
Ответ на: комментарий от dave
declare
-- the user construct his own matrix type
type Range3 is range 0 .. 2;
type Matrix33 is array (Range3, Range3) of Integer;
-- then he build a specification package for his matrix,
-- this package will be used later when building high order
-- operations on matrices.
package Matrix33_Spec is new Matrix_Type (Values => Integer,
Height_Range => Range3,
Width_Range => Range3,
Array_Type => Matrix33);
-- Define two dummy matrices.
B : Matrix33 := ((1, 0, 0), (0, 1, 0), (0, 0, 1));
C : Matrix33 := ((0, 1, 0), (0, 0, 1), (1, 0, 0));
-- Instanciate a package for the B matrix
-- (we map an object to a package)
package B_Inst is new Matrix_Instance (Matrix33_Spec, B);
-- the above package can the be used as a Matrix_Expression,
-- it defines a Expr subpackage for this purpose.
package B_Expr renames B_Inst.Expr;
-- idem with the second matrix
package C_Inst is new Matrix_Instance (Matrix33_Spec, C);
package C_Expr renames C_Inst.Expr;
-- Build the expression B*5
package B5_Inst is new Scalar_Binary (B_Expr, 5, "*");
package B5_Expr renames B5_Inst.Expr;
-- Build the expression B*5+C
package Res_Inst is new Binary (B5_Expr, C_Expr, "+");
package Res_Expr renames Res_Inst.Expr;

A : Matrix33; -- where the result will be stored
begin
[...]
Res_Expr.Assign (To => A);
end;

Это код для записи выражения B * 5 + C, Ада рулит теперь С++ точно капец.

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

c другой стороны, можно вспомнить тот же loop в CL :)

Я loop тоже не очень жалую. Iterate, хоть может местами и послабее, более композабельный и понятный (мне).

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

Ну, меня тоже размер удивил :) Тут можно сказать, что успешно работает парадокс Блаба. Можно писать на Аде и оставаться в счастливом неведении относительно expression templates и traits class (без понятия, что это такое).

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

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

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

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

...даже если их нет в природе

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

Я уже три года не программирую на Си++ и вполне обхожусь без traits classes. Честно говоря, они никогда мне не нравились. Можно было бы сказать, что это специфичный для Си++ костыль, но тут надо еще подумать.

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

Это единственная причина использовать Qt :)

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