← Computers & Automation

Bir Bilgisayara Düz, Sıradan Doğal Dille Ne Yapacağını Söylemek

B
Bilinmeyen Yazar
1981 · Computers and Automation

Olaf Thorsen
Berkeley Enterprises, Inc.
815 Washington St.
Newtonville, Mass. 02160

“Düz sıradan doğal dil”, neredeyse herkesin anlayacağı … açık, doğrudan ve basit olduğunu düşüneceği şekilde bir şey söylemenin yoludur.


Taslak

  1. Ana Tezim
  2. “Düz Sıradan Doğal Dil” Nedir?
  3. Bir Şeyi Söylemenin Birçok Farklı Yolu
  4. Program Nedir?
  5. Bilgisayar Programı Nedir?
  6. Bir Bilgisayara Herhangi Bir Şey Söylemek — Engel 1: Dil
  7. Engel 2: Programlama Hakkında Nasıl Düşünülür
  8. Bir Bilgisayar Programının Alt Bölümleri
  9. Alt Bağlamların Açıklamaları
  10. Bir Bilgisayarda Doğal Dilin Bazı Örnekleri

1. Ana Tezim

Bir bilgisayara, düz sıradan doğal dille ne yapacağını söyleyebilirsiniz.

Başka bir deyişle, tuhaf ve katı bir bilgisayar programlama dilini (FORTRAN, COBOL veya BASIC gibi ya da diğer 500 dilden herhangi biri) öğrenmek ve kullanmak gerekli değildir (elbette yararlı, elverişli ve verimli olabilir).

Bu sav, ilk bakışta apaçık değildir. Ayrıca bilgisayar alanındaki çok sayıda kişi tarafından doğru bir ifade olarak kabul edilmez; muhtemelen bunu saçma olarak nitelendireceklerdir.

Ancak bu önerme ya da sav gösterilebilir. Sıradan doğal dili kullanarak programlamaya dair örnekler vardır. Ayrıca tanımlar, mantık ve olgulara dayanan, bu önermeye götüren bir akıl yürütme de bulunmaktadır.


2. “Düz Sıradan Doğal Dil” Nedir?

“Düz sıradan doğal dil”, neredeyse herkesin anlayacağı ve söyleniş biçiminin açık, doğrudan ve basit olduğunu düşüneceği şekilde bir şey söylemenin yoludur.

Başka bir deyişle, ifade tarzı:

  • laf kalabalığı yapan
  • yapmacık
  • entelektüel gösteriş içeren
  • kafa karıştırıcı
  • tuhaf
  • dolambaçlı

olmaz ve kolay anlaşılmayla çelişen başka özellikler taşımaz.

Bu ifadeye açık bir istisna vardır: belirli adlar. Nesnelerin bilindiği adları kullanmak zorundasınızdır. Motorlu araçlar söz konusu olduğunda, kullanmanız gereken adlardan bazıları clutch, transmission, carburetor’dır. Makul başka bir ad yoksa, ne kadar tuhaf olursa olsun bu adları kullanmak zorundasınız. Ve ben makul başka bir ad bilmiyorum.


3. Bir Şeyi Söylemenin Birçok Farklı Yolu

“Düz sıradan doğal dil” önemli bir özelliğe sahiptir: fikirler ya da ifadeler, anlamı önemli ölçüde değiştirmeden çok, çok farklı şekillerde söylenebilir.

Aşağıdaki istekleri düşünün:

  • Şekeri uzatır mısın, lütfen.
  • Lütfen şekeri uzat.
  • Şekeri alabilir miyim?
  • Şekeri rica edebilir miyim?
  • Şeker, lütfen.

Neredeyse herkes bu ifadelerin hepsinin aynı isteği anlattığını anlar ve muhtemelen şekeri uzatarak karşılık verir.

Buna karşılık, şunu düşünün:

Acaba tatlı, granüllü tozu içeren kabı yükseltip, zat-ı âlinizin bulunduğu yöne doğru nakletme nezaketini gösterir misiniz?

