OTOMATİK PROGRAMLAMANIN KULLANIMI
Walter F. Bauer
Başkan, Dijital Hesaplama Merkezi
The Ramo-Wooldridge Corporation
Los Angeles, Calif.
(Yazarın 1954, 1955 ve 1956 yıllarında Michigan Üniversitesi’nde Dijital Bilgisayarlar üzerine Özel Yaz Dönemi’nde verdiği dersler dizisine dayanmaktadır.)
“Otomatik programlama” terimi için birçok tanım vardır. Olası tanımlardan biri şöyledir: Otomatik programlama, belirli görevlerin bilgisayar tarafından kullanılmasına olanak sağlayacak bilgisayar programlarının tasarlanması ve düzenlenmesinden oluşur; bu görevlerin aksi hâlde programcı tarafından elle yapılması gerekirdi. Otomatik programlama, yalnızca kütüphanedeki alt programların düzenlenmesi olarak ele alınabileceği gibi, uygun bir derleyici ya da birleştirme programının düzenlenmesi ve bununla birlikte sorunların hazırlanması ve denetlenmesi için derleyicinin kullanılmasına yönelik kapsamlı bir sistem olarak da değerlendirilebilir.
Güdüler ve Tarihçe
Otomatik programlama için dört temel güdü vardır: programlamanın yüksek maliyeti; programlama için insan gücü yetersizliği; bir problemin sunumundan çözümüne kadar geçen süreyi kısaltma isteği; ve bazı bilgisayar eksikliklerini aşma isteği ve gerekliliği.
Bunlardan ilki olan programlamanın yüksek maliyeti önemlidir; çünkü yüksek hızlı elektronik dijital bir bilgisayar için bir problemin programlanması ve denetlenmesinin maliyetinin komut başına 2 ile 10 dolar arasında olduğu tahmin edilmektedir. Bin kelimelik bir programın görece kısa bir program olduğu göz önüne alındığında, bu maliyetin hiç de önemsiz olmadığı görülür. Özellikle bilimsel hesaplama gruplarına uygulanan, ancak muhtemelen genel olarak da geçerli olan bir başka yaygın istatistik, bilgisayarı destekleyen insan gücü giderlerinin (genel giderler ve diğer masraflar hariç) bilgisayarı çalıştırma ya da kiralama maliyetine eşit olduğudur. Modern bir bilgisayarı kiralamanın maliyeti kuşkusuz önemli bir konudur ve daha güçlü olanlar için aylık 20.000 doların üzerine çıkmaktadır.
Programcı insan gücü yetersizliği yaklaşık iki yıldır ciddi bir sorun olmuştur ve bilgisayar gruplarını rahatsız etmeye devam edecektir. 1956 yılı boyunca, mevcut bilgisayar süresi (modern bilgisayarların artan hızları dikkate alındığında) muhtemelen en az dört kat artacaktır. İnsan gücü eğitim sorununun bu genişleme hızına nasıl ayak uyduracağı zor görünmektedir. Bu nedenle, programcı zamanının etkin kullanımı büyük bir gereksinimdir.
Üçüncü madde olan, problemin ortaya çıkışından sonuçların üretilmesine kadar geçen süre, ana işlevi çok sayıda “tek seferlik” problemin programlanması olan bir bilgisayar laboratuvarında özellikle önemlidir. Sürekli olarak standart programlarında değişiklikler yapan ticari veri işleme grupları için de yalnızca biraz daha az önemlidir. Mantıksal adımlar konusunda karar verildikten sonra, üretim aşamasına ulaşılıncaya kadar geçen uzun süreci kabullenmek, hem problemi ortaya koyan kişi hem de programcı için son derece can sıkıcı hâle gelmektedir.
İngiltere’deki Cambridge Üniversitesi, otomatik programlamayı anlamlı bir düzeyde kullanan ilk grup olmuştur. EDSAC bilgisayarı 256 kelimelik çok sınırlı bir bellek boyutuna ve 16 ikili basamaklık bir kelime uzunluğuna sahipti ve çoğu problem bu zorlukların aşılması için özel dikkat gerektiriyordu. Bilgisayarı işleten zeki ve yaratıcı bilim insanları, bu tür çalışmalar için günümüze kadar bir model olarak hizmet eden bir alt programlar sistemi ve bunların ele alınma yöntemini geliştirdiler. Bu organizasyonun ve bilgisayarın bir açıklaması Wilkes, Wheeler ve Gill tarafından yazılan bir kitapta yer almaktadır.
Wilkes, M. V., Wheeler, D. J., Gill, S., The Preparation of Programs for an Electronic Digital Computer, Addison-Wesley Press, Cambridge, Mass., 1951.
Benzer şekilde, Massachusetts Institute of Technology’deki Whirlwind bilgisayarı 16 bitlik sınırlı bir kelime uzunluğuna sahipti ve neredeyse tüm sayısal işlemleri gerçekleştirmek için çift duyarlıklı yorumlayıcı programlar gerekliydi. Burada da Whirlwind bilgisayarıyla çalışan bilim insanları, Cambridge grubunun çalışmalarını sürdürmüş ve genişletmiş ve bilgisayar için kapsamlı bir programlama sistemi geliştirmiştir. Bu sistem, problemleri birçok biçimde (örneğin sabit nokta ya da kayan nokta) programlamak, programların hata ayıklamasını yapmak ve gerekli giriş ve çıkışı gerçekleştirmek için eksiksiz bir düzen içerir. M.I.T.’de yürütülen otomatik programlama çalışmaları, muhtemelen Amerika Birleşik Devletleri’ndeki herhangi bir grubun etkinliğinden daha fazla bilgisayar kullanımını etkilemiştir.
Otomatik Programlamanın Bileşimi
Otomatik Programlamanın Bileşimi başlığı altında yer alabilecek birçok unsur vardır. Bunlardan ilki ve en temel olanı alt programlardır. Alt programlar, burada ayrıntılı bir tartışmayı gerektirmez; ancak alt programın otomatik programlamanın temel yapı taşı olduğu belirtilmelidir. Son zamanlarda alt programlar, onları “özelleştiren” belirli öncül rutinler eklenerek “yüceltilmiştir”. Basit bir örnek olarak, bir öncül rutin, Xk değerini bulmaya yönelik bir rutini, X sayısının karekökünü bulmaya yönelik bir rutin hâline getirebilir. Aynı genel yaklaşımda, alt program üreten rutinler de hazırlanmıştır. Örneğin, bir çıktı alt programı üreten rutin, belirli bir biçimde çıktı sağlayacak bir alt program oluşturur.
Otomatik programlamanın belki de en yaygın unsuru, yorumlayıcı türde programların kullanımıdır. Bu programlar, istenen belirli işlemleri gerçekleştirmek için, bilgisayarın iç mantığına yabancı olan, makine-dışı mantıkta yazılmış komutları alır. Bu tür rutinlerin en sık kullanılanlarından biri, yalnızca sabit nokta aritmetiği yapabilen bir bilgisayarda kayan nokta aritmetik işlemlerini gerçekleştiren bir rutindir. Diğer yorumlayıcı programlar, programcının tek adresli bir bilgisayarda çalıştırılmak üzere üç adresli komut mantığında programlar yazmasına olanak tanır. UNIVAC bilgisayarı için programlanmış ve analitik türev almayı bilgisayar tarafından otomatik olarak gerçekleştirmeyi sağlayan türler gibi başka örnekler de bulunmaktadır. Yorumlayıcı türde bir programla, bilgisayara verilen sözde komutlar dahili olarak saklanır ve komut her yürütüldüğünde çevrilir. Böyle bir işlevi yerine getirebilme yeteneği, yüksek hızlı dijital bilgisayarın özünü oluşturmaktadır.
Günümüzde otomatik programlama düzeninin odak noktası, alternatif olarak "compiler" ya da "executive routine" olarak da adlandırılan assembly programıdır. Burada assembly programı terimini kullanacağız; çünkü bu ad, merkezi işlevi vurgulamaktadır. Böyle bir program aracılığıyla, özünde sentetik bir makine meydana getirilir—programlanması daha kolay ve hazırlanmış programların denetlenmesi daha kolay olan bir makine. Yukarıda sözü edilen yorumlayıcı türde programda olduğu gibi, programlama bilgisayarın kendisine yabancı bir dilde yapılır; bilgisayar, assembly programı aracılığıyla bu dili kendi diline çevirir. Yorumlayıcı türde program ile derleyici arasındaki önemli fark, çevirinin program verileri girildiğinde bir kez ve kesin olarak yapılmasıdır. Makine dilindeki program bilgisi daha sonra ya hemen hesaplama için bilgisayarda saklanır ya da daha sonra giriş yapılmak üzere manyetik banda, kâğıt delikli banda veya delikli kartlara bilgisayardan dışarı okunur.
Verilerin bilgisayar dışında depolanmak üzere dışarı verilmesinin avantajı, daha sonra çevrilmemiş verilere kıyasla çok daha yüksek hızlarda bilgisayara yeniden okunabilecek bir biçime sokulabilmesidir. Örneğin, 80 sütunlu kart başına bir komut oranındaki çevrilmemiş program verileri, geleneksel kart okuyucu ile saniyede iki komut hızında okunurken, çevrilmiş verilerle delinmiş "ikili kartlar", 701 ve 1103 bilgisayarlarında saniyede 48 sözcük hızında bilgisayara okunabilmektedir. İkili kartın geleneksel tablo düzenleme donanımıyla okunup yazdırılamaması, özgün kart elde bulunduğu ve erişilebilir olduğu için pek önemli değildir. Assembly ve çeviri işlevi giriş sırasında bir kez ve kesin olarak yerine getirildiğinden, bu tür program bazen bir giriş çeviri programı olarak adlandırılır.
Assembly programının ayrıntılı biçimine ilişkin bazı ek yönler aşağıda tartışılmaktadır. Bununla birlikte, önemli bir genel yönün vurgulanması gerekir. İlk assembly programları, bilgisayar tarafından yürütülecek her komutun açıkça yazıldığı türdendi. Başka bir deyişle, çevrilmemiş komutlar ile makine komutları arasında bire bir bir karşılık vardı. Teknikler geliştikçe, birçok açıdan, çevrilmemiş program verilerinin tek bir satırının çok sayıda makine komutu üretmesini sağlayacak bir düzen tasarlamanın arzu edilir olduğu görüldü. Örnek olarak, iki dizinin birleştirilmesini belirten tek bir yalancı komut, 50–100 sözcüklük bir program üretebilirdi. Bu bire-çok karşılık, programcının daha az komut yazmasına olanak tanıdı ve bunun sonucu olarak programlama hatalarının sayısını azalttı. Ancak böyle bir düzende, çevrilmiş makine verileri özgün veriye çok az benzediğinden, programlama hatalarını bulmak daha zorlaştı. Ayrıca, bire-çok felsefesine sahip derleyiciler, deneyimli programcının büyük sıkıntısına yol açacak biçimde, çoğu zaman "elle uyarlanmış" programlara kıyasla makine zamanını daha az verimli kullanan programlar üretti.
Assembly işleminde yerine getirilen başlıca işlevler şunlardır:
- Alt yordam ekleme
- Anımsatıcı aygıtlar
- Sayı dönüştürme
- Standartlaştırılmış otomatik veri okuma
- Yüzeysel hata çözümlemesi
Bunlardan ilki olan alt yordam ekleme, assembly programının, genellikle sabit bir adrese göre tanımlanmış yordamları, bellekte seçilen herhangi bir konumda çalışabilecek şekilde değiştirebilmesini ifade eder. Bazı durumlarda assembly programı, yukarıda belirtildiği gibi, alt yordamı değiştirir ya da belirli bir duruma özgü hale getirir. Alt yordamlar, delikli kartlardan ya da delikli bantlardan doğrudan bir biçimde bilgisayara okunabileceği gibi, manyetik bant veya manyetik tambur gibi daha yüksek hacimli bir depolamadan daha otomatik bir yöntemle programın içine derlenebilir.
İkinci madde olan anımsatıcı aygıtlar, assembly programının programcıya kullanımı ve akılda tutulması daha kolay bir dilde yazma olanağı sağlamasını ifade eder. Örneğin, 12968 ve 12969 gibi hatırlaması güç sayısal gösterimler yerine, birinci dönemde uçağın ağırlığını içeren hücrenin adresi için W1, ikinci dönemdeki uçak ağırlığı için W2 simgesi kullanılabilir.
Sayı dönüştürme, ondalık sayıların sabit noktalı ya da kayan noktalı işlemler için ikili sayılara dönüştürülmesine yönelik bir yöntemi ifade eder. Standartlaştırılmış veri okuma, tüm programların esasen aynı biçimde okunmasını ifade eder; böylece profesyonel olmayan bir makine operatörünün bilgisayarı çalıştırmasına olanak tanınır ve program denetimi sırasında programcının bulunması gereksinimi ortadan kaldırılır. Yüzeysel hata çözümlemesi ise, assembly programının çeviri yaparken belirgin hataları ortaya çıkarmak için yaptığı bir "hızlı gözden geçirme"yi ifade eder. Bunun bir örneği, sayıyı o kadar fazla ölçekleyen bir ölçekleme hatasıdır ki sayı yazmacın sol tarafından "taşar". Bu durumda bilgisayar, hatayı programcıya bildirir.
Yakın zamanda, 1103A bilgisayar kullanıcıları arasında işbirliğine dayalı programlama amacıyla kurulmuş ulusal bir kuruluş olan USE (Univac Scientific Exchange) organizasyonu, tıpkı SHARE organizasyonunun IBM 704 kullanıcıları için var olması gibi, assembly programlarını oldukça ayrıntılı biçimde tartışmıştır. Bu tartışmanın sonucu, toplantıya katılan üyeler tarafından arzu edilir görülen bir derleyicinin 17 özelliğinin listesi olmuştur. Bu 17 özellik, toplantı tutanaklarında yazıldığı şekliyle, burada bir Ek içinde verilmiştir.
Daha yakın zamanda, assembly programını yalnızca önemli fakat görece küçük bir parça olarak içeren bütünleşik hesaplama sistemine doğru bir eğilim ortaya çıkmıştır. Yukarıda belirtilen beş madde yalnızca dile, yani programcının program verilerinin ayrıntılı düzeyinde makineye bilgi iletme aracına ilişkindir. Bütünleşik hesaplama sisteminde, iletilen bu bilgi miktarı, aksi takdirde makine operatörüne sözlü olarak ya da yazılı talimatlarla iletilmesi gerekecek öğeleri de kapsayacak biçimde genişletilir. Bütünleşik hesaplama sisteminde aşağıdaki dört geniş alan önemlidir:
- Program dili
- Hesaplama kipinin seçimi
- Program değişikliği
- Esnek hata çözümlemeleri
Yukarıda belirtildiği gibi, dil yukarıdaki paragraftaki beş maddeyi ifade eder. Hesaplama kipinin seçimi, programcının kullanımına sunulan hesaplama sistemindeki çeşitli olanakların seçimini ifade eder. Örneğin, sabit noktalı ya da kayan noktalı hesaplama kipini otomatik olarak seçebilir; program verilerini çevirip hemen hesaplama yapmak isteyebilir ya da çevirip çevrilmiş bilgileri daha sonra giriş için dışarı vermek isteyebilir. Program değişikliği, elbette hatalar bulunduğunda ya da problemi ortaya koyan kişi belirli yordamları değiştirmek istediğinde gereklidir. Program değişikliği silmeleri, düzeltmeleri ya da eklemeleri içerebilir ya da genellikle olduğu gibi, bunların çeşitli birleşimlerini kapsayabilir.
Esnek hata çözümlemesi, programcının programlama hatalarını bulmak için ayrıntılı bir çözümlemeyi hangi araçlarla yapacağını seçmesini ifade eder. Örneğin, veriler bilgisayara girerken daha sonra yapılacak bir "değiştirilmiş sözcük post mortem" çözümlemesi için depolanması amacıyla hesaplama sistemine işaret verebilir. Örneğin, sistemden hesaplamayı duraklama noktalarında ya da her komutta izlemesini isteyebilir. Buradaki önemli kavram, tüm öğelerin, makinenin yalıtılmış alt sistemlerle kullanımını dışlayacak biçimde, tek bir hesaplama sistemi oluşturacak şekilde bütünleştirilmiş olmasıdır. Bütünleşik hesaplama sistemi, özellikle normalde hesaplama süresinin yaklaşık üçte birini gerektiren kod denetim işlemleri için, bilgisayarın daha verimli kullanılmasını neredeyse kesin olarak sağlar. Programcıların bilgisayarı kısa süreler için kullanmalarına ve program denetimi için gereksinim duydukları verileri çok kısa sürede almalarına olanak tanır. Ayrıca, programcının hazır bulunmasını gerektirmediğinden, gözetimsiz çalışmalara ve bunun sonucu olarak bilgisayar işletimi ve zamanlamasında daha yüksek esnekliğe olanak sağlar.
Güncel Sistemler
Otomatik programlama doğrultusundaki en önemli gelişmelerden biri, Remington Rand bünyesinde Dr. Grace Hopper yönetimindeki Programming Research Group tarafından gerçekleştirilmiştir. Bu grup, Univac bilgisayarı için A-1 derleyicisini ve onun ardılı olan A-2 derleyicisini geliştirmiştir. A-2 derleyicisi, programcının makine dilinden çok daha basit bir dilde makineyle iletişim kurmasına, görece az sayıda A-2 komutuyla çok sayıda makine komutu üretmesine, problemin Univac'ın manyetik bantları ile yüksek hızlı depolaması arasında otomatik olarak bölümlenmesine ve kayan nokta işlemi gibi çeşitli hesaplama seçeneklerine olanak tanır.
Daha yakın zamanda bu grup, A-2'nin iki yönde genişletilmesi olan B-0 derleyicisini hazırlamıştır: iş ya da ticari uygulamalarda daha sık kullanılan belirli işlemlere olanak tanır ve gelecekteki uygulamalar için esneklik sağlayacak biçimde tasarlanmıştır; böylece gerekli olabilecek değişiklikler ve eklemeler mümkün kılınır. B-0 derleyicisinin felsefesi, emir kipindeki çeşitli fiilleri bilgisayar diline çevirecek niteliktedir ve "merge", "collate", "sort", "find the sine of", "find the nth root of" gibi fiiller için bu tür çevirilere olanak tanır.
Remington Rand'ın etkinliklerinin bir başka kolu olarak, Dr. Herbert Mitchell'in New York grubu BIOR (Business Input-Output Re-run) derleme sistemini hazırlamıştır. Ticari uygulamalara yönelik olan bu sistem, programcının kendi kodlamasının çeşitli bloklarını alıp bunları yer değiştirmesine ve elverişli ve basit bir biçimde kullanmasına olanak sağlayan araçlar sunar. BIOR sisteminin tasarımı, tipik bir ticari problemin, manyetik bant gibi toplu depolamadan okunan, işlenen ve yeniden manyetik banda geri yazılan ya da başka bir biçimde dışarı okunan büyük veri kayıtlarını içerdiği gerçeğini dikkate almıştır.
IBM 701 bilgisayarı 1954'te ortaya çıktığında, bilgisayar için bölgesel programlama düzenleri olarak adlandırılan bir dizi düzen hazırlanmıştır. Bu düzenler, bilgisayar belleğinin belirli bölgelerini alt yordamlar, komutlar ve veriler için ayırmıştır. En azından, farklı bölgelere ait hücrelerin ayırt edilebilmesine olanak tanıyacak ölçüde anımsatıcı aygıtlar içermiştir. Genellikle, 129.0 ile 130.0 numaralı komutlar arasına 129.1'den 129.9'a kadar dokuz komutun eklenmesine olanak tanıyan Dewey Ondalık sistemine benzer bir yöntemle komut eklenmesine izin vermiştir.
Bölgesel programlama düzenleri geliştirilirken, aynı zamanda John Backus yönetimindeki New York grubunca IBM SPEEDCO sistemi geliştirilmiştir. Kayan noktalı aritmetik kullanıldığı için kolay programlamaya olanak tanımış, ancak ortaya çıkan yorumlayıcı programın bilgisayarda çok yavaş çalışması gibi bir sorunla karşılaşmıştır. Bu arada, IBM'in birçok müşterisi, yorumlayıcı kayan nokta kipine giriş ve çıkışa olanak tanıyan yorumlayıcı düzenler hazırlamıştır. Los Alamos'un DUAL'ı, Douglas'ın (El Segundo) QUICK'i ve Lockheed'in FLOP'u bu tür yordamların örnekleridir.
Daha yakın zamanda, John Backus'un IBM'deki grubu IBM 704 bilgisayarı için FORTRAN'ı (FORmula TRANslation) hazırlamıştır. FORTRAN, bir matematikçi ya da bilim insanının diline çok yakın bir biçimde yazılmış bir programı bilgisayar diline çevirir. Bu, indislerin, toplama işaretlerinin, parantezlerin ve matematiksel dilin aritmetik işlem sembollerinin çevrilmesine olanak tanıyan, sözde cebirsel kodlama sistemi olarak adlandırılan sisteme bir örnektir.
1955'in başlarında, Güney Kaliforniya bölgesindeki bir grup IBM 701 kullanıcısı PACT adlı bir derleyicinin hazırlanmasına başlamıştır. Bu assembly programı, veri dizileri üzerinde işlem yapmak için indis gösterimine ve ölçekleme çarpanı işlemini basitleştirmeye yönelik bir düzene vurgu yapmaktadır. PACT derleyicisi, 704 ile kullanılmak üzere değiştirilmektedir.
M.I.T. ve Michigan Üniversitesi'ndeki otomatik programlama gelişmeleri dikkat çekicidir. Bu sistemlerin her ikisi de sembolik gösterim, serbest adresler ve yalancı makine komutları kullanan bir assembly programı ya da giriş çeviri aygıtı içerir. Bununla birlikte vurgu, tüm sistemin geniş kapsamlı yönleri üzerinde kalmaktadır. Her iki sistem de gözetimsiz bilgisayar çalıştırmalarına büyük önem verir ve bu nedenle hesaplama kiplerinin ve hata tanılama aygıtlarının otomatik seçimine olanak tanır.
The Ramo-Wooldridge Corporation'daki bütünleşik hesaplama sistemi çalışmaları, M.I.T. ve Michigan Üniversitesi sistemlerinin çizgisini izlemektedir. 1103 bilgisayarı için hâlihazırda kullanımda olan bir sistem, tüm hizmet yordamlarını ve alt yordamları (toplam yaklaşık 8.000 sözcük) 16.000 sözcüklük tambur üzerinde depolamakta ve yanlışlıkla yok edilmesi durumunda manyetik bantta yedeklemektedir.
tambur verilerinin. Assembly programı, alt yordamları otomatik olarak tamburdan ana programa birleştirir. Program denetimi sırasında operatör, tamburda depolanmış çeşitli hizmet yordamlarını (döküm yordamları, giriş ve çıkış yordamları vb.) kullanımına alabilir ve programı bilgisayara okumayı içeren herhangi bir el işlemi olmaksızın bunları hızla çağırıp kullanabilir. Sonuç olarak, yalnızca programcı tarafından oluşturulan program ortamları bilgisayarın dışında delikli kartlar üzerinde saklanır. Diğer tüm yordamlar, hizmet ve alt yordamlar, bilgisayarın içinde doğru ve ekonomik bir biçimde depolanır; burada hızla ve otomatik olarak kullanıma çağrılabilirler.
Gelecek Sistemler
Bilgisayar kullanımına yönelik gelecek sistemlerde iki eğilim açıkça görülmektedir: ilki, yukarıda sözü edilen otomatik ve kapsamlı hesaplama sisteminin giderek daha fazla kullanılması ve geliştirilmesi; ikincisi ise "mikroprogramlama" tekniklerinin ilk kullanımlarıdır.
Tamamen otomatik ve kapsamlı hesaplama sistemi iki temel güdüden doğmaktadır: birincisi, programcının büro işlerini azaltma, çalışma düzeyini yükseltme ve genel olarak etkinliğini artırma isteği; ikincisi ise, üretken olmayan bilgisayar zamanının miktarını azaltma isteğidir. Günümüz ölçütlerine göre olağanüstü karmaşık ve sahip olunması ve işletilmesi olağanüstü pahalı olacak makinelerin geliştirilmesi karşısında, bu ikinci güdü büyük önem kazanmaktadır. Bu yazar, çoğu büyük ölçekli bilgisayar için kullanılan hesaplama sisteminin 2–3 yıl içinde aşağıdaki özelliklere sahip bir sisteme evrileceğine inanmaktadır:
-
Bilgisayar, 3–5 saat boyunca otomatik ve kesintisiz olarak çalışacak; kod denetimleri ve çok çeşitli üretim hesaplamaları gibi pek çok farklı türde bilgisayar çalışmasını yürütecektir.
-
Programcı, hiçbir bilgisayar depolama ortamıyla uğraşmayacak; yalnızca kendisinin hazırladığı programlama materyallerinin basılı sayfalarıyla ya da bir bilgisayar çalışmasının sonuçlarını veren basılı materyallerle ilgilenecektir. Programlama materyallerini bir veri hazırlama odasına teslim edecek ve kısa bir süre sonra, bir bilgisayar çalışmasının sonuçlarını masasında alacaktır.
-
Bilgisayar, çeşitli problemlerin çalıştırılması için gerekli tüm bilgilerin sırayla kaydedildiği manyetik bantlar olan "çalıştırma bantları" hazırlanarak 4–6 saat önceden programlanacaktır. Ortaya çıkabilecek daha yüksek öncelikli problemlere yönelik olarak 4–6 saatlik programdan sapmalar mümkün olacaktır.
-
Programcıların çalıştırma talimatları ve program değişiklikleri banda kaydedilecek ve makine tarafından otomatik olarak işleneceğinden, bilimsel bilgisayar tesisinin mevcut 50–100 programının çalıştırılması ve denetlenmesi, günümüz ticari tesislerindekine birçok yönden benzeyen ve pek çok bakımdan oldukça daha zor olan bir dosya bakım problemi hâline gelecektir.
-
Hesaplama sistemi, bürokratik programlama hatalarının neredeyse tamamını bulacak ve çoğu durumda programcının "büyük olasılıkla" kastettiği işlemi yerine getirecektir. Her durumda makine, bulunan hataları ve yapılan yorumları çıktı dökümleri aracılığıyla programcıya bildirecektir.
-
Makine operatörleri, yalnızca manyetik bant makaralarını değiştirecek ve bilgisayar hatası, hesaplama sisteminin kullanımında programcı hatası ya da daha yüksek öncelikli problemlerin araya sokulmasına izin vermek üzere bilgisayar programını değiştirme seçeneklerinin kullanılması durumunda bazı özel rutinleri devreye alacaktır. Esasen programcı, bilgisayarı masasından çalıştıracaktır.
-
Sistem, operatörün eylemlerini önemli ölçüde denetleyecektir. Örneğin, yanlış bir bant makarasının bir bant ünitesine takılması, birçok durumda izleme daktilosunda bu duruma ilişkin bir uyarının yazdırılmasına yol açacaktır.
-
Çıkış bant üniteleri belirli aralıklarla bant makaralarından çıkarılacak ve programcıya geri gönderilecek bilgilerin basılması için yüksek hızlı (dakikada 500–1000 satır) yazıcılara yerleştirilecektir. Birçok durumda, operatör müdahalesine gerek kalmadan, çıktı gereksinim duyulduğunda bilgisayar tarafından otomatik olarak başlatılacaktır.
Elbette yukarıda tanımlanan türde bir sistemin geliştirilmesine ilişkin sorumluluğun büyük bir kısmı bilgisayar üreticisine aittir. Sistemin tarif edildiği şekilde çalışabilmesi için, bugüne kadar bilgisayar sistemlerine dâhil edilmemiş bazı tasarım özelliklerinin eklenmesi gerekmektedir. Özellikle:
Otomatik Programlama
Bant ünitesi çalışması çok daha esnek hâle gelmelidir. Bağımsız bant çalışması (tercihen bağımsız bant araması) ve çok sayıda bant ünitesinin aynı anda çalıştırılması zorunlu olacaktır. Önceden kaydedilmiş verilerin bir bloğu içinde silme ve yeniden kaydetme yeteneği büyük önem taşıyacaktır. Bir diğer husus, tüm bilgisayar anahtarlarının dahili program tarafından denetlenebilir olması gerekliliğidir. Günümüzde hiçbir bilgisayar bu yeteneklere sahip olmamakla birlikte, IBM kısa süre önce IBM 704 üzerinde bu doğrultuda değişiklikler duyurmuştur.
The Ramo-Wooldridge Corporation’a teslim edilecek 1103A bilgisayarı için şu anda hazırlanan hesaplama sisteminin tasarımında, "nihai sistem"e doğru bazı adımlar atılmıştır. Programcı, çalıştırma talimatlarını, program değişikliklerini, program hata tanılama yordamlarını ve çıktı talimatlarını kendi programlama formuna yazar. Bu bilgiler doğrudan manyetik banda aktarılır ve bilgisayara yerleştirilir. Sistem programı birleştirir, tüm program değişikliklerini dâhil eder, programı çalıştırır, hata analizini gerçekleştirir ve tüm bu işlemler için uygun ve eksiksiz çıktılar üretir. Programcı, tüm operasyon için talimatları yazılı biçimde sunar ve bilgisayar sonuçları kendisine geri dönene kadar bekler. İlk tasarımda her program için ayrı bir bant makarası kullanılarak dosya bakım problemi önlenecektir. Bir ölçüde kısaltılmış bir biçimde, sistem 1956 sonuna kadar faaliyete geçecektir.
Önümüzdeki birkaç yıl, bilgisayar tasarımı ve bilgisayar kullanımında "mikroprogramlama" olarak adlandırılan bir tekniğin ilk uygulamalarına sahne olacaktır. Birçok bilgisayar kullanıcısı, uygulamalarına uygun olmayan komut mantıklarının kullanımından uzun zamandır rahatsızlık duymaktadır. Mikroprogramlama, programcının "mikrokomutlar"dan kendi bilgisayar komutlarını sentezlemesine olanak tanıyacaktır. Esasen, mikroprogramlama ile programcı kendi denetim birimini "inşa etmiş" olacaktır; bu "inşa" işlemi, bir fiş panosu biçiminde ya da bilgisayar programı aracılığıyla elektronik hızlarda özümseme yoluyla gerçekleşecektir.
Bu tarih itibarıyla mikroprogramlama konusundaki çalışmaların çoğu "konuşma aşaması"ndadır. Yazarın bilgisine göre mikroprogramlama üzerine yayımlanmış yalnızca bir makale vardır; bu da Herbert T. Glantz’a aittir.* Glantz, makalesinde bilgisayarın normal (geleneksel) kipini terk edip bir "Mikro Kip"e geçmesini sağlayacak bir mikroprogramlama olanağı için bir plan sunmaktadır. Bu kipte bilgisayar, özel bir manyetik çekirdek bellekte belirtilen sıraya göre mikrokomutlardan oluşan komutları yerine getirecektir. Programcının komutuyla bilgisayar normal kipe geri dönecek ve aritmetik ile mantıksal işlemleri geleneksel biçimde gerçekleştirecektir.
Glantz, H. T., "A Note on Microprogramming", Journal of the Association for Computing Machinery, Cilt 3, Sayı 2, Nisan 1956.
Mikroprogramlama üzerine yapılan ilk toplantılardan biri Mart 1956’da Massachusetts Institute of Technology’de düzenlenmiştir. Bu gayriresmî toplantıda İngiltere, Cambridge University’den Dr. David Wheeler, Cambridge’in bu alandaki çalışmalarından söz etmiştir. EDSAC II bilgisayarını işleten Cambridge grubu, alt yordamların normal komut hızlarıyla karşılaştırılabilir hızlarda çalışmasını sağlamak amacıyla alt yordamları manyetik çekirdekli bir denetim matrisi içinde kodlamayı planlamaktadır. Bu teknik, ortak komutlardan karmaşık komutların sentezlenmesini sağlayacak bazı makine değişikliklerinin yapılması, yani "makroprogramlama" olarak nitelendirilebilir. Mikroprogramlama doğrultusundaki faaliyetlerinin, bilgisayar denetiminin merkezini oluşturan bir manyetik çekirdek matrisinden yararlanacağı anlaşılmaktadır.
Bu ülkede iki üniversite grubu mikroprogramlama ile ilgilenmekte ve planlar oluşturmaktadır: MIT ve SWAC’ı işleten University of California at Los Angeles’taki Sayısal Analiz Araştırma grubu. MIT, Whirlwind I bilgisayarında düzenli komut repertuvarının bir parçası olarak ek bir mikrokomutu kullanıma sunacak fikirler geliştirmiştir. Bu komutun adres kısmı, bilgisayarın denetim matrisinin 120 alt komut hattını kontrol edecektir. Muhtemelen programcı, bu 120 hattı dilediği gibi kullanarak kendi komutunu kurgulayacaktır.
University of California at Los Angeles’taki faaliyetler, C. B. Tompkins’in yönetiminde Robert Mercer tarafından (yayımlanacak) bir yüksek lisans düzeyinde tezin yazılmasıyla sonuçlanmıştır. Mevcut planlar gerçekleşirse, Sayısal Analiz Araştırma grubu SWAC denetim sistemini kapsamlı biçimde inceleyecek, ardından alt komutların seçimine olanak tanıyacak bir fiş panosuyla sonuçlanması muhtemel geniş çaplı değişiklikler yapacaktır. Grup, saklı program denetimi altında elektronik hızlarda alt komut seçimine imkân verecek bir sonraki adımı tamamlamayı ummaktadır.
Mikroprogramlamanın gelecekteki olanakları oldukça geniştir. Mikroprogramlama ile programlamanın üç düzeyli bir hiyerarşisi tasavvur edilmektedir. Üretim düzeyinde programcılar, muhtemelen ayrıntılı derleyici yordamlar aracılığıyla "sinüsünü bul", "birleştir" vb. işlemleri gerçekleştiren alt yordamları kullanacaktır. Bir sonraki düzeyde, "alt yordam programcıları" alt yordamları hazırlayacaktır ki bunlar
(36. sayfada devamı)
Otomatik programlama, mikro-komutlardan oluşan talimatlardan meydana gelecektir. Bir dizi programcı, mikro talimatlardan talimatlar programlayacaktır. Her düzeyde programcılar gerekli yordamları veya talimatları belirleyecek; bir sonraki “alt” düzey grubun sorumluluğu ise bu araçları bir anlamda en uygun olacak şekilde biçimlendirmek olacaktır.
Büyük olasılıkla, üretim düzeyindeki programcılar mikroprogramlama düzeyindeki etkinliklerden hiçbir şey bilmeyecek ve tersi de geçerli olacaktır. Günümüzde üretim programcıları ile derleyici yordamlarını ve hesaplama sistemini hazırlayan programcılar arasında bu durum neredeyse böyledir. Geleceğin hesaplama sistemi tasarımı, üç düzeyin etkinliklerini büyük ölçüde bütünleştirecektir.
Mikroprogramlamanın başarısının derecesinin, esas olarak sentezlenen talimatların hangi hızda yürütülebildiğinin bir fonksiyonu olacağı konusunda pek az kuşku vardır. Beş yıl önce, bilgisayar alanındaki çoğu kişi kayan noktanın yorumlayıcı biçimde gerçekleştirilebileceğinden ve yavaş hızların kabul edilebilir olduğundan memnundu. Bilgisayar kullanımı arttıkça, bu biçimde kayan nokta işleminin çok yavaş olduğu ve donanımda yerleşik kayan noktanın gerekli olduğu ortaya çıktı.
Bu durum mikroprogramlama ile de yeniden yaşanabilir. Bir talimat sentezlenir, kullanılır ve değer verilir verilmez, kullanıcılar daha hızlı çalışması için donanımın bir parçası olarak dâhil edilmesini isteyeceklerdir. Mikroprogramlı talimatlar, kalıcı ve kablolu karşılıklarıyla rekabet edebilecek hızlarda çalışmak zorundadır; aksi halde tüm teknik gözden düşecek ve körelerek yok olacaktır.
EK
Aşağıda, Univac Scientific Exchange (USE) kuruluşunun yakın zamanda benimsediği arzu edilen derleyici özelliklerinin bir listesi verilmektedir.
-
Sahte talimatlardan alt programları derlemek. Bir kütüphane alt programının kullanılmasını gerektiren bir sahte talimat ana programda yer alacaktır. İstenen işlevi yerine getirmek için gerekli alt program daha sonra sözde derlenmiş bir bölgeye otomatik olarak derlenecektir. Başlangıçta sahte talimatı içeren kod satırı, bir veya daha fazla talimatın uygun çağırma dizisiyle değiştirilecektir.
-
Aksi halde tanımlanmamış sembolik adreslere hücre numaraları atamak. Normalde bu hücre numaralarına derlenmiş bir bölgede adresler atanacaktır. Bu özellik, çalışma depolama konumlarının kolayca atanmasına olanak sağlar.
-
Sayısal sabitleri adres olarak kullanmak. Derleyici, bir talimatın adres bölümünün aslında bir sayısal sabit olduğunu saptayabilmelidir. Bu sayının değeri daha sonra derlenmiş bölgedeki aksi halde kullanılmayan bir hücrede saklanacak; o hücrenin adresi talimatın uygun adres bölümü olarak doldurulacaktır.
-
Sembolik adresler. Derleyici, USE Kuruluşu tarafından alt programlar için standart olarak kabul edilenlere benzer sembolik adresleri kabul edebilmelidir. Sembolik adresler ifadesinin içinde serbest adresleme kavramı örtük olarak yer alır.
-
Sayı yazmanın kolay bir yöntemi. Bu bağlamda sayı, bir veya daha fazla tam yazmaç kaplayan ve genellikle sayı olarak düşünülen bir sayısal sabittir; bu, sayısal adreslerin yazılmasından farklıdır. Sabit nokta ve kayan nokta, tek ve çift duyarlıklı ondalık sayıların yanı sıra sekizlik sayıların da derleyici tarafından kabul edilmesi beklenmektedir.
-
Giriş-çıkış yordamları üretebilme yeteneği. Buradaki düşünce, programcının istediği sayısal çıktının biçimine ilişkin nispeten basit tanımlamalar yapabilmesi ve derleyicinin, belirtilen özel işi yapmak için gerekli yordamı otomatik olarak üretip birleştirmesidir.
-
Kart ve bant girdisiyle her tür değişikliği kolayca yapabilme yeteneği. Bu, açıkça değerli ve tartışmasız bir hedeftir. Ancak tartışma, bu tür genelleştirilmiş değişikliklerin tam olarak nasıl yapılacağına ilişkin ayrıntıları çözmek için önemli ölçüde uzlaşma gerekebileceğini göstermiştir.
-
Çağırma dizilerini üretmek. Derleyicinin bu yeteneğine yukarıdaki 1 numaralı maddede değinilmiştir. Bir çağırma dizisi yalnızca bir RJ’den fazlasını gerektirebilir; ortak derleyici bu çağırma dizilerini öngörülebilir bir biçimde otomatik olarak üretebilmelidir.
-
İkili bant çıktısı sağlamak. Bazı kurulumlarda ikili bant çıktısı en yaygın çıktı biçimi olabilir; diğerlerinde ise bir seçenek olarak sunulabilir. Her durumda derleyici bu yeteneğe sahip olmalıdır.
-
Sembolik yan yana listeleme sağlamak. Bazı kurulumlar, özellikle arıza giderme dönemlerinde bu tür bir listelemeyi son derece yararlı bir çıktı biçimi olarak bulmuştur. Sembolik yan yana listeleme, bazı kurulumlarda mevcut olan ve özgün delikli kartların tek bir kâğıtta listelenmesi; daha sonra çevrilmiş kodu (genellikle sekizlik) gösteren ilgili bir listenin başka bir kâğıtta üretilmesi yönteminin karşıtıdır.
-
Girdi dönüşümü sırasında hataları saptamak. Kodun ve girdi kartlarının ya da bandının hazırlanması sırasında yazım veya sözdizimsel hatalar yapılabileceği açıktır. İyi bir derleyici bu tür hataları saptayabilmeli, programcının kullanımı için bunların bir listesini oluşturabilmeli ve mümkün olduğu ölçüde dönüşümü sürdürmelidir. Bu, programcının hatalar listesini incelemesine ve makineye dönmeden önce mümkün olduğunca çoğunu düzeltmesine olanak tanır.
-
Kartlardan veya banttan sembolik programları işlemek. Derleyici, kartlar veya bant üzerinden girilen sembolik programları işleyebilmelidir; başka bir deyişle, her iki girdi biçimi de mümkün ve kullanışlı olmalıdır.
-
Hata tanılama yordamlarıyla uyumluluk. Girdinin biçimi ve programcının hata tanılama yordamlarını kullanması için yapılan düzenlemeler tamamen uyumlu olmalıdır. Yani, programcının kodlama hatalarını tanılamak için belirtmesi gereken bilgiler, derleyicinin işleyebileceği ve olağan girdi biçimiyle uyumlu bir formda olmalıdır.
-
USE alt programlarını dâhil etmek. Derleyici, bir USE alt programını özgün sembolik biçiminden değiştirmeden işleyebilmeli ve bu sembolik alt program özgün el yazmasının bir parçası olarak yer aldığında, programın ana gövdesine dâhil edebilmelidir.
-
Çıktının tanımlanması. Derleyicinin çıktı olarak ürettiği her türlü malzeme, rutin olarak tam biçimde tanımlanmış olmalıdır. Örneğin, sembolik yan yana listeleme tanımlanmalıdır; buna programcının adı, mümkünse tarih, program numarası vb. dâhil olacaktır.
-
Doğrudan girdi. Derleyici, bir programın okunmasını ve derlenmesini ve dâhil edilmiş olabilecek değişiklikleri tamamladıktan sonra, çevrilmiş program nihayetinde çalışma konumunda saklanacaktır; böylece derleme tamamlandıktan hemen sonra, herhangi bir ara adım gerekmeden program yürütülebilecektir.
-
İşletim yordamlarıyla uyumluluk. Derleyiciye, makinede bir çalıştırmayı tamamlamak için gerekli sıralama ve düğmelere basma ile ilgili basit işletim talimatlarını ele almaya yönelik bazı düzenlemeler yerleştirilmelidir. Bu maddenin dâhil edilmesiyle ortak derleyicinin otomatik işletim özelliklerini içinde barındırması gerektiği kastedilmemektedir; bunun yerine, derleyici, belirli bir kurulum otomatik işletim yordamlarını dâhil etmeye karar verdiğinde, büyük değişiklikler gerektirmeden bu değişiklikleri kabul edebilecek şekilde planlanmalıdır.