2012-12-25 3 views
3

comments on this question의 토론의 오프 세트입니다. 나는 부작용과 밀교 기능 사이의 관계에 대해 물어보고 싶었습니다. 구체적으로 :부작용 및 밀교 언어

1) ook/brainfuck을 사용하여 GPU에 액세스 할 수 있습니까? (그래픽 부작용이 있습니까?)

2) 공백을 사용하여 시스템 호출을 할 수 있습니까?

3) 근본적으로 아래로 귀결됩니다. 튜링 언어를 사용하여 모든 부작용을 유발할 수 있습니까?

4) 보너스 질문 : 가능한 경우 작업 예제/코드에 대한 링크를 제공 할 수 있습니까?

+0

답변을 드릴 수 없습니다. 언어 'X'를 사용하면 GPU 또는 런타임의 구현에 전적으로 의존 할 수 있습니다. 일반적인 일종의 원칙이 아닙니다. 공백 문자 언어가 OS 호출에 대한 규칙을 제공하면 호출 할 수 있습니다. 그렇지 않은 경우. – bmargulies

+0

@bmargulies는 공백 문자가 OS 호출 규칙을 제공하는지 여부를 알 수 없습니까? 언어의 공식적인 정의의 일부가 아닌가? (텍스트는 음질이 어렵다. 즉, 레오토스적인 질문이 아니었다.) 그렇다면 질문 1과 2는 구현에 종속적이지 않은 절대적으로 예 또는 아니오의 대답을 가지고 있다는 것을 의미하지는 않는가? – Oren

답변

6

bmargulies 님의 의견은 일반적인 질문에 관한 것입니다. Turing-complete은 기술적으로 언어가 단일 테이프 튜링 기계를 시뮬레이션하는 데 사용될 수 있음을 의미합니다. 실제로 Turing-complete 언어 Y에서 Turing-complete 언어 X에 대한 계산을 시뮬레이트 할 수 있다는 것을 의미합니다. 그러나 말하는 모든 것은 계산이 아니며 시스템 인터페이스입니다. 특정 시스템에서 특정 작업을 수행하려면 인터페이스가 있어야합니다. 이러한 언어는 일반적인 인터페이스를 제공하지 않습니다. 우리는 아래에서 보듯이 몇 가지 시스템 호출을 제공합니다.

약한 비유를 사용합시다. 우주 왕복선을 고려해보십시오. 우주 왕복선의 모든 계산은 iPhone을 사용하여 수행 할 수 있습니다 (시기 적절하지는 않음). 실제로 로켓을 발사하고 부스터를 연결 해제하는 특수 목적 시스템이 필요합니다. "10 초 동안 우현 로켓 발사!"와 같은 우주 비행사의 지시 사항을 출력하는 iPhone 용 앱을 작성할 수 있습니다. 그런 식으로 우주 왕복선 비행. 하지만 우주 왕복선의 선착장에 iPhone을 연결할 수는 없습니다. "당신이 그것을 해킹하려는 경우, 당신은 할 수 호 그러나."

  1. : 예상대로

    그래서, 당신의 모든 질문에 대한 대답은 각각이다

  2. "아니요.하지만 해킹하고 싶다면 할 수 있습니다."
  3. "아니요.하지만 해킹하고 싶다면 할 수 있습니다."
  4. "해킹 해보세요!"

공백은 해석 된 언어이며 콘솔에서 문자를 읽거나 쓸 수있는 것 외에 시스템 통합을 제공하지 않습니다. (원래의 어셈블리 코드를 생성하지도 않고 원래의 질문에 따라 C 프로그램에 쉽게 통합 할 수 있습니다.) C 프로그램에서 인터프리터를 실행하고 출력을 프로세스에 반환하려면 시스템 호출을 사용해야합니다.) 언어와 인터프리터는 오픈 소스이기 때문에 기술적으로 인터프리터를 통해 일반 OS 호출을 지원하도록 언어를 수정할 수 있습니다.

브레인 퍽은 실제로 당신이 건방진 느낌을하는 경우 이론적으로보다 쉽게 ​​다른 프로그램에 포함 할 수 있도록 컴파일합니다. 공백과 마찬가지로 문자 읽기 및 쓰기 만 지원합니다. Brainfuck을 수정하여 전체 시스템 호출을 지원하는 것은 흥미롭고 (아마도 논문의 가치가있을 것입니다).

다음은 컴파일러의 소스입니다. 그것을 가지고하는 데 도움이

희망을!

+0

철저하게 잘못을 입증하기 전에 bmargulies의 의견을 긍정적으로 언급하기위한 +1 (적어도 부분 답변이 불가능 함). 훌륭한 대답, 그것은 많은 도움이됩니다. 고맙습니다! – Oren

1

gpu/make 시스템 호출/brew coffee/whatever에 액세스하기위한 명령으로 ook/brainfuck/whitespace/etc. 프로그램의 출력을 해석하는 래퍼를 작성할 수 있습니다.

하지만 아니, 두뇌에있는 것들을 수행하는 기본 메커니즘이 없으며 내가 언급 한 다른 언어 중 하나라도 있다고 생각하지 않습니다. "Turing-complete"는 이론적으로 언어가 일 때 일반 컴퓨터에서 계산할 수있는 모든 것을 의미합니다. 그래픽으로 그림을 그리거나, 소리를 내거나, 커피를 양조하는 것과 같은 컴퓨터가 할 수있는 컴퓨터 관련 작업을 수행 할 수있는 메커니즘을 반드시 제공한다는 의미는 아닙니다.