Mlliyet Milliyet Blog Milliyet Blog
 
Facebook Connect
Blog Kategorileri
 

19 Ocak '09

 
Kategori
Yazılım
 

Bir tek kitap okunarak programcı olunur mu?

Bir tek kitap okunarak programcı olunur mu?
 

Birkaç gün önce bir kitap satış sitesinde bir yorum gördüm. Yakın bir zamanda yayınlanan C# 3.0 kitabımla ilgili olarak birisi “kitabı okusan bile uygulama geliştiremiyorsun” diye eleştiri getirmiş. Yani arkadaşımız 1100 sayfalık kitabı alıp hızlıca okumuş. Aradan 1 ay geçmeden profesyonel işi programlar yazamamasından Memik Yanık'ın kitabını sorumlu tutuyor. Tabi yorum yazan arkadaşımız bununla da yetinmiyor; Memik Yanık’a bir güzel akıl veriyor. Akıl vermesine, öneride bulunmasına bir itirazım yok(bilenler bilir MSN’de herkesi nasıl dinlediğimi…) ama hem C# konusunda yolun başında olduğunu ima edit gidip kitap alacaksın hem aradan kısa bir süre geçtikten sonra “bu kitabı okusan bile uygulama geliştiremiyorsun” diyeceksin hem de konunun uzmanı gibi eleştiride bulunacaksın.

Öncelikli amacım yorumu yazan arkadaşa cevap vermek değildir. Çünkü biliyorum ki yıllardır Memik Yanık tarafından yazılan kitaplar az satsın diye seferber olmuş çok sayıda bilişimci var. Memik Yanık’ı karalamayı zevk edinmiş olanları bir yana bırakalım ve yukarıda verdiğim soru üzerinde biraz duralım. Zira yakın bir zamanda bazı arkadaşlar Memik Yanık'ın yeni çıkan C# ve VB kitapları az satsın diye seferber olacaklardır, var güçleriyle çalışacaklardır. Bu arkadaşlar keşke bunu yapmaya çalışmadan önce biraz kendilerini donatsalar, varsa kitaplarımın falsolarını ortaya çıkarsalar. Alın size sözünü ettiğim yorumdan bir cümle:“MSDN deki makale ve dökümanları toparlamış ve bir sıraya koymuş dizmiş kafasına göre ve türkçeye çevirip yayınlamış”. Sanki yorumu yapan arkadaş bu kitabı yazarken yanımdaymış. Bu arkadaşa "Memik Yanık çeviri yapacak kadar İngilizce bilmez dersem" ne der bilemem? Memik Yanık aleyhine bir şeyler yazmaktan vazgeçerler mi? Pek sanmam. Bu yorumu merak edenler şu linke bakabilirler:

http://www.kitapyurdu.com/kitap/default.asp?id=442322&session=53476622881214184202&LogID=

İlk olarak 15 yıl öncesine gidelim. Bundan 15 yıl önce bazı programcılar eski alışkanlıklarını sürdürüp Cobol ile uygulama geliştiriyorlardı. Bazıları ise Cobol’u bırakmış Clipper kullanıyorlardı. Her iki programlama dili de veritabanı ağırlıklı olduğu için Cobol ve Clipper üzerine yazmak isteyenler direk veritabanı işlemlerinden söz ederlerdi. Örneğin 1994 yılında yayınlanan Clipper kitabımın sayfalarının büyük bir yüzdesinde veritabanı işlemlerinden söz ediliyordu. Ötesi profesyonel bir Clipper programcısının gerek duyacağı bütün bilgileri 500 sayfada anlatmak mümkün olmuştu. Ancak aynı şeyleri C# ve diğer .NET dilleri için söylemek mümkün değildir. Öncelikle programcı adayının nesneye yönelik programcılıkla ilgili temel kavramlara sahip olması ve özümsemesi gerekiyor. Clipper’da ve Cobol’da değişkenleri 3-5 sayfada anlatmak mümkün iken C#’ta değişkenlere en az 30-40 sayfa ayırmak gerekiyor. Diğer yandan Assembly nedir, Namespace nedir sorularına doyurucu cevap veremeyen birisinin .NET programcılığına hazır olduğunu kim ileri sürebilir?

