특정 언어에는 본질적인 프로세서 아키텍처가 설계를 불러 일으킨다

StackOverflow https://stackoverflow.com/questions/924855

문제

특정 언어가 설계별로 특정 프로세서 아키텍처에 더 적합한 지 궁금합니다. 아키텍처를 말할 때 ARM/PPC/MIPS를 의미하는 것이 아니라 더 많은 스택, 축적기 또는 등록 기반 아키텍처를 의미합니다.

예를 들어, 스택 아키텍처 인 Forth를 생각할 수 있습니다. 다른 사람?

도움이 되었습니까?

해결책

예, 확실히 ... 다른 방법으로도 간다 : 많은 하드웨어 아키텍처는 특정 언어를 수용하도록 설계되었습니다.

  • RISC 아키텍처는 사람들이 어셈블리에서 C/C ++와 같은 컴파일 된 언어로 이동했다는 것에 대한 대답입니다.
  • 버로우즈 B5000 어셈블러 대신 Algol이있었습니다.
  • 여러 가지가 있습니다 .
  • LISP 기계S는 LISP를 효율적으로 실행하도록 설계되었습니다.
  • Java 프로세서는 하드웨어에서 Java Bytecode를 실행합니다.
  • 일부 ARM 프로세서는 (선택 사항) Java 가속 기술.

아마도 더 많은 좋은 예를 사용할 수 있습니다.

다른 팁

예, 그들은합니다. 예를 들어, Occam 프로그래밍 언어는 원래 The에서 특히 방향으로 만들어졌습니다 트랜스 퍼터 건축물.

아마도 이것은 약간의 똑똑한 답변이지만 :

관련된 프로세서의 어셈블리 언어는 아키텍처와 밀접하게 연결되어 있으므로 그렇습니다. 그렇습니다.

더 높은 수준의 언어가 동일하게 나타나는지 여부는 아마도 더 흥미로울 것입니다.

나는 Simon Peyton Jones의 Google 비디오에서 이에 대해 이야기 한 이야기를 보았습니다. 그는이 날에 사람들은 특정 언어를 실행하기 위해 전문화 된 하드웨어를 작성하는 데 매우 관심이 있다고 언급했지만 사람들은 문제를 해결하는 더 좋은 방법을 알아 냈습니다. 컴파일러를 더 똑똑하게 만드십시오. Haskell을 살펴보십시오. GHC는 높은 수준의 구성에서 엄청나게 빠른 코드를 생성하지만 Haskell은 X86 어셈블러와는 달리 두 사람이 서로 외계인을 보입니다. Java와 LISP에서도 같은 종류의 일이 일어났습니다. Java와 LISP는 현대 컴퓨터에서 매우 빠르며 프로세서를 잘 활용했지만 Java는 원래 이상한 스택 기반 바이트 코드를 위해 컴파일되었으며 오래 전에 LISP 기계를 구축했습니다.

그건 그렇고 비디오가 있습니다. 대부분은 현재 질문과 관련이 없지만 흥미로울 수 있습니다. "기능적 프로그래밍이 중요한 이유"와 단위 테스트를 쉬운 방법으로 만드는 방법에 관한 것입니다.

http://video.google.com/videoplay?docid=-4991530385753299192&hl=en

컴파일러가 Haskell과 Java를 거의 C만큼 빠르게 만들기에 충분히 똑똑했던 것은 상당히 최근 (지난 10 년 정도입니까?)였습니다. 도대체 GHC는 스택을 사용하지 않습니다. 얼마나 엉뚱한가요?

가장 잘 알려진 예는 물론 c입니다

C는 1970 년대 초 Dec에 맞게 작성되었습니다. PDP-11예를 들어 PDP-7 프로그래밍 언어 데이터 유형이 하나만 있었지만 크기의 데이터 유형이 다른 PDP-11로 포팅하면 변수의 데이터 유형이 언어에 추가되었습니다.

대부분의 언어는 대상입니다 폰 노이만 건축, 이것은 대부분의 CPU의 기초입니다.

Neil Butterworth가 언급 한 Transputer의 Occam은 주목할만한 예외입니다.

VHDL은 데이터 흐름 개념을 기반으로 한 또 다른 예외이지만 프로그래밍 언어는 아니며 하드웨어 설명 및 시뮬레이션 언어입니다.

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