메사(프로그래밍 언어)

Mesa (programming language)
메사[1]
설계자컴퓨터 시스템 연구소(CSL)
개발자제록스 PARC
처음 등장한1976년, 46년(연방)[2]
안정된 릴리스
Mesa 6.0 (버전 41) / 1981년 7월; 41년 전 (1981-07)
타이핑 분야강력, 정전기
영향을 받다
인식하다
영향받은
Java, Modula-2, Cedar, PostScript[3]

메사[1] 1970년대 후반에 미국 캘리포니아 팔로알토있는 제록스 팔로알토 연구 센터에서 개발된 프로그래밍 언어입니다.언어 이름은 당시의 프로그래밍 언어 캐치프레이즈에 기초한 말장난이었다. 왜냐하면 메사는 "고급" 프로그래밍 언어이기 때문이다.

Mesa는 모듈러 프로그래밍을 강력하게 지원하는 ALGOL과 같은 언어입니다.모든 라이브러리 모듈은 적어도 2개의 소스 파일을 가지고 있다: 라이브러리의 인터페이스를 지정하는 정의 파일과 인터페이스에서의 [4]프로시저 구현을 지정하는 하나 이상프로그램 파일.라이브러리를 사용하려면 프로그램 또는 상위 수준 라이브러리가 정의를 "가져와야" 합니다.Mesa 컴파일러는 Import된 엔티티의 모든 사용을 체크합니다.이러한 개별 컴파일과 타입 체크의 조합은 [citation needed]당시에는 드물었습니다.

Mesa는 언어 설계와 구현, 특히 소프트웨어 예외 처리, 스레드 동기화증분 컴파일에 몇 가지 다른 혁신을 도입했습니다.

메사는 그래픽 사용자 인터페이스를 갖춘 최초의 개인용 컴퓨터 중 하나인 제록스 알토에서 개발되었지만, 알토의 시스템 소프트웨어는 대부분 BCPL로 작성되었다.Mesa는 최신 Xerox Star 워크스테이션 및 GlobalView 데스크톱 환경의 시스템 프로그래밍 언어였습니다.제록스 PARC는 나중에 메사의 슈퍼셋인 시더를 개발했다.

Mesa와 Cidar는 Modula-2Java와 같은 다른 중요한 언어의 설계에 큰 영향을 미쳤으며 GUI의 기초, 네트워크 환경, 그리고 제록스컴퓨터 과학 분야에 기여한 다른 진보의 개발과 보급에 중요한 매개체였습니다.

역사

Mesa는 원래 Xerox Palo Alto Research Center의 지사인 Computer Systems Laboratory(CSL)에서 실험용 마이크로코드 워크스테이션인 Alto용으로 설계되었습니다.처음에는 PARC와 Xerox가 Altos를 기부한 몇몇 대학에 국한되었다.

Mesa는 나중에 Xerox 8010(Xerox Star, Dandelion) Xerox 6085(Daybreak)와 같은 Xerox의 상용 워크스테이션, 특히 파일럿 운영 체제의 시스템 프로그래밍 언어로 채택되었습니다.

XDE(Xerox Development Environment)라고 불리는 세컨더리 개발 환경에서는 개발자는 월드 스왑 메커니즘을 사용하여 운영체제 파일럿 및 ViewPoint GUI 애플리케이션을 모두 디버깅할 수 있었습니다.이것에 의해, 세계의 「상태」 전체를 스왑 아웃 할 수 있게 되어, 시스템 전체를 디버깅 할 수 없게 된 저레벨의 시스템 크래시가 가능하게 되었습니다.이 기술은 대규모 애플리케이션 이미지(몇 메가바이트)에는 그다지 확장성이 없었습니다.따라서 마이크로코드 머신이 SPARC 워크스테이션과 기본 하드웨어 명령 세트를 위해 Mesa PrincOps 에뮬레이터를 실행하는 인텔 PC에 의해 단계적으로 폐지되었을 때 이후 릴리스의 파일럿/Mesa 세계는 월드 스왑 뷰에서 멀어졌습니다.

Mesa는 스택머신 언어로 컴파일되었으며, 지금까지 달성한 코드 밀도 중 가장 높은 것으로 알려져 있습니다(개요한 언어문당 약 4바이트).이는 1981년 Xerox Systems Development Department(당시 PARC의 개발 부문)의 구현자들이 명령 세트를 조정하고 결과 코드 [5]밀도에 대한 논문을 발표한 논문에서 선전되었다.

