İyi Programcılığın Gizleri
Bir bilgisayar programı yazmak roman ya da magazin yazısı yazmak gi-
” bibir sanattır. Her programcı bir yazar gibi kendi üslubunu geliştirir. Bununla birlikte tüm programcılar birtakım ana ilkeleri izlemekten yarar sağlayabilir, bu yazıda ben yararlı bulduğum birkaç tanesini anlatacağım. Bunları izleyerek siz de daha kolay bir biçimde ilginç ve düzgün işleyen programlar üretebilirsiniz.
PLANLAMA Program yazmak genellikle yüzde yazıma
İbrahim TRİK on tutkulu kodlama yüzde doksan da sıkıcı bir hataları düzeltme sürecidir. Ama iyi planlama mantıksal sonuçlarına götürülürse bu yüzdeleri dengeleyebilir. Planlama izleyerek bir çeşit harita oluşturmayı içerir. Bu harita programınızın belli bir bölümü için geliştirilerek mantık üzerine basit notlardan tüm programın kurallara uygun bir akış şemasını oluşturmaya kadar her şeyden oluşabilir. Birçok programın ders kitabı usulü bir akış çetveline gereksinim göstersanmıyorum, ama programınız karmaşık olacaksa kaostan korunmak için dikkatli bir genel planlama kuşkusuz gerekli Aşağıdakiler, bilgisayarımı açmadan önce genellikle çıkarttığım noktalardır. 1. Tamamlanmış programın ne yapması beklenmektedir? Eğer bir oyunsa oyun ne zaman sona erecektir? 2. Programın ana bölümleri nelerdir? Eğer bir oyunsa, skoru takip etme, ses rutinleri, menüler, joystick rutinleri, sayısal hesaplar, program metni, her ne ise tümünü program dökümünde göründükleri sırayla not ederim. 3. Oyunların kuralları nelerdir? Nokta değerlerini (point values) yazar ve onlara değişken adlar veririm. Yeniden tanımlanmış bir karakter seti kullanıyorsam, kullanılacak ekran kodlarını görevlendiririm. 4. İster spriteler, ister grafik ekranları, ister de makine dili değişkenleri için olsun, tüm depo bölgelerinin bellek adreslerini yazarım. 5. Son olarak uzun araştırmalarla yavaşlamadan programı yazabilmeyi garantilerim. Kullanabileceğim cinsten daha önceden yazılmış rutinler var mıdır? Eğer öyle değilse ne tür referanslara gereksinmem olacaktır? Aşağıdakiler işler kızıştığında yararlı olabilecek birtakım maddelerin özetleridir. Birkaç sayfa daha uzun olabilirlerdi (Gereğinde bu konularda birkaç defter doldurulabilir). Ne kadar uzun olursa olsun, program notlarınızı ayrı bir defterle muhafaza edin ve hızla mantık akışlarıyla hesaplamalar için müsvette kâğıdı kullanın, Öbür türlü, programınıza ilişkin bilgilerin arasında bir sürü gereksiz ayrıntı yeralacaktır.
Yeterli planlamayı yaptıysanız, kodlamayı nasıl sürdürmeniz gerektiği konusunda kafanızda bir fikir olacaktır. Ama bunda da birtakım ilkeler yararlı olacaktır. Aşağıda kodlamayı daha etkili hale getirmek için gereken adımların listesini çıkarttım. 1. Dil ne olursa olsun, tüm ana de- Bişkenleri listenin başında tamamlayın. Bunun yanısıra (DIM) komutlarının ana program döngüsü dışında kalmalarını garantileyecek DIM komutuna ilişkin hataları önleyin. 2. Satırları 10 katsayıları ile numaralandırın. Böylelikle programınıza yeniden numaralama yoluna girmeden eklemeler ve düzeltmeler yapabilirsiniz. Ancak program tamamıyla bitirilip hatalardan arındırıldıktan sonra satırları yeniden numaralandırmak için bir komuta ya da hatırlama aracına gerek duyacaksınız. 3. Hiçbir zaman bir hedef subrutinine ya da satıra REM (ark) komutu ile başlamamalısınız. REM komutunun hedef satırın üzerine koyun ki bellekten tasarruf edilebilmesi ve hızın arttırılabilmesi için çıkartılabilsin. 4. Tamamlanmış programınızın iki kopyasını muhafaza edin, biri aynen öbürü de tüm REM komutları çıkartılmış olarak. 5. REM komutlarını dışarıda bırakmanın yanısıra program hızını arttırmak için başka yollara da gidilebilir. Örneğin şu örnekteki gibi dekslenmiş program döngülerinden kaçının. Onun yerine FOR-NEXT döngülerini mümkün olduğu kadar çok kullanın. Ayrıca her satıra birden fazla çoğul komut yerleştirmek hem bellekten hem de zamandan sağlayacaktır. 6. Sabitler için kesir değişkenleri kullanın (A — 100 yerine kullanın). 7. Büyük programlarda listenin başına subrutinleri ve Data komutlarını yerleştirmek yararlı olabilir. Bir GOSUB komutu programda daha sonra başlayan bir subrutini çağırdığında, bilgisayar hedef satır numarasını bulana kadar ileri doğru araştırmayı sürdürmek zorundadır. Uzun bir programda bu araştırma gerçekten çok zaman alabilir. Eğer hedef satır numarası GOSUB'ın satır numarasından daha düşükse program liste başından başlayacaktır araştırmaya ve hedef başlangıca yakınsa araştırma kısa sürecektir. 8. C-64 sahipleri can sıkıcı gecikmelere yolaçan pislikleri, dizi kontrol eden rutinlerin başına FRE(O) komutu ekleyip değişken alanları dağıtmadan önleyebilirler. Programın pislikleri yeni bir değişken için alan kalmadığında ve her şey programın başından sonuna kadar kaydırıldığında ortaya çıkar. 9. Programınızı geliştirme sürecinde sık sık kaydedin ve güvenlik için ayrı bir kopyasını da hazırlayın. Bir yazıcınız varsa bitmiş programınızın ketlerden daha uzun ömürlüdür. 10. Bir program üzerinde çalışırken listenin başındaki REM komutuna o sıradaki tarih, zaman ve versiyon sayısını ekleyin. Bir programın çeşitli versiyonları olabilir ve gereken önlemleri almazsanız hangisinin son versiyon olduğunu saptamakla güçlük çekebilirsiniz. 11. Programı bitirdikten sonra esas rutinlerini kâğıt ya da disket üzerinde saklayın. Böylelikle onları başka programlarda kullanmanız mümkün olur. Bir süre sonra elinizde ne kadar çok hazır subrutin olduğuna şaşacaksınız.
MAKİNE DİLİNDE PROGRAM YAZMAK
Özellikle makine dili için birtakım yol göstericiler. 1. Bir bilgisayar programını baştan sona tek parça halinde program yazma BASIC için uygun olabilir ama makine dili için yeterli değildir. Modüler teknikler kullanıp programınızı bir dizi subrutinden oluşturma ve başka programlarda kullanılabilecek kadar genel olmalarına dikkat edin. Dahası tüm parametrelerinizi subrutinlere geçirdikten sonra hataları gidermenin daha kolay olduğunu göreceksiniz. Çünkü kütük ve bellek bölgelerinin çağırma ve hedef rutinlerinin hangileri tarafından manipule edildiklerini bileceksiniz. 2. Kütüphanenize alacağınız rutin ve subrutinler için daha sonra baktığınızda anlayabileceğiniz ve anımsayabileceğiniz adlar kullanın, fazla kısaltma yapmayın. Örneğin benim için
JOYSTICKLOOP her zaman JLO-OP'dan daha anlamlıdır. 3. Basic dilinin aksine makine dilinde commentler programının hızını etkilemez, onun için kullanılmamaları yanlış olur. Bir rutinin ne için hazırlanmış olduğunu aradan aylar geçtikten sonra anımsamaya çalışmak can sıkıcı olabilir. Nasıl daha iyi bir programcı olunabileceği konusunda kitaplar yazılabileceğini söylemeye hiç gerek yok. Yalnız yukarıdakiler gibi birtakım basit ilkelere dikkat etmek, programlarınızın çok daha başarılı olmasını sağlayabilir.