![]() | |||
Joel on Software Joel'den Yazılım Üzerine
| |||
|
Diğer Türkçe "Joel on Software" makaleleri Diğer İngilizce "Joel on Software" makaleleri |
Joel Spolsky Fikret Ulug tarafından çevrilmiştir Ahmet Semiz tarafından düzenlenmiştir 27 Ocak, 2001 1982 yılında ailem İsrail’de ilk çıkan bir IBM-PC’yi teslim aldı. O kadar heyecanlanmıştık ki satıcının dükkanında oturup uzun süre kişisel bilgisayarın limandan gönderilmesini beklemiştik. Babamı her nasılsa 2 disket sürücülü, 128 K bellekli tam teşkilatlı seriden almak için ikna etmiştim. Bilgisayara ilaveten nokta vuruşlu bir yazıcı (hızlı dökümler için) ve Brother marka mektup kalitesinde basan BASIC dilinin çocuklar için bir dil olduğunu, spagetti türü kod yazmanızı gerektirdiğini ve beyninizi sulandırdığını “herkes” biliyor. Bu nedenle üç disketle gelen ve 600$ değerindeki IBM Pascal derleyicisini satın aldık. Derleyicinin ilk derleme adımı (pass) birinci diskette, ikinci derleme adımı ikinci diskette, ve bağlayıcı (linker) üçüncü diskette idi. Basit bir “merhaba, dünya” programı yazıp derledim. Toplam geçen süre 8 dakika idi. Hımm. Bu oldukça uzun bir süre. Tüm işlem adımlarını otomatik hale getiren bir toplu iş (batch) dosyası yazdım ve toplam süreyi 7,5 dakikaya indirdim. Daha iyi. Fakat Othello’nun akıllara durgunluk veren sürümüne benzer bir program yazmaya kalkıştığımda, zamanımın çoğu derlemeye gidiyordu. Profesyonel bir programcı bana “Tabii” dedi, biz derleme yaparken ofiste mekik tahtası bulunduruyoruz ve derleme devam ederken bizde mekik çekiyoruz dedi. Birkaç aylık programlamadan sonra çok güçlü karın kaslarına sahip oluyorlarmış. Günlerden bir gün Danimarka’dan Compas Pascal adında bir program çıktı. Philippe Kahn bu programı satın aldı ve Borland Turbo Pascal olarak adını değiştirdi. Turbo Pascal , IBM Pascal’ın yaptığı her şeyi yapmasına ilaveten metin yazım programı dahil olmasına rağmen sadece 33K bellekte çalışması ile herkesi hayrete düşürmüştü. Asıl şaşırtıcı olan ise küçük bir programı bir saniyeden kısa bir sürede derliyor olmasıydı. Sanki hiç adı duyulmamış bir firmanın, saatte 1,000,000 kilometre hız yapan ve dünyanın etrafında bir karıncanın hasta olmadan içebileceği su miktarı kadar benzin harcayarak dolaşabilecek bir Mercedes kopyasını duyurması gibi bir şeydi. Bir anda, çok daha verimli çalışmaya başladım. Bu benim ODY(REP) döngüsünü öğrenmemle başladı. ODY’ın anlamı “Oku, Değerlendir,Yaz (Read, Eval, Print)” olup Lisp yorumlayıcısının nasıl çalıştığını tanımlar: Lisp girdiyi “okur”, onu değerlendirir ve sonucu yazar. Örnek bir ODY döngüsü aşağıda olduğu gibidir: bir şey yazıldığında lisp yorumlayıcı onu okur, değerlendirir ve sonucu yazar.
Dikkatli bir gözün fark edebileceği gibi burada program yazmak tekrar tekrar aynı işlemlerin yapılmasını gerektirmektedir. Bu nedenle Düzenle-Derle-Test Et döngüsü ne kadar hızlı yapılırsa o kadar verimli bir çalışma ortamı elde edilir. İşlemin doğal hız limiti olan erişilebilecek en yüksek hız; anında derlemedir. Bu yüzden bilgisayar yazılımcılarının çok hızlı donanım istemeleri ve derleyicileri geliştirenlerin ellerinden gelenin en fazlasını yapmaya çalışmaları, Bilgisayar Biliminin herkes tarafından kabul edilen en birinci talebini yani çok hızlı Düzenle-Derle-Test Et döngüsünü elde etmek içindir. Visual Basic dili bunu yazılan her satırı ayrıştırıp (parsing) anlamlandırarak (lexing) yapar, böylece son derleme süper hızlı olur. Visual C++ aynı işlemi artımlı derleme, ön derlemeli başlıklar ve artımlı bağlama ile sağlar. Ancak, birden fazla geliştirici ve test yapandan oluşan bir ekipte çalışmaya başladığınızda daha büyük ölçekte olmak koşuluyla (fraktallar gibi!) aynı döngü tekrar karşımıza çıkar. Test yapan, kod içinde bir hata bulur ve hatayı rapor eder. Programcı hatayı düzeltir. Test yapan kodun düzeltilmiş sürümünü elde edinceye kadar ne kadar süre geçer? Bazı firmalarda bu Raporla-Düzelt-Yeniden Test et döngüsü birkaç haftayı alabilir, bu da tüm firmanın verimsiz çalıştığı anlamına gelir. Tüm geliştirme adımlarının düzenli bir ritimde çalışması isteniyorsa, Raporla-Düzelt-Yeniden Test Et döngüsünün sızdırmaz hale getirilmesi üzerine kafa yormak gerekir. Bunu yapmanın iyi bir yolu oluşturmanın günlük yapılmasıdır (günlük oluşturma). Günlük oluşturma tüm kaynak kodlarının otomatik, günlük ve tam bir şekilde oluşturulmasıdır. Otomatik – çünkü derlenmesi gereken kod her günün belirli bir saatinde derlenecek şekilde cron işleri (UNIX için) veya zamanlandırılmış görev servisi (Windows için) kullanılarak ayarlanır. Günlük – ve hatta daha sık. Muhtemelen sürekli oluşturma çok daha caziptir ancak biraz sonra ele alınacak nedenlerden dolayı yapılmasının bazı zorlukları vardır. Tam – muhtemelen kodunuzun birden fazla sürümü vardır. Birden fazla dil sürümü, birden fazla işletim sistemi veya basit/gelişmiş sürüm. Günlük oluşturma bunların hepsini oluşturmalıdır. Ve derleyicinin muhtemelen hatalı olabilecek artımlı yeniden oluşturma özelliklerine bağlı kalmaksızın tüm dosyaların yeni baştan oluşturulması gerekir. Günlük oluşturmanın birçok yararından bazıları aşağıda olduğu gibidir:
Günlük oluşturma için şu işlemler yapılmalıdır. İlk olarak elde edebileceğiniz en hızlı bilgisayar ile hazırlanmış günlük oluşturma sunucusuna ihtiyacınız var. Kod havuzundan halihazırdaki tüm kaynak kodlarını teslim alan (kaynak kontrol sistemi kullanıyorsunuz değil mi?) ve piyasaya sürülen her sürüm için en baştan oluşturan bir betik (script) yazın. Eğer bir kurulum veya ayar programınız varsa onu da oluşturun. Müşteriye gönderdiğiniz her şey günlük oluşturma işlemi tarafından en baştan üretilmelidir. Her oluşturmayı tarihini belirten ayrı bir dizine yerleştirin. Betiğinizi her gün belirli bir saatte çalıştırın.
İlave okumalar için
Bu makalenin orijinali İngilizce olarak Daily Builds Are Your Friend başlığıyla yayımlanmıştır. | ||
![]() Joel Spolski, New York şehrinde küçük bir yazılım şirketi olan Fog Creek Software'in kurucusudur. Yale Üniversitesi'nden mezun olmuş, ve programcı ve yönetici olarak Microsoft, Viacom ve Juno'da çalışmıştır. | |||
Bu sayfaların içeriği tek bir kişinin görüşlerini yansıtır.
Her hakkı mahfuzdur. Bu sitenin bütün içeriğinin telif hakkı Joel Spolski'ye aittir. Copyright ©1999-2005