메사는 메사 프로그래밍 코스에서 가르침을 받았는데, 이 코스는 당시 Xerox가 이용할 수 있었던 광범위한 기술을 통해 사람들을 가르쳤고, 프로그래머가 유용하도록 설계된 실행 가능한 프로그램인 "핵"을 작성하는 것으로 끝이 났다.이러한 해킹의 실제 예는 1988년에 작성된 BWSMagnifier로, 크기 조정 가능한 창과 변경 가능한 배율로 정의된 대로 워크스테이션 화면의 섹션을 확대할 수 있습니다.Xerox의 숙련된 Mesa 프로그래머들은 업계 표준 툴이 되기 거의 10년 전에 GUI, 네트워킹, 예외 및 멀티 스레드 프로그래밍의 기본에 정통했습니다.

제록스 내에서 메사는 결국 시더 프로그래밍 언어로 대체되었다.1985년에 많은 Mesa 프로그래머와 개발자들이 Xerox를 떠났고, 그들 중 일부는 Mesa에 대한 경험을 Modula-2+와 이후 Modula-3의 설계에 활용하였다.

주요 기능

의미론

Mesa는 모듈 경계에 걸친 유형 검사 기능을 갖춘 강력한 유형의 프로그래밍 언어였지만, 히프 할당자를 Mesa로 [6]작성할 수 있는 유형 시스템에서 충분한 유연성을 가지고 있었다.

인터페이스와 구현 간의 엄격한 분리 때문에 Mesa는 진정한 증분 컴파일을 가능하게 하며 아키텍처 및 플랫폼에 의존하지 않는 프로그래밍을 장려합니다.또, 이더넷을 개입시킨 리모트 디버깅을 포함한 소스 레벨의 디버깅도 심플화했습니다.

Mesa에는 4가지 유형의 예외를 포함한 다양한 예외 처리 기능이 있습니다.모니터를 통한 스레드 동기화가 지원되었습니다.Mesa는 파일럿 운영 [7]체제에서 도입된 개념인 모니터 브로드캐스트를 구현한 최초의 언어입니다.

구문

Mesa는 BCPL 또는 C가 아닌 ALGOL 및 Pascal기반한 "임페리얼" "대칭" 구문을 가지고 있습니다. 예를 들어 복합 명령어는 다음과 같이 표시됩니다.중괄호아닌 BEGIN 및 END 키워드.Mesa에서는 모든 키워드는 대문자로 [1]쓰여집니다.

PARC는 더 일반적인 1967년식 변형 대신 1963년식 ASCII를 사용했기 때문에 Alto의 문자 집합은 언더스코어 대신 왼쪽 화살표(←)를 포함했다.그 결과 Alto 프로그래머(Mesa, Smalltalk 등을 사용하는 프로그래머 포함)는 PARC의 표준 프로그래밍 스타일에 통합된 관행인 CamelCase를 복합 식별자로 사용하였습니다.한편, 왼쪽 포인팅 화살표가 사용 가능하기 때문에 원래 ALGOL에 있었던 것처럼 할당 연산자에 사용할 수 있습니다.

Mesa 디자이너는 예외 설비를 구현하고자 할 때 최근 M을 고용했습니다.Sc.는[who?] 알고리즘 언어로 예외 처리 설비에 대한 논문을 쓴 콜로라도 출신입니다.그 결과, SIGNAL, ERROR, ABORT, RESTRIT, CATCH CONTINUE의 원형이 있는 당대 최고의 예외 설비가 되었습니다.언어에는 신호 처리의 완전한 적용 범위를 확인하기 위한 타입 세이프 체크 기능이 없었기 때문에 예외는 릴리스된 소프트웨어에서 버그의 일반적인 원인이었습니다.

삼나무

메사는 시다 프로그래밍 언어의 선구자였다.[8][9]Cedar의 주요 추가 사항으로는 가비지 컬렉션, 동적 유형, 로프를 통한 보다 나은 문자열 지원, 제한된 형식의 유형 매개 변수화 및 다중 모듈 소프트웨어 패키지의 유형 안전 부분을 식별하기 위한 특수 구문 등이 있으며, 이는 결정론적 실행을 보장하고 메모리 누수를 방지합니다.

