Fernando J. Corbató의“제한된 언어”


13

그의 1990 튜링 상 연설 에서 Fernando J. Corbató는 복잡한 시스템이 불가피하게 실패하는 이유를 열거했습니다. 결론적으로 그는 실패 가능성을 줄이는 몇 가지 제안을한다. 그는 하나의 아이디어를 다음과 같이 나열합니다.

디자인이나 합성을위한 제약 된 언어는 강력한 방법론이다. 프로그래머 나 디자이너가 관련없는 아이디어를 표현하지 못하게함으로써 가능한 오류 영역이 훨씬 더 제한됩니다.

"제한된 언어"는 무엇을 의미합니까?

잠시 동안 나는 제약 조건 프로그래밍을 고려했다 . 그러나 제약 조건 프로그래밍은 프로그램의 솔루션 공간을 제한하는 것입니다. 프로그래머에게 힘을 실어주는 도구입니다. Corbató가 언급하는 기능은 실제로 프로그래머를 제한하거나 적어도 코드를 작성하는 경향이있는 것으로 보입니다.

나의 두 번째 생각은 그가 보수적 인 프로그래밍 언어를 언급하고 있다는 것이다. Corbató는 1960 년대와 1970 년대에 수행 된 작업으로 Turing 상을 받았습니다. 그가 많은 펀치 카드를 다루었다는 것이 나의 이해입니다. 펀치 카드를 본 적이 없으므로 프로그래밍 방법을 모르지만 펀치 카드 프로그래밍이 매우 자유 롭다고 생각할 수 있습니다. 유형 검사, 정적 분석 등의 개념이 단순히 존재하지 않았다고 생각합니다. 그렇다면 코바 토는 아마도 개발자가 멍청한 실수를 저 지르지 못하게하는 언어에 대한 아이디어를 말하는 것일까 요? 이것은 사실이 아닌 것 같습니다. 안전 점검 및 데이터 모델링은 간결함과 아무 관련이 없습니다. "무관 한 아이디어를 허용하지 않습니다."


@jweyrich Programmers.SE로 보내 주셔서 감사합니다. 그러나 StackOverflow의 프로그래밍 언어 태그로 이동하면 "정적으로 약한 유형의 언어가 있습니까?"와 같은 일반적인 질문이 많이 있습니다. 저자는 또한 일반적인 독서 자료를 참조합니다
Xander Dunn

5
@thoughtadvances 당신이 언급 한 질문에 날짜를 확인하십시오, 나는 그들 대부분이 아주 오래된 것입니다 내기. SO는 4 살이며 상황이 바뀌며 일반적으로 시간이 지남에 따라 엄격 해집니다. 귀하의 질문은 프로그래머 (괜찮습니다)에 적당하지만, 중재 관심을 위해 이것을 플래그로 지정하고 다시 게시하는 대신 마이그레이션하도록 요청하면 더 쉬울 것입니다. 마이그레이션은 당신에게 다시 게시의 문제를 저장 한 것 그 질문과 함께 프로그래머에 대한 답을 가져온 것입니다. 걱정하지 마십시오. 제가 처리하겠습니다.
yannis

3
경우 예를 들어, : (주 경우 의 개념) 의 malloc이 어떤 이유로 특정 응용 프로그램에 대해 "무관"입니다, 다음 가능한 오류의 도메인을 "제한 할 C 이상 (더의 malloc이없는 제약 (malloc에있어))"자바를 선택 "malloc
gnat

@YannisRizos 이주해 주셔서 감사합니다. 이 기능이 존재한다는 것을 몰랐습니다. 아마도 StackOverflow에서 숙련 된 사용자가이 경로를 닫는 것이 아니라이 경로를 제안했을 수 있습니다.
Xander Dunn

3
" 펀칭 카드 코딩 "은 프로그램을 입력하는 또 다른 방법 일뿐입니다. 1960 년대 후반과 1970 년대 초반에 오늘날 우리가 사용했던 언어만큼 정교한 언어를 사용했습니다. 프로그래밍 언어의 핵심 개념의 대부분은 이미 잘 확립되었고, ALGOL (60)는 이미 1963 년에 의해 프로그래밍 도구에 대한 표준을 설정했다
로스 패터슨

답변:


8

