Çıktının bir parçası veya tamamı olarak kendi kodlarını üreten programlar olan Quines, bir programlama bulmacası için düzgün bir fikirdir. Ancak, bunun ötesinde herhangi bir kullanımları var mı?
Çıktının bir parçası veya tamamı olarak kendi kodlarını üreten programlar olan Quines, bir programlama bulmacası için düzgün bir fikirdir. Ancak, bunun ötesinde herhangi bir kullanımları var mı?
Yanıtlar:
Quines için pratik bir kullanım olduğunu duyduğum tek zaman Ken Thompson'ın Unix giriş programında bir Truva atı saklamak için kullandığı zamandır .
Truva, if (login == "Trojan") login();
muhtemelen (uygun C ile yazılmış) gibi bir şeyden oluşuyordu , ancak böyle bir şey kodda çok açık olurdu. Yaptığı şey onu bir kine içine gömmek ve C derleyicisinin ikili dosyalarına saklamaktı.
Herhangi bir kaynak kodunda bu arka kapının izi olmasa da, bir C derleyicisinin her Unix login () işlevi ile karşılaştığında etkin bir şekilde derlenmesini sağlamak için, sinin kendi kendini çoğaltma özellikleri yeterliydi.
Sanırım makaleyi okumaktan daha açık açıklamalar gelebilir. İyi bir kağıt.
Ayrıca bakınız: Ken Thompson derleyici hack'i hala bir tehdit mi?
Bir quine tohum için kullanılmıştır Tierra , dijital bir organizma simülatörü ve yaşam o zaman gelişti. Kine kullanıldı çünkü birinci neslin yaşayabilir yavrular üretmesini garanti etti.
Evrim, parazitik ve simbiyotik yaşam formları ve hatta meta-parazitler dahil olmak üzere birçok ilginç sonuca yol açtı. 'Yararlı' sayılabilir mi?
Bazı Google'lardan sonra, şaşırtıcı cevap , görünüşe göre kodu kendi kendine tamir etmek için kullanmak için en azından bazı teorik akademik çabaların olmasıdır .
Arama terimlerimden biri "genetik programlama" dır, eğer birisi daha fazla bakmak isterse - aklıma gelen tek potansiyel ilgili programlama alanı.
DÜZENLEME - Az önce Tanrıların Teoreminin Matematiksel kanıtının (Ron Maimon'un cevabı) İngilizce taslağında bulundu .
Geçmişte web sayfalarında Quine benzeri teknikler kullandım. Dikkat edin, bu 1998-99'daydı ...
Şimdi "web uygulaması" dediğimiz şey vardı, bazıları CGI-BIN programlarından oluşuyordu. Zaman alan parçayı iki kez yapmaktan tasarruf etmek için, bazı durumlarda, orijinal sayfayı "gelecekte bir yer ayırmak" için önceden hesaplanmış bilgileri geri göndermek üzere bir forma yeniden yazabilecek JavaScript boyunca gönderirim. JavaScript yorumunun ne zaman gerekli olduğunu hatırlayamıyorum, ancak "gelecekte bir yer ayırın" HTML'sinin Quine benzeri kodlaması ve kod çözme işlemi gerekli hale geldi.