Bu dil ne düz, ne sıradan; doğal olmayan, laf kalabalığı yapan ve yapmacıktır ve aynı anlama gelmesine rağmen kahkahayla karşılanırdı.

Düz sıradan doğal dile ilişkin birkaç örnek daha:

  • 3 numaralı öğe ile 4 numaralı öğeyi çarp; bu 5 numaralı öğedir.
  • 5 numaralı öğe, 3 numaralı öğe çarpı 4 numaralı öğedir.

COMPUTERS and PEOPLE, Eylül–Ekim 1981, s. 16

Bir başka örnek:

  • 3 numaralı öğe ile 4 numaralı öğenin çarpımını bul; buna 5 numaralı öğe de.

Buna karşılık:

Şimdi, 3 olarak bilinen öğeyi alırsanız ve ardından onu 4. olarak adlandırılan sayı ile çarparsanız, 5 etiketiyle tanımlanan değeri elde edersiniz.

Düz sıradan doğal dil kavramını netleştirdiğimize göre, şimdi de “program” kavramını netleştirmeye çalışalım.


4. Program Nedir?

Bir program, bir şeyi yapmanın yoludur.

Bir program, sırayla düzenlenmiş bir dizi talimat ya da eylemdir.

Bir program, bir yordamdır.

Programlara bazı örnekler şunlardır:

  • ihtiyaç duyduklarınızı almak için bir mağazada nasıl alışveriş yapılacağı
  • yumuşak haşlanmış bir yumurtanın nasıl pişirileceği
  • bir müzik parçasının nasıl çalınacağı
  • bir kazak nasıl örülür
  • iyi bir karar nasıl verilir
  • jeoloji nasıl çalışılır

Bazı programlar, insan yaşamının olağan akışı içinde o kadar iyi öğrenilmiştir ki, adımlarını ve sıralarını düşünmek zordur; çünkü çok uzun zaman önce alışkanlıklara yerleşmişlerdir. Örnekler: ayakkabı bağcıklarını bağlamak; yürümek.

Bazı programlar ise o kadar yenidir ki, ne yapılacağını adım adım öğrenmeniz gerekir. Bu tür örneklere şunlar girer: çek defterini dengelemek; bir perakende mağazası için stok siparişi vermek; büyük dosyalardan bilgiyi kolay ve hızlı bir şekilde elde etmek.

Burada, bir bilgisayara istediğinizi yaptırmak için gereken adımların basit bir bütününü ele alacağız — tıpkı bir motorlu aracı istediğinizi yaptırmak için gereken adımları öğrendiğiniz gibi.


5. Bilgisayar Programı Nedir?

Bir bilgisayar programı, bir bilgisayarın yapabileceği işlemlerin, istediğinizi gerçekleştirecek şekilde düzenlenmiş bir dizisidir.

1930’larda bir bilgisayar, hesaplama yapan bir insan kâtibiydi ve işlem dizisi, “çalışma kâğıdı” denilen bir kâğıt parçası üzerinde ifade edilirdi; burada sütunlar ((1), (2), (3), (4) vb.) şu başlıkları taşırdı:

  • sütunun numarası
  • içindeki verinin adı
  • hesaplama yapan kâtibe o sütunu nasıl dolduracağını söyleyen formül

Örneğin, (1) haftanın gününü, (2) çalışılan saatleri, (3) o iş türü için ücret oranını ve (4) (2) ile (3)’ün çarpımına eşit olan maliyeti tutabilirdi, vb.

1980’lerde bir bilgisayar, hesaplama yapan bir makinedir ve bu bilgisayarın istediğiniz şeyi yapmasını sağlayan bir program, sade ve gündelik doğal dilde ifade edilirse şöyledir:

  1. (1)’i haftanın günüyle doldurun.
  2. (2)’ye çalışılan saatleri koyun.
  3. (3)’e ücret oranını girin.
  4. (2) ile (3)’ü çarpın; bu (4)’tür.

Ve böyle devam eder.

