폰 노이만 프로그래밍 언어
Von Neumann programming languages폰 노이만 언어는 폰 노이만 아키텍처의 높은 수준의 추상적 이형성 복제인 프로그래밍 언어들 중 하나이다.[1] 2009년[update] 현재 대부분의 최신 프로그래밍 언어는 이 설명에[citation needed] 적합하며, 지난 50년 동안 폰 노이만 컴퓨터 아키텍처의 광범위한 지배의 결과일 가능성이 높다.
포트란, C, 심지어 자바와의 차이는 상당하지만, 궁극적으로 폰 노이만 컴퓨터의 프로그래밍 스타일에 근거한 세 가지 모두에 의해 제약을 받는다.[citation needed] 예를 들어, Java 개체가 모두 비동기 메시지 전달 및 속성 기반 선언적 주소 지정과 병렬로 실행된다면, Java는 그룹에 속하지 않을 것이다.
폰 노이만 프로그래밍 언어와 아키텍처 사이의 이형성은 다음과 같은 방식이다.
- 프로그램 변수 £ 컴퓨터 저장 셀
- 관리 명세서 £ 컴퓨터 시험 및 시험 지침서
- 할당 명세서 파운드 인출, 지시 사항 저장
- 표현 £ 메모리 참고 자료와 산술적 지시사항
비판
존 백커스는 폰 노이만 언어로 된 할당 성명이 프로그래밍을 두 개의 세계로 분할한다고 주장했다. 첫 번째 세계는 표현, 잠재적으로 유용한 대수적 특성을 가진 질서 있는 수학적 공간으로 구성되어 있다: 대부분의 계산은 여기서 이루어진다. 제2세계는 문장으로 구성되는데, 유용한 수학적 특성이 거의 없는 무질서한 수학적 공간이다(구조화된 프로그래밍은 이 공간에 적용되는 제한된 경험적 발견으로 볼 수 있다).
Backus[2]은 1978년에게 저곳에 컴퓨터 과학에서 노이만 언어 von 강조는 폰 노이만 컴퓨터 구조의 여지가 계속되고 있다 악순환이 존재하고 그것에 의존non-von 노이만 언어 비경 제적시켜 그들의 추가 개발을 제한시키게 했다. 널리 사용할 수 a의 부족 주장했다알몬드 효과적인 비본 노이만 언어는 새로운 컴퓨터 구조를 개발하는 데 필요한 동기 부여와 지적 토대를 컴퓨터 디자이너들에게 빼앗겼다.[3]
현대 시스템에서의 존재
많은 현대 프로세서는 현재 여러 개의 프로세싱 코어를 포함하고 있으며, 멀티스레드 프로그래밍은 보통 단일 프로그램에서 더 많은 컴퓨팅 파워를 사용하는 가장 효율적인 방법이다. 일부 현대 프로세서는 순서가 맞지 않는 실행을 포함한 기법으로 고도로 최적화되어 있지만, 논리 프로그래밍 모델의 폰 노이만 의미론을 위반하지 않고 언제 이것이 이루어질 수 있는지를 감지하는 복잡한 로직으로 되어 있다. 별도의 명령과 데이터 캐시가 널리 사용되어 하드웨어는 수정된 하버드 아키텍처가 되지만, 다시 한번 최적화가 실패하는 경우를 감지하여 자체 수정 코드를 실행할 수 있는 논리를 가지고 있다.
일부 전문 프로세서(GPU 포함)는 매우 넓은 MIMD 장치다. 범용 CPU는 일반적으로 여러 개의 코어를 가지고 있지만, 각각의 코어는 충분히 빨라서 단일 작업을 병렬화하지 않고도 많은 프로그램이 충분히 빠르다.(스프레드는 일반적으로 비동기 입력이나 출력을 처리하는 데 사용되며, 특히 GUI에서는 더욱 그러하다.) 범용 CPU는 기술적으로 MIMD 장치지만, 대개 grou에서 설계한 하드웨어만 사용된다.MIMD 프로그래밍에 대한 nd up을 MIMD라고 한다.
C, C++, Java와 같이 널리 사용되는 많은 프로그래밍 언어들은 스레드 형태로 병렬 처리를 위한 지원을 추가함으로써 엄격하게 폰 노이만이 되지 않게 되었다. 그러나, 분류적으로 비본 노이만어의 대부분은 기능 언어로서 널리 쓰이지 못하고 있다.
참조
- ^ 프로그래밍이 폰 노이만 스타일로부터 해방될 수 있을까?, 존 백커스, ACM의 통신, 21권, 1978년 8월 8일.
- ^ 링크가 더 이상 활성화되지 않음.
- ^ IBM 아카이브: John Backus