"제한된 프로그래밍 언어"는 단순히 언어 목적과 관련이없는 일을 할 수있는 (쉬운) 방법을 제공하지 않는 언어입니다.

"멍청한", "멍청한"또는 "잘못된"이 아니라 "무의미한"것입니다.

이것의 좋은 예는 ISO / ANSI SQL (SQL-92 이전) 일 수 있는데, 쿼리 언어에서는 재귀 나 루프와 같은 많은 절차 유형 프로그래밍 아티팩트를 표현할 방법이 없었습니다. (하지만 지금은 가지고 있으며 공급 업체는 이전에 이들을 위해 사용자 정의 확장을 추가했습니다).


6
이것이 바로 Corbató의 요점입니다. 그는 1969 Datamation의라는 기사에서 많은 세부에 갔다 도구 시스템을위한 프로그램으로 PL / I (멋진 자막 "와 임시 컴파일러 오년 !").
로스 패터슨

감사합니다.이 답변은 매우 유용합니다. 이 아이디어에는 흥미로운 의미가 있습니다. 이것은 프로그래머가 모든 언어를 다룰 하나의 언어가 아닌 다양한 능력을 가진 다양한 언어에 액세스하고 싶어한다는 것을 나타내는 것으로 보입니다.
Xander Dunn

@RossPatterson 훌륭합니다! 감사합니다! Corbató의 주제에 대한 설명을 찾고 있었지만 많이 찾지 못했습니다.
Xander Dunn

1
Datamation 기사에서 인용 한 훌륭한 요약은 다음과 같습니다. " 시스템을 수행하는 데있어 우리의 목표는 개척 된 목표를 달성하고 충족시키는 시스템을 효과적으로 구성하는 방법을 살펴 보는 것입니다. 어떤 시스템에 익숙한 지에 관계없이 주요 설계 아이디어를 발췌하고 다른 사람들과 의사 소통하기 때문에 하드웨어의 특정 세부 사항을 능가하는 언어는 확실히 바람직합니다 . 되지 않는 코드와 바이올린 그리고 이것은 그것의 장점 중 하나가 될 것으로 밝혀졌다. . "
로스 패터슨

2
@thoughtadvances " 이것은 프로그래머가 하나의 언어로 모든 능력을 다룰 수있는 것이 아니라 다양한 능력을 가진 다양한 언어에 액세스하고 싶어한다는 것을 나타내는 것 같습니다. 이는 주니어와 시니어 프로그래머의 차이점 중 하나입니다. 목수는 망치 가 하나도 없습니다 :-)
Ross Patterson


0

먼저, 연설을 할 때 컴퓨팅 시대를 이해해야합니다 (1990). 또한, 그는 학업 청중에게 말하고 있으며 MIT는 그의 홈베이스입니다.

그 시대에는 언어 (메타 어)를 쓰는 언어가 화제가되었습니다. 메타-오브젝트 프로토콜의 예술은 이제 막 새 언어의 디자인을 고무시키고 있습니다. 그러나 이러한 모든 사치에는 복잡성이 있습니다.

시스템의 복잡성을 줄이고 이러한 시스템을 검사 할 수 있도록 Z와 같은 메타 언어가 테스트 가능한 사양을 만들었습니다. 그가 이런 종류의 언어를 언급하는 것 같아요.


2
Corbató는 단지 늦게 cen MIT 학문이 아닙니다. 그는 우리 분야의 개척자 중 하나입니다. CTSS 에 대한 그의 작업은 중요하지 않았 으며 Multics, Unix, CP / 67 및 오늘날의 Linux 및 z / VM 시스템으로 직접 이어졌습니다. 그리고 문제의 진술은 그가 Meta-Object Protocol의 예술 과 그의 Turing 강의 20 년 전에 공개적으로 설명한 원칙과 관련이 있습니다.
로스 패터슨

0

아마도 그는 이해해야 할 개념 수가 상당히 적은 언어를 의미 할 것입니다. 다이어그램 확인 여기 커피 스크립트, 루비와 C ++의 개념의 그래픽 표현을 보여줍니다. 튜너 일 수 있음은 언어에서 사용하는 개념이 적을수록 관련없는 아이디어를 표현할 가능성이 줄어든다는 것을 의미합니다.


"... 또는 언어"-이것에 대한 의견입니까?
gnat

댓글처럼 보이지 않도록 게시물을 수정했습니다.
Manoj R
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.