답변:
프로그래밍 언어는 명령어를 기계에 전달하도록 설계된 표기법입니다. 이 정의에 따르면 C ++과 HTML은 프로그래밍 언어이며, 1801 년에 조셉 마리 자카드 (Joseph Marie Jacquard)가 자신의 직기 를 프로그래밍 하는 데 사용한 표기법과 마찬가지로 프로그래밍 언어 입니다.
그러나 데이터를 구조화 및 / 또는 설명하는 데 사용되는 언어가 확산됨에 따라 프로그래밍 언어의 정의는 알고리즘을 표현할 수있는 언어 만 포함하도록 변경되었습니다. 이것은 오늘날 가장 일반적인 정의이며 HTML 또는 XML과 같은 언어는 제외합니다.
현재 정의의 핵심은 튜링 완전성 의 개념입니다 . 대부분의 프로그래밍 언어는 Turing complete이며 Turing completeness는 프로그래밍 언어를 다른 컴퓨터 언어와 구분하는 중요한 특성으로 종종 인용됩니다. 이것은 일반적으로 일반적으로 충분하지만 완전히 정확하지는 않습니다.
상황에 따라 원하는 정의를 선택할 수 있습니다.
편집하다:
언어의 구현은 언어 자체에 특성을 부여하지 않습니다. 그러나 튜링 완료가 아닌이 구현이 언어 자체가 튜링 완료되지 않았 음을 의미하지는 않습니다 (구현이 적합하지 않음을 의미 함). 언어의 세부 사항과 언어의 특정 구현에 대한 세부 사항은 별도의 것으로 인식되어야하므로 해석되거나 컴파일 된 언어를 호출하는 것이 부정확 한 이유입니다.
"보면 알다" 라는 구절 은 화자가 표현 가능한 사실이나 사건을 분류하려고 시도하는 구어체 표현이지만, 범주는 주관적이거나 명확하게 정의 된 매개 변수가 없습니다. 이 문구는 Jacobellis v. Ohio (1964)의 외설 성에 대한 그의 임계치 테스트를 설명하기 위해 미국 대법원 포터 스튜어트가 유명하게 사용했습니다 .
외설처럼, 우리는 프로그래밍 언어를 볼 때 모두를 알고 있다고 생각합니다. 이미 OP는 C ++을 프로그래밍 언어로, HTML은 언어가 아닌 것으로 판단했기 때문에 분명히 가능합니다.
공식적인 정의를 추구하는 목표는 정확히 무엇입니까? Yannis는 이미 가장 인기있는 정의 인 Turing 완전성에 결함이있는 이유에 대해 설명했습니다. "볼 때 알 수 있음"테스트를 무시하는 분류로 이어집니다.
나는 당신이 생각해 낼 수 있는 모든 정의는 우리 모두가 "프로그래밍" 하지 않다고 생각하는 일부 언어로 이어질 것입니다. 또는 우리 모두 가 "프로그래밍" 한다고 생각하는 일부 언어 에는 언어가 아닌 것으로 분류됩니다 것으로 .
왜 하지 당신의 창자로 이동? 저는 간단한 휴리스틱을 사용합니다. 프로그래밍 언어는 저의 의견과 관찰에 따르면 프로그램을 작성하는 것이 주된 목적인 언어입니다. 내용을 마크 업하지 않습니다. XML을 변형시키지 마십시오. 범용 프로그램 작성 나는 공식적인 정의를 내리려고 시도하는 것보다 그것을 볼 때 오히려 그것을 알고 싶습니다. 그러한 정의를 시도함으로써 얻을 수있는 진정한 가치는 보지 못합니다.
마크 업 언어는 주로 정보가 표시되는 방식을 다루며 일반적으로 변수, 수학, 비교, 의사 결정 (있는 경우 ...), 루프 (for, while) 등의 프로그래밍 인프라에서 부족합니다.
HTML 자체는 정적입니다. 즉, 워드 프로세서와 매우 유사하게 정보를 그대로 제시하는 것입니다. HTML 웹 페이지는 일종의 프로그래밍 언어 (일반적으로 JavaScript, PHP 등의 스크립팅 언어)를 추가해야만 "변경되는"내용을 가질 수 있습니다. 스크립팅 언어는 변수, 수학, 비교, 의사 결정, 루프 등으로 "프로그래밍"가능성을 제공합니다.