Varsayalım ki programcı adayımız Visual Studio veya Express Edition ile bir C# projesi hazırladı. Forma birkaç Button ve TextBox yerleştirdi. Sonra bu Button nesnelerinin birisini çift tıklayıp Visual Studio’nun açtığı kod penceresinde Button nesnesi için kod yazmaya başladı. Şimdi bazılarınız diyecek ki “ne var bunda, sonuçta programcı tasarım anında düğmeyi çift tıklar ve açılan pencerede kod yazar”. Bir bakıma bu söylenenler doğrudur. Ne ki tasarım anında düğme çift tıklandığında geri planda gelişen olaylar hakkında net bilgiye sahip olmayanlar günün birisinde sorun yaşarlar. Örneğin Button nesnesi ile ilgili olarak geri planda gelişen olaylardan habersiz birisine Windows’un mesajlarının nasıl yakalandığını anlatmak zordur.

Memik Yanık’ın C# 3.0 kitabını baştan sona değerlendirmeden önceden sizlere Memik Yanık kitaplarının bir özelliğinden söz edeceğim. Bu amaçla Visual Studio’nun her Form için otomatik olarak hazırladığı xxx.Designer.cs dosyasının içeriğini size göstereceğim. Lütfen Visual Studio veya C# için hazırlanmış Express Edition tarafından hazırlanan bu kodu biraz yakından inceleyin. Fark ettiyseniz bu kodda components adında bir değişken tanımlanmış.

partial class Form1

{

private System.ComponentModel.IContainer components = null;

protected override void Dispose(bool disposing)

{

if (disposing && (components != null))

{

components.Dispose();

}

base.Dispose(disposing);

}

private void InitializeComponent()

{

this.SuspendLayout();

this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);

this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;

this.ClientSize = new System.Drawing.Size(329, 203);

this.Name = "Form1";

this.Text = "Form1";

this.ResumeLayout(false);

}

}

Şimdi önce elinizdeki C#’la ilgili bütün kaynaklara(yani kitaplara ve notlara) iyice bir bakın, bu components adlı değişkenin işlevi hakkında açıklama var mı yok mu? Elinizde C# konulu kitap yoksa bu kez arama motorlarından yararlanıp components adı verilen Container nesnesi hakkında bilgi toplamayı deneyin. Tabii ki C# konusunda yeterince tecrübeliyseniz ve Container nesnesi hakkında daha önce bilgi edindiyseniz durum değişir. Yani bu durumda sorum size değildir.

Bu kod hakkındaki açıklamayı ve yazının devamını birkaç gün sonra sizlerle paylaşacağım. Tabii elinde C# 3.0 kitabım olanlar Google’ın listelediği binlerce siteyi saatlerce ziyaret etmek yerine kitabın ilgili sayfalarına 5-10 dakika bakıp components adlı değişkenin işlevi hakkında ayrıntılı bilgiyi hemen edinmişlerdir.

Bazı arkadaşlar çıkıp madem bu Components adlı değişken pek kullanılmıyor o halde üzerinde durmanın ne alemi var diyebilirler. Bir bakıma böyle bir görüşü ileri sürenler haklıdırlar. Birkaç gün sonra bu konu ile ilgili olarak yazacaklarıma temel oluşturması bakımından konunun meraklısı arkadaşlara ikinci bir soru yöneltmek istiyorum: Tasarım anında forma yerleştirilen Button, TextBox, ListBox vs gibi nesneleri neden dispose etmek gerekmiyor? Tabi sizlere bu soruyu yöneltirken amacım kimseyi imtihan etmek değildir. Amacım arkadaşları mevcut C# kitaplarını(yerli yabancı fark etmez) bu konu bağlamında değerlendirme yapmaya teşvik etmektir. Bu arada Programcılar İçin Yazarlık Dersleri adlı e-book'u incelemenizi önermek isterim.

 
Toplam blog
: 21
: 849
Kayıt tarihi
: 02.08.08
 
 

1992 yılından başlayarak bilgisayar ve programcılık üzerine dergilerinde çok sayıda makale yayınladı..