Şimdi, bilgisayarlar 30 yılı aşkın bir süredir iş ortamında bulunmasına rağmen, yerleşik bilgisayar programcıları topluluğunun bu basit talimatları ifade ettiği diller zor ve karmaşıktır.

Ayrıca, işlem dizilerinin ya da adımların tasarımında yapılması gereken zor ve karmaşık seçimler vardır; çünkü ilerleme yollarının bazıları diğerlerine göre çok daha maliyetlidir.

Örneğin, bir telefon rehberinde bir isim arıyorsanız, A’lar bölümündeki 1. sayfadan başlayıp Pennypacker adınızı her ardışık kayıtla karşılaştırarak, üç gün sonra P’lerde Henry H. Pennypacker adınızı bulana kadar devam etmek ister misiniz?

Elbette, hesaplama işi yapan bir memur, kendisine söylenmeden bile, çok daha verimli bir arama yapardı.


6. Bir Bilgisayara Bir Şey Anlatmak — Engel 1: Dil

Hesaplama makinelerinin ilk günlerinde, bilgisayarları programlamak zordu. Programlama için kullanılan ilk dil, genellikle makine dili olarak adlandırılan 1’ler ve 0’lardan oluşan dizilerden ibaretti. Bunlar, anahtarların ayarlanmasına karşılık gelirdi; 1 “açık”, 0 ise “kapalı” demekti.

Programlama için kullanılan ikinci dil, bir telefon numarası için BUT 7887 gibi, harf ve rakamlardan oluşan kolay dizilerden oluşuyordu. Bu genellikle assembly dili olarak adlandırılırdı ve programların çok daha kolay bir biçimde bir araya getirilmesini ya da monte edilmesini sağlardı.

Daha sonra, FORTRAN (“formula translation” için), COBOL (“common business oriented language” için) ve BASIC (Dartmouth College’da belirli bir öğretim ortamındaki “basic” sözcüğünden, daha sonra “Beginners’ All-purpose Symbolic Instruction Code”un baş harfleri olarak anımsatıcı hâle getirilen) gibi adlara sahip sözde daha yüksek seviyeli diller ortaya çıktı.

Makinelerde, dillerde, bilgisayarlara erişimde, maliyet düşüşlerinde vb. alanlarda büyük gelişmeler yaşandı.

Mikrobilgisayarların ortaya çıkmasıyla ve kolay, basit programlama isteyen yeni bilgisayar kullanıcılarından oluşan büyük bir dalgayla birlikte, programlama dili olarak “sade gündelik doğal dil” hedefi erişilebilir hâle gelmiştir.


7. Engel 2: Programlama Hakkında Nasıl Düşünmeli

Bir bilgisayara bir şey yaptırmak için sade gündelik doğal dili kullanmaya başladığımızda, ikinci bir engelle karşılaşırız: BASIC kadar iyi bir dil bile olsa, bir programlama dilinin ağır yükü olmadan bilgisayar programlaması hakkında nasıl düşünebiliriz?

Gerçekte, sade gündelik doğal dilde programlamak için düşünmemiz, anlamamız ve düzenlememiz gereken yalnızca 13 alt bölüm (ya da 12 ya da 14 civarında), 13 alt bağlam vardır.

Ve bu alt bölümler (ya da alt bağlamlar), insan memurlar tarafından yapılan sıradan hesaplamanın alt bölümleriyle çok iyi örtüşür.


8. Bir Bilgisayar Programının Alt Bölümleri

