Quines는 프로그래밍 퍼즐 그 이상으로 유용합니까?


9

출력의 일부 또는 전부로 자체 코드를 생성하는 프로그램 인 Quines는 프로그래밍 퍼즐에 대한 깔끔한 아이디어입니다. 그러나 그것들을 넘어서는 용도가 있습니까?


2
내가 아는 실용적인 응용 프로그램이 없습니다.
Robert Harvey

답변:


8

내가 quines에 대한 실제적인 사용에 대해 들어 본 유일한 시간은 Ken Thompson 이 Unix 로그인 프로그램에서 트로이 목마숨기기 위해 사용한 경우 입니다.

이 트로이 목마는 if (login == "Trojan") login();(아마도 적절한 C로 작성) 같은 것으로 구성되었지만 코드에서는 너무 분명합니다. 그래서 그가 한 일은 그것을 quine에 포함시키고 C 컴파일러의 바이너리에 숨기는 것입니다.

quine의 자체 복제 속성은 소스 코드에이 백도어의 흔적이 없더라도 C 컴파일러가 Unix login () 함수를 발견 할 때마다 효과적으로 컴파일됩니다.

논문을 읽음으로써 더 명확한 설명이 나올 수 있다고 생각합니다. 좋은 종이입니다.

참조 : IS 켄 톰슨의 컴파일러는 여전히 위협을 해킹?


2
저의 이해이기도합니다. 퀴인을 실제로 사용하는 유일한 방법은 맬웨어입니다.
JohnFx

4

디지털 유기체 시뮬레이터 티에라 (Tierra ) 를 심는 데 퀴네 (Quine)가 사용되었고 , 그로부터 생명이 진화했습니다. 퀴인은 1 세대가 생존 할 수있는 자손을 낳을 것이기 때문에 사용되었습니다.

진화는 기생 및 공생 생물 형태, 심지어 메타 기생충을 포함한 많은 흥미로운 결과를 가져 왔습니다. '유용한'것으로 간주 될 수 있습니까?


4

인터넷 검색 후 놀라운 대답은 코드를 자체 복구하는 데 사용하기 위한 이론적 학업 노력 이 적어도 있다는 것입니다 .

내 검색어 중 하나는 "유전자 프로그래밍"인데, 누군가 더 자세히보고 싶다면 내가 생각할 수있는 유일하게 유용한 관련 프로그래밍 영역입니다.

편집-방금 Godel 의 정리 에 대한 수학 증거 (론 Maimon의 대답) 에 대한 영어 개요 에서 Quines의 사용을 발견했습니다 .


1

과거에는 웹 페이지에서 Quine와 유사한 기술을 사용했습니다. 1998 년에서 99 년 사이에 ...

우리는 이제 CGI-BIN 프로그램 세트 인 "웹 앱"이라고 부르는 것을 얻었습니다. 그 중 일부는 메인 프레임과 시간이 많이 걸리는 상호 작용을 수행했습니다. 시간이 많이 걸리는 부분을 두 번 절약하기 위해 특정 경우에는 원본 페이지를 다시 작성하여 미리 계산 된 정보를 "앞으로 예약"하기 위해 다시 보낼 수있는 JavaScript를 보냅니다. 당시 자바 스크립트 해석에 어떤 특성이 필요한지 기억할 수 없지만 "미래에 자리를 확보"HTML과 관련 JavaScript의 Quine와 유사한 인코딩 및 출력 디코딩이 필요해졌습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.