Kitap İncelemesi: C# in Depth
Bu makaleyi ilk olarak kendi kişisel blog’umda geçen hafta (2023–05–06) yayınladım. Makaleyi İngilizce okumak için aşağıdaki linki kullanabilirsiniz:
Herkese merhaba,
Bu yazıda en popüler C# kitaplarından biri olan C# in Depth hakkındaki düşüncelerimi paylaşıyor olacağım. Kitabı henüz bitirmedim ve şu anda hala okumaktayım (son 4 bölüm). Kitabın yarısından fazlasını okudum ve kitapla ilgili ilk izlenimlerimi kısaca anlatabileceğimi düşündüm.
C# in Depth
C# in Depth, tanınmış bir geliştirici ve şu anda StackOverflow’da en çok katkıda bulunan (en yüksek puanda olan) Jon Skeet tarafından yazılmış bir kitap ve oldukça uzun ve geniş bir konuyu kapsıyor. C# dilinin gelişim sürecini önemli özellikler göz önünde bulunarak olabildiğince derinlemesine ele alıyor.
Bu kitap, C# dilinin potansiyelini ortaya çıkaran ilgi çekici bir kılavuz niteliğinde. Bu kitapta Jon, C# dilini derinlemesine inceliyor ve C# 1'den C# 7'ye kadar olan özelliklerden ve bu özelliklere neden gereksinim duyulduğundan (bu özelliklerin geliştirilmesinin altında yatan nedenlerden) bahsediyor. Ayrıca, kitabın dördüncü baskısını yazdığında daha yayınlanmamış olan C# 8 ve sonrasından da kısaca bahsediyor.
Kitap 4 kısım ve 15 bölümden oluşmakta:
Gelelim kitabın iyi ve kötü yanlarına, okuyarak öğrendiklerime, bu kitabı kimler okumalı gibi konulara…
İyi Yanları
- Jon, C# özelliklerinden sohbetvari bir şekilde bahsediyor ve bu da kitabı oldukça okunabilir kılıyor.
- C# dilinin gelişimini ayrıntılı bir şekilde görebiliyorsunuz. (çok detaylı olmasa bile — genel bir bakış açısı kazandırıyor)
- Kitap kronolojik olarak sıralanmış (C# 1 den C# 7 ye adım adım bir anlatım söz konusu), bu nedenle dilin gelişimini gerçekten adım adım görebiliyorsunuz.
- Yeni özellikler ve nedenleri (bu özelliğe neden ihtiyaç duyulduğu, günlük kod tabanımızda bize nasıl yardımcı olduğu, kullanmalı mıyız vb. konular) çok iyi anlatılıyor.
- C#’taki özellikleri göstermek için basit ve güzel örnekler sunuyor.
- LINQ ve Async bölümleri gerçekten harika ve bilgilendirici. (çok derin ve detaylı olmasa bile, genel olarak güzel bir anlatım mevcut. compiler ve runtime’ın bizim için hallettiği kısımlar da dahil olmak üzere güzel bir şekilde ele alınıyor bu bölümler)
- Kitapta, derleyici tarafından üretilen kodları sık sık görüyoruz ve bu, işlerin arka tarafta nasıl gerçekleştiğini göstermenin çok iyi bir yolu bence. Bu, yazdığınız koddan emin olmak ve neler olup bittiğinin farkında olmak için gerçekten önemli! (async bölümünde basit bir state machine implementasyonuna kadar birçok derleyici tarafından oluşturulan kod kitapta gösteriliyor ve basitçe gerçekleşen işlemler anlatılıyor.)
Kötü Yanları
Kitabı genel olarak beğendim ve bence tek bir kötü yanı var:
- dynamic ve DLR’den kısaca bahsediliyor. Böylesine karmaşık bir konu için daha fazla ayrıntı beklerdim, çünkü kitapta bu konulardan yetersiz ve biraz fazla hızlıca bahsedildiğini hissettim.
Bunun dışında, bence kitap isminin hakkını vererek, C# dilini -olabildiğinde- derinlemesine ele alıyor.
Kitaptan Öğrendiklerim
Açıkçası, beklediğimden daha fazla şey öğrendiğimi söyleyebilirim. Spesifik olarak, LINQ’u günlük kodumda sık sık kullanıyorum, ancak hiçbir zaman ayrıntılı olarak inceleme fırsatım olmadı (daha önce implementasyonunu kısaca incelemiştim ama detaylı bir inceleme değildi), LINQ bölümünü okuduktan sonra artık LINQ hakkında çok daha kapsamlı bir anlayışa sahibim ve dilin tüm parçalarının çalışmasını sağlamak için nasıl bir araya geldiğini daha iyi biliyorum. (LINQ bölümünü okuduktan sonra, implementasyonlarını da açıp kodsal olarak inceleme fırsatım oldu, ilgili bölümü okuduktan sonra incelemenizi size de öneririm.)
Uyarılarıyla birlikte bazı özellikler hakkında iyi ipuçları öğrendim. Ayrıca bu kitabın dynamics ve DLR bölümlerini okuduktan sonra bu özelliklerle ilgili güzel makaleler buldum ve okuma fırsatım oldu. Kitabın beni bu özellikleri derinlemesine öğrenmeye zorlaması benim açımdan çok iyi oldu. İlgili konular hakkında daha detaylı bilgi elde etmemi sağladı.
Her bölümü okuduktan sonra biraz ara verip bölüm üzerinde düşünmenizi ve kitaptaki özelliklerin kodlarını uygulamanızı/denemenizi öneririm. Bu, ilgiliş özelliği daha akılda kalıcı hale getirecek ve günlük kod stilinizde kullanmanıza yardımcı olacaktır. Özelliği bilseniz bile ara verip denemekte fayda var diye düşünüyorum. Özellikle derleyici tarafından oluşturulan kodları incelemek çok faydalı (bunun için sharplab.io yu kullanabilirsiniz). En azından kitabı okurken benim yaptığım şey buydu.
Bu nedenle, kitabı, dilin derinliklerine inerek sizi daha özgüvenli ve bilgili bir geliştirici yapmak için kullanılabilecek bir merdiven olarak düşünmenin faydalı olduğunu düşünüyorum.
Kimler Okumalı?
Genel olarak, bu kitabı her C# geliştiricisine kesinlikle tavsiye ederim. Her geliştiricinin bu kitaptan ufakta olsa elde edeceği bilgiler olduğunu ve düşünce yapınızı (mindset) geliştireceğini düşünüyorum. Kitapta bir önceki bölümlerde de bahsettiğim üzere C# dilinin ve .NET platformunun gelişiminden bahsediliyor genel olarak.
Dolayısıyla, C# dilinin internal yapısını öğrenmeye istekliyseniz ve C#’ın belirli özellikleri altında yatan nedenleri (ilgili özelliğe neden ihtiyaç duyulduğu, ne sebeple geliştirildiği vs.) versiyon versiyon öğrenmek istiyorsanız, bence bu kitap aradığınız kitap. C# dilinin iç yapısını merak etmiyorsanız bu kitabı okumanıza gerek yok diye düşünüyorum.
Okuduğunuz için teşekkürler ve bir sonraki yazımda görüşmek dileğiyle…