Her bilgisayar programı aşağıdaki alt bölümlere sahiptir ya da sahip olabilir (bunlara “alt bağlamlar”, bilgisayar programlama bağlamının bölümleri diyeceğiz):

  1. Bilgisayar programının bilindiği, hakkında konuşulabildiği, dosyalanabildiği ve dosyadan çıkarılabildiği bir ad.
  2. Verilerin ya da bilgilerin programa yerleştirilebilmesi ya da girdi olarak alınabilmesi için bir yol.
  3. Bir dosyadan ya da tablodan gelen verilerin programa yerleştirilebilmesi için bir yol.
  4. Programa hesaplama ve akıl yürütme talimatlarının verilebilmesi için bir yol.
  5. Koşulların kararlaştırılabilmesi için bir yol.
  6. Bir talimat dizisinden başka bir talimat dizisine dallanma yolu.
  7. Küçük değişikliklerle bir talimat dizisi üzerinden tekrar tekrar döngüye girme ya da tekrarlama yolu; döngüler tamamlanana kadar sürer (aksi hâlde bir “sonsuz döngü” olur ve program asla durmaz).
  8. Çeşitli durumlarda kullanılmak üzere alt yordamların ya da kuralların çağrılması ve ardından ana programa geri dönülmesi yolu.
  9. Sonuçların zaman zaman bir terminal, bir yazıcı, bir ekran, bir dosya ya da bir tabloya çıktı verilmesi yolu.
  10. Durdurma yolu.
  11. Programın yeniden kullanılabilmesi için dosyalanması yolu.
  12. Programın örnekler ve durumlar üzerinde çalıştırılması yolu.
  13. Hataları (bug olarak adlandırılır) gidermek ve karşılanması gereken gereksinimlerdeki değişiklikleri kapsamak amacıyla programın değiştirilmesi yolu.

9. Alt Bağlamların Açıklamaları

Alt bağlamların ilki, programın adıdır. 1930’larda hesaplama memurlarından oluşan bir bölümde bu ad “maaş bordrosunu hesaplama”, “fazla mesaiyi kaydetme” ya da “stok yenileme” vb. olabilirdi. Sürecin büyük bir kısmı, “biz bunu her zaman böyle yaparız” ve “işte bunu yapma biçimimize ait bir örnek” gibi ifadelerle, memurların belleğinde yer alırdı.

İkinci alt bağlam, verinin programa girme yoludur. Postayla yeni bir sipariş geldiğinde, teslimat odasına bir sevkiyat ulaştığında ya da bir ürün sevkiyat platformuna çıktığında, veri üretilir ve üzerinde işlem yapılır.

Üçüncü alt bağlam, dosyalardan ya da tablolardan gelen verilerdir. Dosya, tedarikçilerin adreslerinden oluşan bir küme olabilir. Tablo ise satış temsilcilerinin komisyon yüzdelerini içeren bir tablo olabilir.

Dördüncü alt bağlam, hesaplama ve akıl yürütme kurallarıdır; hesaplamaların yapıldığı, sınıflandırmaların belirlendiği yolları kapsar.

Beşinci alt bağlam, KOŞULLARIN kararlaştırılma yoludur.

Koşullar IF, SUPPOSE, ASSUMING, IN CASE, IN ALL REMAINING CASES gibi kavramları içerir. İşaretleri, göstergeleri, açık olma durumunu, kapalı olma durumunu, bayrakları, doğruyu, yanlışı ve benzeri fikirleri kapsar.

Altıncı alt bağlam, bir talimat dizisinden başka bir talimat dizisine DALLANMA yoludur.

Bir üniversite birinci sınıflara, ikinci sınıflara, üçüncü sınıflara ve son sınıflara farklı kural kümeleri uygular. Bir bilgisayar da benzer biçimde farklı durumlara farklı talimat kümeleri uygulayabilir.

Yedinci alt bağlam, küçük değişikliklerle bir talimat dizisi üzerinden tekrar tekrar DÖNGÜYE GİRME ya da TEKRARLAMAdır; döngüler tamamlanana kadar sürer.

Bu aslında çok yaygın bir fikir ve yaygın bir uygulamadır; ancak deneyimlerimize o kadar yerleşmiştir ki pek fark etmeyiz. Sayarken bunu yaparız; doğal sayıların düzenli dizisini kullanır ve bir kümenin son öğesine ulaştığımızda dururuz. Bir toplama makinesiyle bir sütun dolusu sayıyı toplarken de bunu yaparız; eklenecek son sayıya ulaştığımızda durur, ardından bir düğmeye, kola, tuşa ya da kumandaya basarız; bu da “artık toplamı istiyorum” sinyalini verir ve toplama makinesi toplamı yazdırır.

