표현력 은 Wikipedia에 의해 다음과 같이 정의됩니다.
해당 페이지를 다시 읽도록하겠습니다. 주목해야 할 첫 번째 사항은 "프로그래밍 언어"가 아닌 "언어"라고 말하고 대부분의 예제는 프로그래밍 언어가 아니라는 것입니다. 예를 들어 첫 번째 예제는 온톨로지 인 OWL2 EL과 OWL2 RL의 비교입니다. 언어.
프로그래밍 언어뿐만 아니라 패턴 일치 언어, 마크 업 언어, 쿼리 언어, 비주얼 스타일 시트 언어, 정규 표현식 (및 참조하는 모든 일반 언어) 등에 개념을 적용 할 수 있습니다. 영어와 같은 자연 언어의 표현력을 언급 할 수도 있는데, 이는 종종 매우 비공식적으로 이루어 지지만 자연 언어 처리와 관련된 문제를 고려할 때 더 심각합니다.
"아이디어"는 기계와 통신 할 수있는 것들 (작업, 구조, 알고리즘 등)을 의미합니까? 아니면 다른 사람에게 언어로 포착되고 전달 될 수있는 "인간"개념을 가리키는가?
그것은 그 언어로 표현 될 수있는 것을 말하며, 순전히 그 자체로 간주됩니다.
예를 들어, (예제 전체에서 자바 스크립트를 사용하겠습니다. 질문에 해당 언어 중 하나가 아는 언어가 표시되므로) 자바 스크립트 문을 고려하십시오.
var x = 3 + 4;
이는 3과 4의 값 합계가 계산되고 x
지정된 네임 스페이스 범위 내의 레이블과 연관된 값을 나타냅니다 .
만약 우리가 세상의 모든 컴퓨터를 파괴하고 그 코드를 종이에 썼다면, 자바 스크립트에서도 여전히 같은 의미를 가졌을 것입니다. 우리는 어떤 코드에서도 그러한 코드를 실행할 수 없지만 언어의 추상 정의는 여전히 우리가 이야기 할 수있는 것입니다.
이것은 현명한 것처럼 보이지만 실제로는 실제 컴퓨터를 고려하지 않고 언어가 추상적으로 추론 할 수있는 것들이라는 것이 매우 중요합니다. 첫째, 아직 실현 불가능한 컴퓨터 언어의 이론적 요점에 대해 추론하는 사람들은 오늘날 우리가있는 곳 중 하나입니다. 컴퓨터에는 컴퓨터 과학이 필요하지만 컴퓨터 과학에는 컴퓨터가 필요하지 않으며 계산이라는 개념 만 있습니다.
물론, 우리는 현실 세계에서 컴퓨터를 사용하고 있으며, 요즘에는 몇몇 전문가들이 이론적으로 논의하기보다는 실제로 컴퓨터를 사용하는 사람들이 많습니다. 당신이 연결 한 페이지는 말합니다 :
표현력이라는 용어는 다양한 의미로 사용될 수있다. 해당 언어로 표현할 수있는 아이디어의 척도를 의미 할 수 있습니다.
용이성에 상관없이 (이론적 표현성)
간결하고 쉽게 (실제 표현력)
첫 번째 의미는 공식 언어 이론, 수학 논리 및 대수와 같은 언어에 대한 공식 설명과 그 의미를 다루는 수학 및 논리 영역에서 지배적입니다.
비공식 토론에서이 용어는 종종 두 번째 의미 또는 둘 다를 의미합니다. 프로그래밍 언어를 논의 할 때 종종 그렇습니다. 이러한 비공식적 인 용어 사용을 공식화하기 위해 노력했습니다
이 용어의 두 가지 용도 중 첫 번째의 실제 영향은 전적으로 컴퓨터로 전달할 수있는 것과 관련 이 있습니다.
두 번째는 읽기와 쓰기에 대한 인간의 이해와 관련이 있지만, 비공식적이고 엄격하게 정의되지 않았기 때문에 사용하는 정도는 사용마다 크게 다릅니다.
예를 들어, JavaScript와 같은 언어를 사용하고 변수와 같이 변수 이름에 이상한 제한을 가한 경우 variable과 같이 밑줄 (밑줄)이 앞에 오는 8 자리 숫자 여야합니다. /^_[0-9]{8}$/
표현력이 떨어지겠습니까?
공식적인 정의에 따르면 표현력을 잃지 않았습니다. 우리는 100,000,000 개의 변수로 제한되어 있지만 실제로 필요한 경우 새로 만든 네임 스페이스 내에 더 많은 변수를 보유 할 개체를 만들어이 문제를 해결할 수 있습니다. 오늘날 자바 스크립트로 작성된 이러한 프로그램은이 새로운 형식으로 다시 작성할 수 있으므로 동일하게 표현됩니다.
비공식적 인 정의에 의해, 우리는 일부를 잃었지만, 우리가 얼마나 비공식적인지에 따라 얼마나 많은가에 달려 있습니다. 다시 말해 정보 사용에 관한 "규칙"이 무엇인지 말할 수 없기 때문입니다. 같은 네임 스페이스에 100,000,000 개 이상의 변수가있는 프로그램을 단순한 대체를 넘어서 다시 작성해야하므로 적은 양을 잃어 버렸다고 말할 수도 있습니다. 좀 더 비공식적으로 다시 사용한다는 것은 그러한 불변의 변수 이름이 인간 종합에 미치는 정신적 영향을 의미합니다.
사람들이 비공식적으로 언어의 일부가 아닌 것을 비공식적으로 고려할 것이라는 점도 주목할 가치가 있습니다. 작성 시점부터 오늘까지 Javascript의 변경 사항을 고려하십시오.
가장 공식적인 정의에 따르면 표현력에는 변함이 없었습니다. 결국 튜링이 완성되었습니다.
보다 비공식적 인 정의에 따르면 배열 조작, 예외 처리 및 (아마도 대부분) 정규 표현식 포함과 같은 특정 사항에서 훨씬 더 표현력이 향상되었습니다. Javascript로 할 수 없었던 작업은 수행하지 않지만 javascript1.0으로 작성하는 데 몇 킬로바이트의 코드가 걸리고 실행하는 데 오랜 시간이 걸리는 몇 줄과 1 초의 실행 시간으로 수행 할 수는 있습니다.
훨씬 더 비공식적 인 정의로 브라우저에서 처음으로 자바 스크립트를 사용했을 때의 변경 (양식 입력 값을 변경할 수 있음) document.write
페이지가 먼저 파싱되고 새로운 위치로 이동하거나 역사에서 앞뒤로 이동하지만 꽤 오늘날 (서버 호출의 데이터를 기반으로 포함하여 페이지의 거의 모든 것을 변경할 수 있음)에 대한 것은 아무것도 아닙니다. 대부분 자바 스크립트와 관련이 없지만 객체 모델과 API와 관련이 있습니다. 언어가 아닌 사용 가능합니다 (예 : IE의 vbscript는 이러한 변경으로 동일하게 혜택을 얻음).
내 생각에, 그 마지막 사용은 실제로 정확하지 않을 정도로 비공식적이지만 비공식적 정의의 문제입니다.
공식적인 정의에 의해 실제로는 더 표현력이 높아지지 않았습니다.