artificial general intelligence
-
simdi bilgisayarda kod neyim ugrasirken genel zeka yapimina giden yolda onemli bir adim olabilecek bir fikir geldi aklima. daha once yapilmis mi, baska birisinin aklina da gelmis mi bilmiyorum. (biliyorsaniz ya ayar verip ya da mesaj atip soyleyin ben de ogreneyim- gerci douglas hofstadter bunu mutlaka dusunmustur)
simdi fikre gelelim
oyle bir programlama dili olsun ki, bu programlama dili normal bir programlama dilinin yapabildigigi seylerin yaninda sunlari da yapabilsin;
1. yazilan program compile edildiginde kendisi yeni compile edilmeye hazir text dosyalari yaratabilsin.
misal programimizin dosya uzantisi .agi olsun (konuyu basliga iste boyle baglarim)
simdi agi uzantili compile edilebilir test1.agi isimli dosyada su satirlar yazabilsin
create a file named 'test2.agi'
which includes
for i=3:10
create a file named 'test(i).agi'
end
bir baska deyisle program kendi benzeri programlari yaratmaya muktedir olsun. bu durumda text1.agi text2.agi nin meta programi olmus olur. program yazabilen bir program
2. yazilan program calistirildiginda kendi benzerlerini editleyebilsin
ornegin bu kez elimizde 2 farkli dosya olsun; test1.agi test2.agi
test2.agi inin icinde atiyorum 20. satirda su yaziyor olsun
print 'hello world 1'
test1.agi nin icinde de su yazabilsin
search the file named 'text2.agi'
replace the text "print 'hello world (i)'" with "print 'hello world (i+1)'"
text1.agi yi calistirinca text2.agi nin 20. satiri print 'hello world 2' ye donussun
3. bu zaten diger programlama dillerinde de olan bir ozellik ama yazmak istiyorum
yazilan program calistiginda kendi benzeri programlari calistirabilsin
gene elimizde iki farkli dosya olsun text1.agi ve text2.agi
text 1 agi nin icinde soyle bir komut olabilsin
run text2.agi
4 benim icin en onemlisi program calistiginda kendisini cagirabilsin ve editleyebilsin
misal soyle bir dongu yazmak mumkun olsun
test1. agi inin icinde
i=1
print 'hello world (i)'
search the file named 'text1.agi'
replace the text "print 'hello world (i)'" with "print 'hello world (i+1)'"
run 'text1.agi'
stop if i=100
yazabilsin mesela
simdi bu kodun cikti olarak for loopundan bir farki olmasa da, bu kod sistemin kendi kendisini refere edip editleyebilmesine olanak saglamasi yuzunden for loopdan cok daha derin bir felsefi anlam barindiriyor
5. (bu opsiyonel cunku zannimca programin isletim sistemi duzeyinde yetkileri olmasini gerektiriyor)
program kendisini meta ozelliklerini editleyebilsin. bu ornekte dosya adi ve icinde bulundugu folder.
misal general_folder>folder1 isimli folderin icindeki test1.agi de sunlar yazabilsin
i=# in the own file name
j=# in the own folder name
create a folder 'general_folder>folder(i+1)'
move general_folder>folder(j)>test(i).agi to general_folder>folder(j+1)>test(i)
rename general_folder>folder(j+1)>test(i).agi as general_folder>folder(j+1)>test(i+1).agi
delete general_folder>folder(j)
boyle bir programda programlama yaparken matrixler arrayler olusturup onlarla islemler yapabildigimiz gibi *.agi dosyalari olusturup onlarla da islemler yapabiliriz.
ekşi sözlük kullanıcılarıyla mesajlaşmak ve yazdıkları entry'leri
takip etmek için giriş yapmalısın.
hesabın var mı? giriş yap