Sekizinci alt bağlam, çeşitli durumlarda kullanılmak üzere ALTYORDAMLARIN ya da KURALLARIN çağrılması ve ardından ANA programa geri dönülmesidir.

Örneğin, farklı yerleşim bölgelerinde farklı satış vergilerini sağlayan bir kural olabilir ve yerleşim bölgesi belirli yerlerden herhangi biri olduğunda altyordam çağrılır.

Dokuzuncu alt bağlam, sonuçların zaman zaman bir TERMİNALE, bir YAZICIYA, bir EKRANA, bir DOSYAYA ya da bir TABLOYA çıktı verilmesidir.

Çünkü her bilgisayar programı, bir probleme ait çözümü, kullanılacağı yere ulaştırdığında harcanan çaba ve zahmete değer hâle gelir.

Onuncu alt bağlam, DURDURMA yoludur; bununla programın düzenli bir biçimde durdurulmasını kastediyoruz.

Çünkü her zaman (en azından teoride) fişi çekip bilgisayarı öyle bir biçimde devre dışı bırakmak mümkündür ki, yeniden başlatmak çok zor olur. Özel bir yapıya sahip dev bir bilgisayar olan telefon sistemi bir istisnadır: onu durdurmak çok zor olabilir. Birçok programlama dilinde STOP sözcüğü programı gerçekten durdurur.

On birinci alt bağlam, programın yeniden kullanılabilmesi için DOSYALANMASI yoludur.

Çünkü açıkça, iyi bir programı geliştirmek için çaba harcıyorsanız, onu makul bir biçimde dosyalamak, böylece tekrar tekrar kullanabilmek mantıklıdır.

İşte çok gerekli bir davranışı gözden kaçırdığımız yollardan biri: insanlar bir prosedürü sık sık yaptıklarında alışkanlıklar geliştirir. Ne kadar çok yazı yazma alıştırması yaparsanız, o kadar iyi yazarsınız; bir büro işini ne kadar çok yürütürseniz, o kadar alışkanlık hâline gelir. Bu, üzerinde düşünmeden gerçekleşir. Doğa akıllı bir düzenleyicidir. Ancak bilgisayarlar söz konusu olduğunda, yararlı programları saklama konusunu düşünmeniz gerekir ve onları bir daha bulamadığınızda sonuçlar felaket olabilir.

On ikinci alt bağlam, programın örnekler ve durumlar üzerinde ÇALIŞTIRILMASI yoludur.

Program iyi ve etkili bir araçtır. Bu aracı kullanmak, onu “çalıştırmak”tır; bir dikiş makinesini kullanmak da dikiş makinesini çalıştırmaktır, iplik ve kumaş kullanarak dikişi olması gereken yönde yönlendirmektir.

Çoğu zaman bir programın kullandığı verilerin bir kısmı başlangıç değerlerinden son değerlere değişir ve çalıştırma işlemi son değerlerle biter. Program ikinci kez çalıştırılmadan önce, başlangıç değerlerini sıfırlamak için bir “yeniden başlatma” prosedürü gerekir. Bir motorlu araca yeniden yola çıkmadan önce lastikleri, yakıt göstergesini, yağı vb. kontrol etmek iyi bir fikirdir; böylece bir sonraki “çalıştırma” sorunla karşılaşmaz.

On üçüncü alt bağlam, hataları gidermek ve değişiklikler yapmak amacıyla programın DEĞİŞTİRİLMESİ yoludur.

Bu teknik, programı ilk kez yazmakla neredeyse aynıdır ve düzenli yöntem, adı EDITOR olan bir yardımcı programı çağırmaktır; bu ad tam olarak yaptığı işi ifade eder. Sizden almasını istediğiniz programı (ya da yeni bir program yazabileceğiniz boş bir alanı) alır ve istediğinizi “yazabilmeniz” için düzenlemeler yapar. Genellikle text mode ve command mode adı verilen iki “kip”e sahiptir. Metin kipi, bir not kâğıdına siyah kalemle yazmaya benzer. Komut kipi ise daktilografa talimatları kırmızı mürekkeple yazmaya benzer.

