3

기계어 코드로 컴파일 할 수있는 경우에도 사용 가능한 대화 형 인터프리터가있는 프로그래밍 언어가 있습니까?컴파일 된 해석 언어

+0

"사용 가능한 대화식 통역사"란 무엇을 의미합니까? 대부분의 해석 언어는 실제로 번역 *됩니다. – staticsan

+0

@staticsan 대화 형 인터프리터는 대화식으로 런타임에서 작업 할 수있는 쉘 같은 환경을 의미합니다. 기계 코드에 의해, 나는 바이트 코드를 의미하지 않는다. (내 용어가 정확하지 않은 경우 실례합니다.) – mykhal

+3

찾고있는 용어는 "REPL"(읽기 - 평가 - 인쇄 루프)입니다. – Artelius

답변

14

"번역"대 컴파일은 본질적으로 언어 자체가 아니라 구현의 문제입니다. 예를 들어 MRI Ruby 1.8이 해석되고 MacRuby는 원시 시스템 코드로 컴파일됩니다. 두 제품 모두 대화 형 REPL을 포함합니다. 적어도 하나의 기계 코드 컴파일러와 적어도 하나가 내가 아는 모든 언어 REPL :

  • 루비
  • 파이썬
  • 거의 모든 Lisps (리스프는 AFAIK,이 기술을 개척 한 언어이었다)
  • OCaml의
  • 하스켈 넷째

우리가 경우 countin

  • 자바
  • 스칼라
  • 그루비
  • 얼랑
  • C#
  • F 번호 : g 편집뿐만 아니라 기계 코드로 바이트 코드, 그것은 인기 바이트 코드 컴파일 언어의 대부분의 사실
  • 스몰 토크
+0

스몰 토크 REPL – mathk

+0

스몰 토크가 바이트 코드로 컴파일 된 언어 목록에 REPL을 사용하는 이유입니다. – Chuck

1

정확히 기계어는 아니지만 Java를 컴파일하고 BeanShell을 통해 사용할 수도 있습니다.

+0

Java 컴파일러를 사용하는 데 사용되는 Symantec Java IDE (이름은 잊었습니다). –

1

Ruby를 인터프리터와 함께 사용했으며 컴파일러가 here 인 것 같습니다.

+0

루비 코드를 인터프리터에 번들로 묶어 놓은 도구 일 뿐이므로 실제로는 기계어 코드로 컴파일되지 않습니다. 컴파일러를 오해의 소지가 있고 잘못된 것입니다. – Benson

+0

나는 광고 된대로 사이트를 읽는 중이다. 대부분의 사람들은 구현 세부 사항을 파헤 치지 않으면 차이점을 알 수 없으므로 좋은 지적입니다. –

5

Lisp의 많은 맛은 Clojure를 포함한 두 가지 옵션을 제공합니다.

+0

Clojure는 JVM 바이트 코드로 컴파일된다는 점에 유의하십시오. – Greg

+0

Clojure는 기계어 코드가 아닌 바이트 코드로 컴파일됩니다 (일부 Java 구현에서 지터를 계산하지 않는 한). 그러나 다른 언어에서는 마찬가지입니다. – Chuck

+0

@Chuck 네, 원래 응답을 작성할 때 그는 바이트 코드를 제외한 코멘트를 추가하지 않았습니다 ... – Greg

3

2 명이 내 마음에와 있습니다. ocaml과 scala (~ = java)가 있지만 거기에는 훨씬 더 많은 것이 있어야합니다.

+0

BTW : ocaml을 원시 코드로 컴파일하는 명령은 "ocamlopt"입니다 (ocamlc는 바이트 코드로 컴파일됩니다). 스칼라에 관해서는, gcj가 자바 호환 바이트 코드를 컴파일 할 수 있는지, 아직 컴파일하지 않았는지 모르겠다. 그래서 누군가가 더 많은 정보를 가지고 있다면 ..? – Shautieh

1

컴파일러를 사용하는 데 사용되는 아이콘이지만 유지 관리에서 제외됩니다. 여전히 작동 할 수 있습니다.

1

파이썬을 Windows 실행 파일로 컴파일 할 수 있습니다.

+0

"RubyScript2Exe"의 경우와 마찬가지로 실제로 언급 한 도구는 파이썬 인터프리터와 함께 파이썬 코드를 번들링합니다. 이것은 컴파일되지 않습니다. 그것을 컴파일러라고 부르는 것은 용어의 오용입니다. 그러나 실제로는 유용하지 않으므로 중요하지 않을 수도 있습니다. :-) – Benson

