인간 언어의 분리는 고립 된 공동체의 진화론에서 나온다. 프로그래밍 언어의 분리는 기술적 요구, 기술적 이데올로기, 기술적 및 이론적 이해의 변화, 구현할 기술적 능력의 변화에서 비롯됩니다. 다소 의식적인 과정이라고 생각합니다.
컴퓨터 언어가 자연 언어와 비슷할 수 있습니까? 아마도 어느 정도까지는 말입니다. 자연어 복잡성의 상당 부분은 새로운 동시성이 나타날 때 오래된 불일치가 점진적으로 제거 될 가능성이 있더라도 어느 시점에서든 일관된 결과를 생성 할 이유가없는 다양한 동시 진화 현상에서 비롯된 것으로 추측합니다. . 나는 반음 언어 전문가가 아닙니다. 그러나 우리는 프로그래밍 언어에서 이러한 종류의 복잡성을 원합니까?
모호성 문제는 중요한 문제이지만 대부분의 사람들이 언급 한 것은 아닙니다. 언어는 의사 소통의 수단이며, 그 의사 소통의 맥락에서 (사람-사람, 사람-기계, 장소 간 또는 시간 간, ... 간단하게 말하면) 분석되어야합니다. 중요한 것은 언어로 모호하지 않은 진술 만 할 수 있는지 여부가 아니라 의도 된 상황에서 의사 소통이 모호하지 않도록 항상 보장 할 수 있는지 여부입니다. 모호한 프로그램을 작성할 수있는 잘 알려져 있고 널리 사용되는 프로그래밍 언어가 있습니다 (물론,하지만 최신 버전은 한동안 보지 않았습니다). 이 경우, 컴파일러는 모호성을 감지하고 명확성을 요구할 정도로 똑똑하며, 모호성을 제거하기 위해 프로그램에 통합 될 수 있습니다. 모호성 감지가 가능한 선택 중 하나만 의미를 갖는다는 것을 의미하지는 않습니다. 문제는 통신 엔터티 중 하나가 모호성을 감지하여 보낸 사람이이를 명확하게 할 수 있는지 여부입니다. 인간은 이것에 좋지 않지만 컴퓨터는 꽤 좋을 수 있습니다.
형식주의와 프로그래밍 언어는보다 풍부하고 유연한 구문을 가질 수 있습니다. 나는 그들이하지 않는 주된 이유는 단순한 보수주의라고 믿는다. 사용 된 구문 도구는 여전히 그 당시 컴퓨터의 한계를 충족시키기 위해 30 년 이상 전에 설계된 도구입니다. 구문 분석 효율성은 더 이상 컴파일에서 중요한 문제가 아니며 더 강력한 기술이 다루기 어렵습니다.
흥미롭게도 프로그래밍 언어 구문에 가장 널리 사용되는 기초는 자연어 연구, 즉 문맥이없는 문법에서 비롯됩니다. 대부분의 기술 연구는 60 년대 초에 이론적 / 기술적 컴퓨터 과학으로 옮겨졌으며, 80 년대 초 자연 언어 사람들에 의해 다소 재발견되었습니다 (저는 단순화하고 있습니다). 그 이후로 자연 언어로 된 구문은 많은 진전이 이루어졌으며, 컴퓨터 과학은 구식 구문 도구와 크게 달라 붙어있는 것 같습니다. 자연어 진자는 이제 통계 기술로 다시 돌아가고 있지만 구문에 대한 대수적 접근법은 잊혀지지 않습니다. 대수 및 통계 기술의 조합에서 좋은 접근 방식이 올 것입니다.
내 느낌은 중요한 영역이 의미론이며 구문과 의미론 사이의 전환이라는 것입니다. 우리는 프로그래밍 언어와 공식 시스템의 경우 많은 정확한 기술을 가지고 있지만 자연 언어로 공식화하기는 여전히 어렵습니다. 게임이 자연 언어로 재생되는 것과는 거리가 멀기 때문에 향후 프로그래밍 언어에 어떤 영향을 줄 수 있는지 말하기는 어렵습니다.
또 다른 요점은 많은 프로그래밍 언어 설계자들이 무언가를 증명하거나 기술적 이념을 강요하려한다는 것입니다. 따라서 사용자는 의도 된 패러다임을 벗어나지 않도록 설계에 대한 규범을 익히 게됩니다. 이것은 불행히도 창의성에있어 매우 역효과를 낳습니다. 가장 독창적 인 언어는 최초의 Lisp (1958) 중 하나였습니다. 그것이 허용 한 자유와 유연성은 상당한 창의성의 원천이었습니다. 가격은 자기 훈련과 이해가 필요하다는 것이었다. 그러나 Lisp는 실제로 언어 생성을위한 언어 인 금속 언어였습니다.
이제 또 다른 관점을보기 위해 프로그램은 실제로 사양을 수학 진술로 본 증거입니다 (물론 다시 단순화하고 있습니다). 어떤 사람들은 (참고 문헌을 기억하지 못하고, 미안하지만) 이론가들과 함께 수학자가 자연어로 쓴 것처럼 보이는 증거를 만들어 내고있다. 따라서 자연어로 작성된 것처럼 보이는 프로그램을 갖는 아이디어는 완전히 터무니없는 것 같지 않습니다.
그러나 수학자가 비공식적으로 쓰더라도 수학 담론은 평범한 이야기 나 역사 책과는 상당히 다르다는 것을 알 수 있습니다. 이것은 논의되는 의미 론적 영역 인 담론의 우주에서 상당한 차이로 인한 것이다. 따라서 자연어처럼 보이는 프로그래밍 언어를 구상 할 수 있지만 담론의 영역과 바람직한 특성이 자연스럽게 제한됩니다. 대부분 본질적으로 피상적, 즉 대부분 구문론으로 남아있을 것입니다. 수학자는 공식 시스템과 정치에 대해 이야기 할 수 있습니다. 두 담화가 비슷하게 보이지 않기를 바랍니다. 컴퓨터는 아직 정치에 대해 이야기하거나 이해할 수 없습니다. 그들이하는 날은 더 이상 프로그래밍이되지 않을 것입니다.
역사를 되돌아 보면, 고급 언어는 처음부터 (FORTRAN) 계산 작업을 표현하기 위해보다 자연스러운 형태에 더 가까워지려는 시도 였지만, 이러한 작업은 수학적 또는 논리적으로 이해되었습니다 (Fortran 1957, Algol 1958, Lisp 1958). ) 또는 더 비즈니스 지향적입니다 (Cobol 1959). 10 년 안에 사람들은 문제에 더 가까이 다가가는 언어에 대해 걱정했고 extensible
languages
구문과 의미를 모두 다루는 소위 중요한 연구가있었습니다 . 보다 자연스럽게 문제를 표현하는 한 가지 주요 경로는 object
orientation
(때로는 다른 이름으로) 의 등장이었습니다 . 부모를 할당하는 것은 항상 어려운 일이지만, 아마도 인공 지능에 관한 연구, 주로 Lisp와 언어에서 나왔을 것입니다.Simula
67
(알골 가족) 그 자체는 컴퓨터에서 시뮬레이트되어야하는 더 자연스럽고 실제적인 문제를 표현하기위한 것입니다. 모든 것이 역사적으로 일관된 것처럼 보입니다.