bir programlama dilini "tam olarak biliyorum" demek için, o programlama dili üzerinde hiçbir kaynaktan (uç kaynaklar dışında) yararlanmadan program geliştirebiliyor olmanız gerekir.
!?...
Bu ezbercilik olup, cogu zaman berbat program yazmanın en iyi yolu olur. 20 Yıl önce bizde böyle yapardık. Ama son 15 yıldır kullandığım C için örneğin, hala "fd = open(...)" yazarken (mesela) mutlaka man dosyasını açıp bakmayı ihmal etmem.. Herhalde ortalama günde 25-30 defaya filan tekabül eder bu..
Kısacası, hıfzı beşer nisyanla maluldur. Önemli olan herşeyi bilmeye, ezberlemeye çalışmak değil, anlamaya odaklanmak, ezber olacak bilgiyi ise nerde bulacağını bilmektir.
Programlama dilini iyi biliyorum diyebilmek için bilinmesi gerekenler bence şunlardır (en azından ilgilenilen mimariler üzerinde):
1. Bellek yönetimini bilmek. Sayılar, arraylar, nesneler vs. nasıl, nerde saklanıyor?
2. Fonksiyon çağrıları nasıl yapılıyor? Stack üzerinden mi? Byval'mı, Reference'mı kullanıyor vs.?
3. Temel komut setini iyi kavramak. Bu komut seti örneğin C için:
if/else/elseif, switch, while, for, break/continue, return olacaktır.
Elbette 1. Maddeye istinaden int, float, struct gibi veritiplerini de bilmek gerekir. "int x" ile "static int x" arasındaki farkı, bu "x" in stack/data/bss vs. nerede tutulduğunu bilmek elzemdir. C özelinde, #define gibi preprocessor komutlarını da bilmek gerekir elbet.
Peki ya printf() yada mmap()? Bunlar dışarıdan referanslardır. Bunların iyi bilinmesi değil, iyi anlaşılması, kodlama boyunca da manuallerinin el altında tutulması gerekir. Kendi adıma hala printf için ? ve %? olaylarını bilmem, ki 15 yıla yakın süredir bunları kullanırım. Bunları ezberlemeye çalışmak hamallıktır, gereksiz kafa şişirmektir.
Aslen, bu fonksiyonlar dilin değil, işletim sisteminin bir parçasıdır. Diller bunları tarif eder, işletim sistemi yerine getirir. Bir diğer husus ise, "Programlama" kavramının "Programlama Dili" kavramından ayrı olduğudur. Diller bilinen direktifleri, işletim sistemine ne istediğinizi söylemeyi sağlayan fonksiyon setlerini ve işletim sistemine erişim hizmetini sağlarlar. Bunları ne yapacağınız sizin sorununuzdur. Elinizde olanda aslen bu kadarıdır. Grid, textbox, veritabanı vs. olayı nedir, nasıl kullanılır kavramları aslolarak programlama konusunun bir parçasıdır. Eğer programlama bilginiz varsa bu olayları herhangi bir dille kolayca aşabilirsiniz.
Programlama, olayın özüdür. Herhangi bir dilde yapılabilir. Eğer programl ama kavramını özümsemişseniz, herhangi bir dil kullanarak bunu yerine getirebilirsiniz. Hatta, bu bunlarla olmaz diyerek kendi dilinizi yazıverirsiniz. Bu şunu demeye çalışıyor: "Dil öğrenmek değil, programlama öğrenmek aslolandır.."
Saygı ve sevgiler...
Son paragrafi tam anlamadim. Malumu ilam mi, daha derin bir bilgelik mi var yoksa cok kabiliyetli oldugunu tahmin ettigim birinin herkesi kendi gibi zannetmesinin tezahuru mu bilmiyorum. Benim isime gelen 'bilen her dilde yapar' yerine 'bilmeyene dil secimi yardimci olmaz' demek kabaca. Ilkinden daha zayif bir ifade tabi. (ikisi de excel'le her gun program yazanlari kapsamiyor tabi, o ayri).