10. Bir Bilgisayarda Doğal Dile Ait Bazı Örnekler

Bir süredir programcılar, bilgisayar programlamasında yer yer sıradan doğal dili kullanmaktadır (elbette tüm insanlar gibi kökleşmiş kısaltma alışkanlıklarına tabi olarak).

BASIC’te REMARK sözcüğü, bir bilgisayar programında açıklama satırının önüne gelen ve programın çalışmasına hiçbir etkisi olmayan, ancak bir miktar belgeleme sağlayan bir terimdir. Ancak standart kısaltma REM’dir.

EDITOR adlı yardımcı program genellikle EDITOR olarak ya da kısaca ED diye adlandırılır. Kullandığı komutlar çoğu zaman komutu anlatan sözcüklerin ilk harfleridir; EXIT için E gibi.

COBOL’da aşağıdaki ifade tamamen geçerlidir (yalnızca her karakteri kurallara göre titiz bir biçimde konumlandırmanız gerekir):

MULTIPLY QUANT-ORDERED BY UNIT-PRICE
GIVING EXTENSION

DJINNI-5 adı verilen sistemde, Tablo 1’de bildirilen (stok ve faturalama ile ilgili) program, Tablo 2’de gösterildiği gibi kusursuz biçimde çalışmaktadır. Dosyalar Tablo 3’te görünmektedir.

Bir bilgisayara ne yapacağını sade gündelik doğal dili kullanarak söyleyebilirsiniz—henüz tam olarak olmasa bile, çok yakında.

Tablo 1

DJINNI-5 Kullanılarak Girdi Programı

A>TYPE INV.ENG

CALL THIS PROGRAM INVOICE.BODY

STARTPG1:

INPUT THE DATA STOCK.NUMBER$

ENTER THE QUANTITY.ORDERED

LOOK UP THE STOCK.NUMBER$ IN THE STK.INV.FIL.DES
AND FIND THE STOCK.DESCRIP.$

LOOK UP THE STOCK.NUMBER$ IN THE STK.INV.FIL.PRIC
AND DETERMINE THE
CORRESPONDING UNIT.PRICE

FIND THE PRODUCT OF THE QUANTITY.ORDERED AND THE
UNIT.PRICE; THIS IS THE
EXTENSION

PRINT WITH HEADINGS STOCK.NUMBER$, QUANTITY.ORDERED

PRINT WITH HEADINGS STOCK.DESCRIP.$, UNIT.PRICE,
EXTENSION

PRINT "MORE ITEMS? (Y/N)"

ENTER THE RESPONSE$

IF RESPONSE$ = "Y" GO TO STARTPG1

STOP

Tablo 2

DJINNI-5 Kullanılarak Bir Çıktı Çalıştırması

A>CRUN INV

CRON VER 2.35
PROGRAM INVOICE.BODY

STOCK.NUMBER$
? S068

QUANTITY.ORDERED
? 200

STOCK.NUMBER$
S068

STOCK.DESCRIP.$
SOCKET

MORE ITEMS? (Y/N)

RESPONSE$
? Y

STOCK.NUMBER$
? BU42

QUANTITY.ORDERED
? 3

STOCK.NUMBER$
BU42

STOCK.DESCRIP.$
BULB

MORE ITEMS? (Y/N)

RESPONSE$
? N

QUANTITY.ORDERED
200

UNIT.PRICE
1.2

QUANTITY.ORDERED
3

UNIT.PRICE
0.4

EXTENSION
240

EXTENSION
1.2

Thorsen — Sayfa 19’dan devam

Tablo 3

İki Dosyanın Bileşimi: STK.INV.FIL.DES ve STK.INV.FIL.PRIC

Stok No. Stok Açıklaması Birim Fiyat
PL21 fiş 0.70
S068 priz 1.20
BU42 ampul 0.40
BA33 pil 1.50

COMPUTERS and PEOPLE, Eylül–Ekim 1981, s. 15