LISP ve Yapay Zeka
Yapay zeka çok çeşitli alanlardan oluşur. Örneğin birisi data ağaçlarının analizi idi. Ağacın gittikçe büyüdüğünü düşünün, dallar o kadar artacaktır ki etkileşmeye ve ağacın yapısında bir döngü oluşturmaya başlayacaklardır. Bu son fikir, küçük bir robotun bir labirente bırakılıp çevresini keşfetmeye terkedildiği uygulamada kullanılmıştır. Bu örnekte, fare labirentin bir yerinden diğer kısmına gidebilmek için bir yol açmak durumundadır. Bu boş geliyorsa, olası hareketleri inceleme fikrini düşünün. Aynı kavram data baselerde ve özel bir satranç versiyonunda, A'dan B'ye varmanın en kestirme yolunu bulabilmek için kullanılmıştır. Hızlı araştırma operatörleri geliştirmekte de kullanılabilir. (LISP geçmişte kelime işlemcileri yazmakta kullanılmış.) Başlangıçta bir şaka olarak yazılmış ünlü bir LISP programı partilerde ortalığı ısıtmak için kullanılıyor bugün. ELİZA adındaki program bir bilgisayar ile operatörü arasındaki bir soru yanıt seansından ibaret, bazen sonuçlar son derece çarpıcı olabiliyor:
Operatör: Babam benden nefret ederdi. Bilgisayar: Bana biraz daha ailenden söz et. Operatör: Çocukluğumun mutsuz geçti; anımsıyorum. Bilgisayar: Mutsuz çocukluğunu sık sık düşünüyor musun? Operatör: Hayır, bunu yapamıyo- Tüm. Bilgisayar: Neden yapamadığını anlat bana. Bu tipik bir LISP diyaloğu ve gördüğünüz gibi operatör kalbinin derinliklerini bir metal yığınına açıklıyor! ELIZA'nin terapi değeri olduğuna pek inanmıyorum. Çünkü operatör sonunda geri besleme yokluğuna tepki duymaktadır. Hiçbir yanıt verilmeden yalnızca soruların sorulması bir süre sonra sıkıcı gelecektir. Kendimizi bilgisayarın arkasında düşünen ve hisseden bir insan olduğuna inandırabilmek için her şeyi söylemeye hazırızdır ve sonuçlar bize asıl düşündüklerimizden çok yapay zekadan beklentilerimizi sergiler. Yapay Zeka kavramı, biraz da bir dizi kural ve ifadeye en azından bir süre için zeka sahibi gözüyle bakabilmemize dayanmaktadır. Bir yazılım nasıl oluşturulmuş olursa olsun, zekice davranıyor görüntüsü veriyorsa, bu bazıları için yeterli olabilmektedir. LISP bilgisayarınızı bir silikon dehaya dönüştüremez ya da cümle ve kelime yapı analizi gibi karmaşık uygulamalarda kullanılamaz ama iyi bir database hazırlanması ve liste işlem programlarının yazılmasını sağlaya- Buna ilave olarak, uzman sistemler, simülasyon ve model programları gibi gerçek dünyanın bazı yönlerinin simüle edilmesini gerektiren programlarda işe yarayabilir. Ayrıca koşullu karşılaştırmalarla ilgili fonksiyonlarda idealdir. LISP kullanarak yazıları bir satranç programı da gördüm. Bu yalnızca bir eksersiz olmakla birlikte, LISP kullanarak ne kadar ciddi şeyler yapılabileceği konusunda da bir örnek oluşturmaya yeterli. Tüm bunlara ilave olarak, özellikle geliştirilmiş versiyonları (IBM PC için “Golden Common LISP” ve Macintosh için MAC LISP gibi) eğitim ve bilgisayar eğitiminde yaygın olarak kullanılabilir. Adventure oyunları yazma olanağından ise hiç söz etmiyoruz.
Porn
C64 için Püf Noktaları
COMMODORE'UNUZ İÇİN DİKDÖRTGENLER için dikdörtgenler, hem 64'de hem de 128'- de 40 sütun modunda dikdörtgenler çizer. 60-100. satırlar arasındaki altrutin dikdörtgenleri oluşturur. Rutini programınızda kullanmak için, SC değişkenini dikdörtgeninizin sol üst köşesine tekabül eden bir ekran yerine yerleştirin. HT ve WT değişkenleri dikdörtgenin yüksekliğini ve genişliğini belirlerler. CL rengi, CH de dikdörtgeni çizen karakteri temsil eder.
PROGRAM ADI 1
60000 REM
00010 POKE C
FOR 1 TO
HTSL TO 2d ST
ER 4
00020 GO
00040 <149>
80850 GOTO 18
80060 FOR LXeSC TO
KE
00070 FOR TO
ÖKE LX.CHIPOKE —
FOR TO
KE
60696 FOR TO STEP
ExT <esı>
00100 RETURN c158>
SATIR NUMARASI ÇIKARTMAK
Basic programlarından satır numaralarını çıkarmanız gerekirse, sadece bu POKE'lardan birini yazmanız yeterli olacaktır. C-64: POKE 22,35 C-128: POKE 24,37
Satır numaralarını yeniden geri almak için de şu PO-
KE'ları yazın: C-64: 22,25 C-4128: 24,27
6414128 DÜŞEY TAB
İşte size Commodore Basic'te bulunmayan her amaca uygun bir düşey tab rutini. 10. satırdaki komutları kendi programlarınıza yerleştirin. Programdaki daha sonraki satırlar düşey tabı harekete geçtikten sonra göstermektedir.
PROGRAM ADI © DÜSEY TAB
AFM GAZIN DÜSEY TAR
60810 DIM 1!
TO
BERT 3
#0020 PRİNT TeR4 TO 1 STE ia
TAB
<es2>
00030 GET ARTIR THEN 20
00040 PRİNT <236>
FOR
GÜÇ KAYNAĞINI SOĞUTMAK
Tüm C-64 kullanıcıları, bilgisayarlarının güç kaynağını soğutmak için bir yöntem geliştirmişlerdir. Ona bir vantilatör tutmak ve çevrede havalandırmanın olabilmesi için alan bırakmak gibi. Kısa Devre 64 prog- Tamıyla, onu programlarınıza ekleyerek, bir “erime” tehlikesini bilgisayarın önceden size görsel ve işitsel olarak duyurmasını sağlayabilirsiniz.
PROGRAM ADI 1 KISA DEVRE
©8000 REM 64 KISA DEVRE
00010 PRİNT Tel TO DİNEKT 1
PRİNT
<ca42>
ca12>
<057>
COK SICAKI"
FOR
00020 POKE 54296.1S1POKE 34206.G1NEKT — <000)>
60040 FOR TO G46.DIN
EKT 1G0TO 16
ÖNCE B YÜZÜNE KAYDEDEREK ZAMAN KAZANIN
4574 modunda formatlanmış bir diski kullanmak, data dosyalarını save ettiğinizde ve onlara ulaşmak istediğinizde diski çevirme gereğini ortadan kaldıra- Tak, teorik olarak size zaman kazandırır. Ama gerçekte bu zaman avantajı sağlanamamaktadır, çünkü sü- Tücü programı B yüzüne save ederken her bloğu yazdıktan sonra A yüzündeki blok yer haritasına bakmak zorundadır. Bu sorunu çözmek için, yeni bir disk formatlayın ve sonra verdiğimiz Blok Yer Haritası Doldurucu programını çalıştırabilirsiniz. Bu program rehber (directory) dışında, A yüzündeki tüm blokları yerleştirir. Sonra ana programı ve destek dosyalarını B yüzüne save edin. En sonunda da A yüzünü yeniden serbest bırakmak için, Collect komutunu kullanın. Diskete bir autoboot program koymadan önce Collect komutunun işini bitirmesini bekleyin. Yoksa autoboot bloğunu serbest bırakacaktır.
PROGRAM ADİ © DİSKET ÜZERİNDEKİ YE
DİSKET. ÜZERİNDEKİ (829>
68020 NUS-CHRSCO)
R
<182>
<002>
X476 TO 14
YENİ İLK DOSYA
Bir diskette bir dizi dosyanız olduktan sonra, en çok kullandığınız dosyayı directory'de ilk sıraya yerleştirmek isteyebilirsiniz. O pozisyona geldiğinde, bilgisayarınızı açtıktan sonra, LOAD"*”,8- girerek dosya adını — ASAL SAYILAR ki İka Baya ile Bu kısa ve oldukça hızlı program bir sayının yerlerini değiştirebilmenizi sağlayacaktır. Bu progra- asal olup olmadığını saptar. 10.000'e kadar mı önce yedek bir kopyada deneyin. Yoksa bir hata olan sayılar bir iki saniye içinde belirlenebilmek- © disketteki her şeyi kaybetmenize neden olabilir. le birlikte, 9999973 gibi büyük sayıların tespiti C- 64'te 40 saniye kadar alabilmektedir. Bu prog-
Tamın her tür Commodore bilgisayarında çalış-
ması gerekir.
PROORAM ADI © ILK DOSYA
©0010 REM ILK DOSYA
00020 INPUT "SİMDİKİ ILK PROGRAMIN
* PROORAM ADI ASAL SAYILAR
60020 INPUT “İLK YAPILACAK PROGRAMIN ADI"
©8010 REM ASALSAYILAR
60040 PRİNT PRİNT
“ver case> 00030 İNPUT *COOKND Ka
000350 PRİNT "DOSYA © THEN END
<ese> 00040 IF THEN PRİNT
©0060 PRİNT 30
<020> ©0058 FOR TO Z STEP
00070 PRİNT 8-0-1 cier>
IF S>0 THEN NEXT
00080 PRİNT 00070 IF 8-0 THEN PRİNT
E*160TO 20
00080 CLOSE İSİPRİNT TAMAMI 00000 PRİNT *CDOKNDASAL *100TO 30
.
C-64 INSTR FONKSİYONU
C-128'de bir dizginin (string) diğeri içindeki yerini bulabilmek için pratik bir INSTR fonksiyonu vardır. Aşağıdaki altyordam aynı sonucu 64'te de almanızı sağlayacaktır: A$ ve B$ değişkenleri, sırayla uzun dizgi ve bulmak istediğiniz kısa dizgidirler. İlk harf uygunluğunun pozisyonu XX değişkeninde verilmektedir. 0 değeri çıkarsa hiç uygunluk bulunamadığı anlamına gelir. Altyordamdaki değişkenleri -XA, XB, XE, XX ve SP- programınızın başka kısımlarında kullanmamaya dikkat edin. Tuhaf sonuçlarla karşılaşabilirsiniz.
PROGRAM ADI: INSTR
00010 REM 64 INSTR
000
UYGUN POZİSYONU BAŞLATMA
FOR TO MİOSCAS.
THEN
#1028 NEXT <187>