Re[2]: Посоветуйте литературу
От: _software_engineer_  
Дата: 16.06.11 08:09
Оценка: 43 (7)
Здравствуйте, rumit7, Вы писали:

R>Думаю так:

R>0) то, что указано Вами +
R>1) С.Макконнелл "Совершенный код" must read!
R>2) David R. Butenhof "Programming with POSIX threads". Еще статьи Д.Вьюкова + были очень интересные статьи на сайте data-race.com;
R>3) М.Фаулер "Рефакторинг";
R>4) и все это дело тщательно перемешивать с практикой!

R>P.S. Не могли бы Вы написать отзыв на каждую из перечисленных Вами выше книг? Было бы очень интересно прочитать, какая из книг Вам понравилась и чем?


Ок, кратно выскажу свое мнение.

Здравствуйте, _software_engineer_, Вы писали:

___>Осилил уже

___>(за последние года 3 с половиной)

Effective C++
Здесь разжевываются основы, как употребление const, плюсовые касты (до прочтения книжки просто юзал c-style cast), использование копирующего конструктора и оператора присваивания (в том числе, как запрещать копирование, помещая их в private).
Тут же дается правило не возвращать локальные переменные по ссылке. У меня были с этим траблы даже тогда, когда вроде бы уже год программировал (не на работе, просто для себя) на плюсах.
Отсюда же узнал, что public-наследование следует употреблять только в случае отношения "is-a" между классами.

Effective STL
Еще до прочтения наступил на грабли с std::remove_if и vector<bool> Был в восторге от того, что узнал, как с помощью mem_fun и mem_fun_ref дергать функции-члены у объектов в контейнерах одной строчкой в foreach, а не самописном цикле. А еще писал свой аллокатор.
Много очевидных вещей (для программистов, представляющих, что у стандартных контейнеров под капотом) расписано: не менять значение ключей ассоциативных контейнеров, временная сложность тех или иных операций

How to Think Like a Computer Scientist: Learning with Python
Описываются совсем основы программирования для никогда с ним не сталкивавшихся. Циклы, условия, функции, классы, исключения. На Питоне. Практической пользы для меня было 0, но сильно зацепил Python своим отличием от C-подобных языков

Dive Into Python
Приводятся интересные идиомы Питона, такие как (да, это баян уже)
', '.join(str(i) for i in range(10))
или использование в (убогих) лямбдах трюка с and-or вместо условного оператора.
Генераторы. Являющиеся документацией комменты и еще много вкусного.
Начал использовать юнит-тесты на Питоне как раз после прочтения этой книжки.

C++ Common Knowledge
При небольшом количестве страниц очень высокая концентрация полезных практик для начинающего программиста. Если бы знал, прочитал эту книжку в самом начале освоения плюсов.
Ссылки, const, RAII, чтение и написание хитровывернутого объявления прототипа или указателя на функцию без typedef, на пальцах объясняется инстанцирование и специализация шаблонов, указатели на члены, placement new.
Отсюда мне понравилась техника cross cast.

Introduction to Algorithms
Кормен рулит Хороший справочник по алгоритмам. Решение упражнений про heap (структуру данных) помогло пройти собеседование, т.к. надо было придумать/вспомнить способ отсортировать большой массив int'ов на диске, по условию превосходящий размер оперативки.
Так же справочник пригодился для написания order-statistics tree (тот же велосипед на тему std::map, но еще можно обратиться к элементу по индексу, как в массиве, только за логарифмическое время)

Windows via C/C++
Попала ко мне эта книжка еще в школе переводная под названием "Создание эффективных Win32-приложений с учетом специфики 64-разрядной версии Windows". Сначала слегка разочаровлся в ней: а где же окна, гуй? зачем так много и уныло про потоки, виртуальную память и прочую чушь? на кой мне эти примитивы синхронизации?
А потом выборочно полистал и втянулся. Впервые узнал, что такое выравнивание, какое и зачем нужно. Так же с маппед файлами — писал хэллоу ворлды, которые с начинкой файлов работают, как с массивом. Посмотрел архитектуру памяти. Написал программку, роняющую win 98, записав пару сотен байт по разыменованному указателю сразу после 0x00010000. Сделал первую dll. Узнал про хуки и попробовал писать.
А в прошлом году нашел время почитать свежее издание.

More Effective C++
Из полезного для меня на момент прочтения — разжевывание виртуального наследования и proxy-классы.

Design Patterns
Та самая книжка GoF. Ожидал, что паттерны будут сложнее, чем они оказались на самом деле. Очень вовремя попался на глаза Command и позволил намного проще, чем я пытался сделать сам, реализовать изменение настроек в приложении с возможностью отката и возврата.
Не понравился Template Method (зачем наследоваться, чтобы всего навсего виртуальную функцию переопределить? не лучше ли упряжка из Factory и Strategy, где конкретно в плюсах фабрике будет передаваться функтор... а, ладно, это мысли вслух).

