문제

Monotouch와 같은 것들을 구현하는 일반적인 접근법은 누구나 간단히 설명 할 수있는 사람이 무엇입니까? 사람들이 Java와 같은 플랫폼을 얻고 C/Objective-C와 같은 플랫폼으로 번역 할 때 보는 첫 번째 예가 아니기 때문에 정말 놀랐습니다. 쓰레기 수집가와 물건이 어떻게 번역되고 있는지 상상할 수 없습니다.

미리 감사드립니다.

편집하다: 나는 한 언어를 다른 언어로 번역 할 수있는 이론적 가능성을 이해합니다. 내 질문은 조금 더 기술적입니다 : 그들은 구현합니까? OBJC에서의 완전한 런타임 그리고 묶어? (의심 ...) 아니면 C# 코드를 OBJC/BAINER/ETC로 변환합니까?

도움이 되었습니까?

해결책

Monotouch는 미리 컴파일을 사용하여 정적으로 컴파일 된 단일 파일을 생성하므로 iPhone에서 .NET 런타임을 구현하지 않습니다. Monotouch는 C#에 노출 된 iPhone 라이브러리에 바인딩을 사용합니다. 목표 c에 대한 번역은 없습니다.

기본적으로 기본 iPhone OS의 라이브러리 호출을 노출하면서 C# 및 관련 도구 체인에서 작업하는 데 친숙 함을 제공합니다.

Miguel Di Icaza는 이것을 손님 인 Stackoverflow 팟 캐스트에서 조금 설명했습니다. 링크

다른 팁

Monotouch는 번역가가 아닙니다. 그것은 iPhone에서 실행되는 모노 런타임이며, iPhone의 제한과 호환되는 멋진 속임수입니다.

기존의 모노 "런타임"은 JIT뿐만 아니라 GC, 반사, I/O 레이어, 스레딩, 예외도 처리합니다. 클래스 라이브러리도 있습니다. 앱이 iPhone에서 실행하려면이 중 상당수가 앱에 포함되어야합니다. 그것을 아래로 줄이면 몇 가지 도전이 발생합니다. 또한 iPhone은 JIT 런타임 코드 생성을 방지하고 서명 된 코드 만 실행되며 동적 라이브러리를 허용하지 않습니다.

Monotouch는 IL 링커를 사용하여 코드를 단일 IL 바이너리로 사용하는 클래스 라이브러리의 일부만 결합하는 것입니다. 그런 다음 AOT 컴파일을 사용하여 JIT가 일반적으로 IL에서 생성하는 모든 기본 코드를 사전 생성 한 다음이를 JIT-Less 런타임과 함께 서명 할 수있는 단일 기본 바이너리에 연결합니다. 마지막으로, IL은 관리되는 이진에서 벗어납니다. 메타 데이터 만 남겨 둡니다.

Monotouch는 아마도 iPod의 모노 포트 일 것입니다.

모노 자체는 다양한 *닉스 환경에서 .NET 런타임 (및 일부 개발 도구)을 오픈 소스 구현입니다.

이것은 Miguel de Icaza가 이끄는 대규모 노동으로 .NET의 중요성을 조기에 깨달았으며이를 개방 플랫폼으로 포팅하기 시작했습니다. Mono가 Native .NET과 Mono 사이에 비정규직을 제공함에 따라 잠시 그는 Microsoft 자체로부터 많은 지원을 받았습니다.

따라서 첫 번째 대답은 잘 조직되고 열심히 일하는 천재가되어야한다는 것입니다.

두 번째 대답은 더 많은 과학입니다. "Turing Complete"는 시스템을 프로그래밍 가능한 컴퓨터로 간주 해야하는 최소 기능 세트입니다. 실제로 매우 작은 세트 - 빼기, 비교, 분기 및 읽기 및 저장.

이론은 "Turing Complete"시스템이 다른 "Turing Complete"시스템이 할 수있는 모든 것을 수행 할 수 있다는 것입니다. 따라서 합리적으로 완전한 프로그래밍 언어 환경을 감안할 때 다른 프로그램 환경을 사용하여 모방 할 수 있어야합니다.

주변에는 여러 가지 예가 있습니다. Jpython은 Java JVM에서 Emulates C Python을 실행합니다. 내 두 가지 개인적인 즐겨 찾기입니다 브라우저에서 원래 ZX 스펙트럼 게임을 실행합니다 그리고 Knuth 믹스 어셈블러 기계 둘 다 순수한 자바 스크립트입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top