1

SnippetCompiler을 사용하여 C#을 컴파일 할 수 있습니다. 대화식 인터프리터로 사용할 수 있습니까?

+0

linqpad도 작동합니다 ... – Alan

12

하스켈, Glasgow Haskell Compiler에는 GHCi라는 대화 형 "쉘"이 있습니다.

+0

+1 실제로 기계어 코드로 컴파일합니다. :-) – Benson

+0

실제로 QuickBasic과 동일하지만이 메모는 역사적인 관심사이므로 16 비트 컴퓨터 코드가 생성됩니다. – Artelius

+0

qbasic의 대화 형 셸을 기억할 수 없습니다. – mykhal

2

Lua에는 한 줄짜리 및 실험을위한 대화식 모드가 있습니다. 일반적으로 VM을 실행하기 위해 바이트 코드로 컴파일합니다. LuaJIT은 32 비트 x86에 대한 JIT 컴파일을 수행하는 Lua VM의 독립적 인 구현이다. 64 비트에 대한 지원이 진행 중이며 ARM에 대한 지원이 자주 요청됩니다.

바이트 코드 컴파일은 종종 순수 인터프리터와 순수 컴파일러 간의 적절한 절충안입니다.VM은 언어 요구 사항에 맞춰 조정될 수 있으며 JIT 기법은 실행되는 VM 코드를 분석하여 자주 실행되는 코드 경로 및 내부 루프에 집중할 수 있습니다.

1

귀하의 질문은 다소 모호합니다. 심지어 자바가 맞는 것 :

를 대화 형 인터프리터에 의해, 내가 쉘 같은 환경, 당신이 할 수있는 런타임에서 작업 대화를 의미한다.

Java는 다음과 같습니다. 이클립스의 "스크랩북 페이지"에서는 Java 표현식을 입력하고 바로 평가할 수 있습니다. Java는 물론 컴파일 된 언어이기도합니다 (보통 바이트 코드로 컴파일되지만 기계 코드를 출력하는 다양한 컴파일러가 있습니다).

그래서 무엇을 찾으십니까? 어쩌면 당신은 당신의 문제 또는 관심사를 설명 할 수있을 것입니다.

+0

나는 실행 파일로 컴파일되고 본격적인 대화식 인터프리터를 가질 수있는 languges에 대한 다양한 대답을 기대합니다. – mykhal

1

모노/.net을 조금 사용하여 시도해 본 결과 무작위 GC 일시 정지가 불쾌감을주는 것으로 나타났습니다 (적어도 내 피곤한 옛 노트북에서는). gambit-c를 사용하여 C로 컴파일 할 수있는 스키마 구현을 살펴 보았지만 문서가 다소 제한적이었고 패키지를 설치하고 사용하기가 쉽지 않았기 때문에 작업하기가 어려웠습니다.

저는 보통 C/C++에 연결되는 파이썬과 같은 인터프리터 언어를 사용하는데 더 고통스럽지 만, 적어도 내가 무엇을 위해서인지는 알고 있습니다.

2

다른 언급 된 바와 같이, OCaml.

관리 코드 (.NET CLI)가 코드를 처리하기에 충분할 경우 F #도 후보가됩니다. 요구 사항을 충족시키는 다른 .NET/Mono 언어가있을 수 있습니다.

2

다음과 같이 질문 할 수도 있습니다.

C 및 C++.

왜?

  • picoccCINT
  • EICCh
  • 뿐만 아니라 거기에 다른 사람 밖으로 아마이 있습니다.

  • 2

    많은 언어가 기계어 코드와 상호 작용하고 컴파일되는 구현을 제공하지만 동시에 수행하는 것은 거의 없습니다. Standard ML of New Jersey은 인터랙티브 루프가 있지만 바이트 코드가없는 것입니다. 메모리에 머신 코드를 컴파일 한 다음 분기합니다.

    3

    그리고 여기가 당신의 집을 불 태워 또 다른 하나 :

    86 어셈블리

    그래, 물론 이것에 대한 통역이 있습니다.당신이 에뮬레이터 땅에서 정말있어이 시점에서

  • Jasmin
  • Javascript x86 Assembly Interpreter
    • , 그러나 당신이 상태 요구 사항을 충족한다.

      누군가가 에 컴파일 된 언어의 이름을 지정하는 것이 더 쉬운지 궁금합니다.은 작동하는 인터프리터를 자필로 작성했습니다. :-)

    관련 문제