Head First Design Patterns
Меньше паттернов расписывается, но более полезных и часто встречаемых. Например, Observer и Command. Пожалуй, было бы лучше начать знакомство с паттернами именно с этой книжки, а только потом перейти к GoF.
Немного раздражают примеры на Java)

Bundle of Algorithms in C++
Мне показалось, что читается легче Кормена. На практике пока ничего применять не довелось. Так только, пришло легкое просветление на тему, что притянуть под задачу о потоке минимальной стоимости
Отступление в сторону. На втором курсе "Discrete Mathematics with Combinatorics" Андерсона здорово помогло понять на пальцах сортировки слиянием, пирамидальную быструю, бинарные деревья поиска, bfs и dfs поиск на графах, поиск кратчайшего пути и основы динамического программирования, посчитать нод методом Евклида, найти простые числа решетом Эратосфена и много-много-много всего. Вроде бы не программирование совсем, но здорово вставило. До сих пор все помню.

C++ Templates: The Complete Guide
Описан поиск Кёнига. Также помогло осилить, как писать traits. Еще интересной показалась идиома expression templates, только пока на практике не нашел, куда бы применить не для арифметики.
Читалось весьма туго.

Exceptional C++
Тема, как писать exception safe and exception neutral классы, раскрыта более чем.
Еще раз отношение между классами is-a, has-a, implemented-in-terms-of. Наследование vs композиция.
После прочтения стало бросаться в глаза, что в нашем проекте даже basic exception guarantee не обеспечивается

More Exceptional C++
Наконец-то увидел пример техники copy-on-write. Раньше много раз слышал, но было то некогда, то лень посмотреть.
Вообще книжки Саттера понравились именно стилем в форме задач, чтобы сначала самому попыжиться, дойти до решения.
Задача написать функцию, возвращающую указатель на себя.

Modern C++ Design
Пока еще не дочитал.

Не совсем обзор получился. Могу
Посоветуйте литературу
От: _software_engineer_  
Дата: 14.06.11 21:41
Оценка: 33 (4)
Осилил уже
(за последние года 3 с половиной)

Effective C++
Effective STL

How to Think Like a Computer Scientist: Learning with Python
Dive Into Python

C++ Common Knowledge

Introduction to Algorithms

Windows via C/C++

More Effective C++

Design Patterns
Head First Design Patterns

Bundle of Algorithms in C++

C++ Templates: The Complete Guide

Exceptional C++
More Exceptional C++

Сейчас читаю
Modern C++ Design

Посоветуйте, в каком направлении продолжать грызть профессию?
Что стоит освоить по TCP/IP?
Что по многопоточному программированию?
Глубже копнуть в WINAPI?
Или основы POSIX? (это не связано с моей работой... возможно, пока что)

З.Ы.
Запарился ссылки вставлять

З.З.Ы.
Перечислил литературу на аглицком, ибо читал и читаю в оригинале, не полагаясь на добросовестность переводчиков
c++ must read best practices
Re: Посоветуйте литературу
От: jyuyjiyuijyu  
Дата: 14.06.11 23:21
Оценка: +1 -1
Здравствуйте, _software_engineer_, Вы писали:
___>Запарился ссылки вставлять
начинайте какой нить проект по пути миллион раз переделаете его архитектуру
и всему научитесь а что толку книжки без практики только время зря теряете
"Тот, кто учится не размышляя, впадет в заблуждение. Тот, кто размышляет, не желая учится, окажется в затруднении."
— Конфуций
Re: Посоветуйте литературу
От: rumit7  
Дата: 15.06.11 13:01
Оценка: +1
Здравствуйте, _software_engineer_, Вы писали:

___>Осилил уже

___>(за последние года 3 с половиной)
___...
___>Сейчас читаю
___>Modern C++ Design
___>Посоветуйте, в каком направлении продолжать грызть профессию?

Думаю так:
0) то, что указано Вами +
1) С.Макконнелл "Совершенный код" must read!
2) David R. Butenhof "Programming with POSIX threads". Еще статьи Д.Вьюкова + были очень интересные статьи на сайте data-race.com;
3) М.Фаулер "Рефакторинг";
4) и все это дело тщательно перемешивать с практикой!

P.S. Не могли бы Вы написать отзыв на каждую из перечисленных Вами выше книг? Было бы очень интересно прочитать, какая из книг Вам понравилась и чем?
Re: Посоветуйте литературу
От: jyuyjiyuijyu  
Дата: 14.06.11 23:27
Оценка:
"Тот, кто читает книжки по программированию не программируя, впадет в заблуждение. Тот, кто программирует, не желая читать книжки по программированию, окажется в затруднении."
я примерно также думаю
Re: Посоветуйте литературу
От: jazzer Россия Skype: enerjazzer
Дата: 15.06.11 01:17
Оценка:
Здравствуйте, _software_engineer_, Вы писали:

___>Осилил уже

___>(за последние года 3 с половиной)

___>How to Think Like a Computer Scientist: Learning with Python

___>Dive Into Python

Раз уж ты погрузился и в С++, и в Питон, можешь заботать Boost.Python и продавать себя заодно как специалист по интеграции/скриптованию плюсовых программ Питоном.

___>Сейчас читаю

___>Modern C++ Design

Если интересуюет метапрограммирование на шаблонах — можешь прочитать одноименную книжку Гуртового-Абрахамса
C++ Template Metaprogramming: Concepts, Tools, and Techniques from Boost and Beyond

___>Посоветуйте, в каком направлении продолжать грызть профессию?

___>Или основы POSIX? (это не связано с моей работой... возможно, пока что)

Лучше всего — то, что хоть как-то связано с твоей работой, в первую очередь потому, что ты сможешь это попробовать в реальной жизни.
Либо что-то общего назначения, типа библиотек буста — их тоже можно где угодно использовать, и твою стоимость это поднимет.
jazzer (Skype: enerjazzer) Ночная тема для RSDN
Автор: jazzer
Дата: 26.11.09

You will always get what you always got
  If you always do  what you always did
Re[3]: Посоветуйте литературу
От: _software_engineer_  
Дата: 16.06.11 08:10
Оценка:
Здравствуйте, _software_engineer_, Вы писали:

___>Не совсем обзор получился. Могу

подробнее ответить, если интересует что-то конкретное
Re: Посоветуйте литературу
От: Sergey Chadov Россия  
Дата: 16.06.11 15:34
Оценка:
Здравствуйте, _software_engineer_, Вы писали:


___>Посоветуйте, в каком направлении продолжать грызть профессию?

___>Что стоит освоить по TCP/IP?
___>Что по многопоточному программированию?
The Art of Multiprocessor Programming
ну и ремарка

___>Глубже копнуть в WINAPI?

винапи большой, книг про все сразу лучше Рихтера имхо нет
по отдельным аспектам — может быть, тот же Фень Юань

По алгоритмам несомненно Кнута

По общим вопросам — Code Complete и Фаулера
Re[2]: Посоветуйте литературу
От: xploid.razor  
Дата: 16.06.11 18:07
Оценка:
Здравствуйте, jyuyjiyuijyu, Вы писали:

J>Здравствуйте, _software_engineer_, Вы писали:

___>>Запарился ссылки вставлять
J>начинайте какой нить проект по пути миллион раз переделаете его архитектуру
J>и всему научитесь а что толку книжки без практики только время зря теряете
J>"Тот, кто учится не размышляя, впадет в заблуждение. Тот, кто размышляет, не желая учится, окажется в затруднении."
J> — Конфуций

А вот какую такую задачу придумать, чтобы попрактиковаться в С++ и его свойствах?
Re[3]: Посоветуйте литературу
От: jyuyjiyuijyu  
Дата: 17.06.11 00:15
Оценка:
Здравствуйте, xploid.razor, Вы писали:

XR>А вот какую такую задачу придумать, чтобы попрактиковаться в С++ и его свойствах?

да не задачу а проект программы любой что вам интересно программировать
я например связался с одной программкой (один клиент) еще вообще зеленый
но вот прошел год (учился читал книжки попутно ее модифицировал и дописывал)
и я многому научился сама программа ценности не имеет но опыт получил
огромный синтетические примеры по книжке это конечно хорошо но не то
Re[4]: Посоветуйте литературу
От: xploid.razor  
Дата: 17.06.11 04:46
Оценка:
Здравствуйте, jyuyjiyuijyu, Вы писали:

J>Здравствуйте, xploid.razor, Вы писали:


XR>>А вот какую такую задачу придумать, чтобы попрактиковаться в С++ и его свойствах?

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

Если брать клиент-серверное приложение, то что лучше почитать?
Re[5]: Посоветуйте литературу
От: jyuyjiyuijyu  
Дата: 17.06.11 05:23
Оценка:
Здравствуйте, xploid.razor, Вы писали:

XR>Если брать клиент-серверное приложение, то что лучше почитать?

да там помимо сетевой специфики будет много всего что надо будет сделать
какая книжка по сетевому программированию не принципиально
нет книжки лучше или хуже будут возникать задачи будеш искать решения
только тогда накапливается опыт а не от чтения хорошей или плохой книжки
Re[6]: Посоветуйте литературу
От: xploid.razor  
Дата: 17.06.11 18:23
Оценка:
Здравствуйте, jyuyjiyuijyu, Вы писали:

J>Здравствуйте, xploid.razor, Вы писали:


XR>>Если брать клиент-серверное приложение, то что лучше почитать?

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

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