Björn Andrist, Viktor Sehr. C++ High Performance: Master the art of optimizing the functioning of your C++ code, 2nd Edition (2020)

Це не та книга з якою треба знайомитися з С++, і навіть не та з якою треба поновлювати свої колишні знання мови. Також це не книга для тих кому треба детально розібратися в певному аспекті найсучаснішого стандарту С++.

Призначення та аудиторія книги – програмісти які активно пишуть на С++, але через різні обставини лише чули про нововведення мови і не мали нагоди їх використовувати ще. Чому так стається інше питання – велика та застаріла кодова база, залежність від бібліотек та компіляторів які не підтримують нові стандарти та можливості і таке інше.

На моїй поточній роботі (на момент написання це Facebook) команда в якій я працюю використовує практично найсвіжіший стандарт і ті самі корутіни у по всьому коду (і це круто – легше читати та слідкувати за логікою, менше писати).

У книзі якраз йдеться про нові можливості як діапазони (ranges), управління пам’яттю, виконання під час компіляції. Але особливо багато уваги приділено корутинами та пов’язаними з ними темами як відкладена ініціалізація, проксі-об’єкти та інше. Також трошки розказано про паралельні алгоритми та бібліотеки для їх підтримки, але не надто глибоко.

І мені особисто книга стала дуже до нагоди – я достатньо знаю щоб розуміти авторів і не починати з базових речей, а вони дають матеріал так, щоб заповнювати пробіли в моїх знаннях саме нововведень.

Оцінки:

Alex Xu. System Design Interview – An Insider’s Guide (2020)

В процесі проходження технічних співбесід на посаду програміста крім власне розв’язання задачок з написанням коду від вищого рівня працівників очікують розуміння системного дизайну, знання про існуючі технології та способи розв’язання відомих проблем та вміння все це правильно застосовувати.

Ось ця книга є збіркою таких задач де їх невелика кількість (спроектувати аналог youtube, систему нотифікації, чат, тощо) приведення з детальним поясненням того, що і чому треба питати для уточнення задачі, на що звертати увагу, з чого починати дизайн, які є відомі рішення та їх нюанси, в які деталі можна і варто заглиблюватися.

Причому все це приведено не просто в стилі “запам’ятайте як правильно”, а більше так, що показати хід думок та чому вибрано те чи інше рішення.

Коли треба автор заглиблюється в деталі, в багатьох випадках зупиняється на дизайні більш високого рівня. Але до всіх задач і тем є список додаткових матеріалів і прикладів як подібний дизайн зроблено у великих компаніях.

Мені книга здається надзвичайно корисною. Навіть якщо ви все знаєте (а це навряд чи) то навіть сама її структура яка впорядковує знання та показує послідовний підхід буде корисною.

До того ж автор проводив багато інтерв’ю саме з дизайну систем і викладення з його точки зору теж є цікавим.

Оцінки:

John Mongan, Eric Giguere, Noah Suojanen. Programming Interviews Exposed: Secrets to Landing Your Next Job (Programmer to Programmer) (2000)

Ще одна книга з тих які допомогають підготуватися до інтерв’ю на посаду програміста.

У книзі невелика частина присвячена резюме, тому як проводити перемовини, як домовлятися за зарплатню та інше подібне. Але ці частини занадто загалінь і на мою думку будуть у нагоді лише тим хто робить це вперше.

Більша ж частина книги присв’ячена задачам та їх рішенню. І на відміну від найбільш відомої та популярної книги цього типу Cracking the Coding Interview є кілька суттєвих відмінностей:

  • Кількість задач в цій книзі добре якщо складає три десятки, в той час як у згаданій вище задач сотні.
  • Самі задачі доволі прості з моєї точки зору і мене як правило просять розв’язувати складніші.
  • У книзі дуже велику частину приділено поясненю задачі та різним способам її розв’язання. Знову ж таки у порівнянні з більш відомою книгою де задача та поясення рішення викладено у кілької реченнях.

На мою думку це хороша книга (повторюся) для тих хто лише на початку своєї кар’єри – ознаймитися з типами задач, з тим як підходити до пошуку рішення, як думати про перевріку та тестування, які додаткові питання задавати. Комусь рівня Senior чи вище цієї книги буде явно не достатньо.

Оцінки:

Tomas A. Standish. Data Structures, Algorithms & Software principles in C (1994)

 

Перемішано у книзі абсолютно все – структури даних, алгоритми, математика, основи С та С++, розбиття файлів на модулі і таке інше. Через це книгу читати в нормальному розумінні цього слова просто неможливо – тривіальні "знання” абсолютно неочікувано містять у собі фрагменти більш складних тем.

Книгу можна було б використовувати як довідник, але і тоді важко знайти те що вам треба. Наприклад опис алгоритму, його реалізація, оцінка складності та порівняння з іншими може бути розкидано на сотні дві сторінок, а то й більше.

Gregory J.E. Rawlins. Compared to What: An Introduction to the Anaylsis of Algorithms (1991)

 

 

Це книга про алгоритми. Вірніше про те як їх вимірювати – які дані збирати і що вони означають.

Дуже багато математики – формули, таблиці, графіки. Зустрічається псевдокод в обсязі не більше 20 рядків на 10 сторінок текста, а то і менше. Читати доволі складно.

Безсумнівно прочитати було б корисно, але не скажу що ця книга є чимось обов’ясковим для девелопера. Занадто багато теорії і вимагає навичок читання математичної літератури. І явно не найкраща книга якщо вам треба просто подивитися в чому суть того чи іншого алгоритму.

Michael T. Goodrich, Roberto Tamassia, David M. Mount. Data structures and algorithms in C++ (2002–2011)

 

 

Одна з найкращих книг з алгоритмів і структур даних які я бачив.

Зовсім трошки математики на початку, причому найпростішої (навіть я її зрозумів). Далі перемішані структури даних (теорія) та їх реалізація на С++ (з шаблонами) з алгоритмами сортування, пошуку, тощо.

В книзі багато теорії, але зовсім нема води. Читакти дуже цікаво. Навіть сорци на С++ не зайві.

Коротше це та книга яку варто мати на столі та раз в пару років переглядати.

Я вставив обкладинку першого видання, але вже є третє від 2011 року.

Сайт – http://cpp.datastructures.net/

C# 4.0 на примерах–книга від автора

 

Ось ця книга – http://www.ozon.ru/context/detail/id/5642213/

Чому я про неї пишу? Та просто автор працює зі мною на одному поверсі, в сусідній команді. От роздавав російський переклад своєї книги. З автографом (:

Ну ото таке.

Книгу ще не читав, що до чого не знаю.

Gale Laakhman. Cracking the coding interview

 

Авторка працювала програмістом у головних компаніях софтверної індустрії – Microsoft, Apple, Google, Yahoo та Amazon, а також у декількох менш відомих компаніях.

 

Книга по суті є задачником (з рішеннями) питань які найбільше зустрічаються на інтерв’ю в перелічені компанії. Задачі поділені на групи (рядки, списки, математика, многопоточність, головоломки, тощо).

 

Також є невеличкі розділи з приводу того що писати в резюме, як вести себе на інтерв’ю, як проходить сам процес в кожній з компаній і таке інше.

 

Хороша книга коротше.

 

І у авторки зараз своя компанія яка займається кар’єрою програмістів – http://www.careercup.com/. На сайті є обговорення різних задачок і рішень, сервіси щодо покращення резюме та імітації процесу інтерв’ювання.