후예

  • 미 국방부는 메사를 아이언맨(IronMan) 프로그래밍 언어로 사용하기 위해 제록스에 접근했지만(스틸맨 언어 요건 참조), 제록스는 목표의 상충으로 거절했다.Xerox PARC 직원들은 Mesa가 다른 회사의 엔지니어보다 Xerox 소프트웨어 엔지니어의 생산성을 높인 독점적 이점이라고 주장했습니다.국방부는 결국 후보자들로부터 에이다 프로그래밍 언어를 선택하고 개발했다.
  • 원래의 Star Desktop은 ViewPoint Desktop으로 진화하였고, 후에 GlobalView가 되어 SunOS Unix 및 AIX와 같은 다양한 Unix 플랫폼에 이식되었습니다.Mesa to C 컴파일러가 작성되어 타겟플랫폼용 코드가 컴파일 되었습니다.이것은 실행 가능한 솔루션이었지만, 이 접근법에 의해 Mesa 컴파일러 및 관련 툴 체인의 파워가 상실되었기 때문에 Unix 머신에서는 거의 개발이 불가능했습니다.출판계에서 Sun SPARC 워크스테이션에 대한 상업적 성공은 있었지만, 이 접근방식은 제품을 고립시켜 시장 기회를 좁히는 결과를 낳았습니다.
  • 1976년, 제록스 PARC에서 안식년을 보내는 동안, 니클라우스 워스는 그의 Modula-2 [10]언어 설계에 큰 영향을 미친 메사를 알게 되었다.
  • Java는 명시적으로 Mesa를 [11]이전 버전이라고 합니다.

「 」를 참조해 주세요.

레퍼런스

  1. ^ a b c 미첼, 제임스 G;Maybury, William; Sweet, Richard (1979) :Mesa Language Manual - 버전 5.0인치 XEROX PARC, Computer Systems Laboratory(CSL), 기술 보고서 CSL-79-3.2019년 5월 15일 온라인 카피(www.bitsavers.org)
  2. ^ Mesa, 소프트웨어 보존 그룹
  3. ^ Perry, T.S. (May 1988). "'PostScript' prints anything: a case history". IEEE Spectrum. 25 (5): 42–46. doi:10.1109/6.4550. S2CID 33376390.
  4. ^ Mesa Language Manual, 7장(이 매뉴얼에서는 소스 파일을 의미하는 모듈이라는 용어를 사용합니다.)
  5. ^ Sweet, Richard; Sandman, James (March 1982), "Empirical analysis of the Mesa instruction set", ASPLOS I Proceedings of the First International Symposium on Architectural Support for Programming Languages and Operating Systems: 158–166, doi:10.1145/800050.801839, ISBN 0897910664, S2CID 1353842
  6. ^ Geschke, Charles; Morris, James H.; Satterthwaite, Edwin H. (August 1977). "Early Experience with Mesa". Communications of the ACM. 20 (8): 540–552. doi:10.1145/359763.359771. S2CID 15737342.
  7. ^ Lampson, Butler W.; Redell, David D. (February 1980). "Experience with Processes and Monitors in Mesa". Communications of the ACM. 23 (2): 105–117. CiteSeerX 10.1.1.142.5765. doi:10.1145/358818.358824. S2CID 1594544.
  8. ^ Lampson, Butler W. A Description of the Cedar Language. Xerox PARC Technical Report.
  9. ^ Swinehart, Daniel C.; Zellweger, Polle T.; Hagmann, Robert B. (July 1985). "The Structure of Cedar". SIGPLAN Notices. 20 (7): 230–244. CiteSeerX 10.1.1.110.9565. doi:10.1145/800225.806844. S2CID 2788992.
  10. ^ 를 클릭합니다Wirth, Niklaus (2007). "Modula-2 and Oberon". Proceedings 3rd Conference on the History of Programming Languages. San Diego: 3-1–3-10. CiteSeerX 10.1.1.91.1447. doi:10.1145/1238844.1238847. ISBN 978-1-59593-766-7. S2CID 1918928..
  11. ^ Gosling, James; Joy, Bill; Steele, Guy; Bracha, Gilad. Java Language Specification (2nd ed.).

외부 링크