Mega Code Archive

 
Categories / Delphi / Forum
 

Neoturk - iyi kod nedir hackingin önemi

herkese merhaba, nostaljilere devam........... ------------------------------------------------- Delphi Unslished - Charles Calvert ( oldukça deneyimli bir delphi uzmanı ) ( 1997 yılında satın aldığım kitapdan alınmıştır. O zamanlar bu kitap ağır geliyordu. -neoturk-) İYİ KOD NEDİR ? "Eğer bu kitabın ana teması varsa o da iyi kodun hemen her zaman açıkça görülebilir olduğudur. Eğer bir koda bakıyorsanız ve karmaşıklığı karşısında ürküyorsanız, nerdeyse kötü tasarlanmış bir kod olduğuna eminsiniz demektir. Küçük bir grup da olsa, bunu göz ardı edebilen bireyler vardır. Fakat programcıların büyük bir çoğunluğu için yapının basitliği çok önemli bir kuraldır. Kimbilir kaç kere, bir parça kod üzerinde haftalarca boğuşup, sorunun, çok ufak bir alanda çok şey kapsamaya çalışmak olduğunu fark etmişimdir. Daha ileriye gidebilmem için kodu ek alt programlara, nesneler ya da modüllere ayırmam gerekmiştir. Çoğu programcı kodlarını karmaşık ve yavaş yapan bu seçenekte çok ısrar ederler. Bu insanların anlamakta zorlandıkları şey, çoğu programcının başarısız projeler mezarlığının üzerinde yaşadıklarıdır ve bir programın başarıyla ile sonuçlandırıldığı birkaç olayda da, programın bakımının yapılmasının veya sürüm yükseltilmesinin çok zor olduğu çoğu kişi tarafından saptanmıştır. Bu problemlerden sakınmanın yolu, kodu bir grup ayrık adımlara, ya da programcıların deyimiyle alt programlara bölmektir. Bu adımların her biri mümkün olduğunca basit olmalıdır. Bir program içindeki alt programa baktığınız zaman, amaç ve yöntemleri apaçık gözükmelidir. Alt programa bakarken aklınıza şu gelmelidir: Bu adım o kadar basit ki bir çocuk bile kısa sürede anlayabilir. Tabi ki bu amaç her zaman gerçekleştirilemez ama ulaşmanız gereken son budur. Belirli bir alt programın ya da nesnenin kodunu yazarken, hatalarını ayıklamak için çok karmaşık hale geldiğini görürsem, her biri kendi içinde çok basit olan alt programlara ya da nesnelere ayırırım. Eğer programı ayrık adımlara bölmenin çok zor olduğunu düşünürsem, bu çoğunlukla ne yaptığımı anlamıyorum demektir. Durumu düzeltmem için tasarım aşamasına geri dönmem gerekir ki, programımın o bölümünün gerçek amacını anlayabileyim. Bir kez daha söylememe izin verin ki ne yaptığımı anladığınızdan emin olayım. Eğer kodun bir parçasını yazıyorsam ve her zamanki gibi takılıp kaldıysam, sebebi tasarım aşamasını atladığım içindir. Çözüm bir hata ayıklayıcıyla saatlerce oyalanmak değil, aksine bir önceki aşamaya dönüp problemi bir sayfa üzerine geçirmektir. Sonuç olarak hemen her seferinde problemi ayrı metodlara, hatta ayrı nesnelere bölmem gerekir. Alternatif olarak, bazen problemin kaynaklandığı modülü ayrı bir dosya olarak kopyalar, bir test programı hazırlar ve gerçekten hatanın bulunduğunu hissettiğim bölüm ortaya çıkana kadar kes ve yapıştır yaparım. Buradaki anahtar adım modülü ayrı bir dosya olarak kopyalamak ve test programını yazmaktır. " Hacking'in Önemi "Son birkaç sayfada program tasarımının nimetlerinden ve nispeten daha katı bir yapıya sahip bir kod yazma yaklaşımından bahsettim. Artık masaları çevirip paranın öbür yüzünü tartışabilirim. Çoğu iyi programcı zamanlarının büyük bir bölümünü hacking dediğimiz işle geçirirler. Eğer bir programlama bürosuna sahipseniz ve işleri, programcılarınızı hacking yapamayacak şekilde ayarlarsanız, işin sonunda bir sürü vasat programla baş başa kalırsınız. En iyiler ya kabiliyetlerini kaybedeceklerdir, ya da başka işlere geçeceklerdir. Sıradan programcılar ve hackerlar arasındaki fark, hackerların bütün bir gece boyunca ofiste kalıp, doğrudan ödeme yapmayacağınız bir parça kod üzerinde çalışmalarıdır. Bu işi basitçe sevdikleri için ve bilinmeyeni keşfetmek için yaparlar. Tabi ki bu, iyi hackerların, hacking için harcadıkları zaman için para almalarıyla sonuçlanır, fakat onların her yaptıkları, çalıştıkları firmanın değerini biraz daha arttırmaktadır. Düzenli kullanılmasına rağmen henüz keşfedilmemiş olan çok sayıda kod vardır. Hatta, Microsoft ya da IBM tarafından çıkarılan işletim sistemleri hakkında çok az doküman bulunduğundan dolayı bunları öğrenmenin en iyi yolu hackingtir. Eğer hiç kimsenin API hakkında bir dökümantasyon yapmaya zamanı ya da zamanı yoksa, nasıl çalıştığını bulmak hackerlara kalmıştır. Bunun yanında, dökümanlar hiçbir zaman tam ve bilgi verici değildir ( şu an okuduğunuz hariç tabii ki!) Bir API fonksiyonun ne gerektirdiği ya da düzensiz uyarıcılara nasıl tepki verdiğini öğrenmek için tek kaynak deneysel gözlemdir. Bileşenler ya da OLE otomasyonu gibi yeni gelişmelerle potansiyeli keşfetmenin tek yolu hackingdir. Eğer hacking yapıyorsanız her bir basamakta atacağınız adımı planlamanız mümkün olamaz. Eğer böyle yaparsanız, yeni bir şey öğrenemezsiniz. Açık olan sonuç, her şeyi kitaplara göre yapan firmalar, yeni teknolojiye uyum sağlama yarışında gerilerde kalacaklardır. Bu önemli bir dezavantaj değildir. Çünkü bazı firmalar katı kodlara ihtiyaçları olduğu kadar yeni teknolojiye ihtiyaç hissederler. Buna rağmen, büyük bilgisayar üreticilerinin, her zaman teknolojinin en üst ucunda bulunan yazılımlar yaptıkları için, kendilerini hacker olarak tanımlayabilen programcılarla dolu olduğuna dikkat edin. Son olarak, hackerlarla uygulamaları iyi tasarım ve yapılarla oluşturanlar arasında bir paradoks olduğuna inanıyorum. Bu, her iki tarafında haklı olduğu durumlardan biridir. Eğer yapının önemini anlamazsanız, hiçbirşeyi tamamlayamazsınız. Eğer hackingin önemini kavrayamazsanız, uygulamalarınız demode gözükür. Sanatçılar ve filozoflar, paradoksları en iyi çözenlerdir. Bu nedenle benim önerim, kod yazmak için işin başına geçtiğinizde kendi görüşünüzü de yetiştirin. Sonuç olarak, en iyi programcılar, yapısal teknikleri ne zaman kullanmaları gerektiğini bilen ve en üst seviyede yaratıcılığını kullananlardır. Programlama bir bilim değil, sanattır. " saygılarımla_ xxnt03@lycos.co.uk neoturk_