Bir Dijital Bilgisayar Merkezi İçin Program Kütüphanesinin Organizasyonu
Werner L. Frank
Ramo Wooldridge Corp.
Los Angeles 45, Calif.
Bir hesaplama merkezinin verimliliği yalnızca kullanılan donanım ve personelin bir işlevi değildir; aynı zamanda Program Kütüphanesini oluşturan yordamlar koleksiyonunun da bir işlevidir. Daha yaygın matematiksel işlemlerin hesaplanmasına yönelik olanlar da dâhil olmak üzere genel alt yordamların bulunabilirliği, genellikle bir problemin formülasyonu ve ardından gelen sayısal çözümüyle ilişkilendirilen geçen süreyi azaltacaktır.
En az bunun kadar önemli olan, denetleyici (veya hizmet) yordamlar olarak sınıflandırılabilecek olanların koleksiyonudur: bilgiyi işlemek için araçlar sağlayan (montaj veya derleme programları), izleme (post mortem ve alarm yordamları) ve yerleşik makine mantığının yeteneklerini genişleten (kayan nokta ve karmaşık sayı aritmetiği yordamları) yordamlar.
Böyle bir kütüphanenin oluşturulması küçük bir görev değildir. Deneyimler, çok yönlü bir yordam koleksiyonunun kurulmasının on adam-yılından fazla sürdüğünü göstermiştir. Büyük ölçekli bir dijital bilgisayar merkezi için bu, insan gücü ve makine kullanımı açısından $150.000,00’ı aşan bir yatırım anlamına gelebilir. Buna ek olarak, kütüphanenin bakım ve genişletilmesine ilişkin sürekli bir maliyet vardır.
Herhangi bir kurulum için bu yatırımı azaltmak amacıyla, son zamanlarda benzer hesaplama makinelerinin kullanıcılarının Program Kütüphanesi geliştirme çalışmalarını birleştirmeye yönelik girişimlerde bulunulmuştur. Standartlar formüle ederek ve çabaların yinelenmesini önlemek için belirli sorumluluklar atayarak, SHARE (IBM 704 kullanıcıları) ve USE (ERA 1103A kullanıcıları) gibi gruplar karşılıklı yardımlaşma gereksinimini kabul etmişlerdir.
Buna rağmen, bir Program Kütüphanesi için nihai sorumluluk bireysel hesaplama merkezinde kalmalıdır. Bu da daha yaygın yordamların kataloglanması, standartlaştırılması ve dağıtımı için iyi düşünülmüş bir planı gerektirir.
Kataloglama
Kataloglama, yordamların sınıflandırılması ve etiketlenmesini ifade eder. Her iki süreç için izlenen yöntem, hesaplama merkezi tarafından benimsenen felsefeye bağlıdır.
İyi kurulmuş bir hesaplama tesisinin 100’den fazla yordama sahip olabileceği göz önüne alındığında, bu materyalin alt bölümlere ayrılması ve sınıflandırılması zorunludur. Bu nedenle, sabit noktalı ondalık bir kart delme yordamı aranıyorsa, uygulanabilir bir alt yordam bulmak için yalnızca Çıkış Yordamları kapsayıcı sınıfı içinde arama yapmak yeterlidir.
Yordamların ilk ayrımı, daha önce belirtilen denetleyici yordamlar ve genel alt yordamlar kategorileri olabilir; ancak bu sınıflar hâlâ çok geniştir. Aşağıdaki liste, benimsenmiş ve pratik bulunmuş bir olasılığı sunmaktadır:
Denetleyici Yordamlar
- Yürütücü Yordamlar — Montaj veya derleme yordamları
- Bootstrap ve Temel Okuma Yordamları
- Kod Denetleme ve Tanılama Yordamları
- Post mortem ve İzleme Yordamları
- Özel Aritmetik Yordamları
- Kayan nokta aritmetiği
- Karmaşık sayı aritmetiği
- Çift duyarlıklı aritmetik
- Gösterim Yordamları
Genel Alt Yordamlar
- Girdi Yordamları
- Çıktı Yordamları
- Kuadratür (belirli integral değerlendirmesi)
- Türev Alma
- Diferansiyel Denklemler (adi ve kısmi denklemler)
- Vektör Cebiri
- Eşzamanlı doğrusal denklemler
- Matris tersleme
- Özdeğerler ve özvektörler
- Doğrusal programlama
- Doğrusal Olmayan Denklemler
- Polinom kökleri
- Fonksiyonların minimizasyonu
- İstatistik
- Korelasyonlar
- Varyanslar
- Ortalamalar
- Rastgele sayı üreteci
- Veri İndirgeme
- Sıralama
- Düzenleme
- Listeleme
- Mantıksal Aritmetik
- Fonksiyon Değerlendirme
- Trigonometrik
- Üstel fonksiyonlar ve kökler
- Logaritmik
- Özel fonksiyonlar
- Fark Alma ve Enterpolasyon
- Yaklaşımlar ve Eğri Uydurma
- Çeşitli
Yordamların etiketlenmesi görevinin keyfi olmadığı, her alt yordama sabit biçimli bir tanımlayıcı etiketin iliştirilmesini gerektirebilecek bir derleme programı örneğinde görülür. Sadelik adına, hem etiketin hem de tanımlayıcının aynı olması arzu edilir.
Örneğin, etiketler seri olarak veya anımsatıcı etiketlerle atanabilir. İlk yöntem, etiket ile sınıf arasında tanınabilir bir ilişkiyi engellerken, ikinci yöntem sistemi tam olarak bilmeyen kişiler için bazı karışıklıklar doğurabilir. Bu nedenle, bir sinüs yordamının ikinci sürümü SIN-2 olarak adlandırılabilse de, INT-3’ün bir integral mi yoksa enterpolasyon yordamı mı olduğu anlaşılmayabilir.
Böylece, etiketin yalnızca her yordamı benzersiz biçimde tanımlamakla kalmayıp, aynı zamanda onu yukarıdaki sınıflardan birine yerleştirmesi gerektiği görülür. Buna ek olarak, tanımlayıcı, yordamanın sabit mi yoksa kayan nokta işlemi için mi tasarlandığını (ve muhtemelen tek ya da çift duyarlıklı olup olmadığını) belirtmelidir. Son olarak, yordamanın durumu hakkında da bazı bilgiler sunulmalıdır; örneğin:
- Yordam bir revizyon mudur?
- Yordam eski sayılmış, ancak emekliye ayrılmamış mıdır?
- Yordam bir yardımcı depolamadan (aktif) kullanılabilir mi, yoksa kartlar veya bantlar üzerinden bir programa mı monte edilmelidir?
Bu amaçlar için, tanımlayıcı için benimsenen sabit biçimin üç alfabetik karakter ve iki ondalık basamaktan (XYZ-00) oluştuğu varsayılacaktır. X konumu, yordamanın yukarıda listelenen kategorilerden birinde olduğunu belirtir. Y karakteri, X sınıfını daha ayrıntılı olarak bölerken, Z yordamanın sabit (O), kayan (F), karmaşık (C) vb. biçimde çalışıp çalışmadığını gösterir. Sayısal bölümün onlar basamağı belirli bir fonksiyonu veya işlemi, birler basamağı ise kullanılan sürümü veya yöntemi belirtir. Örnek olarak, Fonksiyon Değerlendirme (M) başlıklı sınıfı seçiyor ve olası bir alt ayrımı listeliyoruz:
Fonksiyon Değerlendirme (M)
1. Trigonometrik Fonksiyonlar (T)
- MTO-00 — Sinüs-Kosinüs (radyan)
- MTO-01 — Küçük açı Sinüs-Kosinüs
- MTO-02 — Sinüs-Kosinüs (derece)
- MTO-10 — Arksinüs-Arkkosinüs
- MTO-30 — Tanjant (radyan)
- MTO-31 — Tanjant (derece)
-
MTO-40 — Arktanjant
-
MTF-00 — Kayan Nokta Sinüs-Kosinüs
- MTF-10 — Kayan Nokta Arksinüs-Arkkosinüs
- MTF-30 — Kayan Nokta Tanjant
- MTF-40 — Kayan Nokta Arktanjant
2. Üstel Fonksiyonlar ve Kökler (P)
- MPO-00 — Kare Kök
- MPO-10 — Küp Kök
- MPO-20 — p’inci Kök
- MPO-30 — Kesirli Kuvvet (xʸ) Rutini
-
MPO-40 — e üzeri x Kuvveti
-
MPF-00 — Kayan Nokta Kare Kök
- MPF-10 — Kayan Nokta Küp Kök
- MPF-40 — Kayan Nokta Üstel (eˣ)
3. Logaritmik (L)
- MLO-00 — 2 Tabanlı Logaritma
- MLO-10 — Doğal Logaritma
- MLF-10 — Kayan Nokta Doğal Logaritma
4. Özel Fonksiyonlar (S)
Bu dikey gruplamaya ek olarak, bazı yatay düzenlemelerin de dahil edilmesi arzu edilir. Bu nedenle, eğer ICF-10 kayan nokta kart giriş rutini ise, OCF-10’un çıktı kategorisinde bu rutinin karşılığı olması beklenir.
Artık bu adlandırma sistemine ek bilgilerin dahil edilmesi basit bir iştir. Örneğin, aşağıdakileri yorumlamak mümkündür:
- MID-11 R — Bu rutin bir revizyondur
- MID-11 O — Bu rutin artık geçerliliğini yitirmiştir
- MTO-11 I — Bu rutin mevcuttur, ancak etkin biçimde değildir
Standardizasyon
Kütüphane rutinleri için standart bir biçim önemlidir; çünkü bu, tanınmayı ve yeni alt programların öğrenilmesini kolaylaştırır. Ayrıca parametre sunumu, alt program girişleri, ölçekleme kuralları vb. konularda prosedürler belirleyerek hesaplama merkezi içinde çalışma biçimlerinin gelişmesine katkıda bulunur.
Belirli bir rutinin açıklamasını oluşturan üç temel bölüm vardır:
- Programın yapısı ve uygulamasıyla ilgili özet (bir veya iki sayfa).
- Rutinin ayrıntıları ve kullanılan yöntemin açıklaması.
- Programın kod listesi.
Birinci bölüm kendi içinde yeterli olmalı ve programcının rutini başarıyla kullanabilmesi için gerekli bilgileri kapsamalıdır. Bu bölüm şunları içermelidir:
- (a) Rutinin adı ve etiketi.
- (b) Rutinin türü (denetleyici veya alt program).
- (c) Programın kelime sayısı.
- (d) Geçici depolama gereksinimleri.
- (e) Programın işlevinin, kapasite ve sınırlamalarını gösterecek yeterlilikte açıklaması.
- (f) Gerekli parametreleri ve giriş biçimini içeren programlama yöntemi.
- (g) Hesaplamanın doğruluğu.
- (h) Süre.
- (i) Alarm göstergelerinin, sabit havuzlarının vb. kullanımına ilişkin özel notlar.
- (j) Rutini kodlayan kişinin adı.
- (k) Rutinin yayımlanma tarihi.
İkinci bölüm, ilk özette yer alan bilgileri daha ayrıntılı biçimde açıklar. Kullanılan matematiksel yöntem burada sunulmalı, yapılan uyarlamalar belirtilmeli ve kaynak materyale yeterli atıflar verilmelidir. Uygun olduğunda, hata analizi sürecin doğruluğunu, hem kesme hem de yuvarlama etkilerini dikkate alarak açıklamalıdır. Rutinin girişi, hesaplaması ve çıktısına ilişkin örnekler verilmelidir. Büyük kapsamlı bir rutine değerli bir katkı, programın seçilmiş bazı durumlara uygulanmasıyla elde edilen sonuçların açıklanmasıdır.
Kod listesi üçüncü bölümü oluşturur. Program adımlarının izlenmesini kolaylaştırmak amacıyla tam olarak açıklamalı olmalı, yorumlar ve semboller içermelidir.
Rutinin en eksiksiz sunumu, yukarıdaki üç bölümün tamamını kapsar. Bu biçimde, kopya yalnızca hesaplama merkezi içinde değil, aynı zamanda çeşitli tesisler arasında mevcut olan değişim programının bir parçası olarak dağıtıma da uygundur.
Dağıtım
Program Kütüphanesi, bir hesaplama merkezinin durumunu ve yeteneklerini yansıtan başlıca kaynaklardan biridir. Mevcut rutinlerin hızlı ve verimli biçimde dağıtılması gereklidir. Farklı hesaplama kuruluşları arasındaki bilgi alışverişi de kütüphane programlarının dağıtımı yoluyla kolaylaştırılır. Bu sayede her grup, makinenin daha verimli kullanımı ve daha iyi hesaplama tekniklerine götüren işlemleri karşılaştırma olanağı bulur.
Program Kütüphanesinin geniş çapta dağıtımından kaynaklanan bir dezavantaj, materyalin güncel tutulmasıyla ilgili sorumluluktur. Deneyimler göstermiştir ki hiçbir rutin sabit kalmaz. Depolama atamaları, parametre gereksinimleri konusunda değişiklikler yapılır ve daha da sık olarak, özgün açıklamalarda hatalar saptanır. Küçük bir değişiklik veya düzeltme bile bir rutin açıklamasını geçersiz kılabilir.
Revizyon yayımlama olasılığını azaltmak için, yukarıda açıklanan genel rutin tanımına bazı kısıtlamalar getirmek gerekebilir. Bu nedenle, kod listesinin daha geniş kütüphane dağıtımından çıkarılması bir olasılığı temsil eder; çünkü bu bölüme seyrek olarak başvurulur ve kodla tanışık olmayan kişiler için görece yararsızdır. Ancak kod listesi istek üzerine sağlanabilir.
Bir başka öneri, depolama atamaları ve giriş gereksinimleri gibi zamansal bilgilerin birinci bölümle sınırlandırılmasıdır. Böylece bu daha sık değişiklikler yapıldığında, yalnızca yazının ilk bölümü geçersiz hale gelir ve sonuç olarak bir revizyon yalnızca bir veya iki sayfayı etkiler.
Dönemsel bir kütüphane bülteninin yayımlanması, yazım hatalarını düzeltmeye hizmet eder ve kütüphane kullanıcılarını Program Kütüphanesindeki yaklaşan değişiklikler veya eklemeler hakkında bilgilendirir. Bu araç, bir hatanın saptanması ile bir program revizyonunun yayımlanması arasındaki boşluğu doldurmada özellikle yararlıdır.
Son olarak, Program Kütüphanesi ile hesaplama merkezi personeli arasındaki ilişki hakkında birkaç söz edilmelidir.
Kütüphane rutinlerini uzun bir süre boyunca kullanan kişilerin, belirli bir rutin hakkında kısa sürede yalnızca temel miktarda bilgiye ihtiyaç duydukları görülmüştür. Bu noktada, rutinin tam açıklamasının birinci bölümü, bu gereksinimi karşılayacak kullanışlı ve yoğunlaştırılmış bir biçim haline gelir. Bu nedenle, bu kişilere tam bir Program Kütüphanesinin yanı sıra, her rutinin özet sayfalarından oluşan yoğunlaştırılmış bir sürümün de verilmesi arzu edilir.
Program Kütüphanesi (8. sayfadan devam)
Yukarıda özetlenen sistem, The Ramo-Wooldridge Corporation Dijital Bilgisayar Merkezi ve Illinois Üniversitesi Program Kütüphanesi ile ilgili deneyimleri yansıtarak, etkili ve verimli olduğunu kanıtlamıştır.