C# (вимовляється «Сі-шарп») — одна з найпопулярніших мов програмування у світі. Має безпечну систему типізації, використовується для розробки веб-, десктопних та мобільних програм, ігор тощо. Її синтаксис близький до С++ і Java. Чи можна вивчити C# за книгами та як це зробити, як обрати літературу початківцям та що почитати, щоби поглибити знання? Борис Салтан, Head of Delivery в SUITSME, та Юрій Нероба, Unity Lead в Holy Water, діляться найкращими книгами з програмування. Нижче дві підбірки — для початківців, які тільки знайомляться з ООП та цією мовою, та для розробників рівнів Middle та Senior, щоби поглибити знання в різних напрямах (патерни, шейдери, архітектура тощо).
C# книги для початківців
Це фундаментальна книга про C# і пов’язану з цією мовою програмування інфраструктуру. У ній можна дізнатися про основи ООП, атрибути та рефлексії, узагальнення та колекції, коди операцій CIL та безліч практичних прийомів.
Цей посібник, хоч і описує версію 4.0, але містить повну інформацію про C#, мовні засоби та професійні рекомендації. У цій книзі багато конкретних прикладів, тому вона досить легка в засвоєнні й буде корисною розробникам усіх рівнів.
Книга пояснює, що таке патерни, як вони виглядають, працюють та як їх використовувати у власному коді. «Напевно, ваше завдання хтось вже вирішував» — ця фраза починає перший розділ та передає загальний сенс патернів проєктування.
Книга поділена на 14 розділів: спочатку автори пояснюють основний принцип патернів, далі докладно розбираються десять патернів, їхні складові та можливі комбінації. Останні розділи розповідають про застосування патернів у реальних завданнях та пропонують їхню класифікацію та різновиди. Містить багато ілюстрацій, які допомагають глибше зрозуміти суть матеріалу, та вправ, які не варто пропускати.
Чистий Код, Роберт Мартін (укр.)
Оскільки розробники працюють у компанії та часто взаємодіють із кодом своїх колег, важливо навчитися писати структурований код, який легко читається. З цим має допомогти книга «Чистий код» Роберта Мартіна. Хоча в прикладах використовується Java, описані принципи легко застосовуються в інших мовах програмування.
C# книги для Middle та Senior розробників
CLR via C#. Програмування на платформі Microsoft .NET Framework 4.5 мовою C#, Джеффрі Ріхтер (англ.)
Отримавши базові знання мови програмування С#, варто прочитати цю книгу, яка детально описує принципи роботи середовища CLR. Вона дає більш поглиблене розуміння, як усе працює. Її також читають як початківці, так і більш досвідчені спеціалісти.
Автор стверджує, що ця книга — для творчих програмістів, розробників ігор та інженерів, які мають досвід програмування, базові знання лінійної алгебри та тригонометрії і бажають вивести свою роботу на новий рівень якості графіки. Вона навчить їх використовувати та інтегрувати шейдери у свої проєкти, щоб поліпшити їхню продуктивність і графічну якість.
«Це крута та структурована книга про те, як влаштовані шейдери. Вона проведе читача від легкого вступу з крутими прикладами (copy-paste-run) до того, як працює Ray Marching. Це моя особиста рекомендація», — ділиться Юрій Нероба.
Ця книга — також для тих, хто має базові знання. Її автор — легендарний C# розробник Джон Скіт, що неодноразово отримував премію Microsoft MVP за внесок у розвиток цієї технології, зараз працює в Google. Він детально розбирає нюанси й тонкощі C#, проводить читача всіма темними закутками мови та виводить на зовсім новий рівень розробки.
Ще одна книга про патерни, що містить приклади та корисні кейси їхнього застосування в розробці ігор. Описує класичні шаблони проєктування, що найчастіше використовуються в іграх, та загальні питання архітектури, розділивши їх на чотири групи — послідовності, поведінки, декомпозиції та оптимізації. Приклади в книзі наведені на C++, але без специфічних складних конструкцій, притаманних лише цій мові. Тому їх можуть прочитати та зрозуміти усі, хто знайомий з синтаксисом групи С.
Автори діляться шаблонами двадцяти трьох патернів та принципами їхнього використання в архітектурі складних систем. У мережі ця книга викликає багато дискусій серед розробників: одні вважають її застарілою, інші — вдалим довідником з патернів, з яким має ознайомитись кожен мідл-розробник.
Книга допоможе розширити та структурувати знання з моделювання предметних областей, їхню побудову й аналіз. Автор пропонує конкретні практичні методики, а також моделі та архітектури для систем будь-якої складності. На відміну від інших книг, в яких доволі часто пропонуються абстрактні приклади, ця книга дає розуміння, з чого почати проєктувати систему і в якому напрямі рухатися далі.
Як вивчати С# за книгами
Від 2001 року вийшло десять версій мови C#. Остання з них — 10.0 — зʼявилася 2021 року для платформи .NET 6.0. Більшості з цих версій були присвячені окремі книги, що виходили протягом останніх 20 років. Тільки один з авторів — Ендрю Троєлсен, програміст в Thomson Reuters, — випустив близько 15 книг, присвячених різним версіям C# та платформи .NET. Тим, хто починає вивчати програмування з нуля, досить складно орієнтуватися в цих бібліографіях та обрати між версіями 4.0, 7.0 чи 9.0, наприклад.
«ІТ-індустрія стрімко розвивається, але проблема застарівання книг переоцінена. Якщо початківець прочитає видання по C# навіть 2010–2012 років, він зрозуміє, як писати код. Остання версія мови різниться за фічами, які додалися за цей час, та проведеними оптимізаціями, але цю інформацію можна вивчити в документації коду. Якщо ти — початківець, не варто гнатися лише за найсвіжішими виданнями», — каже Борис Салтан.
Якщо ви щойно прийшли в програмування, варто комбінувати книги з відеоуроками та вивченням інших матеріалів в інтернеті. «Обмежуватися суто книгами — недоцільно, щонайменше, з точки зору навігації. Адже значно зручніше загуглити питання та швидко знайти відповідь. Однак книги — це те, що треба для розширення знань і вивчення нових механізмів», — каже Юрій Нероба.
Книга — добре структурований матеріал, але варто сприймати її як один з багатьох інструментів вивчення мови, стверджує Борис Салтан. «Просто прочитавши книгу, ви не навчитеся кодити. Без практики ця інформація не засвоюється. Найкращий метод вивчення — коли сідаєш за компʼютер і пишеш код, щось не виходить, і ти з цією проблемою починаєш шукати рішення в книзі. Код є первинним», — пояснює він.