1 entry daha
  • 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.
25 entry daha
hesabın var mı? giriş yap