John H. Hughes
Yardımcı Başkan, Veri İşleme
American Mutual Liability Insurance Co.
Wakefield, Mass.
Bir dizi yapay dil (teknik olarak “kaynak diller” olarak adlandırılır), iş süreçlerini, açıklamanın bilgisayarın komut diline (teknik olarak “nesne dili” olarak adlandırılır) bilgisayar tarafından çevrilebileceği bir biçimde tanımlamayı kolaylaştırmak amacıyla tasarlanmıştır. Bu kaynak dillerden bazıları FLOWMATIC, COMTRAN, FACT, COBOL adlarını taşır. Bilgisayar çevirisi, “derleyici” adı verilen bir programın denetimi altında gerçekleşir.
Bu yapay dillerin ortak bir özelliği vardır: hepsi İngilizce sözcükler ve cümleler kullanır. Benim iddiam, bunun sıkça öne sürüldüğü gibi başlıca erdemleri olmadığıdır. Aksine, ticari “İngilizce dili” programlama sistemlerinin temel zayıflığının, aslında İngilizceyi kullanma girişimleri olduğu yönündedir.
Programları İngilizce mi Yazmalısınız?
Kaynak programlar için İngilizce dilinin öne sürülen başlıca avantajını bir an için ele alalım. İngilizce, büyük ölçekli bilgisayar üreticileri için önem taşıyan hemen herkes tarafından konuşulur, yazılır ve anlaşılır. Dolayısıyla, bilgisayar pazarlamacılarının bizi inandırmak istediğine göre, İngilizce dil derleyicisiyle birlikte büyük ölçekli bir bilgisayarın kullanıcısının yeni bir programlama dili öğrenmesine gerek yoktur — programlarını eski, tanıdık İngilizceyle yazabilir.
Gerçekte, bilgisayarların “anladığı” İngilizce, sizinle benim konuştuğumuz İngilizce değildir. Bizim için anlaşılırdır, çünkü aynı sözcüklerin bir kısmını ve aynı dilbilgisel yapıların bir kısmını kullanır. Ancak kısıtlamalarını öğrenmeden bu dili “konuşur” durumda olduğumuzu iddia edemeyiz. Burada, tıpkı Oxford Üniversitesi’nden C. K. Ogden tarafından geliştirilmiş, temel 850 sözcükten oluşan sadeleştirilmiş İngilizce olan Basic English adlı İngilizcenin yapay bir bölümünü öğrenirken olduğu gibi, bilinçli bir öğrenme çabası gereklidir.
Basic English öğrenirken, bir yabancının ana dili İngilizce olan birine göre belirgin bir avantajı vardır; çünkü izin verilen sözcük dağarcığının dışında kalan İngilizce sözcükleri kullanmaya hiç heveslenmez, zira onları bilmez. Oysa siz ya da ben Basic English konuşmaya çalışırsak, sözlüğünün dışında kalan ama son derece kullanışlı, kısa ve kesin olan sözcüklerden kaçınmak için sürekli bir çaba harcamamız gerekir.
Dolayısıyla bilgisayar İngilizcesi öğrenme gerektirir. Eğitim almamış bir kişinin, İngilizce bir kaynak dil kullanarak büyük ölçekli bir bilgisayarı hemen programlamaya başlayabileceği iddiası basitçe doğru değildir.
İngilizcenin Fazlalığı
Konuşulan ya da yazılan İngilizcenin bir başka özelliği de yüksek derecede fazlalık içermesidir. Harf ya da seslerin olası birleşimlerinden yalnızca çok küçük bir kısmı geçerli birleşimlerdir. Bu nedenle yazım ve telaffuz hataları, iletişime zarar veren duygusal tepkilere yol açabilse de, ciddi bir teknik engel oluşturmaz.
U cn rd nd unnerstan a sntnce ritn lyk ths wun w ev bit s much accrcy as th prev sentnce.
Bunun nedeni, henüz bilgisayar programlarının erişim alanında pek bulunmayan bir yeteneğe sahip olmanızdır: yaygın ifade ve yazım kalıplarını tanıma ve mevcut olabilecek bozulmaları telafi etme yeteneği. Bir bilgisayarı kötü dilbilgisi ve yazıma duyarsız olacak şekilde programlamak kavramsal olarak mümkündür, ancak muhtemelen zaman kaybıdır.
Dolayısıyla “bilgisayar İngilizcesi”, sıradan İngilizcenin fazlalık avantajını — yani gürültülü kanallara rağmen güvenilir biçimde iletişim kurabilme yeteneğini — kaybederken, dezavantajını korur: olası iletiler evreninin boyutu kısıtlansaydı elde edilebilecek olan özlü anlatımın yokluğu.
Bu durumda dili bilgisayar programcısının bakış açısından ele aldığımızda, bilgisayar İngilizcesi iki açıdan başarısızdır: çevirici (derleyici) programın anlayabileceği kadar kesin yazmak zordur ve basit bir komutu ifade etmek için çok fazla yazı gerektirir.
Program Uzunluğu
Program, bilgisayar İngilizcesine indirgendikten sonra, çeviri programının üzerinde çalışabilmesi için makine tarafından okunabilir bir biçime (kartlar, kağıt şerit ya da manyetik bant) aktarılmalıdır. Burada da aynı kusurlar karşımıza çıkar. Kaynak programın büyük uzunluğu, kopyalama hatası olasılığını artırırken, kesinlik gereksinimi bu tür hataları pahalı hale getirir.
Yönetimin Üst Kademelerindeki Yanılsamalar
Anlattığım sınırlamalar, bir kaynak dil olarak yararlılığını ve verimliliğini bu kadar kısıtlarken, İngilizce dilinde programlama (bilgisayar İngilizcesi) programlama teknolojisinde bugün sahip olduğu önem konumuna nasıl ulaşmıştır? Üzülerek söylemeliyim ki bunun, ticari kullanım için bilgisayar donanımı satın alma kararlarını vermek zorunda olan kişilerin çoğunun ne yaptıkları hakkında en ufak bir fikre sahip olmamalarından kaynaklandığına inanıyorum. (Bunun nedeni, bilgisayar işinin o kadar genç olmasıdır ki, neredeyse hiç kimse henüz pratik programlama deneyiminden geçerek yönetici sorumluluğu konumuna yükselmeye vakit bulamamıştır.)
Onlar için, İngilizce dil derleyicisiyle birlikte bir bilgisayar edinerek şirketlerini bir grup teknisyenin insafına bırakmaktan kaçınabilecekleri yanılsaması son derece güçlü bir satış cazibesine sahiptir. Böylece FACT ya da FLOWMATIC ya da COMTRAN ya da COBOL kullanmaya karar verirler. Ve programcılar bedelini öder.
Makine dili ya da makineye çok yakın dillerde eğitim almak zorunda olanlar, uygulanabilir bir derleyici elde etmek uğruna program verimliliğinde yapılan fedakarlıkların son derece farkındadır. Kaynak dilde yazanlar ise, “üst yönetim kademelerinin okuyup anlayabileceği” bir dil elde etmek için programlama verimliliğinden verilen ödünlerin kısa sürede farkına varırlar.
Bu “üst yönetim kademelerinin üyeleri” gerçekten “İngilizce” kaynak programların kullanımından herhangi bir kazanç elde ediyor mu? Bundan ciddi biçimde şüpheliyim. Kaynak programlar hâlâ üst yönetimin ilgi alanına girmemesi gereken ayrıntı düzeyinde yazılmaktadır. Bir sistemle ilgili temel gerçekler, yine de üst yönetime, kaynak programın bilgisayar İngilizcesiyle çok az ilişkisi olan, geniş hatlarla çizilmiş terimler halinde sunulmak zorundadır.
Peki ya bir programlama grubunun doğrudan amiri? İşini çok iyi biliyorsa, İngilizce dilinin verimsizliği onu rahatsız etme eğiliminde olacaktır. İngilizce dil derleyicisinin kullanımını, makine dili çabaları belki de bundan daha verimli olmayacak programcılar tarafından çalışır programlar yazılmasına olanak tanıdığı için ya da bir bilgisayarı “dikilip konuşur hale getirmekten” keyif alabilecek nadir zihinsel yapıya ve kişiliğe sahip programcılara olan ihtiyacı bir ölçüde azalttığı için onaylayabilir. Yapılması gereken fedakarlıklardan memnun olması pek olası değildir ve böyle bir derleyicinin gücünün, İngilizceyi kaynak dil olarak kullanmasından değil, buna rağmen ortaya çıktığını fark edecektir.
Bilgisayar İngilizcesini Terk Ederek İlerleme
Computer Sciences Corporation’ın FACT derleyicisi, Honeywell 800 bilgisayarı için uygulanmakta olup, bir sistemin girdi düzenleme ve rapor yazma gereksinimlerinin ifadesinde İngilizceyi terk ederek, İngilizce dilinin dezavantajlarını kısmen aşmaktadır. Bana göre bir sonraki mantıksal adım, sistemin ara aşamaları için daha az fazlalık içeren bir kod lehine İngilizceyi tamamen terk etmektir.
Bu noktada, İngilizce dil derleyicileri üzerinde çalışan uygulamalı programlama gruplarının çabalarının, İngilizcenin avantajlarına sahip fakat dezavantajlarından arındırılmış yeni bir dil için derleyiciler üzerinde çalışmaya yönlendirilmesini önermek isterim.
Örneğin, yeni dil gereksiz bağlaçların (fiiller tarafından ima edilenlerin) kullanımından kaçınmalıdır. Öğrenilmesi kolay, ancak gerçek İngilizce karşılıklarıyla kolayca karıştırılmayacak fiil kısaltmalarından oluşan bir sözcük dağarcığına sahip olmalıdır. Sözcük dağarcığı, bugün tek bir fiilin bulunmadığı yaygın veri işleme eylemleri için fiil kısaltmalarını içermelidir. Bilgisayar İngilizcesinde program kayıtlarına yönelik, var olduğu kadarıyla talebi karşılamak için, yeni dil çeviricisinin uygulanması, kısaltılmamış normal İngilizceye geri çeviri özelliğini içerebilir.
Gerçek Avantajlardan Vazgeçmeden
İngilizce dil derleyicilerinin (ve diğerlerinin) sahip olduğu aşağıdaki çok gerçek avantajlar, bu yeni derleyicinin uygulanmasında feda edilmek zorunda değildir.
-
Genel olarak, İngilizce dil derleyicileri programcıdan dosya organizasyonunu ya da “yerleşimini” bu amaç için tanımlanmış oldukça özlü bir “dil” ile açıklamasını ister. Dosya tanımı sırasında, dosyadaki alanlar ile programcının İngilizce dilinde programlamasında kullandığı İngilizce adlar arasındaki eşleştirme kurulur. Alanları adlandırırken programcı, tam adlar mı yoksa kısaltmalar mı kullanacağına kendisi karar verebilir. Elde edilen önemli avantaj, verilen dosyayı kullanan herhangi bir çalıştırmanın derlenmesi sırasında dosya tanımının derleyici tarafından kullanılabilir olmasıdır. Programcının yerleşimi ayrıntılı olarak düşünmesine gerek kalmaz ve alanlara adlarıyla başvurabilir; derleyici çerçevesi içindeki üreteçlerin gerekli adresleme ve maskeleme işlemlerini sağlayacağından emin olabilir. Bu süreçte, İngilizce dil derleyicisine özgü hiçbir şey yoktur; ancak İngilizce dil derleyicisi uygulamanın sorunları, bu yaklaşımın geliştirilmesine ivme kazandırmıştır.
-
İngilizce dil derleyicilerinin sözcük dağarcığı, çok sayıda makine komutunu içeren işlemleri temsil eden fiilleri kapsayabilir; örneğin “GET next A-file item.” Bu “GET”, pek çok günahı örter. Bu sadece, İngilizce kaynak dilin komutlarının makro-komutlar olduğunu ifade eder; ancak makro-komutlar hiçbir şekilde yalnızca İngilizce dil derleyicilerine özgü değildir.
-
Bazı “İngilizce dil” derleyicilerinin girdi ve çıktı düzenleme gereksinimlerini ifade etmek için başvurduğu oldukça özlü ve az fazlalık içeren yöntemler korunabilir ve korunmalıdır.
Son olarak, iş odaklı bir derleyici, makine dili ya da makineye yakın kodun kolayca eklenmesine izin vermelidir. Verimli biçimde genelleştirilmesi pratik olarak imkansız olan işlevler var olmaya devam edecektir. Tablo depolama bunun çarpıcı bir örneğidir; çoğu tablo, belirli makinenin sözcük yapısı anlaşılıp bundan yararlanıldığında çok daha verimli biçimde depolanabilir ve verimlilikteki artış beş kat gibi bir çarpana ulaşabilir.
Bu makalenin başlığı, dikkatinizi çekmek için, “Ticari Derleyicilerdeki Sorun”dur. Sorun, gördüğünüz gibi, temel bir sorun değildir. Ancak gelin, İngilizce dilinin kaynak program yazmak için kendi başına herhangi bir erdeme sahip olduğu konusunda kendimizi aldatmayı bırakalım ve fazlalığı, öğrenmeyi kolaylaştıracak ölçüde olan bir kaynak “dil” tasarlamaya odaklanalım.
DERLEYİCİ (COMPILER): Bir bilgisayarı, problem odaklı ya da süreç odaklı bir kaynak dilde ( kaynak program ) yazılmış bir programı, makine dilinde kaydedilmiş bir programa ( nesne program ) çevirmeye yönlendiren bilgisayar programı.
COMPUTERS and AUTOMATION, Temmuz 1961
Programlama Sistemi
PROGRAMLAMA SİSTEMİ: Kaynak programı makine diline çevirmek için gereken derleyici ya da bağlayıcı ile birlikte bir programlama dili.
Fazlalık
FAZLALIK: Bir ileti, alıcının olası iletiler evreninin hangi üyesinin kastedildiğini ayırt etmesi için gerekenden daha fazla bilgi içeriyorsa fazlalıklıdır. Anlaşılabilirlik kaybı olmadan kısaltılabilen her ileti fazlalıklıdır.